GhostTree-aanval gebruikte Windows-koppelingen om malware te verbergen

Veel beveiligingsteams beschouwen NTFS-juncties en symbolische links als nichefunctie van het bestandssysteem. Ze laten een map naar een andere wijzen, als een snelkoppeling die het besturingssysteem als echt beschouwt. Ze bestaan voor achterwaartse compatibiliteit en opslagbeheer, zaken die zelden in een SOC opduiken. Toch blijkt er een interessant aspect voor aanvallers: elke gebruiker kan ze creëren.

Hiervoor zijn geen beheerdersrechten nodig en slechts schrijf-toegang naar de doelmap is vereist.

We ontdekten dat door een junctie terug naar zijn eigen bovenliggende map te laten wijzen, een aanvaller recursieve lussen kan maken die eindeloze bestandspaden genereren. Tools die de map recursief proberen te scannen, inclusief EDR-producten, kunnen hierdoor vastlopen zonder te voltooien.

De kwaadaardige bestanden in dezelfde map worden niet onderzocht, wat een techniek creëert die we GhostTree noemen.

Hoe NTFS-juncties werken

Windows-bestandspaden zijn een fundamenteel onderdeel van het besturingssysteem, maar ze zijn complex. Terwijl de meeste gebruikers met eenvoudige mapstructuren werken, introduceert het NTFS-bestandssysteem geavanceerde mogelijkheden zoals juncties en symbolische links.

Deze functies dienen legitieme doelen, zoals het omleiden van mappen, het behoud van achterwaartse compatibiliteit met oudere applicaties die bestanden op specifieke locaties verwachten, of het herschikken van bestanden zonder ze fysiek te verplaatsen.

Een junctie is een soort NTFS-herparsepunt dat één map naar een andere omleidt. Het creëren ervan vereist alleen schrijf-rechten en een enkel commando in CMD:

mklink /J C:LinkNaarMap C:DoelMap

Dit maakt een junctie met de naam “LinkNaarMap” die naar “DoelMap” wijst. Alle applicaties die toegang zoeken via de junctie zien de inhoud van de doeldirectory alsof deze lokaal is.

Eén beperking is echter belangrijk. Klassieke Windows-systemen hanteren een maximale padlengte van 260 tekens, geworteld in legacysoftware en bestandssysteemontwerp.

Technisch gezien is het mogelijk deze limiet via een registersleutel tot 32.767 tekens te verlengen, maar veel applicaties en hulpprogramma’s kunnen paden langer dan 260 niet aan.

NTFS ondersteunt wel langere paden, maar praktisch gebruik blijft door bestaande software beperkt. Die limiet bepaalt hoe diep de recursieve lussen kunnen gaan en hoeveel unieke paden GhostTree kan produceren.

Het beveiligen van gevoelige data begint met zichtbaarheid — weten waar je informatie is, wie er toegang toe heeft, en hoe het wordt gebruikt.

Het Varonis Data Security Platform sluit automatisch blootstelling af, monitort doorlopend activiteiten over SaaS, IaaS, on-premises en databases, en detecteert en reageert op interne bedreigingen, ransomware en AI-misbruik.

Vraag vandaag nog een gratis Data Risk Assessment aan.

GhostBranch

GhostBranch is de eenvoudigere van de twee technieken. Elke gebruiker kan een map junctie maken door naam en bestemming van de junctie in te stellen. Overweeg deze mapstructuur:

C:Ouderprogramma.exe

Voer het volgende commando uit:

mklink /J C:OuderKind C:Ouder

Dit creëert een logische lus door een kindmap terug naar de bovenliggende map te wijzen. De kindmap bevat nu alles van de oudere map, inclusief zichzelf. Het resultaat is een onbeperkt aantal geldige paden naar hetzelfde bestand:

C:OuderKindProgramma.exe
C:OuderKindKindProgramma.exe
C:OuderKindKindKindKindProgramma.exe

Door de lus kun je meerdere “Kind”-mappen aan het pad toevoegen en blijft het geldig. Elk van deze paden leidt naar hetzelfde uitvoerbare bestand.

GhostTree

GhostTree

GhostTree bouwt voort op het concept van GhostBranch door meerdere kindmappen te maken in plaats van één. Bijvoorbeeld, je kunt twee kindmappen maken:

mklink /J C:OuderKind1 C:Ouder
mklink /J C:OuderKind2 C:Ouder

Nu kan elk niveau in het pad takken via Kind1 of Kind2, en beide keren terug naar de ouder. Dit biedt verschillende paden:

C:OuderKind1Programma.exe
C:OuderKind2Programma.exe
C:OuderKind1Kind1Programma.exe
C:OuderKind1Kind2Programma.exe

Padberekeningen

Padberekeningen

Zowel GhostBranch als GhostTree produceren paden die tot de maximale lengte die Windows toestaat kunnen reiken. Het verschil zit in de diversiteit van paden, waar GhostTree’s extra kindmap aanzienlijk verschil maakt.

GhostBranch

Binnen Windows is de maximale traditionele padlengte 260 tekens. Om het aantal directories te maximaliseren, kun je eenletterige mappen (bijv. “P”) direct onder de C: schijf maken en een uitvoerbaar bestand met de naam 1.exe gebruiken.

Voorbeelden van paden zijn onder andere:

C:P1.exe
C:PP1.exe
C:PPP...1.exe

Deze configuratie staat ongeveer 126 unieke directorystructuren toe vanwege padlengtebeperkingen.

GhostTree

De GhostTree-methode introduceert twee hoofdmappen, “P” en “B”, in tegenstelling tot de structuur met één map die eerder gebruikt werd. Voorbeelden zijn onder andere:

C:B1.exe
C:PB1.exe
C:PBPB...1.exe

Hoewel de maximale diepte ongeveer 126 mappen blijft, kan elk niveau “P” of “B” worden genoemd, waardoor een binaire boomachtige structuur ontstaat. Bij deze configuratie vertegenwoordigt elke knoop een uniek pad, en het totale aantal mogelijke knopen wordt berekend als:

2^126 ≈ 8.5 × 10^37

Hoe groot is dat? Het is vele malen groter dan het aantal zandkorrels op aarde (8.5 × 10^18) of zelfs de atomen in je lichaam (10^27).

Waarom dit van belang is voor verdedigers

Met slechts twee regels code kan een gebruiker eindeloze geldige paden genereren, waardoor het onmogelijk wordt om oudermappen volledig met het dir-commando te scannen. Dit geldt ook voor EDR-producten die mappen op kwaadaardige bestanden scannen. Een aanvaller plaatst malware in de oudermap, stelt de GhostTree-structuur op en de omvattende map wordt effectief onscanbaar. De scan hapert. De kwaadaardige bestanden blijven onopgemerkt.

We testten deze techniek tegen Windows Defender en bevestigden dat deze gebruikt kan worden om mapperscans te omzeilen.

We hebben het probleem aan Microsoft gemeld. Het ticket werd gesloten met als uitleg dat “het omzeilen van Defender geen beveiligingsgrens overschrijdt.” Desondanks werd het probleem gepatcht.

Technieken zoals GhostTree herinneren ons eraan dat het scannen van eindpunten slechts een laag van beveiliging is. Het monitoren van bestandsysteemactiviteit op het dataniveau vangt op wat scanners missen, inclusief afwijkende junctiecreatie en recursieve directorystructuren die in normale operaties niet zouden moeten bestaan.

Varonis monitort bestandsactiviteiten en detecteert dit soort afwijkend gedrag in zowel besturingssystemen als cloudinfrastructuur.

Plan vandaag nog je demo.

Gesponsord en geschreven door Varonis.

---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
Opzoek naar de laatste updates uit onze securitylog?
Inhoud mede mogelijk gemaakt door OpenAI.