2009. június 3., szerda

Forensic vizsgálatok 3. - Adatrejtés Windows alatt

A betörési tesztelés mellett a nyomelemző munkák területe az a témakör, amelyről sok szakmabeli is csak homályos képpel rendelkezik, holott meglehetősen szerteágazó és szövevényes világról van szó. Több posztból álló sorozatunkban igyekszünk felvillantani néhány érdekesebb momentumot nyomelemzős munkáinkról.

Az adatrejtés meglehetősen szerteágazó dolog; sajnos azt kell mondanunk, hogy - mint látni fogjuk - az adatrejtők lépéselőnyben vannak a nyomkeresőkkel szemben. Lássunk néhány módot, hogy hogyan lehet adatokat rejteni például a windowsban!
  • Fájlattribútumok. Az egyik legegyszerűbb fájlrendszerbeli rejtési mód, ugyanis a "normál" explorer, illetve fájlkezelők beállítástól függően nem mutatják a hidden/system attribútumú fájlokat. Nagymértékű adatrejtést nem nyújt, néhány kattintással ki lehet cselezni.
  • Átnevezés. Nem sokkal összetettebb módszer, ha átnevezzük az elrejteni kívánt (például a vezetőség bérezését tartalmazó xls) adatot MSVCIRT.dll-re, és beletesszük a c:\windows\system32 mappába: itt annyi minden található amúgy is, hogy célzatos keresés nékül nem valószínű, hogy akár sasszemű adminisztrátorunk is ráakadna: a windows API a fájlok típusát a kiterjesztésük alapján kezeli, és a HKEY_CLASSES_ROOT registrykulcsban tárolja, hogy melyik típussal mit kell/lehet csinálni.
  • Átnevezés okosan, szignatúraátírással. A fenti módszernek egy komoly hátránya van: a fájl neve hiába .dll, attól még xls marad, emiatt az eredeti fájlszignatúra megmarad a fejlécben. Tipikusan az első néhány bájt alapján megmondható, hogy itten ellentmondás van a fejlécinformáció és a kiterjesztés között: a sima átnevezést leleplező, éjfélkor lefutó okos kis perl szkriptet meg lehet bolondítani azzal, hogy hexaeditorban megváltoztatjuk az xls fejlécét dll szignatúrára (gyakorlatilag egy MZ karakterfüzért kell beletenni az első két bájt helyére: ez a végrehajtható fájlok szignatúrája. Ilyenek a dll, ocx, sys, srv, exe kiterjesztések). Ekkor már a fájltípust szignatúra alapján megtippelő eszközök is megbolondíthatók bizonyos szintig (természetesen tüzetes vizsgálat után továbbra is kiderül, hogy nem dll a fájlunk a fejléc ellenére sem, de itt a felfedezést már komolyan akarni kell).
  • Átnevezés nagyon okosan, időpecsétekkel. Az átnevezős/szignatúramatatós módszernek van egy óriási hátránya: ha megnézzük a fájlok keletkezési időpontjait, akkor az utólag odatett fájlok idői bizony úgy fognak kilógni a többi közül, mint egy fájó hüvelykujj. Az NTFS négy időpecsétet rendel az egyes fájlokhoz: ezek az ACME (Acessed, Created, Modified/Written, Entry modified), és a dir /t[acw] kapcsolókkal elhet kilistázni őket. Természetesen egyik sincs kőbe vésve: a metasploit project antiforensics szekciójában található timestomp eszközzel tetszőlegesen lehet módosítani az időpecséteket.
  • Alternate data streams használata. Az egyik legrégebbi windowsos adatrejtési módszer: azon az NTFS szolgáltatáson alapszik, hogy lehetséges kiegészítő információkat hozzárendelni fájlokhoz, ezek egyszerű listázáskor nem látszanak és logikailag a fájl végéhez kerülnek a fájlrendszerben és semmilyen "hagyományos" listázási móddal nem lehet előhozni őket (a helyet attól még foglalják, tehát vigyázni kell a túl nagy fájlok elrejtésekor). A windows itt tárolja a fájlokhoz tartozó metaadatokat (pl. thumbnail, vagy a tulajdonságlapon található bejegyzések) Például: echo kiskutya > bela.txt:rejtettfile.txt, előhozás: notepad.exe bela.txt:rejtettfile.txt. Hogy lehet megszabadulni ezektől az ADS-ektől? Több eszköz is használható, az egyik legjobb az lads.exe, a SysInternalstól, vagy egész egyszerűen átmásoljuk a fájlt egy nem NTFS-partícióra (pl. ext3), vagy FTP-n töltjük le, ugyanis az FTP terminál az EOF karakter elérésekor. Megjegyzés: a netről letöltött chm fájlok megnyitásához is használható ez a trükk, ha a chm viewer 404-es hibát ad az oldalak megnézésekor. Több vírus is használta ezt a módszert. Forensic szempontból fontos információ, hogy ADS-ekre nem definiálhatók külön ACL-ek, emiatt egy felhasználó csak akkor hozhat létre ilyeneket, ha amúgy írhatja a fájlt, amihez hozzácsatol.
  • ADS nagyon alattomos módon. A windows dll-jei mögé is lehet ADS-t tenni, viszont ez különösen alattomos mód akkor, ha a dll cache-ben lévő példányok mögé szúrjuk az ADS-t, ugyanis hiába törlik le a munkapéldány mögül az ADS-eket, a windows szépen visszamásolja őket a WFT (Windows File Protection) keretében. A cache a %WINDIR%\system32\dllcache mappában lakik.
  • Slackbe írás. A slack használatának megértéséhez szükséges némi előismeret a fájrendszerek működéséről. A fájlrendszerben formázáskor beállítunk egy értéket (a blokkméretet), aminél kisebb egységet nem lehet írni rá vagy olvasni róla, tehát fizikailag ennyi helyet fog elfoglalni egy akár egy bájtos fájl is. Egy blokkban csak egy fájl lakhat, emiatt pl. 512B-os blokkméretnél egy 1B-os állomány tárolásakor ~500B "szabad" hely lesz a fájlunk mögött. Ebbe pedig akár írni is lehet, ugyanis a fájlrendszer üzemszerű használatakor békén hagyják a slackeket. A metasploit project slacker nevű eszközével lehet írni a slackbe, illetve olvasni belőle (értelemszerűen több slacket is felhasznál, ha nagyobb a rejteni kívánt fájl, mint az aktuális blokkméret). Kimondottan nehéz detektálni: ha pedig pl. titkosított fájlt rejtünk el így, nagyon nehéz észrevenni.
  • Adatrejtés office dokumentumokban. Néha a kőbalta-fatengely kombó a legjobb megoldás: triviális módon lehet adatokat elrejteni dokumentumokban, amelyek amúgy is nagy mennyiségben megtalálhatóak egy modern irodában. Néhány ötlet: fehér színnel a dokumentum végére tesszük a szöveget, vagy beállítjuk a bekezdés tulajdonságainál a "hidden" pipát.
  • Adatrejtés office dokumentumokban okosan. A fenti módszerek viszonylag egyszerűen észrevehetőek, viszont a Glue nevű zseniális kis eszközzel nagyon nehezen detektálható rejtést végezhetünk: megadunk neki egy word doksit és egy excel munkafüzetet, és összeolvasztja a kettőt a word nevén (a dolog azon alapszik, hogy mindkét fájltípus OLE-streameket használ, és két streamhalom viszonylag problémamentesen összeilleszthető). Ha az így készülő állományt .doc néven megnyitjuk worddel, az eredeti word doksi tartalmát látjuk, viszont ha átnevezzük .xls-re, akkor az excel worksheetet (!). A fájlszignatúra-ellenőrző programok nagy része pedig egyszerűen Microsoft Office Document (OLE embedded) fájltípusként azonosítja a hibridünket is.
  • Adatrejtés a registryben. A registryben rengeteg olyan hely van, amit a windows egész egyszerűen nem használ semmire: egy ilyen rejtekhely az a kulcs, ahol a windows az időzóna-információkat tárolja (HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation). Ezt a kulcsot lehet írni-olvasni - tökéletes rejtekhely.

3 megjegyzés:

  1. Szia!

    Talán nem pont ugyanez a kategória, amiket Te leírtál, de van ilyen is, ami érdekes lehet: href.hu/x/975v (becsszó, semmi gonoszság, csak nem tudtam ctrl+v-zni ide a kommentboxba, és nem volt kedvem végigírni az egész linket :))

    (egyébként tök jó a blog, nagyon sokat tanulok belőle)

    VálaszTörlés
  2. Kösz a linket. :)

    A szteganográfiát szándékosan nem vettük bele a posztba, ugyanis egyrészt itt a windows-specifikus rejtési módokat boncolgattuk, másrészt lesz egy külön poszt róla (amint lesz rá egy szusszanásnyi időm :))

    VálaszTörlés
  3. Jó a blog (linkeltem is a saját blogomra)

    A sztegó tényleg jó mulatság. ötvözve még egy két trükkel nagyon hatékony tud lenni. ;-)

    White stegó is megy, de a text sztegó is ránézésre kiszúrhatatlan.

    VálaszTörlés

Kommentek