[jam 2.1] rootkit (dmitry kostenich)
Post on 08-Jun-2015
475 Views
Preview:
TRANSCRIPT
Дмитрий Костенич
СОВРЕМЕННЫЕ РУТКИТ/АНТИРУТКИТ ТЕХНОЛОГИИ
РУТКИТЫ: ОБЩИЕ СВЕДЕНИЯ• Этимология термина rootkit: “root” – привилегированный администратор UNIX-
системы, “kit” – набор инструментов, rootkit – набор утилит для обеспечения «привилегированного» доступа злоумышленника к системе незаметно для настоящего администратора.
• Руткит — программа или набор программ для скрытия следов присутствия злоумышленника или вредоносной программы в системе.
РУТКИТЫ: ОБЩИЕ СВЕДЕНИЯ• Руткит – это не компьютерный вирус (хотя вирус и может использовать его в
качестве «помощника»).
• Задачи компьютерного вируса: «рассадить» себя и нанести вред операционной системе.
• Задачи руткита:
• скрытие своего присутствия и активности «полезной» нагрузки;
• удалённое управление компьютером;
• сбор информации;
• кража информации;
• подмен поисковых запросов и т.п.
КАК РАБОТАЮТ РУТКИТЫ?• Руткит не является типичным исполняемым файлом (.exe или .com).
• Основная логика работы реализована в драйвере либо в DLL.
• Наличие загрузчика («дроппера»), устанавливающего основной модуль руткита в систему через API.
• Однажды прописавшись в системе, руткит будет загружаться с ней постоянно.
КЛАССИФИКАЦИЯ РУТКИТОВСовременные операционные системы многоуровневые
• Пространство пользователя:
• Все пользовательские приложения и сервисы;
• Различные системные приложения и сервисы;
• Ошибка в одном из приложений не ведет за собой крах всей системы.
• Пространство ядра:
• «Сердце» операционной системы;
• Драйвера устройств;
• Менеджер виртуальной памяти;
• HAL и т.д.
КЛАССИФИКАЦИЯ РУТКИТОВСтруктура операционной системы Windows семейства NT.
Executive
DeviceDrivers
Hardware Abstraction Layer (HAL)
Kernel
User
Kernel
Win32User Apps
Subsystem DLL
System & ServiceProcesses
POSIXOS/2
Win32User/GDI
Environment Subsystems
КЛАССИФИКАЦИЯ РУТКИТОВДва типа:
• User Space Rootkits (User Application)
• Kernel Space Rootkits (Device Driver)
USER SPACE ROOTKITSПринципы работы:
• Патчинг различных бинарников с целью подмены результатов работы:
• Task Manager / Process Explorer;
• Netstat / ipconfig и т.д.
• Удаленное внедрение кода:
• Thread Injection / DLL Injection
USER SPACE ROOTKITSПатчинг бинарников:
• Самый старый и известный подход к скрытию вредоносного ПО;
• Модифицируются различные системные утилиты, которые обладают возможностью отследить вредоносную активность (Task Manager, Netstat, ipconfig и т.д.).
«+»:
• Просты в написании.
«-»:
• Не универсальны;
• Значительно увеличивают размер руткита;
• Легко обходятся антивирусным ПО.
USER SPACE ROOTKITSУдаленное внедрение кода:
• Основан на модификации основных структур PE-файла (в частности, IAT (Import Address Table)).
«Чистый» вариант:
USER SPACE ROOTKITSЗараженный вариант:
USER SPACE ROOTKITS• Удаленное внедрение кода – «хукинг»
• 2 вида:
• Подмена адреса;
• Модификация кода функции.
Классические руткиты, которые легко обнаруживаются. Иначе – 0-day.
USER SPACE ROOTKITS«+»:
• Легко создавать.
• Не требуют kernel модуля (драйвера).
• Относительно просто внедрить в процесс.
«-»:
• Нет root привилегий и доступа к объектам ядра.
• Легко обнаружить.
• Влияют на поведение только одного процесса.
KERNEL SPACE ROOTKITSУровень ядра дает неограниченный доступ к системным ресурсам. Доступны:
• Глобальная таблица адресов (GDT);
• Локальная таблица адресов (LDT);
• Каталог страниц;
• Таблица дескрипторов прерываний (IDT);
• Таблица диспетчеризации системных служб (SSDT);
• Многоуровневая система драйверов;
• Непосредственное манипулирование объектами ядра (DKOM);
• Манипулирование аппаратурой и т.д.
KERNEL SPACE ROOTKITSКлассические варианты работы:
• Перехват функций в режиме ядра
Сплайсинг NtQuerySystemInformation в ntdll.dll
Перехват int 2E / SysEnter
Подмена сервиса в таблице SSDT, сплайсинг в ядре
KERNEL SPACE ROOTKITS• Непосредственное манипулирование объектами ядра (DKOM)
ListEntryBlink Flink
PsActiveProcessHeadBlink Flink ListEntry
Blink Flink
ListEntryBlink Flink
ListEntryBlink Flink
ListEntryBlink Flink
KERNEL SPACE ROOTKITS• Файловая система
CreateFile ( Kernel32.dll )
NtCreateFile ( ntdll.dll )
User App
nt!KiFastCallEntrynt!KiSystemService
ZwCreateFile
Driver
NtCreateFile
IoCreateFile
IopCreateFile
IRP
Ring 3
Ring 0
SysEnter/SysCallInt 0x2e
IopParseDevice
KERNEL SPACE ROOTKITS• Файловая система
«Верхний» драйвер «Средний» драйвер «Нижний» драйвер
IoCallDriver IoCallDriver
IO_STACK_LOCATION
IRP…
IO_STACK_LOCATION
IRP…
IO_STACK_LOCATION
IRP…
KERNEL SPACE ROOTKITS• Файловая система:
Модификация функций на различных уровнях;
Драйвера-фильтры;
Модификация адресов IRP и FastIO обработчиков;
Собственная виртуальная файловая система.
KERNEL SPACE ROOTKITS• Файловая система
Ntfs.sys
Volmgr.sys
Partmgr.sys
ClassPnP.sys
Disk.sys
Atapi.sys
PciIde.sys
IRP
I/O
Rustock
TDL v2TDL v3
MBR Rootkit
KERNEL SPACE ROOTKITS«+»:
• Влияют на все процессы в системе.
• Есть root привилегии.
• Тяжело обнаружить.
«-»:
• Достаточно сложны в реализации.
• Пользователь должен обладать необходимыми правами, чтобы руткит смог «заразить» систему, т.е. чтобы отработал «дроппер».
РУТКИТЫ: ЭВОЛЮЦИЯ• Джефри Рихтер: методы внедрения dll, создание удалённых потоков, технологии
перехвата системных вызовов в пространстве пользователя
• Vanquish – первый зловред
• NtRootKit, ресурс rootkit.com ( Грег Хогланд, Джеймс Батлер )
• Nuclear Grabber
• FU – первый DKOM руткит
• ...
• Rustock
• …
• TDL v3, MAX++, Duqu и т.п.
РУТКИТЫ: ЭВОЛЮЦИЯ• PoC
• Заказное ПО
• Коммерческий продукт
• Государственные заказы
АНТИРУТКИТЫ• PoC
Klister
Process Hunter
• Независимые разработчики
GMER
RkU
XueTr
• Вендоры
Vba32 Arkit
Kaspersky TDSS Killer
МЕТОДЫ ОБНАРУЖЕНИЯ• Сравнение двух «снимков» системы (например, списка файлов на диске). Первый
снимок делается на проверяемой системе, второй – после загрузки с CD или подключения исследуемого HDD к заведомо чистому компьютеру. Подобная методика гарантированно позволит обнаружить любой RootKit, который маскирует на диске свои файлы.
• Сравнение данных, возвращаемых API функциями разного уровня и (или) получаемых низкоуровневыми методами (например, прямым чтением диска и анализом файлов реестра).
• Анализ в памяти функций основных библиотек на предмет наличия изменений их машинного кода.
• Анализ и восстановление ServiceDescriptorTable.
ОБСУЖДЕНИЕ И ВОПРОСЫ
СПАСИБО ЗА ВНИМАНИЕ!
top related