Przejdź do treści
INDEKS ANALIZ BREACHROAD / NOTA TECHNICZNA

HollowFrame i Matryoshka: zagnieżdżony backdoor w kancelarii

Phishing z plikiem LNK uruchamiał PowerShell, fałszywy runtime Python, loader Go i dwa backdoory Rust. Rozkładamy łańcuch i detekcję.

MATERIAŁ PUBLICZNY
AUTOR
/ CEO Breachroad · OSCP · PNPT
PUBLIKACJA
31 lipca 2026
CZAS CZYTANIA
12 min czytania
TEMAT
Zagrożenia i incydenty
HollowFrame i Matryoshka: zagnieżdżony backdoor w kancelarii

Blackpoint Cyber opisał włamanie do dwóch stacji w kancelarii prawnej, w którym napastnik połączył spear phishing, skrót LNK, wielowarstwowy PowerShell, DLL side-loading, modularny loader Go i dwa backdoory napisane w Rust. Nowe rodziny otrzymały nazwy HollowFrame i Matryoshka.

Łańcuch jest wartościowym studium detekcji, ponieważ niemal każdy etap korzysta z legalnego mechanizmu: skrótu Windows, certutil.exe, PowerShella, prawdziwego python.exe, zadań harmonogramu i API GitHub. Złośliwość wynika z sekwencji i kontekstu, nie z jednego egzotycznego pliku.

Początek: „Case Documents”

Według pierwotnego raportu Blackpoint wiadomość spear-phishingowa prowadziła do zaszyfrowanego archiwum. W środku znajdował się skrót Windows udający dokumenty sprawy.

Po uruchomieniu LNK:

  1. zapisywał Base64 do %TEMP%\sgrfm.b64;
  2. tworzył skrypt %TEMP%\sgrfm.cmd;
  3. używał certutil.exe -decode;
  4. uruchamiał PowerShell;
  5. pobierał kolejny etap z 2.26.252[.]84.

Rozdzielenie operacji pomiędzy LNK, CMD, certutil i PowerShell utrudnia wykrycie regułą przypisaną tylko do jednego interpretera.

Obfuskacja i przygotowanie bezpiecznej ścieżki dla malware

Następny skrypt przechowywał zakodowany payload jako ciąg heksadecymalny i odszyfrowywał go powtarzanym kluczem XOR. Następnie sprawdzał uprawnienia administratora i w razie potrzeby uruchamiał UAC przez -Verb RunAs.

Przed pobraniem właściwych komponentów dodawał wykluczenia Microsoft Defender dla:

  • katalogu %LOCALAPPDATA%\Programs\Python\Python311-Brief;
  • procesu python.exe.

Kolejność jest ważna. Najpierw powstała strefa o obniżonej kontroli, dopiero potem trafiły do niej pliki. Reguła wykrywająca wyłącznie malware po zapisie może zadziałać za późno; trzeba alarmować na samą zmianę wykluczeń przez nietypowy proces.

Python tylko z nazwy

Skrypt pobierał archiwum Python-3.11.0-embed-amd96.zip. Nazwa przypomina oficjalną dystrybucję embedded, ale sufiks amd96 był nietypowy. Paczka zawierała:

  • legalny python.exe;
  • złośliwy python311.dll;
  • vcruntime140.dll.

Uruchomienie python.exe bez skryptu powodowało wczytanie biblioteki z tego samego katalogu. DLL nie była prawdziwym runtime CPython, tylko 64-bitowym modułem Go eksportującym minimalne nazwy wymagane przez hosta. Tak działa DLL side-loading: podpisany lub rozpoznawalny EXE staje się nośnikiem kodu z sąsiedniej biblioteki.

HollowFrame: loader i trwałość

HollowFrame był modularnym loaderem Go. Oceniał, czy działa w sandboxie na podstawie czasu pracy systemu, ilości RAM, liczby plików profilu i ruchu kursora. Mógł ładować dodatkowe komponenty różnymi metodami i tworzyć zadanie harmonogramu.

Tego typu anti-analysis nie gwarantuje niewykrywalności. Daje obrońcy sygnały:

  • proces odczytujący wiele właściwości środowiska przed aktywnością;
  • python.exe bez typowych argumentów;
  • sąsiednia DLL o niezgodnym podpisie;
  • uruchamianie kodu Go w procesie udającym Python;
  • nowe zadanie bez związku z instalacją legalnego produktu.

Matryoshka: dwa warianty backdoora

Badacze znaleźli dwa warianty Rust:

  • pierwszy komunikował się przez HTTP i wykonywał polecenia;
  • drugi używał GitHub jako kanału C2 do beaconingu, zadań, rekonesansu, transferu plików i dostarczania kolejnych payloadów.

GitHub nie jest złośliwy, ale ruch API z serwera lub stacji, która nie prowadzi pracy deweloperskiej, powinien mieć właściciela i uzasadnienie. W kampanii pojawiał się wzorzec repozytorium zawierający identyfikator ofiary oraz User-Agent imitujący OneDrive.

Razem HollowFrame i Matryoshka dawały wykonanie poleceń, rozpoznanie Active Directory, transfer plików i możliwość rozbudowy operacji. Raport nie potwierdza pełnego przejęcia domeny ani kradzieży danych klienta kancelarii.

Najlepsze punkty detekcji

Warto korelować w krótkim oknie:

  1. archiwum z poczty lub komunikatora;
  2. explorer.exe uruchamiający LNK z katalogu pobrań;
  3. zapis .b64 i .cmd w %TEMP%;
  4. certutil -decode poza procesem administracyjnym;
  5. PowerShell z ExecutionPolicy Bypass i ukrytym oknem;
  6. modyfikację wykluczeń Defender;
  7. utworzenie katalogu udającego runtime Python;
  8. python.exe bez skryptu i z prywatną python311.dll;
  9. nowe zadanie harmonogramu;
  10. dostęp do GitHub API lub nowych adresów C2.

Pojedyncze zdarzenia mogą mieć legalne wyjaśnienie. Ich sekwencja tworzy mocny sygnał.

Reakcja na incydent

Po wykryciu łańcucha:

  • odizoluj urządzenie;
  • zachowaj pamięć, Prefetch, Amcache, zadania i logi PowerShell;
  • wyeksportuj historię zmian Defender;
  • zbierz źródłowy LNK, skrypty, ZIP i biblioteki;
  • sprawdź poświadczenia używane na stacji;
  • przeszukaj środowisko po ścieżkach, hashach i zachowaniu;
  • przeanalizuj GitHub API oraz DNS;
  • usuń nieautoryzowane wykluczenia dopiero po zebraniu dowodów;
  • odbuduj host z zaufanego obrazu przy potwierdzonym backdoorze;
  • monitoruj konta i segment kancelarii po przywróceniu.

Metodykę korelacji rozwijamy w przewodniku detection engineering z Sigma i SIEM oraz planie reagowania na incydenty.

Fakty a wnioski Breachroad

Blackpoint potwierdza dwie stacje w jednej nieujawnionej kancelarii, opisany łańcuch i możliwości malware. Publiczne dane nie ustalają operatora, skali poza tym incydentem ani pełnego wpływu biznesowego.

Wniosek Breachroad: allowlisting oparty wyłącznie na nazwie procesu lub podpisie EXE nie zatrzyma side-loadingu. Skuteczna ochrona łączy pochodzenie pliku, linię procesów, zmiany konfiguracji ochrony, bibliotekę ładowaną obok EXE i późniejszą komunikację.

Szkolenia cyberbezpieczeństwa dla zespołów pomagają kancelariom i działom prawnym rozpoznawać kontekstowe przynęty. Audyt bezpieczeństwa IT może zweryfikować PowerShell, polityki Defender, allowlisting i gotowość EDR.

UDOSTĘPNIJ / KOPIUJ