2009. április 22., szerda

Forensic vizsgálatok 1. - A Windows registry elemzése

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.

Ha forensic munkáink során felhasználói munkaállomás kerül a vizsgálatok szkópjába, túlnyomórészt a Windows valamilyen verziója fut rajta - nem reprezentatív statisztikáink szerint a praxisban előforduló Windowsok 99%-a Xp. Munkaállomások sokféleképp látótérbe kerülhetnek: gyakran valamilyen visszaélés, szándékos adatszivárogtatás felfedezése áll a vizsgálatok indítása mögött, de volt már arra is példa, hogy külső betörés miatt hívtak minket.

Akármilyen céllal is indulnak a vizsgálatok, fontos lépés az, amikor felépítjük egyrészt a munkaállomást használó alkalmazottak profilját az operációs rendszeren és a fájlrendszerben található nyomok felhasználásával, másrészt összeállítjuk a munkaállomásokon a (közel)múltban végzett munka pontos dokumentálását (ezt ékes angolsággal timeline analysis névvel illetik. A szerző magyarul csak meglehetősen setesuta fordításokat olvasott, ezért maradna az eredeti névnél). A timeline analysis kimenete meglepő módon egy timeline, ami rögzíti, hogy milyen tevékenységet végeztek a felhasználók a munkaállomáson (pl. 2009. április 4., 8.00: index.hu meglátogatása, 8.15: bela.doc megnyitása, 8:18: Skype kliens telepítése)

A felhasználó profilozásához és az analízis elvégzéséhez rendkívül jól használható információkkal szolgál a Windows regisztrációs adatbázisa. A legtöbb felhasználó közvetlenül nem kerül kapcsolatba vele (nem nyitják meg, nem szerkesztik, sőt a legtöbb esetben nem is tudják, hogy létezik egyáltalán), viszont a munkaállomáson végzett tevékenység sokféleképp rögzül a Registryben.

A Registry egy bináris adatbázis, amelyben ágak, magyarul hive-ok találhatóak. Az egyes hive-ok különböznek egymástól mind funkcióban, másrészt mind abban, hogy a fájlrendszer mely részében található meg maga a megfelelő fájl. A beépített windowsos regedit.exe használatával egységes felületen láthatjuk a különböző hive-okat. Mik is ezek?
  • HKEY_CLASSES_ROOT (HKCR)
  • HKEY_CURRENT_USER (HKCU)
  • HKEY_LOCAL_MACHINE (HKLM)
  • HKEY_USERS (HKU)
  • HKEY_CURRENT_CONFIG
  • HKEY_PERFORMANCE_DATA
  • HKEY_DYN_DATA
Az egyes hive-ok elnevezésekor a HKEY_ utáni rész jelzi a Windows API definíciójukat, a wikipedia szócikkében kimerítő leírást találunk az egyes hive-ok funkciójáról. Fizikailag a következő fájlokban találhatóak meg a fájlrendszeren (az éles, operációs rendszer által használt példányok):
  • %SystemRoot%\System32\Config\SAM, SECURITY, SOFTWARE, DEFAULT
  • %DocumentRoot%\NTUSER.DAT

Az operációs rendszer számára alapvető fontosságúak ezek az állományok, ezért biztonsági másolatokat az alábbi helyeken találhatunk:
  • %SystemRoot%\System32\Config\ - itt nemcsak magukat a backup állományokat láthatjuk, hanem a tranzakciós logokat is [USER|SAM|SECURITY|DEFAULT].log néven.
  • C:\System Volume Information\_restore{[...]}\RPxxx\Snapshot
Mit lehet kigyűjteni a fenti állományokból? Csak néhány ötlet, gondolatébresztőnek:
  • Sikeres szoftvertelepítések időpontjai. A registryben készül egy bejegyzés minden telpeített szoftverről, időpecséttel. Nem csak "igazi" telepített programok szerepelnek itt, hanem a Windows biztonsági frissítései is.
  • A telepítés óta elindított .exe fájlok neve, az elindítások száma és a legutóbbi indítás időpontja. Bővebb kommentár nem szükséges hozzá...
  • Az Internet Explorerben legutóbb meglátogatott URL-ek listája
  • Legutóbb megnyitott dokumentumok listája
  • A Media Playerben megnyitott fájlok listája
  • A rendszerhez valaha hozzáadott adattárolók listája (ez akkor hasznos, ha a kérdés az, hogy egy bizonyos pendrive-ot csatlakoztatott-e a felhasználó a gépéhez)
  • A felhasználó(k) lokális jelszavai
  • Bejelentkezések időpontjai
  • Környezeti változók, amik a felhasználó(k)ra jellemzőek
  • Az egyes hive-ok kulcsainak legutóbbi módosítására vonatkozó timestamp (nagyon hasznos, ha például a kérdés az, mikor került az autostartok közé valamilyen alkalmazás)
  • A registryben el is lehet rejteni (!) adatokat. A triviális megoldás (jó mélyre dugjuk az elrejteni kívánt adatokat, hátha a felhasználó nem találja meg) mellett ismeretes a default regedit.exe egy hibája is: a régi verziók nevezetesen nem tudnak mit kezdeni a nagyon hosszú nevű bejegyzésekkel, és adott esetben akár nem is jelenítik meg a felhasználó számára.
  • Sok malware különféle, Registryhez kapcsolódó technikákkal terjed (például ismert módszer az, hogy a HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\alatti kulcsot használják. Ez a kulcs lehetőséget biztosít arra, hogy megváltozatassuk a fájlok indításakor elinduló processzeket, és pl. egy "DEBUG" kulcsot létrehozva akár backdoort is indíthat a malware).
Ami különösképpen vonzóvá teszi a registry vizsgálatát a betörési tesztelő számára, az az, hogy ha valamilyen file inclusion sebezhetőség kihasználásával letölthetőek a registryt tartalmazó fájlok, a belőlük kinyerhető információk adott esetben akár a hoszt kompromittálását is jelenthetik.

Milyen eszközökkel lehet kinyerni a registryben tárolt információkat? Kimondottan jó választás a regripper, de a Helix suite-ben is találhatóak eszközök a registryből történő információkinyerésre. Aki a parancssoros matatást részesíti előnyben, használhatja a linuxos chntpw eszközt is.

Nincsenek megjegyzések:

Megjegyzés küldése

Kommentek