Az Alternatív adatfolyam visszaélése nem tűnt el

A következő blogbejegyzés bemutatja az Alternatív adatfolyam fogalmát, és azt, hogy hogyan használták a vadonban, a múltban és napjainkban is: egy olyan technikaként, amelyet rosszindulatú hasznos teher elrejtésére használnak a fájlrendszerben. Bár régi technikának tekinthető, még ma is aktuális és gyakori a vadonban.

Mi az alternatív adatfolyam?

Az alternatív adatfolyam (ADS) az NTFS fájlrendszer (a Windows fő fájlrendszerformátuma) azon képessége, hogy a fájlhoz általában használt alapértelmezett adatfolyam mellett különböző adatfolyamokat is tárolhat. Amikor ezt a funkciót létrehozták, a fő célja az volt, hogy támogatást nyújtson a macOS hierarchikus fájlrendszeréhez (HFS).

Az NTFS fájlrendszer attribútumokkal ellátott fájlokat tartalmaz. A mi tárgykörünk szempontjából releváns attribútum a $DATA attribútum, amely a fájl adatfolyamainak tárolására szolgál.

A múltban gyakori volt, hogy egy törvényes fájl ADS-ében rosszindulatú hasznos terhet tároltak. Manapság azonban számos biztonsági megoldás felismeri és átvizsgálja az ADS-eket. Ebben a bejegyzésben azonban megmutatjuk, hogy egy ADS még mindig használható hasznos terhek futtatására, miközben a felhasználó és a különböző biztonsági termékek elől is rejtve marad.

A cikkben bemutatott fogalmak egyszerűsítése érdekében minden példa a Windows natív eszközein alapul.

How to Use ADS

A Windows Vista régi szép napjaiban az Alternate Data Streams (ADS) gyakori módszer volt a rosszindulatú programok fejlesztői számára a rosszindulatú kód elrejtésére. Az alternatív adatfolyamot hatékonyan használták a rosszindulatú rontó fájlok jelenlétének elrejtésére, egy törvényes fájlba préselve azt. Az Alternatív adatfolyamba helyezett rosszindulatú programmal a Windows-fájl a törvényes fájlok mellett a rosszindulatú fájlra vonatkozó információkat és utasításokat is tartalmazta. Ahhoz, hogy a hacker által az Alternatív adatfolyamban elhelyezett rosszindulatú kódot futtatni tudja, az mklink parancs segítségével egy symlinket szeretne létrehozni. Ehhez azonban rendszergazdai jogokkal kell rendelkeznie a gépen. Tekintettel arra, hogy egy felhasználó normális viselkedése nem igényli, hogy adminisztrátorként futtatva operáljon, a hackerek általában úgy közelítik meg célpontjaikat, hogy feltételezik, hogy egy adminjogok nélküli dobozon landolnak.

A felsorolás – A $DATA alatti mainstream az üres karakterlánc (tehát: “”, más néven a névtelen adatfolyam). Ez a folyam arra szolgál, hogy tartalmazza a fájl szabályos folyamát.

Az alábbiakban egy példát mutatunk egy fájl adatfolyamainak PowerShell-lel történő felsorolására:

A dir /R, vagy a SysInternals\streams.exe segítségével egy fájl ADS-ét is felsorolhatjuk / rekurzívan egy könyvtáron

Amint fentebb látható, a fájl csak a névtelen folyamot tartalmazza.

Mindenesetre néha egy törvényes fájlban is találhatunk ADS-t, mivel ennek a technikának számos törvényes felhasználási módja van.

Az alábbiakban egy fájl ADS-sel történő adatfolyamainak PowerShell segítségével történő felsorolására mutatunk példát:


Ez is egy példa az ADS törvényes felhasználására: a Zone. Identifier. Ez a mező a fájl forrásának megbízhatósági szintjét mutatja be. Ez egy böngésző felhasználása a tárolására A macOS-nek megfelelője a “karantén bit”.

Készítés – Míg az ADS-nek lehetnek legitim felhasználásai, az ADS-t rosszindulatú hasznos teher tárolására is lehet használni. A támadók előnyben részesíthetik ezt a módszert a hasznos teher névtelen adatfolyamba való mentésével szemben, mivel annak jelenléte rejtve marad a felhasználó előtt – nem érhető el az explorer.exe programból (és a fájl megjelenített mérete nem tartalmazza az ADS méretét). Ráadásul a “dir” paranccsal alapértelmezés szerint nem jelenik meg (a /R jelző azonban megjeleníti az ADS-t, és Windows Vistától kezdve alkalmazzák).

Az ADS létrehozása meglehetősen egyszerű.

Egy példa az ADS létrehozására a type paranccsal:

A Windows XP-ig a start paranccsal lehetett ADS-t futtatni. A Windows későbbi verziói óta azonban ez már nem lehetséges.

Adathozzáférés – Az ADS-sel való visszaélés még mindig releváns fenyegetés, mivel egy ADS-t többféleképpen lehet olvasni és végrehajtani.

Az első használat az adatokhoz való hozzáférés. Az ADS tartalmához könnyen hozzá lehet férni. A következő példa a PowerShell segítségével:

Futtatás – Az adatok olvasása mellett lehetőség van azok végrehajtására is. Bár az ADS-t nem lehet “start” paranccsal végrehajtani, de más programokból mégis futtatható. Például WMI-vel:

“wmic process call creates” – futtat egy folyamatot WMI-vel. Ez is futtathat egy ADS-t. Példa:

A Windowsnak vannak további törvényes natív eszközei, amelyekkel közvetlenül futtatható egy ADS. Például egy DLL elmenthető egy ADS-en belül, és a DllMain a rundll32.exe segítségével hívható meg; egy HTA szintén elmenthető egy ADS-en belül, és az mshta.exe segítségével hívható meg; és így tovább.

Az ADS-szel visszaélő rosszindulatú kampányok

Úgy tűnhet, hogy a Windowsnak sikerült kezelni az ADS-ben rejlő fenyegetéseket. Azonban számos olyan malware-család van a természetben, amely még mindig visszaél az ADS-ekkel.

Egy másik példa 2017-ből a BitPaymer, a zsarolóprogram, amely két ADS-t használt a támadássorozatban, hogy lopakodóvá tegye a műveleteket és elrejtse a rosszindulatú tevékenységet. Az első ADS-t azért hozták létre, hogy a “net view” parancsot futtassák a hálózati megosztások megszerzéséhez, majd a második ADS megkeveri a lemezen és a hálózati megosztásokon lévő adatokat.

Végeredményben az ADS-sel való visszaélés olyan technika, amely napjainkban is aktuális. A legújabb Windows-verziók ugyanis korlátozták és keményítették az ADS funkcióit. A natív Windows-eszközök, például a Power-Shell és a WMI alapvető ismerete, vagy a Windows parancssor bizonyos ismerete azonban lehetővé teszi a fenyegető szereplők számára, hogy folytassák és kihasználják az ADS-t a támadásaikban. Érdekes módon az ADS-t használó legújabb kampányok meglehetősen kifinomultnak számítanak, és általában minimalizálják a lemezen lévő tartós fájlok használatát.

Szólj hozzá!