Misbruget af Alternate Data Stream er ikke forsvundet

Det følgende blogindlæg præsenterer konceptet Alternate Data Stream og hvordan det er blevet brugt i naturen, både tidligere og i disse dage: som en teknik, der bruges til at skjule en ondsindet nyttelast i filsystemet. Selv om det kan betragtes som en gammel teknik, er den stadig relevant i dag og almindelig i naturen.

Hvad er en Alternate Data Stream?

Alternate Data Stream (ADS) er et NTFS-filsystems (det vigtigste filsystemformat i Windows) evne til at lagre forskellige datastrømme ud over den standardstrøm, der normalt bruges til en fil. Da denne funktion blev oprettet, var dens hovedformål at yde støtte til macOS Hierarchical File System (HFS).

Det NTFS-filsystem indeholder filer med attributter. Den relevante attribut for vores anvendelsesområde er $DATA-attributten, som bruges til at lagre datastrømmene i en fil.

Det var tidligere almindeligt at lagre en ondsindet nyttelast i en ADS i en legitim fil. Men i dag vil mange sikkerhedsløsninger opdage og scanne ADS’er’. Vi vil dog vise dig i dette indlæg, at en ADS stadig kan bruges til at køre nyttelast, mens den er skjult for brugeren samt forskellige sikkerhedsprodukter.

For at forenkle de koncepter, der præsenteres i denne artikel, er alle eksempler baseret på native værktøjer i Windows.

Hvordan man bruger ADS

I de gode gamle dage med Windows Vista var Alternate Data Streams (ADS) en almindelig metode for malwareudviklere til at skjule deres skadelige kode. En alternativ datastrøm blev effektivt brugt til at skjule tilstedeværelsen af ondsindede, korrumperende filer ved at klemme den ind i en legitim fil. Ved at placere malware i den alternative datastrøm ville Windows-filen indeholde oplysninger og anvisninger for de legitime filer, men også for den skadelige fil. For at kunne køre den skadelige kode, som hackeren har lagt i Alternate Data Stream, skal han/hun oprette et symbolsk link ved hjælp af mklink-kommandoen. Men for at gøre dette er det nødvendigt at have administrative rettigheder på maskinen. I betragtning af at en brugers normale adfærd ikke kræver, at man kører opererer som administrator, har hackere en tendens til at nærme sig deres mål, idet de antager, at de lander på en boks uden administratorrettigheder.

Nummerering – Hovedstrømmen under $DATA er den tomme streng (altså: “”, også kaldet den unavngivne strøm). Denne strøm bruges til at indeholde den almindelige strøm i en fil.

Det følgende er et eksempel på opregning af datastrømmene i en fil med PowerShell:

Du kan også bruge dir /R, eller SysInternals\streams.exe til at opregne en ADS i en fil / rekursivt på en mappe

Som du kan se ovenfor, indeholder filen kun den unavngivne strøm.

Derimod kan du nogle gange finde en ADS i en legitim fil, da der er flere legitime anvendelser af denne teknik.

Nedenfor er et eksempel på opregning af datastrømme i en fil med en ADS med PowerShell:


Det er også et eksempel på en legitim anvendelse af ADS: Zone. Identifier. Dette felt præsenterer tillidsniveauet for filens kilde. Dette er en browsers brug til at gemme den Dens macOS tilsvarende er “karantænebit”.

Skabelse – Mens der kan være legitime anvendelser af ADS, kan ADS også bruges til at gemme en skadelig nyttelast. Angribere vil måske foretrække denne metode frem for at gemme nyttelasten i den unavngivne stream, fordi dens tilstedeværelse vil være skjult for brugeren – den er ikke tilgængelig fra explorer.exe (og den viste størrelse af en fil omfatter ikke ADS’s størrelse). Desuden vises den ikke som standard med “dir”-kommandoen (/R-flaget viser dog ADS og anvendes fra Windows Vista).

Det er ganske enkelt at oprette en ADS.

Eksempel på oprettelse af en ADS med type-kommandoen:

Til Windows XP var det muligt at køre en ADS med start-kommandoen. Siden senere versioner af Windows er det dog ikke længere muligt.

Dataadgang – Misbrug af ADS er stadig en relevant trussel, da der er flere måder at læse og udføre et ADS på.

Den første anvendelse er adgang til data. Der er let adgang til indholdet af ADS’et. Følgende er et eksempel med PowerShell:

Udførelse – Ud over at læse dataene er det også muligt at udføre dem. Selv om det ikke er muligt at udføre en ADS med kommandoen “start”, kan den stadig køres fra andre programmer. F.eks. med WMI:

“wmic process call creates” – kører en proces med WMI. Den kan også køre en ADS. Eksempel:

Der findes yderligere legitime native værktøjer i Windows, der kan bruges til direkte at køre en ADS. For eksempel kan en DLL gemmes inde i et ADS og kaldes af DllMain gennem rundll32.exe; også en HTA kan gemmes inde i et ADS og kaldes gennem mshta.exe; og så videre.

Malicious Campaigns Abusing ADS

Det kan se ud til, at Windows har formået at håndtere de trusler, der befinder sig i ADS. Der er dog mange malware-familier i naturen, som stadig misbruger ADS’er.

Et andet eksempel fra 2017 er BitPaymer, ransomware, som brugte to ADS’er i angrebssekvensen for at tilføje stealth til handlingerne og skjule ondsindet aktivitet. Den første ADS blev oprettet for at køre kommandoen “net view” for at få fat i netværksandele, hvorefter den anden ADS forvrænger dataene på disken og netværksandele.

For at konkludere, er misbrug af ADS en teknik, der stadig er relevant i dag. De seneste Windows-versioner har nemlig begrænset og hærdet ADS’ funktionalitet. Men grundlæggende beherskelse af native Windows-værktøjer som Power-Shell og WMI eller et vist kendskab til Windows-kommandolinjen gør det muligt for trusselsaktører at fortsætte og udnytte ADS i deres angreb. Det er interessant, at de seneste kampagner, der anvender ADS, anses for at være ret sofistikerede og har tendens til at minimere brugen af vedvarende filer på disken.

Skriv en kommentar