[JAM 2.1] RootKIT (Dmitry Kostenich)

816 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
816
On SlideShare
0
From Embeds
0
Number of Embeds
18
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

[JAM 2.1] RootKIT (Dmitry Kostenich)

  1. 1. СОВРЕМЕННЫЕ РУТКИТ/АНТИРУТКИТ ТЕХНОЛОГИИ Дмитрий Костенич
  2. 2. РУТКИТЫ: ОБЩИЕ СВЕДЕНИЯ• Этимология термина rootkit: ―root‖ – привилегированный администратор UNIX- системы, ―kit‖ – набор инструментов, rootkit – набор утилит для обеспечения «привилегированного» доступа злоумышленника к системе незаметно для настоящего администратора.• Руткит — программа или набор программ для скрытия следов присутствия злоумышленника или вредоносной программы в системе.
  3. 3. РУТКИТЫ: ОБЩИЕ СВЕДЕНИЯ• Руткит – это не компьютерный вирус (хотя вирус и может использовать его в качестве «помощника»).• Задачи компьютерного вируса: «рассадить» себя и нанести вред операционной системе.• Задачи руткита: • скрытие своего присутствия и активности «полезной» нагрузки; • удалѐнное управление компьютером; • сбор информации; • кража информации; • подмен поисковых запросов и т.п.
  4. 4. КАК РАБОТАЮТ РУТКИТЫ?• Руткит не является типичным исполняемым файлом (.exe или .com).• Основная логика работы реализована в драйвере либо в DLL.• Наличие загрузчика («дроппера»), устанавливающего основной модуль руткита в систему через API.• Однажды прописавшись в системе, руткит будет загружаться с ней постоянно.
  5. 5. КЛАССИФИКАЦИЯ РУТКИТОВСовременные операционные системы многоуровневые• Пространство пользователя: • Все пользовательские приложения и сервисы; • Различные системные приложения и сервисы; • Ошибка в одном из приложений не ведет за собой крах всей системы.• Пространство ядра: • «Сердце» операционной системы; • Драйвера устройств; • Менеджер виртуальной памяти; • HAL и т.д.
  6. 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. 7. КЛАССИФИКАЦИЯ РУТКИТОВ Два типа:• User Space Rootkits (User Application)• Kernel Space Rootkits (Device Driver)
  8. 8. USER SPACE ROOTKITSПринципы работы:• Патчинг различных бинарников с целью подмены результатов работы: • Task Manager / Process Explorer; • Netstat / ipconfig и т.д.• Удаленное внедрение кода: • Thread Injection / DLL Injection
  9. 9. USER SPACE ROOTKITSПатчинг бинарников:• Самый старый и известный подход к скрытию вредоносного ПО;• Модифицируются различные системные утилиты, которые обладают возможностью отследить вредоносную активность (Task Manager, Netstat, ipconfig и т.д.).«+»:• Просты в написании.«-»:• Не универсальны;• Значительно увеличивают размер руткита;• Легко обходятся антивирусным ПО.
  10. 10. USER SPACE ROOTKITSУдаленное внедрение кода:• Основан на модификации основных структур PE-файла (в частности, IAT (Import Address Table)).«Чистый» вариант:
  11. 11. USER SPACE ROOTKITSЗараженный вариант:
  12. 12. USER SPACE ROOTKITS• Удаленное внедрение кода – «хукинг»• 2 вида: • Подмена адреса; • Модификация кода функции. Классические руткиты, которые легко обнаруживаются. Иначе – 0-day.
  13. 13. USER SPACE ROOTKITS «+»:• Легко создавать.• Не требуют kernel модуля (драйвера).• Относительно просто внедрить в процесс. «-»:• Нет root привилегий и доступа к объектам ядра.• Легко обнаружить.• Влияют на поведение только одного процесса.
  14. 14. KERNEL SPACE ROOTKITSУровень ядра дает неограниченный доступ к системным ресурсам. Доступны:• Глобальная таблица адресов (GDT);• Локальная таблица адресов (LDT);• Каталог страниц;• Таблица дескрипторов прерываний (IDT);• Таблица диспетчеризации системных служб (SSDT);• Многоуровневая система драйверов;• Непосредственное манипулирование объектами ядра (DKOM);• Манипулирование аппаратурой и т.д.
  15. 15. KERNEL SPACE ROOTKITSКлассические варианты работы:• Перехват функций в режиме ядра  Сплайсинг NtQuerySystemInformation в ntdll.dll  Перехват int 2E / SysEnter  Подмена сервиса в таблице SSDT, сплайсинг в ядре
  16. 16. KERNEL SPACE ROOTKITS• Непосредственное манипулирование объектами ядра (DKOM) PsActiveProcessHead ListEntry ListEntry Blink FlinkBlink Flink Blink Flink ListEntry Blink Flink ListEntry ListEntry Blink Flink Blink Flink
  17. 17. KERNEL SPACE ROOTKITS• Файловая система CreateFile ( Kernel32.dll ) User App Ring 3 NtCreateFile ( ntdll.dll ) SysEnter/SysCall Int 0x2e Ring 0 nt!KiFastCallEntry NtCreateFile nt!KiSystemService ZwCreateFile IoCreateFile Driver IopCreateFile IopParseDevice IRP
  18. 18. KERNEL SPACE ROOTKITS• Файловая система IoCallDriver IoCallDriver«Верхний» драйвер «Средний» драйвер «Нижний» драйверIRP IRP IRP… … …IO_STACK_LOCATION IO_STACK_LOCATION IO_STACK_LOCATION
  19. 19. KERNEL SPACE ROOTKITS• Файловая система: Модификация функций на различных уровнях; Драйвера-фильтры; Модификация адресов IRP и FastIO обработчиков; Собственная виртуальная файловая система.
  20. 20. KERNEL SPACE ROOTKITS• Файловая система IRP Ntfs.sys Rustock Volmgr.sys Partmgr.sys ClassPnP.sys MBR Rootkit Disk.sys TDL v2 Atapi.sys TDL v3 PciIde.sys I/O
  21. 21. KERNEL SPACE ROOTKITS «+»:• Влияют на все процессы в системе.• Есть root привилегии.• Тяжело обнаружить. «-»:• Достаточно сложны в реализации.• Пользователь должен обладать необходимыми правами, чтобы руткит смог «заразить» систему, т.е. чтобы отработал «дроппер».
  22. 22. РУТКИТЫ: ЭВОЛЮЦИЯ• Джефри Рихтер: методы внедрения dll, создание удалѐнных потоков, технологии перехвата системных вызовов в пространстве пользователя• Vanquish – первый зловред• NtRootKit, ресурс rootkit.com ( Грег Хогланд, Джеймс Батлер )• Nuclear Grabber• FU – первый DKOM руткит• ...• Rustock• …• TDL v3, MAX++, Duqu и т.п.
  23. 23. РУТКИТЫ: ЭВОЛЮЦИЯ• PoC• Заказное ПО• Коммерческий продукт• Государственные заказы
  24. 24. АНТИРУТКИТЫ• PoC  Klister  Process Hunter• Независимые разработчики  GMER  RkU  XueTr• Вендоры  Vba32 Arkit  Kaspersky TDSS Killer
  25. 25. МЕТОДЫ ОБНАРУЖЕНИЯ• Сравнение двух «снимков» системы (например, списка файлов на диске). Первый снимок делается на проверяемой системе, второй – после загрузки с CD или подключения исследуемого HDD к заведомо чистому компьютеру. Подобная методика гарантированно позволит обнаружить любой RootKit, который маскирует на диске свои файлы.• Сравнение данных, возвращаемых API функциями разного уровня и (или) получаемых низкоуровневыми методами (например, прямым чтением диска и анализом файлов реестра).• Анализ в памяти функций основных библиотек на предмет наличия изменений их машинного кода.• Анализ и восстановление ServiceDescriptorTable.
  26. 26. ОБСУЖДЕНИЕ И ВОПРОСЫ СПАСИБО ЗА ВНИМАНИЕ!

×