Sdílet prostřednictvím


RootkitRevealer v1.71

Od Mark Russinovich

Publikováno: 1. listopadu 2006

StáhnoutStáhnout RootkitRevealer (231 kB)
Spusťte nyní ze služby Sysinternals Live.

Úvod

RootkitRevealer je pokročilý nástroj pro detekci rootkitu. Běží na systémech Windows XP (32bitová verze) a Windows Server 2003 (32bitová verze) a jeho výstup obsahuje nesrovnalosti v rozhraní API registru a systému souborů, které můžou znamenat přítomnost rootkitu v uživatelském režimu nebo režimu jádra. RootkitRevealer úspěšně detekuje mnoho trvalých rootkitů, včetně AFX, Vanquish a HackerDefender (poznámka: RootkitRevealer není určen k detekci rootkitů, jako je Fu, které se nepokoušají skrýt své soubory nebo klíče registru). Pokud ji použijete k identifikaci přítomnosti rootkitu, dejte nám vědět!

Důvodem, proč už neexistuje verze příkazového řádku, je, že autoři malwaru začali cílit na kontrolu RootkitRevealer pomocí názvu spustitelného souboru. Proto jsme aktualizovali RootkitRevealer, aby spustil jeho kontrolu z náhodně pojmenované kopie samotné, která běží jako služba Windows. Tento typ provádění není pro rozhraní příkazového řádku příznivé. Všimněte si, že pomocí možností příkazového řádku můžete spustit automatickou kontrolu s výsledky zaprotokolovanými do souboru, což je ekvivalent chování verze příkazového řádku.

Co je Rootkit?

Termín rootkit se používá k popisu mechanismů a technik, kterými se malware, včetně virů, spywaru a trojských koní, snaží skrýt jejich přítomnost před blokátory spywaru, antivirovým softwarem a nástroji pro správu systému. Existuje několik klasifikací rootkitu v závislosti na tom, jestli malware přežije restartování a jestli se spustí v uživatelském režimu nebo v režimu jádra.

Trvalé rootkity
Trvalý rootkit je jeden přidružený k malwaru, který se aktivuje pokaždé, když se systém spustí. Vzhledem k tomu, že takový malware obsahuje kód, který se musí spustit automaticky při každém spuštění systému nebo když se uživatel přihlásí, musí uložit kód do trvalého úložiště, jako je registr nebo systém souborů, a nakonfigurovat metodu, pomocí které se kód spustí bez zásahu uživatele.

Rootkity založené na paměti
Rootkity založené na paměti jsou malware, který nemá trvalý kód, a proto nepřežije restartování.

Rootkity v uživatelském režimu
Existuje mnoho metod, kterými se rootkity snaží vyhnout detekci. Například rootkit v uživatelském režimu může zachytit všechna volání rozhraní API systému Windows FindFirstFile/FindNextFile, která používají nástroje pro zkoumání systému souborů, včetně Průzkumníka a příkazového řádku, k vytvoření výčtu obsahu adresářů systému souborů. Když aplikace provede výpis adresáře, který by jinak vrátil výsledky obsahující položky identifikující soubory přidružené k kořenové sadě, zachytí a upraví výstup tak, aby odebral položky.

Nativní rozhraní API systému Windows slouží jako rozhraní mezi klienty uživatelského režimu a službami režimu jádra a sofistikovanějšími rootkity uživatelského režimu zachycují systém souborů, registr a funkce výčtu procesů nativního rozhraní API. To brání jejich detekci skenery, které porovnávají výsledky výčtu rozhraní API systému Windows s výčetem vráceným nativním výčtem rozhraní API.

Rootkity v režimu jádra
Rootkity v režimu jádra můžou být ještě výkonnější, protože nejen zachycují nativní rozhraní API v režimu jádra, ale můžou také přímo manipulovat s datovými strukturami režimu jádra. Běžnou technikou skrytí přítomnosti malwarového procesu je odebrání procesu ze seznamu aktivních procesů jádra. Vzhledem k tomu, že rozhraní API pro správu procesů spoléhají na obsah seznamu, proces malwaru se nezobrazí v nástrojích pro správu procesů, jako je Správce úloh nebo Průzkumník procesů.

Jak funguje RootkitRevealer

Vzhledem k tomu, že trvalé rootkity fungují změnou výsledků rozhraní API tak, aby se systémové zobrazení používající rozhraní API liší od skutečného zobrazení v úložišti, RootkitRevealer porovnává výsledky kontroly systému na nejvyšší úrovni s tím, že na nejnižší úrovni. Nejvyšší úroveň je rozhraní API systému Windows a nejnižší úroveň je nezpracovaný obsah svazku systému souborů nebo podregistru registru (soubor Hive je formát úložiště na disku v registru). Rootkity, ať už uživatelský režim nebo režim jádra, které manipulují s rozhraním API systému Windows nebo nativním rozhraním API tak, aby odebraly jejich přítomnost ze seznamu adresářů, například rootkitRevealer jako nesrovnalosti mezi informacemi vrácenými rozhraním API systému Windows a které se zobrazují v nezpracované kontrole struktur systému souborů FAT nebo NTFS svazku.

Může rootkit skrýt v RootkitRevealer
Rootkit se teoreticky může skrýt před RootkitRevealerem. To by vyžadovalo zachycování čtení rootkitRevealer dat registru hive nebo dat systému souborů a změnu obsahu dat tak, aby data registru nebo soubory rootkitu nebyly přítomny. To by však vyžadovalo úroveň sofistikovanosti, která se v rootkitech dosud nezoznala. Změny dat by vyžadovaly důvěrné znalosti formátů NTFS, FAT a Registry Hive a také možnost měnit datové struktury tak, aby skrývaly rootkit, ale nezpůsobily nekonzistentní nebo neplatné struktury nebo nesrovnalosti vedlejšího efektu, které by byly označeny RootkitRevealer.

Existuje jistý způsob, jak zjistit přítomnost rootkitu.
Obecně platí, že ne v běžícím systému. Rootkit v režimu jádra může řídit jakýkoli aspekt chování systému, takže informace vrácené jakýmkoli rozhraním API, včetně nezpracovaných čtení hive registru a dat systému souborů provedených RootkitRevealerem, mohou být ohroženy. Při porovnávání on-line skenování systému a off-line skenování ze zabezpečeného prostředí, jako je spuštění do instalace operačního systému založeného na CD, je spolehlivější, rootkity můžou takové nástroje cílit, aby se detekce vyhýbala dokonce i jim.

Na konci řádku je, že nikdy nebude univerzální rootkit skener, ale nejvýkonnější skenery budou on-line/off-line porovnávací skenery, které se integrují s antivirovým programem.

Použití RootkitRevealer

RootkitRevealer vyžaduje, aby účet, ze kterého má jeho spuštění přiřazené zálohovací soubory a adresáře, načíst ovladače a provádět úlohy údržby svazků (v systému Windows XP a vyšších) oprávnění. Ve výchozím nastavení je těmto oprávněním přiřazena skupina Administrators. Chcete-li minimalizovat falešně pozitivní výsledky, spusťte RootkitRevealer v nečinném systému.

Nejlepších výsledků dosáhnete ukončení všech aplikací a zachování systému v opačném případě v nečinnosti během procesu skenování RootkitRevealer.

Pokud máte dotazy nebo problémy, navštivte prosím fórum Sysinternals RootkitRevealer.

Ruční skenování

Pokud chcete naskenovat systém, spusťte ho v systému a stiskněte tlačítko Skenovat. RootkitRevealer zkontroluje systém, který hlásí své akce v oblasti stavu v dolní části okna, a uvádí nesrovnalosti ve výstupním seznamu. Možnosti, které můžete nakonfigurovat:

  • Skrýt soubory metadat NTFS: tato možnost je ve výchozím nastavení zapnutá a má RootkitRevealer nezobrazuje standardní soubory metadat NTFS, které jsou skryté v rozhraní API systému Windows.
  • Prohledávat registr: tato možnost je ve výchozím nastavení zapnutá. Zrušením výběru nemá RootkitRevealer provádět kontrolu registru.

Spuštění automatické kontroly

RootkitRevealer podporuje několik možností pro systémy automatické kontroly:

Použití: rootkitrevealer [-a [-c] [-m] [-r] outputfile]

Parametr Popis
-a Automatické prohledávání a ukončení po dokončení
-c Formátovat výstup jako CSV.
-m Umožňuje zobrazit soubory metadat NTFS.
-r Neprohledejte registr.

Všimněte si, že výstupní umístění souboru musí být na místním svazku.

Pokud zadáte možnost -c, neoznamuje průběh a nesrovnalosti se vytisknou ve formátu CSV pro snadný import do databáze. Kontrolu vzdálených systémů můžete provést spuštěním pomocí nástroje Sysinternals PsExec pomocí příkazového řádku, jako je následující:

psexec \\remote -c rootkitrevealer.exe -a c:\windows\system32\rootkit.log

Interpretace výstupu

Jedná se o snímek obrazovky rootkitRevealer, který detekuje přítomnost oblíbeného hackerDefender rootkitu. Nesrovnalosti v klíči registru ukazují, že klíče registru ukládající ovladač zařízení a nastavení služby HackerDefenderu nejsou viditelné pro rozhraní API systému Windows, ale nacházejí se v nezpracované kontrole dat Hive registru. Podobně hackerDefender související soubory nejsou viditelné pro prohledávání adresářů rozhraní Windows API, ale jsou přítomny ve skenování nezpracovaných dat systému souborů.

Rootkit Revealer

Měli byste prozkoumat všechny nesrovnalosti a určit pravděpodobnost, že indikují přítomnost rootkitu. Bohužel neexistuje žádný konečný způsob, jak určit na základě výstupu, pokud je k dispozici rootkit, ale měli byste prozkoumat všechny nahlášené nesrovnalosti, abyste měli jistotu, že jsou vysvětlitelné. Pokud zjistíte, že máte nainstalovaný rootkit, vyhledejte pokyny k odebrání na webu. Pokud si nejste jisti, jak odebrat rootkit, měli byste přeformátovat pevný disk systému a přeinstalovat Windows.

Kromě níže uvedených informací o možných nesrovnalostech RootkitRevealer fórum RootkitRevealer v Sysinternals probírá zjištěné kořenové sady a konkrétní falešně pozitivní výsledky.

Skryto v rozhraní API systému Windows

Tyto nesrovnalosti jsou ty, které vykazuje většina rootkitů; Pokud jste ale nekontrolovali soubory s skrýt metadata NTFS, měli byste očekávat, že na jakémkoli svazku NTFS uvidíte řadu takových položek, protože NTFS skryje soubory metadat, například $MFT a $Secure, z rozhraní API systému Windows. Soubory metadat, které jsou přítomné na svazcích NTFS, se liší podle verze systému souborů NTFS a funkcí NTFS, které jsou na svazku povolené. K dispozici jsou také antivirové produkty, jako je Antivirus Společnosti Antivirus, které používají techniky rootkit ke skrytí dat uložených v alternativních datových proudech NTFS. Pokud používáte takový virový skener, uvidíte nesrovnalosti rozhraní WINDOWS API skryté v alternativním datovém proudu v každém souboru NTFS. RootkitRevealer nepodporuje výstupní filtry, protože rootkity můžou využívat jakékoli filtrování. A konečně, pokud se během kontroly odstraní soubor, může se také zobrazit tato nesrovnalost.

Toto je seznam souborů metadat NTFS definovaných jako Windows Server 2003:

  • $AttrDef
  • $BadClus
  • $BadClus:$Bad
  • $BitMap
  • $Boot
  • $LogFile
  • $Mft
  • $MftMirr
  • $Secure
  • $UpCase
  • $Volume
  • $Extend
  • $Extend\$Reparse
  • $Extend\$ObjId
  • $Extend\$UsnJrnl
  • $Extend\$UsnJrnl:$Max
  • $Extend\$Quota

Přístup byl odepřen.
RootkitRevealer by nikdy neměl nahlásit tuto nesrovnalost, protože používá mechanismy, které mu umožňují přístup k libovolnému souboru, adresáři nebo klíči registru v systému.

Viditelné v rozhraní API systému Windows, index adresáře, ale ne v MFT.
Viditelné v rozhraní API systému Windows, ale ne v indexu MFT nebo adresáře.
Viditelné v rozhraní API systému Windows, MFT, ale ne v indexu adresáře.
Viditelné v indexu adresáře, ale ne v rozhraní API systému Windows nebo MFT.

Kontrola systému souborů se skládá ze tří součástí: rozhraní API systému Windows, hlavní tabulky souborů NTFS (MFT) a struktur indexů adresářů na disku NTFS. Tyto nesrovnalosti značí, že se soubor zobrazuje pouze v jedné nebo dvou kontrolách. Běžným důvodem je vytvoření nebo odstranění souboru během kontrol. Toto je příklad sestavy nesrovnalostí rootkitRevealer pro soubor vytvořený během kontroly:

C:\newfile.txt
1. 3. 2005 17:26
8 bajtů
Viditelné v rozhraní API systému Windows, ale ne v indexu MFT nebo adresáře.

Délka rozhraní API systému Windows není konzistentní s nezpracovanými daty Hive.
Rootkity se mohou pokusit skrýt sami tím, že zmýlí velikost hodnoty registru, aby jeho obsah nebyl viditelný pro rozhraní API systému Windows. Tyto nesrovnalosti byste měli prozkoumat, i když se může zobrazit také jako výsledek hodnot registru, které se během kontroly mění.

Neshoda typů mezi rozhraním API systému Windows a nezpracovaná data Hive
Hodnoty registru mají typ, například DWORD a REG_SZ, a tyto nesrovnalosti si poznamenou, že typ hodnoty, jak je hlášeno prostřednictvím rozhraní API systému Windows, se liší od typu nezpracovaných dat hive. Rootkit může svá data maskovat tak, že je uloží jako hodnotu REG_BINARY, například a rozhraní API systému Windows se domnívá, že se jedná o hodnotu REG_SZ; pokud uloží 0 na začátku dat, rozhraní API systému Windows nebude mít přístup k následným datům.

Název klíče obsahuje vložené hodnoty null.
Rozhraní API systému Windows považuje názvy klíčů za řetězce ukončené hodnotou null, zatímco jádro je považuje za počítané řetězce. Proto je možné vytvořit klíče registru, které jsou viditelné pro operační systém, ale pouze částečně viditelné pro nástroje registru, jako je Regedit. Ukázkový kód Reghide v Sysinternals ukazuje tuto techniku, která se používá jak malwarem, tak rootkity ke skrytí dat registru. Pomocí nástroje Sysinternals RegDelNull odstraňte klíče s vloženými null.

Neshoda dat mezi rozhraním API systému Windows a nezpracovaná data Hive
K této nesrovnalosti dojde, pokud se během kontroly registru aktualizuje hodnota registru. Mezi hodnoty, které se často mění, patří časová razítka, jako je hodnota doby provozu Microsoft SQL Serveru, zobrazená níže a hodnoty "poslední kontroly". Měli byste prozkoumat jakoukoli hlášenou hodnotu, abyste měli jistotu, že se jedná o platnou hodnotu registru aplikace nebo systému.

HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\RECOVERYMANAGER\MSSQLServer\uptime_time_utc
1. 3. 2005 13:33
8 bajtů

Prostředky rootkitu

Následující weby a knihy jsou zdroje dalších informací o rootkitech:

Sony, rootkity a správa digitálních práv pryč příliš daleko
Přečtěte si příspěvek na blogu Marka o jeho zjišťování a analýze rootkitu Sony na jednom z jeho počítačů.

Rozbalení kořenovýchkitů
Článek Mark's June Windows IT Pro Magazine poskytuje přehled technologií rootkit a jak RootkitRevealer funguje.

Rootkits: Subverting the Windows Kernel
Tato kniha Greg Hoglund a Jamie Butler je nejkomplexnější léčbou rootkitů, které jsou k dispozici.

www.phrack.org
Tento web ukládá archiv Phrack, cracker-orientovaný časopis, kde vývojáři diskutují o chybách v produktech souvisejících se zabezpečením, technik rootkit a dalších malware triků.

Umění počítačových virů výzkum a obrana, Peter Szor

Malware: Boj se škodlivým kódem, autor: Ed Skoudis a Lenny Zeltser

Windows Internals, 4th Edition, Mark Russinovich a Dave Solomon (kniha nemluví o rootkits, ale porozumění architektuře Windows je užitečné pochopit rootkity).

StáhnoutStáhnout RootkitRevealer (231 kB)

Spusťte nyní ze služby Sysinternals Live.