Alternatív adatfolyamok (ADS)
Az ADS gyakorlati, de alapvető alkalmazása CTF és Pentesting környezetben
Mi is az Alternatív adatfolyamok (ADS) ?
Ez egy olyan funkció, amelyet a New Technology File System, más néven NT File System (NTFS) rendszerhez adtak hozzá, hogy növeljék az összehasonlíthatóságot a Macintosh Hierarchical File System (HFS) rendszerrel, laikus nyelven ez valami olyasmi, ami megkönnyítette a fájlok használatát a Mac (Apple) és a PC (Windows) rendszeren egyaránt.
Hogyan működik, és miért érdekel ez engem?
Általában, amikor elmentesz valamit egy fájlba, például egy .txt fájlba, akkor a fájl tartalmát (ascii szöveg) egy adatfolyamban tárolod, amelyet a windows alapértelmezett adatfolyamként ismer fel, így a következő alkalommal, amikor megnyitod a fájlt, ugyanezt a folyamot fogod elérni az adatok megtekintéséhez.
Egy példa
Ha létrehozok egy .txt fájlt a Notepad segítségével a windows rendszeremen, és elmentem egy fájlba (secret.txt), akkor minden alkalommal, amikor megnyitom, látni fogom az adataimat.
De mi van, ha a fájlban több olyan adat van, amiről nem tudunk?
Ez az, ahol alternatív adatfolyamok jönnek szóba.
A cmd.exe (Command Prompt) programot használom a példák bemutatásához, hogy az emberek könnyebben megértsék a CLI-t (Command Line Interface), de ugyanezek az eredmények elérhetők a Power Shell segítségével is.
Szóval, amikor a parancssor segítségével megnézem a könyvtáram tartalmát, láthatom a titkomat.txt és a fájl mérete 33 bájt.
dir
Ez egy normál fájlnak tűnik, de mi van, ha a /r-t hozzáadom a parancsomhoz ?
dir /r
Most láthatunk egy másik fájlt ugyanabban a könyvtárban, ugyanolyan előtaggal, mint az eredetileg létrehozott titkunk.txt, de evil.txt utótaggal, ahol a $DATA azt mutatja, hogy ez egy $DATA típusú adatfolyam.
A parancsunkhoz hozzáadva a /r-t láthatjuk, hogy mindkét fájl ugyanabban a könyvtárban van, de mi csak a secret-et látjuk.txt-t látjuk az asztalon, láthatjuk a különbséget a fájlméretben is, míg a secret.txt fájlunk még mindig 33 bájtos, a secret.txt:evil.txt 74, ami több mint kétszerese a secret.txt-nek.
Összehasonlítva a két parancs kimenetét.
# First Command
dir# Second Command
dir /r
Mivel pontosabban látjuk az információkat mindkét parancs által pontosabban látjuk a változásokat.
- Mindkét kimenet azt mondja, hogy csak 2 fájl van a könyvtárban és ugyanazt a méretet adja meg nekünk, ez azért van, mert a secret.txt és a secret.txt:evil.txt ugyanaz a fájl, nem különböző fájlok, de az adatok külön streamben vannak tárolva.
- A könyvtárban használt és a rendszerben rendelkezésre álló összes hely továbbra is ugyanaz.
Nézzük meg a kettő tartalmát együtt:
A kettő megtekintése közben láthatjuk, hogy a tartalom különböző, láthatjuk a különbséget a fájlok nevében is, ami arra enged következtetni, hogy könnyen tárolhatunk információt egy másik adatfolyamban több célra is. Az adatfolyamok az NTFS fájlrendszerben egy alapvető elnevezési konvenciót követnek, amely a következő: FileName:StreamName:StreamType Miután elmondtuk, hogy a secret.txt teljes neve az NTFS fájlrendszerben secret lenne.txt::$DATA
Egy alternatív módszer mindkettő megtekintésére a jegyzettömb megnyitása nélkül a következő lenne.
# View secret.txt
type secret.txt# View Alternate Data Stream
more < secret.txt:evil.txt
.