De volgende blog post presenteert het concept van Alternate Data Stream en hoe het in het wild is gebruikt, zowel in het verleden als tegenwoordig: als een techniek die wordt gebruikt om een kwaadaardige payload in het bestandssysteem te verbergen. Hoewel het als een oude techniek kan worden beschouwd, is het vandaag de dag nog steeds relevant en veel voorkomend in het wild.
Wat is een Alternate Data Stream?
Alternate Data Stream (ADS) is de mogelijkheid van een NTFS bestandssysteem (het belangrijkste bestandssysteem formaat in Windows) om verschillende datastromen op te slaan, in aanvulling op de standaard stroom die normaal gesproken wordt gebruikt voor een bestand. Toen deze functie werd gecreëerd, was het belangrijkste doel om ondersteuning te bieden aan het macOS Hierarchical File System (HFS).
Het NTFS-bestandssysteem bevat bestanden met attributen. Het relevante attribuut voor onze scope is het $DATA attribuut, dat wordt gebruikt om de datastromen van een bestand op te slaan.
In het verleden was het gebruikelijk om een kwaadaardige payload op te slaan binnen een ADS van een legitiem bestand. Maar tegenwoordig zullen veel beveiligingsoplossingen ADS’s detecteren en scannen. We zullen in dit artikel echter laten zien dat een ADS nog steeds kan worden gebruikt om payloads uit te voeren, terwijl deze verborgen blijft voor zowel de gebruiker als diverse beveiligingsproducten.
Om de concepten die in dit artikel worden gepresenteerd te vereenvoudigen, zijn alle voorbeelden gebaseerd op native tools in Windows.
Hoe ADS te gebruiken
In de goede oude tijd van Windows Vista was Alternate Data Streams (ADS) een veelgebruikte methode voor malware-ontwikkelaars om hun kwaadaardige code te verbergen. Een Alternate Data Stream werd effectief gebruikt om de aanwezigheid van kwaadaardige corrumperende bestanden te verbergen, door het in een legitiem bestand te persen. Door malware in de Alternate Data Stream te stoppen, zou het Windows-bestand informatie en aanwijzingen bevatten voor de legitieme bestanden, maar ook voor het kwaadaardige bestand. Om de kwaadaardige code die de hacker in de Alternate Data Stream heeft gedeponeerd uit te voeren, zou hij een symlink willen maken met het mklink commando. Maar om dit te doen, moet je administratieve rechten hebben op de machine. Aangezien het normale gedrag van een gebruiker niet vereist dat hij als admin werkt, benaderen hackers hun doelwitten vaak in de veronderstelling dat ze op een machine zonder beheerdersrechten terechtkomen.
Enumeration – De hoofdstroom onder $DATA is de lege string (dus: “”, ook wel de naamloze stream genoemd). Deze stroom wordt gebruikt om de reguliere stroom van een bestand te bevatten.
Het volgende is een voorbeeld van het opsommen van de datastromen van een bestand met PowerShell:
U kunt ook dir /R gebruiken, of SysInternals\streams.exe om een ADS van een bestand op te sommen / recursief op een directory
Zoals u hierboven kunt zien, bevat het bestand alleen de naamloze stroom.
Soms kun je echter een ADS vinden binnen een legitiem bestand, want er zijn verschillende legitieme toepassingen voor deze techniek.
Hieronder staat een voorbeeld van het opsommen van datastreams van een bestand met een ADS met PowerShell:
Dit is ook een voorbeeld van een legitiem gebruik van ADS: de Zone. Identifier. Dit veld geeft het vertrouwensniveau van de bron van het bestand weer. Dit is een gebruik van browsers om de zijn macOS overeenkomt is de “quarantaine bit”.
Creatie – Hoewel er legitieme toepassingen voor ADS kunnen zijn, kan ADS ook worden gebruikt om een kwaadaardige payload op te slaan. Aanvallers geven wellicht de voorkeur aan deze methode boven het opslaan van de payload in de naamloze stream, omdat de aanwezigheid ervan verborgen blijft voor de gebruiker – het is niet toegankelijk vanuit explorer.exe (en de getoonde grootte van een bestand omvat niet de grootte van ADS). Bovendien wordt het standaard niet weergegeven met de opdracht “dir” (de vlag /R geeft echter ADS weer, en wordt toegepast vanaf Windows Vista).
Het maken van een ADS is vrij eenvoudig.
Een voorbeeld van het maken van een ADS met de opdracht type:
Tot Windows XP was het mogelijk om een ADS uit te voeren met de opdracht start. Sinds latere versies van Windows is dit echter niet meer mogelijk.
Toegang tot gegevens – Het misbruiken van ADS’en is nog steeds een relevante bedreiging, aangezien er meerdere manieren zijn om een ADS te lezen en uit te voeren.
Het eerste gebruik is toegang tot de gegevens. De inhoud van de ADS kan gemakkelijk worden benaderd. Het volgende is een voorbeeld met PowerShell:
Uitvoeren – Naast het lezen van de gegevens, is het ook mogelijk om deze uit te voeren. Hoewel het niet mogelijk is om een ADS uit te voeren met het commando “start”, kan het toch vanuit andere programma’s worden uitgevoerd. Bijvoorbeeld, met WMI:
“wmic process call creates” – start een proces met WMI. Het kan ook een ADS uitvoeren. Voorbeeld:
Er zijn nog meer legitieme native tools van Windows die gebruikt kunnen worden om direct een ADS uit te voeren. Een DLL kan bijvoorbeeld in een ADS worden opgeslagen en door DllMain worden aangeroepen via rundll32.exe; ook kan een HTA in een ADS worden opgeslagen en via mshta.exe worden aangeroepen; enzovoort.
Malicious Campaigns Abusing ADS
Het lijkt er misschien op dat Windows de bedreigingen die zich in de ADS bevinden, de baas is. Er zijn echter veel malwarefamilies in het wild die nog steeds misbruik maken van ADS’en.
Een ander voorbeeld uit 2017 is BitPaymer, ransomware die twee ADS’en gebruikte in de aanvalsvolgorde, om stealth aan de acties toe te voegen en kwaadaardige activiteit te verbergen. De eerste ADS werd aangemaakt om het commando “net view” uit te voeren om netwerkshares te verkrijgen, waarna de tweede ADS de gegevens op de schijf en netwerkshares vervormt.
Om te besluiten, misbruik maken van ADS is een techniek die tegenwoordig nog steeds relevant is. Inderdaad, recente Windows versies hebben de functionaliteit van ADS beperkt en verhard. Met een basiskennis van Windows-tools zoals Power-Shell en WMI of enige kennis van de commandoregel van Windows kunnen bedreigers echter doorgaan en ADS gebruiken in hun aanvallen. Interessant is dat recente campagnes waarbij ADS wordt gebruikt, als tamelijk geavanceerd worden beschouwd en de neiging hebben om het gebruik van persistente bestanden op schijf te minimaliseren.