[jam 2.1] rootkit (dmitry kostenich)

26
Дмитрий Костенич СОВРЕМЕННЫЕ РУТКИТ /АНТИРУТКИТ ТЕХНОЛОГИИ

Upload: jamteam

Post on 08-Jun-2015

474 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: [JAM 2.1] RootKIT (Dmitry Kostenich)

Дмитрий Костенич

СОВРЕМЕННЫЕ РУТКИТ/АНТИРУТКИТ ТЕХНОЛОГИИ

Page 2: [JAM 2.1] RootKIT (Dmitry Kostenich)

РУТКИТЫ: ОБЩИЕ СВЕДЕНИЯ• Этимология термина rootkit: “root” – привилегированный администратор UNIX-

системы, “kit” – набор инструментов, rootkit – набор утилит для обеспечения «привилегированного» доступа злоумышленника к системе незаметно для настоящего администратора.

• Руткит — программа или набор программ для скрытия следов присутствия злоумышленника или вредоносной программы в системе.

Page 3: [JAM 2.1] RootKIT (Dmitry Kostenich)

РУТКИТЫ: ОБЩИЕ СВЕДЕНИЯ• Руткит – это не компьютерный вирус (хотя вирус и может использовать его в

качестве «помощника»).

• Задачи компьютерного вируса: «рассадить» себя и нанести вред операционной системе.

• Задачи руткита:

• скрытие своего присутствия и активности «полезной» нагрузки;

• удалённое управление компьютером;

• сбор информации;

• кража информации;

• подмен поисковых запросов и т.п.

Page 4: [JAM 2.1] RootKIT (Dmitry Kostenich)

КАК РАБОТАЮТ РУТКИТЫ?• Руткит не является типичным исполняемым файлом (.exe или .com).

• Основная логика работы реализована в драйвере либо в DLL.

• Наличие загрузчика («дроппера»), устанавливающего основной модуль руткита в систему через API.

• Однажды прописавшись в системе, руткит будет загружаться с ней постоянно.

Page 5: [JAM 2.1] RootKIT (Dmitry Kostenich)

КЛАССИФИКАЦИЯ РУТКИТОВСовременные операционные системы многоуровневые

• Пространство пользователя:

• Все пользовательские приложения и сервисы;

• Различные системные приложения и сервисы;

• Ошибка в одном из приложений не ведет за собой крах всей системы.

• Пространство ядра:

• «Сердце» операционной системы;

• Драйвера устройств;

• Менеджер виртуальной памяти;

• HAL и т.д.

Page 6: [JAM 2.1] RootKIT (Dmitry Kostenich)

КЛАССИФИКАЦИЯ РУТКИТОВСтруктура операционной системы Windows семейства NT.

Executive

DeviceDrivers

Hardware Abstraction Layer (HAL)

Kernel

User

Kernel

Win32User Apps

Subsystem DLL

System & ServiceProcesses

POSIXOS/2

Win32User/GDI

Environment Subsystems

Page 7: [JAM 2.1] RootKIT (Dmitry Kostenich)

КЛАССИФИКАЦИЯ РУТКИТОВДва типа:

• User Space Rootkits (User Application)

• Kernel Space Rootkits (Device Driver)

Page 8: [JAM 2.1] RootKIT (Dmitry Kostenich)

USER SPACE ROOTKITSПринципы работы:

• Патчинг различных бинарников с целью подмены результатов работы:

• Task Manager / Process Explorer;

• Netstat / ipconfig и т.д.

• Удаленное внедрение кода:

• Thread Injection / DLL Injection

Page 9: [JAM 2.1] RootKIT (Dmitry Kostenich)

USER SPACE ROOTKITSПатчинг бинарников:

• Самый старый и известный подход к скрытию вредоносного ПО;

• Модифицируются различные системные утилиты, которые обладают возможностью отследить вредоносную активность (Task Manager, Netstat, ipconfig и т.д.).

«+»:

• Просты в написании.

«-»:

• Не универсальны;

• Значительно увеличивают размер руткита;

• Легко обходятся антивирусным ПО.

Page 10: [JAM 2.1] RootKIT (Dmitry Kostenich)

USER SPACE ROOTKITSУдаленное внедрение кода:

• Основан на модификации основных структур PE-файла (в частности, IAT (Import Address Table)).

«Чистый» вариант:

Page 11: [JAM 2.1] RootKIT (Dmitry Kostenich)

USER SPACE ROOTKITSЗараженный вариант:

Page 12: [JAM 2.1] RootKIT (Dmitry Kostenich)

USER SPACE ROOTKITS• Удаленное внедрение кода – «хукинг»

• 2 вида:

• Подмена адреса;

• Модификация кода функции.

Классические руткиты, которые легко обнаруживаются. Иначе – 0-day.

Page 13: [JAM 2.1] RootKIT (Dmitry Kostenich)

USER SPACE ROOTKITS«+»:

• Легко создавать.

• Не требуют kernel модуля (драйвера).

• Относительно просто внедрить в процесс.

«-»:

• Нет root привилегий и доступа к объектам ядра.

• Легко обнаружить.

• Влияют на поведение только одного процесса.

Page 14: [JAM 2.1] RootKIT (Dmitry Kostenich)

KERNEL SPACE ROOTKITSУровень ядра дает неограниченный доступ к системным ресурсам. Доступны:

• Глобальная таблица адресов (GDT);

• Локальная таблица адресов (LDT);

• Каталог страниц;

• Таблица дескрипторов прерываний (IDT);

• Таблица диспетчеризации системных служб (SSDT);

• Многоуровневая система драйверов;

• Непосредственное манипулирование объектами ядра (DKOM);

• Манипулирование аппаратурой и т.д.

Page 15: [JAM 2.1] RootKIT (Dmitry Kostenich)

KERNEL SPACE ROOTKITSКлассические варианты работы:

• Перехват функций в режиме ядра

Сплайсинг NtQuerySystemInformation в ntdll.dll

Перехват int 2E / SysEnter

Подмена сервиса в таблице SSDT, сплайсинг в ядре

Page 16: [JAM 2.1] RootKIT (Dmitry Kostenich)

KERNEL SPACE ROOTKITS• Непосредственное манипулирование объектами ядра (DKOM)

ListEntryBlink Flink

PsActiveProcessHeadBlink Flink ListEntry

Blink Flink

ListEntryBlink Flink

ListEntryBlink Flink

ListEntryBlink Flink

Page 17: [JAM 2.1] RootKIT (Dmitry Kostenich)

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

Page 18: [JAM 2.1] RootKIT (Dmitry Kostenich)

KERNEL SPACE ROOTKITS• Файловая система

«Верхний» драйвер «Средний» драйвер «Нижний» драйвер

IoCallDriver IoCallDriver

IO_STACK_LOCATION

IRP…

IO_STACK_LOCATION

IRP…

IO_STACK_LOCATION

IRP…

Page 19: [JAM 2.1] RootKIT (Dmitry Kostenich)

KERNEL SPACE ROOTKITS• Файловая система:

Модификация функций на различных уровнях;

Драйвера-фильтры;

Модификация адресов IRP и FastIO обработчиков;

Собственная виртуальная файловая система.

Page 20: [JAM 2.1] RootKIT (Dmitry Kostenich)

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

Page 21: [JAM 2.1] RootKIT (Dmitry Kostenich)

KERNEL SPACE ROOTKITS«+»:

• Влияют на все процессы в системе.

• Есть root привилегии.

• Тяжело обнаружить.

«-»:

• Достаточно сложны в реализации.

• Пользователь должен обладать необходимыми правами, чтобы руткит смог «заразить» систему, т.е. чтобы отработал «дроппер».

Page 22: [JAM 2.1] RootKIT (Dmitry Kostenich)

РУТКИТЫ: ЭВОЛЮЦИЯ• Джефри Рихтер: методы внедрения dll, создание удалённых потоков, технологии

перехвата системных вызовов в пространстве пользователя

• Vanquish – первый зловред

• NtRootKit, ресурс rootkit.com ( Грег Хогланд, Джеймс Батлер )

• Nuclear Grabber

• FU – первый DKOM руткит

• ...

• Rustock

• …

• TDL v3, MAX++, Duqu и т.п.

Page 23: [JAM 2.1] RootKIT (Dmitry Kostenich)

РУТКИТЫ: ЭВОЛЮЦИЯ• PoC

• Заказное ПО

• Коммерческий продукт

• Государственные заказы

Page 24: [JAM 2.1] RootKIT (Dmitry Kostenich)

АНТИРУТКИТЫ• PoC

Klister

Process Hunter

• Независимые разработчики

GMER

RkU

XueTr

• Вендоры

Vba32 Arkit

Kaspersky TDSS Killer

Page 25: [JAM 2.1] RootKIT (Dmitry Kostenich)

МЕТОДЫ ОБНАРУЖЕНИЯ• Сравнение двух «снимков» системы (например, списка файлов на диске). Первый

снимок делается на проверяемой системе, второй – после загрузки с CD или подключения исследуемого HDD к заведомо чистому компьютеру. Подобная методика гарантированно позволит обнаружить любой RootKit, который маскирует на диске свои файлы.

• Сравнение данных, возвращаемых API функциями разного уровня и (или) получаемых низкоуровневыми методами (например, прямым чтением диска и анализом файлов реестра).

• Анализ в памяти функций основных библиотек на предмет наличия изменений их машинного кода.

• Анализ и восстановление ServiceDescriptorTable.

Page 26: [JAM 2.1] RootKIT (Dmitry Kostenich)

ОБСУЖДЕНИЕ И ВОПРОСЫ

СПАСИБО ЗА ВНИМАНИЕ!