
Co znajdziesz w tym artykule?
Wprowadzenie do problemu / definicja
GhostTree to technika unikania detekcji w systemach Windows, która wykorzystuje rekursywne dowiązania katalogów NTFS typu junction do budowania zapętlonych struktur ścieżek. W praktyce pozwala to tworzyć bardzo dużą liczbę logicznie poprawnych odwołań do tych samych plików i katalogów, co może utrudniać lub wręcz blokować skuteczne skanowanie przez część narzędzi bezpieczeństwa.
Problem nie wynika z klasycznej podatności w jądrze systemu, ale z różnic między sposobem działania systemu plików NTFS a metodą, jaką silniki antywirusowe, EDR i skanery plików realizują rekursywne przeszukiwanie katalogów. To sprawia, że legalna funkcja systemu może zostać wykorzystana ofensywnie.
W skrócie
- GhostTree opiera się na mechanizmie junctions w NTFS.
- Atakujący może tworzyć zapętlone struktury katalogów bez uprawnień administratora, jeśli ma prawo zapisu do folderu.
- Wiele odgałęzień prowadzących do tego samego katalogu powoduje gwałtowny wzrost liczby możliwych ścieżek.
- Narzędzia bezpieczeństwa mogą zawieszać się, przekraczać limity czasu lub nie kończyć skanowania.
- W efekcie złośliwy plik umieszczony w katalogu bazowym może nie zostać przeanalizowany w odpowiednim czasie.
Kontekst / historia
Dowiązania katalogów i inne typy reparse points od dawna są obecne w ekosystemie Windows. Służą między innymi do zachowania kompatybilności, reorganizacji danych oraz przekierowywania ścieżek bez konieczności fizycznego przenoszenia plików. Z perspektywy administracyjnej są użyteczne, ale z perspektywy bezpieczeństwa bywają niedoszacowanym ryzykiem.
GhostTree rozwija prostszy scenariusz określany jako GhostBranch, w którym pojedynczy katalog potomny wskazuje z powrotem na katalog nadrzędny. W wersji rozszerzonej zamiast jednej pętli powstaje wiele równoległych odgałęzień, co prowadzi do efektu drzewa rekursyjnego. Każda kolejna warstwa zwiększa liczbę poprawnych logicznie ścieżek prowadzących do tych samych obiektów.
Analiza techniczna
Junction w NTFS jest szczególnym typem reparse point, który przekierowuje dostęp z jednego katalogu do innego. Dla aplikacji analizującej system plików zawartość katalogu docelowego może wyglądać tak, jakby znajdowała się lokalnie w miejscu odwołania. To właśnie ten mechanizm staje się podstawą techniki GhostTree.
W najprostszym wariancie tworzony jest katalog podrzędny, który wskazuje z powrotem na katalog nadrzędny. Gdy skaner porusza się rekursywnie po strukturze, może wielokrotnie odwiedzać ten sam logiczny obszar danych pod różnymi ścieżkami. Jeśli oprogramowanie nie rozpoznaje cykli lub nie deduplikuje obiektów według rzeczywistej tożsamości pliku czy katalogu, zaczyna wykonywać zbędną i kosztowną analizę.
GhostTree zwiększa skuteczność tego podejścia przez dodanie wielu katalogów potomnych wskazujących na tego samego rodzica. W rezultacie liczba możliwych kombinacji ścieżek rośnie wykładniczo. Nawet jeśli głębokość pozostaje ograniczona przez długość ścieżki i zachowanie aplikacji, całkowity koszt przetwarzania może stać się bardzo wysoki.
Znaczenie ma także sposób obsługi limitów długości ścieżek w Windows. Chociaż współczesne środowiska mogą wspierać dłuższe ścieżki, wiele narzędzi nadal korzysta z uproszczonych założeń lub starszych mechanizmów. W połączeniu z reparse points może to prowadzić do timeoutów, błędów logiki skanowania albo pomijania właściwego obiektu docelowego.
Konsekwencje / ryzyko
Najpoważniejszym skutkiem GhostTree jest możliwość ukrycia malware w lokalizacji, której pełne przeskanowanie staje się dla narzędzia ochronnego zbyt kosztowne lub praktycznie niewykonalne. Zwiększa to ryzyko, że dropper, loader, ransomware lub inny złośliwy plik pozostanie niewykryty przez istotny czas.
Technika ta jest szczególnie niebezpieczna w środowiskach, które w dużym stopniu opierają bezpieczeństwo na skanowaniu endpointów. Jeśli produkt EDR lub AV nie radzi sobie poprawnie z rekursywnymi junctions, napastnik może wykorzystać tę słabość do opóźnienia analizy lub obejścia jednej z warstw obrony.
Ryzyko nie ogranicza się wyłącznie do detekcji malware. Zapętlone struktury katalogów mogą również wpływać na działanie systemów backupu, DLP, inwentaryzacji zasobów, skryptów administracyjnych i narzędzi IR. W efekcie organizacja może obserwować zwiększone zużycie zasobów, błędy operacyjne, timeouty i problemy z analizą incydentów.
Rekomendacje
Organizacje powinny traktować junctions, symbolic links i inne reparse points jako element wymagający monitorowania. Szczególnie podejrzane są sytuacje, w których katalog potomny wskazuje na katalog nadrzędny lub wiele odgałęzień prowadzi do tej samej lokalizacji.
- Wdrożyć wykrywanie cykli w grafie katalogów zamiast ślepego podążania za każdą ścieżką.
- Ograniczać głębokość rekursji oraz liczbę ścieżek odwiedzanych przez skanery.
- Deduplikować analizę według rzeczywistego obiektu na dysku, a nie wyłącznie tekstowej postaci ścieżki.
- Monitorować tworzenie i modyfikację reparse points w telemetryce bezpieczeństwa.
- Przeprowadzić audyt uprawnień do katalogów, w których użytkownicy mogą tworzyć junctions.
- Testować produkty EDR, AV i skanery plików pod kątem poprawnej obsługi rekursywnych junctions.
- Regularnie aktualizować silniki ochronne, ponieważ nowe wersje mogą zawierać poprawki w tym obszarze.
Dodatkowo warto uwzględnić GhostTree w działaniach threat huntingowych oraz scenariuszach ćwiczeń zespołów SOC i IR. Pozwala to wcześniej ustalić, czy używane narzędzia rzeczywiście wykrywają ten typ nadużycia i czy skanowanie kończy się prawidłowo.
Podsumowanie
GhostTree pokazuje, że obejście zabezpieczeń nie zawsze wymaga zaawansowanego exploita ani eskalacji uprawnień. Czasami wystarczy wykorzystanie legalnego mechanizmu systemu operacyjnego w sposób, którego oprogramowanie ochronne nie przewidziało. Rekursywne junctions mogą zamienić zwykły katalog w strukturę trudną do pełnego przeskanowania przez źle zaprojektowane silniki analizy.
Dla obrońców to ważne przypomnienie, że skuteczność ochrony endpointów zależy nie tylko od sygnatur i heurystyk, ale również od poprawnego modelowania zachowania systemu plików. Monitorowanie reparse points, testy odporności narzędzi oraz wielowarstwowa detekcja pozostają kluczowe, by ograniczyć skuteczność technik takich jak GhostTree.
Źródła
- GhostTree Attack Abused Recursive Windows Junctions to Hide Malware — https://www.bleepingcomputer.com/news/security/ghosttree-attack-abused-recursive-windows-junctions-to-hide-malware/
- Hard links and junctions — Microsoft Learn — https://learn.microsoft.com/en-us/windows/win32/fileio/hard-links-and-junctions
- Maximum Path Length Limitation — Microsoft Learn — https://learn.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation