Mega Sekurak Hacking Party w Krakowie! 20.10.2025 r. Bilety -30%
Kampania APT28 “Phantom Net Voxel” – połączenie steganografii z C2 w chmurze, a wszystko aby uniknąć wykrycia
Badacze bezpieczeństwa z zespołu ds. wykrywania i reagowania na zagrożenia (Threat Detection and Response) w Sekoia.io’s wykryli nową kampanię prowadzoną przez grupę APT-28 (znaną jako Fancy Bear, Sofacy, BlueDelta, Forest Blizzard), w której atakujący zastosowali szereg technik umożliwiających ominięcie standardowych metod wykrywania. Kampania została nazwana “Phantom Net Voxel” i stanowi realne zagrożenie dla współczesnych systemów.
APT28 jest identyfikowana przez zachodnie służby wywiadowcze jako grupa powiązana z Głównym Zarządem Wywiadowczym Sztabu Generalnego Federacji Rosyjskiej (GRU) i realizująca zadania na jego polecenie. Historyczne dane pokazują, że kampanie prowadzone przez grupę są niezwykle niebezpieczne i trudne do wykrycia. Ich głównym celem jest infrastruktura krytyczna i instytucje państwowe, zwłaszcza w krajach NATO, UE i państwach graniczących z Rosją.
TLDR:
- Badacze bezpieczeństwa z Sekoia.io’s wykryli zaawansowaną kampanię grupy APT28, znaną jako “Phantom Net Voxel”.
- Celem ataku byli pracownicy ukraińskich sił zbrojnych.
- Malware korzystał z zaawansowanych technik maskowania, m.in.: obfuskacja, steganografia, szyfrowanie.
- Połączenie z serwerem C2 odbywało się za pośrednictwem usług chmurowych.
Opis ataku
Schemat ataku został przedstawiony na poniższym schemacie.

Pierwszym etapem ataku jest spear phishing. Nawiązanie kontaktu następuje za pomocą prywatnej wiadomości w komunikatorze Signal lub poprzez maila. Nadawca podszywa się pod współpracownika lub przełożonego ofiary, nakłaniając do pobrania i wypełnienia załączonego dokumentu.
Dokument zawiera złośliwe makra, które odpowiadają za pobranie plików CTEC.DLL i WINDOWS.PNG, potrzebne na dalszym etapie infekcji oraz zapewnienie persystencji.
Ponadto wykorzystana została technika user-level COM hijack – polegająca na przejęciu kontroli nad komponentami COM w systemie Windows. Atakujący dokonuje modyfikacji rejestru użytkownika (HKCU\SOFTWARE\Classes\CLSID
) w taki sposób, aby zdefiniować własny CLSID lub podmienić istniejący na obiekt odwołujący do malware. Zmiana ta spowoduje, że do pamięci zostanie załadowany złośliwy kod przy każdym uruchomieniu tego komponentu przez aplikację. W ten sposób cyberprzestępca ma możliwość wczytania do pamięci DLL, nie posiadając uprawnień administratora.
Persystencja
Aby zapewnić sobie stały dostęp do systemu, malware dodaje wpis w rejestrze systemu Windows, który uruchamia złośliwy kod przy każdym starcie systemu. Przykładowy wpis wygląda następująco:
reg.exe add HKCU\Software\classes\CLSID\{2227A280-3AEA-1069-A2DE-08002B30309D}\InProcServer32 /d "C:\ProgramData\ctec.dll" /f
Po dokonaniu wpisu w rejestrze, wypakowane pliki CTEC.DLL oraz WINDOWS.PNG zostają umieszczone odpowiednio w katalogach C:\ProgramData\ oraz C:\Users\<user>\AppData\Local\.
Shellcode
Shellcode został zaszyfrowany oraz ukryty w pliku WINDOWS.PNG przy wykorzystaniu metod steganograficznych. Każdy piksel obrazu składa się z 4 bajtów: Red, Green, Blue oraz bajtu definiującego przezroczystość. Ładunek został umieszczony przy zastosowaniu algorytmu LSB (Least Significant Bits), to znaczy znajduje się w najmniej znaczących bitach każdego piksela. Procedura ekstrakcji danych wygląda następująco:
- Dla każdego piksela odczytywane zostają najmniej znaczące bity. Ostatnie 20 bajtów danych stanowią sumę kontrolną, wygenerowaną za pomocą algorytmu SHA1.
- Z utworzonego ciągu wyznaczona zostaje suma kontrolna (algorytm SHA1).
- Jeżeli wygenerowana wartość jest zgodna z odczytanym skrótem, następuje proces deszyfrowania danych.
- Blok danych składa się z 32 bajtów klucza szyfrującego/deszyfrującego, zaszyfrowanego ciągu oraz 16 bajtów wektora IV. Dane zostały zaszyfrowane za pomocą algorytmu AES-CBC.
- Po odszyfrowaniu danych, shellcode jest najprawdopodobniej ładowany bezpośrednio do pamięci.
Kolejnym etapem jest załadowanie środowiska uruchomieniowego .NET, na potrzeby nawiązania połączenia z serwerem C2. Pliki wykonywalne .NET korzystają z losowych nazw – ksmqsyck.dx4.exe. Próbki te są ładunkiem typu Grunt HTTP stager z frameworku Covenant, służącego do nawiązania połączenia z infrastrukturą Koorf. Framework Covenant umożliwia implementację niestandardowych protokołów komunikacji C2, tworząc C2Bridge oraz BridgeListener, bez konieczności modyfikacji kodu frameworka. Zgodnie z opinią analityków, w badanej kampanii napastnik zaimplementował własny C2Bridge wykorzystujący API Koorf jako kanał C2, opierając całą komunikację wyłącznie na wysyłaniu i pobieraniu plików z usługi Koorf. Należy podkreślić, że Koorf jest legalnym, europejskim serwisem chmurowym, który umożliwia bezpieczne przechowywanie, synchronizację i udostępnianie plików.
Faza Command and Control
Następnym krokiem jest zestawienie bezpiecznego połączenia oraz przesłanie kolejnych ładunków złośliwego oprogramowania. W tym celu malware komunikuje się z infrastrukturą Koorf, aby zweryfikować, czy podkatalogi KEEPING i TRANSFERING są dostępne. Katalogi te służą do wysyłania kolejnych ładunków oraz pobierania danych użytkownika. Jeżeli któryś z katalogów jest niedostępny, oprogramowanie tworzy oba. Po utworzeniu katalogów malware pobiera unikalny identyfikator, wygenerowany przez Covenant (GUID przejętego hosta), dzieli go na segmenty, a następnie wykorzystuje ostatni segment do utworzenia katalogu nadrzędnego. Wewnątrz katalogu umieszcza podkatalogi KEEPING i TRANSFERING na potrzeby dalszych operacji.
Kolejnym etapem jest zestawienie szyfrowanego połączenia, czyli ustalenie wspólnego klucza sesji z wykorzystaniem algorytmów RSA oraz AES. Następnie, utworzony kanał komunikacji zostaje wykorzystany do propagacji plików SAMPLE-03.WAV oraz PLAYSNDSRV.DLL, umożliwiających ekstrakcję i wykonanie BEARDSHELL.

BeardShell
Ostatnim etapem ataku jest uruchomienie backdoora – BeardShell, zsynchronizowanego z usługami chmurowymi (Icedrive), pozwalającego m.in. na wykonywanie poleceń PowerShell w środowisku użytkownika. Kod oprogramowania, napisany w C++ został zaszyfrowany za pomocą funkcji XOR oraz klucza złożonego z jednego bajta umieszczonego wewnątrz pliku SAMPLE-03.WAV. Ponadto, w kodzie zahardkodowano bearer token do konta Icedrive, służącego do hostowania poleceń oraz przesyłania wyników.
Oprogramowanie po uruchomieniu odczytuje konfigurację hosta oraz tworzy ciąg złożony z GUID sprzętu, nazwy hosta, domeny, nazwy użytkownika, nazwy stacji roboczej, który podaje na wejście do algorytmu FNV4. W efekcie otrzymuje skrót danych, który pozwala jednoznacznie zidentyfikować użytkownika. Kolejnym krokiem jest utworzenie podkatalogu 6401_hash na koncie Icedrive. Podkatalog ten służy do przesyłania poleceń oraz odczytywania wyników.Schemat algorytmu FNV4 nie jest publicznie dostępny.

BeardShell rozpoznaje 7 komend oznaczonych identyfikatorem cmd_id. Komendy przesyłane są w postaci pliku JSON i wyglądają następująco:
{“task_id”: X, “cmd_id”:Y, data: {}}
.
Parametr task_id jest najprawdopodobniej parametrem wykorzystywanym na potrzeby serwera, parametr data zawiera parametry komendy. Przykładowe komendy wraz z opisem zostały przedstawione poniżej.
ID komendy | Opis | Parametry |
1 | Utworzenie instancji PowerShell | {} |
2 | Wykonanie polecenia | {“id”=0, “cmd”=”<command>”} |
3 | Wykonanie skryptu | {“id”=0, “script”=”<b64(command)>”} |
4 | Przerwanie wykonywania polecenia | {“id”=0} |
5 | Zamknięcie powłoki PowerShell | {“id”=0} |
6 | Pobranie statusu BeardShell | {} |
7 | Zamknięcie wszystkich powłok PowerShell | {} |
Pierwsza komenda odpowiada za utworzenie instancji PowerShell, która oczekuje na polecenia do wykonania. W odpowiedzi BearShell zwraca “Terminal created with id = X”, gdzie X oznacza numer powłoki. Oprócz wykonywania powyższych poleceń, istnieje możliwość doinstalowania kolejnych modułów malware, które mogą pełnić funkcję stealer, keylogger, a przechwycone dane wysyłać w postaci zaszyfrowanej i zakodowanej w base64 na serwer.
Podsumowanie
Analiza kampanii “Phantom Net Voxel” prowadzonej przez grupę APT28 pokazała, że zastosowany łańcuch infekcji jest trudny do wykrycia i ukierunkowany na cele polityczne. Nie wprowadzono innowacyjnych metod, skupiono się bardziej na znanych i sprawdzonych sposobach ataku. Ciekawym rozwiązaniem jest wykorzystanie legalnych usług chmurowych jako serwerów C2 oraz zaciemnianie ładunków za pomocą obfuskacji, steganografii oraz szyfrowania.
Zgodnie z deklaracją badaczy z Sekoia, kampania ta będzie uważnie monitorowana, przede wszystkim w celu opracowania skutecznych mechanizmów jej wykrywania.
Źródło: Sekoia.io’s
~_secmike