2. РУТКИТЫ: ОБЩИЕ СВЕДЕНИЯ
• Этимология термина rootkit: ―root‖ – привилегированный администратор UNIX-
системы, ―kit‖ – набор инструментов, rootkit – набор утилит для обеспечения
«привилегированного» доступа злоумышленника к системе незаметно для
настоящего администратора.
• Руткит — программа или набор программ для скрытия следов присутствия
злоумышленника или вредоносной программы в системе.
3. РУТКИТЫ: ОБЩИЕ СВЕДЕНИЯ
• Руткит – это не компьютерный вирус (хотя вирус и может использовать его в
качестве «помощника»).
• Задачи компьютерного вируса: «рассадить» себя и нанести вред операционной
системе.
• Задачи руткита:
• скрытие своего присутствия и активности «полезной» нагрузки;
• удалѐнное управление компьютером;
• сбор информации;
• кража информации;
• подмен поисковых запросов и т.п.
4. КАК РАБОТАЮТ РУТКИТЫ?
• Руткит не является типичным исполняемым файлом (.exe или .com).
• Основная логика работы реализована в драйвере либо в DLL.
• Наличие загрузчика («дроппера»), устанавливающего основной модуль руткита в
систему через API.
• Однажды прописавшись в системе, руткит будет загружаться с ней постоянно.
5. КЛАССИФИКАЦИЯ РУТКИТОВ
Современные операционные системы многоуровневые
• Пространство пользователя:
• Все пользовательские приложения и сервисы;
• Различные системные приложения и сервисы;
• Ошибка в одном из приложений не ведет за собой крах всей системы.
• Пространство ядра:
• «Сердце» операционной системы;
• Драйвера устройств;
• Менеджер виртуальной памяти;
• HAL и т.д.
6. КЛАССИФИКАЦИЯ РУТКИТОВ
Структура операционной системы Windows семейства NT.
Environment Subsystems
System & Service
Processes User Apps
OS/2 POSIX
Subsystem DLL
Win32
User
Kernel
Executive
Win32
Device
Kernel User/GDI
Drivers
Hardware Abstraction Layer (HAL)
7. КЛАССИФИКАЦИЯ РУТКИТОВ
Два типа:
• User Space Rootkits (User Application)
• Kernel Space Rootkits (Device Driver)
8. USER SPACE ROOTKITS
Принципы работы:
• Патчинг различных бинарников с целью подмены результатов работы:
• Task Manager / Process Explorer;
• Netstat / ipconfig и т.д.
• Удаленное внедрение кода:
• Thread Injection / DLL Injection
9. USER SPACE ROOTKITS
Патчинг бинарников:
• Самый старый и известный подход к скрытию вредоносного ПО;
• Модифицируются различные системные утилиты, которые обладают возможностью
отследить вредоносную активность (Task Manager, Netstat, ipconfig и т.д.).
«+»:
• Просты в написании.
«-»:
• Не универсальны;
• Значительно увеличивают размер руткита;
• Легко обходятся антивирусным ПО.
10. USER SPACE ROOTKITS
Удаленное внедрение кода:
• Основан на модификации основных структур PE-файла (в частности, IAT (Import
Address Table)).
«Чистый» вариант:
12. USER SPACE ROOTKITS
• Удаленное внедрение кода – «хукинг»
• 2 вида:
• Подмена адреса;
• Модификация кода функции.
Классические руткиты, которые легко обнаруживаются. Иначе – 0-day.
13. USER SPACE ROOTKITS
«+»:
• Легко создавать.
• Не требуют kernel модуля (драйвера).
• Относительно просто внедрить в процесс.
«-»:
• Нет root привилегий и доступа к объектам ядра.
• Легко обнаружить.
• Влияют на поведение только одного процесса.
14. KERNEL SPACE ROOTKITS
Уровень ядра дает неограниченный доступ к системным ресурсам. Доступны:
• Глобальная таблица адресов (GDT);
• Локальная таблица адресов (LDT);
• Каталог страниц;
• Таблица дескрипторов прерываний (IDT);
• Таблица диспетчеризации системных служб (SSDT);
• Многоуровневая система драйверов;
• Непосредственное манипулирование объектами ядра (DKOM);
• Манипулирование аппаратурой и т.д.
15. KERNEL SPACE ROOTKITS
Классические варианты работы:
• Перехват функций в режиме ядра
Сплайсинг NtQuerySystemInformation в ntdll.dll
Перехват int 2E / SysEnter
Подмена сервиса в таблице SSDT, сплайсинг в ядре
21. KERNEL SPACE ROOTKITS
«+»:
• Влияют на все процессы в системе.
• Есть root привилегии.
• Тяжело обнаружить.
«-»:
• Достаточно сложны в реализации.
• Пользователь должен обладать необходимыми правами, чтобы руткит смог
«заразить» систему, т.е. чтобы отработал «дроппер».
22. РУТКИТЫ: ЭВОЛЮЦИЯ
• Джефри Рихтер: методы внедрения dll, создание удалѐнных потоков, технологии
перехвата системных вызовов в пространстве пользователя
• Vanquish – первый зловред
• NtRootKit, ресурс rootkit.com ( Грег Хогланд, Джеймс Батлер )
• Nuclear Grabber
• FU – первый DKOM руткит
• ...
• Rustock
• …
• TDL v3, MAX++, Duqu и т.п.
23. РУТКИТЫ: ЭВОЛЮЦИЯ
• PoC
• Заказное ПО
• Коммерческий продукт
• Государственные заказы
25. МЕТОДЫ ОБНАРУЖЕНИЯ
• Сравнение двух «снимков» системы (например, списка файлов на диске). Первый
снимок делается на проверяемой системе, второй – после загрузки с CD или
подключения исследуемого HDD к заведомо чистому компьютеру. Подобная
методика гарантированно позволит обнаружить любой RootKit, который маскирует
на диске свои файлы.
• Сравнение данных, возвращаемых API функциями разного уровня и (или)
получаемых низкоуровневыми методами (например, прямым чтением диска и
анализом файлов реестра).
• Анализ в памяти функций основных библиотек на предмет наличия изменений их
машинного кода.
• Анализ и восстановление ServiceDescriptorTable.