Ако се интересувате от сигурността на Windows, името RootkitRevealer ще ви звучи познато: това е помощната програма, която разкри известния случай с руткит на Sony BMG и в продължение на години се превърна в еталон за разкриване на софтуер, скрит на видно място. Въпреки че вече е спряна от производство, остава ключово за разбирането как функционират руткитовете и какви сигнали оставят в системата.
Създаден от Марк Русинович и Брайс Когсуел за Sysinternals (по-късно включена в Microsoft), RootkitRevealer работи на 32-битов Windows XP и Windows Server 2003. Целта му е да идентифицира несъответствия между това, което Windows API-тата съобщават, и това, което действително е съществувало на диска и в системния регистър. Този контраст между „логичен възглед“ и „груб възглед“ Това е сърцевината на методологията му и причината, поради която е открил семейства като AFX, Vanquish или HackerDefender.
Какво точно е руткит и защо е толкова трудно да се открие?
Терминът „руткит“ обхваща техниките и механизмите, използвани от злонамерен софтуер (вируси, троянски коне или шпионски софтуер), за да се скрият от антивирусни програми, антишпионски програми и административни инструменти. С други думи, това е софтуер, който се камуфлира по време на изпълнение, за да изглежда сякаш не съществува. Целта: да остане незабелязан, като същевременно запази контрол над екипа.
Има няколко начина за класифицирането им. От една страна, разграничаваме постоянни и непостоянни. Постоянните програми се реактивират при всяко стартиране или влизане в системата, запазвайки кода си във файловата система или системния регистър и настройвайки механизъм за автоматично стартиране. От друга страна, руткитовете, базирани на паметта, не оцеляват след рестартиране., защото не оставят постоянен код на диска.
Те също така се разделят според това къде се изпълняват: потребителски режим и режим на ядрото. В потребителски режим те обикновено прихващат функции, използвани от програми като Explorer или конзолата, за да изброят файлове или ключове в системния регистър. Класически пример: свързване на API-тата FindFirstFile/FindNextFile, за да се скрият записи, които биха издали файловете им. Най-модерните директно прехващат извикванията на собствения API. свързани с процеси, файлова система или регистър, така че инструментите, които сравняват API-та от високо ниво с тези на оригиналния, също не ги виждат.

Как работи RootkitRevealer: Сравнете какво казва Windows с това, което наистина е там
RootkitRevealer е базиран на идея, която е едновременно проста и мощна: той сканира системата от две нива и търси разлики. На високо ниво той отправя запитвания към Windows API, за да изброи файлове, ключове и стойности; на ниско ниво той директно проверява суровите данни за тома (FAT/NTFS) и кошерите на системния регистър. Ако руткит манипулира API отговорите, за да се скрие, двата изгледа няма да съвпадат..
Този контраст позволява скриване в потребителски режим и режим на ядрото. Например, ако Windows API не изброява „фантомен“ файл в директория, но сурово сканиране на MFT или индекса на директорията го открие, има значително несъответствие. Същото важи и за ключовете и стойностите в системния регистър, присъстващи в кошера, но невидими чрез API..
Важна особеност: в забележителна актуализация, RootkitRevealer спря да предлага „чиста“ версия от командния ред, защото определен зловреден софтуер започна да наблюдава и блокира изпълнимия му файл по име. За да предотврати това, програмата Беше копиран с произволно име и изпълнен като услугаВъпреки това, той запази опциите на командния ред за автоматизиране на сканирането и извеждане на резултатите във файл.
Може ли руткит да се скрие от RootkitRevealer?
На теория, да, но с висока техническа цена. Руткитът ще трябва също така да прехваща суровите данни от RootkitRevealer за системните кошери и данни от файловата система, пренаписвайки сложни структури от формати NTFS, FAT и системния регистър в движение, без да оставя никакви несъответствия. Това би изисквало задълбочени познания за вътрешните формати и много инженерни умения., нещо, което исторически е било рядкост.
Въпреки това, няма такова нещо като „сребърен куршум“ в работеща система. Руткит в режим на ядрото, в предела на своите възможности, може да повлияе на всяко четене, включително тези, извършени от RootkitRevealer на ниско ниво. Следователно, в криминалистични сценарии се препоръчва да се сравни анализът на живо с офлайн анализ (например, зареждане на чиста среда от CD/USB). Въпреки че дори офлайн инструментите могат да бъдат заобиколени в определени случаи, комбинацията онлайн/офлайн е най-солидната стратегия.
Методологичният извод е ясен: няма да има универсален детектор. Сравнителните сканирания, за предпочитане интегрирани с антивирусна и други защитни слоеве, са най-ефективни в дългосрочен план. Подходът на корелация между множество гледни точки е все още валиден въпреки че RootkitRevealer вече не се разработва.
Съвместимост, лицензиране и състояние на проекта
RootkitRevealer е пуснат от Марк Русинович на 1 ноември 2006 г., написан на Microsoft C++ за архитектурата IA-32 и с размер приблизително 231 KB. Той е собственически безплатен софтуер (с затворен код) и е достъпен на английски език.Работеше на Windows XP и Windows Server 2003, само в 32-битови версии.
Инструментът вече не се поддържа. Въпреки това, неговата документация и примери за употреба остават като исторически и образователен справочник. В допълнение към техническата му стойност, наследството му е свързано с откриването на руткита на Sony BMG., важен етап, който повиши осведомеността на индустрията относно рисковете от укриване в потребителските системи.
Предварителни изисквания и най-добри практики за употреба
За да се стартира правилно, бяха необходими повишени привилегии: „Архивиране на файлове и директории“, „Зареждане на драйвери“ и „Извършване на задачи за поддръжка на тома“ (Windows XP и по-нови версии). По подразбиране групата „Администратори“ има тези привилегии. Препоръчително е да се извърши анализ, когато системата е възможно най-неактивна, и да се затворят приложенията. за намаляване на фалшивите положителни резултати, дължащи се на едновременни промени.
Инструментът може да се извика ръчно от интерфейса му или автоматично с опции от командния ред за генериране на отчети. Тъй като се изпълнява от произволно именувано копие като услуга, дизайнът му затруднява блокирането въз основа на „сигнатури на имена на процеси“. Този детайл обяснява появата на временни изпълними файлове с очевидно произволни имена. на някои системи по време на сканиране.
Ръчно сканиране и основни опции
Интерактивното използване е лесно: стартирайте програмата и натиснете „Сканиране“. По време на сканирането прозорецът показва състоянието, а след завършване - списък с откритите несъответствия. В интерфейса има две ключови опции:
- Скриване на NTFS файлове с метаданни: Активирано по подразбиране. Предотвратява показването на стандартни NTFS файлове с метаданни (като $MFT), които са скрити от Windows API по дизайн.
- Протокол от изпита: Също така е активирано по подразбиране. Ако не е отметнато, регистърът няма да бъде сканиран, което намалява покритието.
За автоматизация се поддържат параметри на командния ред, фокусирани върху изпълнението и извеждането на резултати. Документираният исторически синтаксис е:
rootkitrevealer outputfile]
когато: -a сканиране и изход след завършване; -c генерира изход в CSV; -m показва метаданни на NTFS; -r изключва лога от анализа. Изходният файл трябва да се намира на локален том. За отдалечени компютри е било обичайно да се използва PsExec. от Sysinternals, например:
psexec \\remote -c rootkitrevealer.exe -a c:\windows\system32\rootkit.log
Имайте предвид, че отдалеченото сканиране добавя променливи (латентности, сигурност, разрешения) и е добра идея първо да го тествате локално. Винаги, когато е възможно, запазете резултатите на надеждно място. и с контрол на целостта.
Как да интерпретираме резултатите: типични несъответствия
RootkitRevealer не казва „има руткит“; той показва разлики, които могат да показват скриване. Всеки елемент изисква оценка. Това са най-подходящите категории:
„Скрито от Windows API“Това е най-често срещаното несъответствие, когато става въпрос за скриване. Ако не сте избрали опцията за скриване на NTFS метаданни, ще видите много записи от този тип на NTFS томове, защото самата система скрива вътрешни файлове от API. За да се намали шумът, е полезно да се знае списъкът със стандартни метаданни:
- $AttrDef
- $BadClus
- $BadClus:$Bad
- $BitMap
- $Boot
- $LogFile
- $Mft
- $MftMirr
- $Secure
- $UpCase
- Обем
- $Удължи
- $Extend\$Reparse
- $Extend\$ObjId
- $Extend\$UsnJrnl
- $Extend\$UsnJrnl:$Max
- $Удължаване на квотата
Освен това има легитимни продукти (например някои антивирусни програми като Kaspersky от миналото), които използват алтернативни потоци от данни в NTFS и техники за обфускация за собственото си съхранение, което може да доведе до „скрити API“ записи във всеки файл. RootkitRevealer не филтрира изхода по предназначение, за да се предотврати „заобикалянето“ на филтрите от злонамерен софтуер.
„Достъпът е отказан“Никога не би трябвало да се появява, защото инструментът използва механизми, които му позволяват да чете всеки файл, директория или ключ от системния регистър в системата. Ако видите това, подозирайте по-сериозен проблем или необичайни условия на работа..
Комбинации за видимост в API/индекс/MFT. Анализът на файловата система обхваща три източника: Windows API, MFT (главна файлова таблица) и индекси на директории NTFS. Ще видите съобщения като „Видимо в Windows API, но не и в индекса на директории или MFT“ или варианти, където се появява в един или два слоя, но не във всички. Най-честата причина е създаването или изтриването на файл по време на сканирането.Типичен докладван пример:
C:\newfile.txt
Fecha/hora
8 bytes
Visible en la API de Windows, pero no en el índice de directorios o MFT.
„Дължината на Windows API е несъвместима със суровите данни от поддървото“. Показва, че стойност в системния регистър отчита различен размер за всеки API от наблюдавания в кошера. Руткит може да използва това, за да скрие съдържание. Може да се дължи и на стойности, които се променят по време на изпита., ето защо е ключово да се сведе до минимум активността.
„Несъответствие между типа на Windows API и суровите данни от поддървото“Стойностите в системния регистър имат типове (REG_SZ, REG_DWORD, REG_BINARY и др.). Ако API отчита един тип, а hive-ът показва друг, това може да е случай на манипулация. Например, съхраняване на данни като REG_BINARY и преобразуването им в REG_SZ с водеща 0 за отрязване на четенията. Известна тактика е да се скрият байтове зад терминатор..
„Името на ключа съдържа вградени NULL стойности“API третира имената на ключовете като низове, завършващи с null, но ядрото използва низове с определена дължина. Това прави възможно създаването на ключове, видими за операционната система, но частично невидими за редактори като Regedit. Sysinternals публикува примерен код (Reghide), демонстриращ техниката, а помощната програма RegDelNull ви позволява да изтривате ключове с вградени null стойности. Ако видите тази закономерност, проучете я приоритетно..
„Несъответствие на данните между Windows API и суровите данни от поддървото“Често срещано явление е, когато телеметричните данни или стойностите на състоянието се променят по време на сканирането (времеви марки, броячи на „последно сканиране“, време на работа и др.). Наблюдаван пример от реалния свят:
HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\RECOVERYMANAGER\MSSQLServer\uptime_time_utc
Fecha/hora
8 bytes
Въпреки че тези несъответствия може да са безобидни, никога не ги отхвърляйте, без да прегледате контекста. Ако потвърдите наличието на руткит и не знаете как да го премахнете, най-безопасната мярка е все още да форматирате и преинсталирате устройството..

Свързани ресурси и инструменти (екосистема на Sysinternals)
Вселената на Sysinternals предлага допълнителни комунални услуги за откриване на скрити процеси и руткитове които се вписват много добре с RootkitRevealer за разследване и реагиране:
- Autoruns: Показва всички местоположения за автоматично стартиране в системата, идеално за търсене на персистентни обекти.
- Process ExplorerРентгенова снимка на процеси, заредени DLL файлове и отворени манипулатори; идеална за откриване на аномалии.
- Монитор на процеситеПроследява системните повиквания (файлове, регистър, процеси) в реално време, за да разбере поведението им.
- AccessChk y AccessEnumПроверява ефективни разрешения за файлове, ключове и услуги; полезно за откриване на нарушения.
- PsExec y PsTools: набор от помощни програми за дистанционно управление, изпълнение и събиране на данни.
- СигчекПроверка на цифрови подписи и репутация на двоични файлове; ключ към валидирането на съмнителни изпълними файлове.
- SDeleteСигурно изтриване в съответствие със стандартите на Министерството на отбраната на САЩ, за елиминиране на чувствителни останки.
- Sysmon: Записва ключова активност в програмата за преглед на събития (създаване на процеси, мрежови връзки и др.).
Ако искате да се задълбочите, има някои класически препратки, които са от съществено значение: статията „Unearthing Rootkits“ от Windows IT Pro от Марк Русинович, книгата „Rootkits: Subverting the Windows Kernel“ от Грег Хоглунд и Джейми Бътлър и „Windows Internals“ (Русинович и други). което осигурява архитектурната основа за задълбочено разбиране на тези техникиЗа по-широк подход към зловредния софтуер, заглавия като тези на Петер Сзор или Ед Скудис и Лени Зелцер остават чудесни спътници.
Като се има предвид всичко гореизброено, RootkitRevealer беше ключов инструмент в инструментариума на всеки администратор или анализатор по сигурността на Windows XP/2003. Неговият сравнителен подход, каталогът с типични несъответствия и поуките, извлечени от реални случаи, продължават да ни учат как да отделяме шума от сигнала, да интерпретираме резултатите разумно и да комбинираме източници, за да стигнем до солидни заключения. Този метод, повече от специфичен инструмент, е това, което прави разликата днес..

