- RootkitRevealer виявляє розбіжності між API Windows та необробленими даними, щоб виявити приховані проблеми.
- Інтерпретує результати: типи розбіжностей у метаданих NTFS, реєстрі та файловій системі.
- Використовуйте параметри -a -c -m -r та віддалене виконання з PsExec; це вимагає мінімальної кількості хибних спрацьовувань, коли система не працює.
- Запобігання та реагування: безпечне завантаження/TPM, автономне сканування, засоби захисту від руткітів та контрольоване відновлення.

RootkitRevealer – одна з тих легендарних утиліт, яку повинен знати кожен професіонал Windows; її створила команда Sysinternals на чолі з Марком Руссіновичем, і, хоча вона з'явилася багато років тому, вона залишається довідником для розуміння того, як виявляти розбіжності, спричинені руткітами, між тим, що показує система, і тим, що насправді є на диску.
На відміну від інших сканерів, він не шукає сигнатури чи шаблони: він порівнює високорівневий вигляд API Windows із необробленим низькорівневим зчитуванням диска та реєстру. Ця, здавалося б, проста ідея показує, коли шкідливе програмне забезпечення намагається приховати файли, ключі чи значення, маніпулюючи системними викликами.
Що таке RootkitRevealer і на яких системах він працює?
Це вдосконалений інструмент для виявлення ознак руткітів як у режимі користувача, так і в режимі ядра . Спочатку він був розроблений для Windows XP та Windows Server 2003 (32-розрядна версія) і зазвичай позиціонується як безкоштовний, англійською мовою, розміром приблизно 231 КіБ; у багатьох списках також вказувалася його сумісність з Windows NT/2000/XP/Vista на той час.
З часом його суто командна версія була виключена, оскільки деякі автори шкідливих програм почали контролювати назву виконуваного файлу; щоб уникнути цього, програма запускається як служба з випадково названої копії самої себе, що ускладнює виявлення за назвою та ускладнює забезпечення 100% консольного інтерфейсу.
Що таке руткіт? Ключові поняття
Термін «руткіт» стосується методів та механізмів, які дозволяють шкідливим програмам (вірусам, троянам, шпигунським програмам тощо) приховуватися від користувача та засобів безпеки . Розрізняють кілька сімейств руткітів: постійні (виживають після перезавантаження), резидентні (зникають після перезавантаження), руткіти в режимі користувача та в режимі ядра, серед інших сучасних варіантів.
Руткіт користувацького режиму може перехоплювати такі функції, як FindFirstFile/FindNextFile, або вбудовані перечислювачі системи, щоб фільтрувати записи, які можуть розкрити змінені файли, процеси чи розділи реєстру . Це запобігає перегляду Провідником, командним рядком або редакторами реєстру фактичного вмісту.
Руткіти в режимі ядра йдуть далі: окрім перехоплення рідного API, вони можуть безпосередньо маніпулювати структурами ядра, наприклад, видаляючи свій процес зі списку активних процесів, щоб він не відображався в диспетчері завдань або провіднику процесів, навіть якщо він запущений.
Існують гібридні (частково орієнтовані на користувача, а частково на ядро), прошивки (BIOS/UEFI та інші компоненти), завантажувачі або буткіти (MBR/UEFI), віртуальні (які розміщують фактичну ОС у віртуальній машині) та завантажувачі на основі пам'яті (непостійні). Останні можуть бути особливо невловимими, тоді як прошивка та завантажувачі зберігаються навіть після чистої перевстановлення операційної системи.
Як працює RootkitRevealer
RKR порівнює два знімки: високорівневий вигляд API Windows та необроблене, низькорівневе зчитування файлів томів і піддерева реєстру (вуликів). Якщо руткіт втручається у високорівневі виклики, щоб щось приховати, ця зміна виявляється, оскільки те, що знаходиться на диску та в реєстрі, не відповідає тому, що вказує API, що призводить до діагностованих розбіжностей.
Теоретично, руткіт також може спробувати сховатися від RootkitRevealer, перехоплюючи його необроблені дані та перезаписуючи їх на льоту. Для досягнення цього йому потрібні глибокі знання форматів NTFS, FAT та реєстру, а також здатність змінювати структури, не спричиняючи невідповідностей чи очевидних побічних ефектів — дуже складний технічний подвиг , який рідко спостерігається. Тим не менш, не існує безпомилкового «універсального детектора»: навіть завантаження із зовнішнього середовища (наприклад, з використанням найкращих дистрибутивів Linux ) може бути саботовано особливо складними та стійкими артефактами . На практиці найнадійнішим підходом є поєднання онлайн-аналізу з офлайн-перевіркою в надійних середовищах.
Вимоги, належні практики та виконання
Щоб запустити це сканування, обліковому запису потрібні права «Резервне копіювання файлів і каталогів», «Завантаження драйверів» і «Обслуговування томів» (вони надаються адміністраторам за замовчуванням у Windows XP і пізніших версіях). Щоб мінімізувати кількість хибнопозитивних результатів, рекомендується запускати сканування, коли система неактивна та не відкриті жодні програми.
Під час ручного виконання просто натисніть кнопку сканування. Під час процесу програма надаватиме оновлення про хід виконання та перераховуватиме будь-які розбіжності. Є два відповідних варіанти: «Приховати файли метаданих NTFS» (увімкнено за замовчуванням, щоб уникнути відображення стандартних метаданих, прихованих NTFS) та «Журнал сканування» (увімкнено за замовчуванням; якщо зняти цей прапорець, сканування реєстру Windows буде пропущено ).
Для автоматизації він підтримує параметри, які дозволяють запускати, входити та виходити без втручання: rootkitrevealer outputfile]. Варіант -a починається та закінчується автоматично; -c вивести результат у форматі CSV; -m відображає метадані NTFS; та -r вимикає сканування реєстру. Вихідний файл має бути у доступний локальний том.
Віддалене виконання можливе за допомогою PsExec. Наприклад: psexec \\remote -c rootkitrevealer.exe -a c:\windows\system32\rootkit.log. З -c, прогрес не відображається, а розбіжності друкуються у форматі CSV, що спрощує імпорт у базах даних або скриптах.
Інтерпретація результатів та типові розбіжності
Розбіжності типу «Приховано від Windows API» є найпоширенішими, коли руткіт приховує записи. Якщо ви не ввімкнули відображення метаданих NTFS, ви побачите відмінності, оскільки NTFS приховує свої внутрішні файли, такі як $MFT або $Secure , від API . Деякі антивірусні програми також зберігають дані в альтернативних потоках і приховують їх, що призводить до подібних помилок.
Ось деякі стандартні метадані, визначені в NTFS (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.
RKR співвідносить три джерела у файловій системі: Windows API, головну файлову таблицю (MFT) та індекси каталогів на диску. Можуть з'являтися такі комбінації, як «Видимо в API, але не в індексі або MFT», «Видимо в MFT, але не в API» тощо, особливо якщо файл створюється або видаляється під час аналізу, що призводить до тимчасової невідповідності.
Приклад створення під час сканування: C:\newfile.txt, розміром 8 байт, з повідомленням «Видимо в API, але не в індексі чи MFT». Ці випадки не обов’язково вказують на руткіти, а на одночасні зміни під час обстеження.
Якщо з’являється повідомлення «Доступ заборонено», щось не так: RootkitRevealer використовує механізми для доступу до будь-якого файлу, каталогу чи ключа, тому це повідомлення не повинно з’являтися за нормальних умов роботи.
У реєстрі є кілька цікавих розбіжностей: «Довжина Windows API не відповідає вихідним даним» (можлива спроба приховати фактичний вміст), «Невідповідність типів» (наприклад, рекламується REG_SZ, але має бути REG_BINARY), «Назва ключа містить вбудовані значення NULL» (відома техніка, яка використовує різницю між рядками, що завершуються NULL, та рядками з лічильниками). В останньому випадку утиліта RegDelNull від Sysinternals допомагає очистити ключі з вбудованими значеннями NULL.
«Невідповідність даних» може виникнути, якщо значення змінюється під час сканування (наприклад, час безперебійної роботи SQL Server, такий як HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\RECOVERYMANAGER\MSSQLServer\uptime_time_utc). Ви повинні перевірити, чи належить значення легітимні компоненти що оновлюють дані в режимі реального часу.
Показовим випадком був руткіт HackerDefender: його служби та драйвери були невидимі для API Windows, але були присутні в необроблених даних куща реєстру; те саме стосувалося його файлів, які прямий аналіз файлової системи виявив на диску.
Поширені помилки та проблеми з rootkitrevealer.exe у судово-медичних середовищах
Деякі комплекси для судово-медичної експертизи (наприклад, WinTaylor) перелічують типові помилки, пов’язані з rootkitrevealer.exe , такі як: «не є коректною програмою Win32», «не знайдено», «помилка програми» або «проблема запуску». Ці повідомлення зазвичай виникають під час встановлення, запуску або завершення роботи системи, або через конфлікти з іншими резидентними програмами.
Найчастішими причинами є пошкоджені або відсутні файли, недійсні записи реєстру, зараження шкідливим програмним забезпеченням, неповне видалення або конфлікти з іншим програмним забезпеченням. Джерелом може бути пошкоджений запис реєстру, випадкове видалення іншим інструментом, невдале завантаження або попереднє зараження , яке змінило двійковий файл.
Як цікавинка інвентаризації, деякі списки документують виконуваний файл приблизного розміру 334 720 байтів та хеші, такі як SHA‑1 та MD5 (наприклад, SHA‑1 d39e8a3fe92adc7d7fbc5293edf8a7b965484a59, MD5 ee738fe9bcdd605821002cec8c7206db) та CRC32 98b1af0b; вони також посилаються на версія 2.1 у своєму контейнерному додатку та категорія «Набір інструментів/операційна система для судово-медичної експертизи».
Методи виявлення та реагування на руткіти
Виявлення руткіту не завжди є простим завданням. Окрім специфічних інструментів, для виявлення підозрілих модулів поєднуються такі методи, як аналіз сигнатур відомих загроз, холодне порівняння структур, пошук у пам'яті на наявність перехоплень та змін, а також перегляд дампів пам'яті після збоїв. Також для захисту мережі та зменшення векторів зараження зазвичай покладаються на системи запобігання вторгненням (IPS) .
Спеціалізовані утиліти включають GMER (для виявлення прихованих процесів та змін ядра), Kaspersky TDSSKiller (особливо для виявлення буткітів та руткітів ядра), Malwarebytes Anti-Rootkit, Microsoft Defender Offline (для сканування перед завантаженням Windows) та RogueKiller. Запуск цих утиліт із надійного завантажувального USB-накопичувача або в безпечному режимі зменшує ризик атаки.
У разі загроз завантаження або прошивки рекомендується використовувати аварійні носії, такі як Kaspersky Rescue Disk, відновити MBR за допомогою bootrec /fixmbr де це доречно та в серйозних випадках, оновіть/прошіть BIOS/UEFI до чистої версії від виробника, щоб усунути низький рівень персистенції.
Моніторинг за допомогою Sysinternals є безцінним: Process Monitor (ProcMon) для перевірки активності процесів і файлів, Autoruns для перевірки того, що завантажується під час запуску, і RootkitRevealer для виявлення розбіжностей високого/низького рівня. Платформи SIEM, такі як Wazuh , і телеметрія в корпоративних середовищах можуть виявляти неочікувану поведінку мережі або зміни цілісності.
Якщо зараження підтверджено, розумною послідовністю дій є: відключити машину від мережі, просканувати із зовнішнього середовища, оцінити цілісність завантаження/прошивки та, якщо гарантій немає, створити резервну копію даних, повністю очистити диск (такими інструментами, як DBAN) та перевстановити з перевіреного носія, а потім увімкнути такі заходи, як Secure Boot та TPM.
Профілактика: Розумний захист від руткітів
Профілактика є ключовою. Оновлюйте свою систему, встановлюйте патчі для стороннього програмного забезпечення, уникайте виконуваних файлів із сумнівних джерел та не використовуйте кряки чи кейгени: вони є улюбленим вектором для створення руткіт- дропперів та завантажувачів .
Вимкніть автозапуск USB, скануйте зовнішні накопичувачі перед їх відкриттям, а в корпоративних середовищах обмежте або заблокуйте порти та за потреби використовуйте брандмауери . Працюйте з непривілейованими обліковими записами користувачів, застосовуйте принцип найменших привілеїв та вимагайте облікові дані адміністратора для критичних змін, зменшуючи ймовірність тихої ескалації.
На сумісному обладнанні ввімкніть Secure Boot та TPM з UEFI для захисту ланцюжка завантаження та герметизації ключів. Регулярно створюйте резервні копії в автономному режимі або незмінні резервні копії та використовуйте знімки/точки відновлення, щоб скоротити час відновлення, якщо щось піде не так.
Як встановлюються руткіти: дроппери, завантажувачі та вектори
Зловмисники зазвичай розповсюджують руткіти як комбіновані загрози: «дроппер», який доставляє пакет, та «завантажувач», який використовує вразливості (такі як переповнення буфера), щоб розмістити імплантат туди, де він не повинен. Це маскується під фішингові електронні листи , фальшиві інсталятори або шахрайські оновлення.
Класичні вектори включають захоплення клієнтів обміну повідомленнями для поширення шкідливих посилань, троянське програмне забезпечення на порталах завантаження, використання інших шкідливих програм як носіїв та вбудовування в документи з багатим контентом (наприклад, певні PDF-файли), які при відкритті автоматично запускають завантажувальний модуль.
Ознаки нападу та підказки для виявлення
Мета руткіту — залишатися непоміченим. Навіть за таких обставин ви можете спостерігати зміни конфігурації без втручання користувача, незвичайні перебої в мережі через прихований трафік, невідомі процеси, служби, які неможливо закрити, та інструменти безпеки, що вимкнені без пояснень.
Ще однією підказкою є суперечлива інформація між утилітами, які перераховують файли, процеси або ключі реєстру, використовуючи різні шляхи (API проти необробленого читання). Саме тут сяють такі підходи, як RootkitRevealer: той самий об'єкт, який «є» на диску, але «немає» згідно з API, вказує на маніпуляцію.
Основні типи руткітів
Режим користувача: вони працюють на рівні процесів та бібліотек. Вони стабільніші та їх відносно легше виявити, хоча можуть приховувати файли, процеси та ключі. Класичним історичним прикладом є HackerDefender.
Режим ядра: Ці віруси знаходяться в ядрі, з повним контролем та великою прихованістю; їх важко знищити, і вони, як правило, викликають нестабільність, якщо вони погано розроблені. Приклади цієї родини: TDL/Alureon у своїй еволюції.
Гібриди: поєднують компоненти користувача та ядра для балансу між прихованістю та стабільністю, що призводить до популярності серед зловмисників завдяки їхній практичній універсальності.
Прошивки/Буткіти: Вони заражають BIOS/UEFI або завантажувальний сектор (MBR/UEFI) для завантаження перед операційною системою. Такі технології, як Secure Boot, зробили багато класичних буткітів застарілими, але з'явилися сучасні імплантати UEFI.
Віртуальні та на основі пам'яті: VMBR завантажують гіпервізор під ОС та віртуалізують його; VMBR, що базуються на пам'яті, знаходяться лише в оперативній пам'яті та зникають після перезавантаження, що дуже корисно для тимчасових операцій.
Приклади та виділена хронологія
Перші руткіти для SunOS були розроблені в 90-х роках; у 1999 році Грег Хоглунд описав NTRootkit (Windows, режим ядра), а в 2003 році з'явився HackerDefender (Windows 2000/XP, режим користувача), що спровокувало «перетягування каната» з такими інструментами, як RootkitRevealer.
У 2004 році так званий «грецький Вотергейт» використав руткіт для злому понад 100 телефонів у мережі GSM; у 2005 році було виявлено, що Sony BMG включила антипіратський руткіт до деяких компакт-дисків, що викликало величезну суперечку щодо безпеки.
З 2008 року такі буткіти, як TDL (від TDL-1 до TDL-4), еволюціонували; у 2009 році «Макіавеллі» довів, що macOS (тоді Mac OS X) також не застрахована; у 2010 році Stuxnet використовував компоненти руткіту для саботажу іранських промислових систем.
У 2012 році з'явився Flame , масивне модульне шкідливе програмне забезпечення ; у 2018 році LoJax став першим виявленим руткітом UEFI; а у 2019 році Scranos поєднав крадіжку облікових даних та приховане отримання доходу з клік-фермами через масово скомпрометовані браузери.
Ресурси та рекомендована література
Розслідування справи Sony, проведене Марком Руссіновичем, та його стаття «Виявлення руткітів» у Windows IT Pro допомагають зрозуміти феномен та техніку, що лежить в основі RKR; книга «Руткіти: підрив ядра Windows» Грега Хоглунд та Джеймі Батлера є найглибшим трактатом на цю тему.
Архів Phrack, книга Пітера Сзора «Мистецтво дослідження та захисту від комп'ютерних вірусів», книга Еда Скоудіса та Ленні Зельцера «Зловмисне програмне забезпечення: боротьба зі шкідливим кодом» і серія «Внутрішня структура Windows» (з 4-го видання) – це важливі матеріали для всіх, хто хоче глибше зануритися в архітектуру та серйозні контрзаходи.
RootkitRevealer в екосистемі Sysinternals
RKR співіснує з іншими утилітами Sysinternals, корисними для досліджень: AccessChk та AccessEnum (діючі дозволи), Autoruns (все, що запускається разом із системою), Process Explorer (хто що відкрив і з якою DLL), PsExec/PsTools (віддалене виконання та адміністрування), PsLogList та PsLoggedOn (події та сеанси), Sigcheck (цифрові підписи), SDelete (безпечне видалення), ShareEnum (спільні ресурси) та Sysmon (розширена телеметрія в журналі подій).
У старих репозиторіях часто можна знайти посилання на «Завантажити 1.71», а також на «Запустити зараз» через Sysinternals Live. Хоча проєкт є ветераном, його спосіб мислення — порівняння високорівневих та низькорівневих підходів — залишається ключовим для полювання на руткіти.
RootkitRevealer — це, перш за все, урок захисної інженерії: якщо щось маніпулює тим, що повертає API, потрібно заглянути під це та порівняти це з тим, що насправді існує на диску та в реєстрі; за допомогою належних практик, відповідних інструментів та офлайн-перевірки, коли це необхідно, можна виявити те, що намагається сховатися там, де, як нам здається, ніхто не шукатиме.
Індекс
- 1 Що таке RootkitRevealer і на яких системах він працює?
- 2 Що таке руткіт? Ключові поняття
- 3 Як працює RootkitRevealer
- 4 Вимоги, належні практики та виконання
- 5 Інтерпретація результатів та типові розбіжності
- 6 Поширені помилки та проблеми з rootkitrevealer.exe у судово-медичних середовищах
- 7 Методи виявлення та реагування на руткіти
- 8 Профілактика: Розумний захист від руткітів
- 9 Як встановлюються руткіти: дроппери, завантажувачі та вектори
- 10 Ознаки нападу та підказки для виявлення
- 11 Основні типи руткітів
- 12 Приклади та виділена хронологія
- 13 Ресурси та рекомендована література
- 14 RootkitRevealer в екосистемі Sysinternals