Upload
yaevents
View
10.683
Download
0
Embed Size (px)
DESCRIPTION
Вячеслав Закоржевский, Kaspersky LabПришёл в «Лабораторию Касперского» в середине 2007 года на должность вирусного аналитика. В конце 2008 года занял позицию старшего вирусного аналитика в группе эвристического детектирования. В область интересов входит исследование полиморфных вирусов и сильно изменяющихся зловредов. Также следит за современными тенденциями в методах обфускации, антиэмуляции и прочих, применяемых вредоносным программным обеспечением.Тема докладаСложнейшие техники, применяемые буткитами и полиморфными вирусами.ТезисыБытует мнение, что современные зловреды достаточно просты и пишутся неподготовленными людьми. Данное выступление призвано развеять этот миф. В презентации будут описаны три зловреда, которые используют нетривиальные и сложные методы в процессе своего функционирования. В частности, будет рассмотрена схема работы современных буткитов, которые всё больше и больше набирают обороты. На двух других примерах мы проиллюстрируем изобретательность вирусописателей, которые пытаются максимально усложнить жизнь исследователям и антивирусным компаниям. В одном случае они использовали собственную виртуальную машину совместно с EPO техникой заражения. А в другом - «подключение» нулевых виртуальных адресов для размещения в них своих данных.
Citation preview
Сложнейшие техники, применяемые буткитами и полиморфными вирусами
Vyacheslav Zakorzhevsky, Senior Malware Analyst, Kaspersky Lab19 сентября 2011 / Yet Another Conference, Yandex
Обзор выступления
PAGE 2 | Yet Another Conference 2011 | September 19, 2011
В чём сложность?
Зачем?
Как?
Современное вредоносное ПО уже давно перешло из разряда «поделок» в категорию «сложных программ»
Буткиты. Чем страшны, как работают и что делают?
Буткиты. Что это и зачем?
PAGE 4 | Yet Another Conference 2011 | September 19, 2011
Буткит – вредоносная программа, модифицирующая MBR жёсткого диска
В чём сложность?
• Работа на низком уровне с жёстким диском и оперативной памятью
• Перехват и обработка прерываний• Внедрение в стартовый код операционной системы
Буткиты. Что это и зачем?
Что это даёт?
• Возможность использовать неразмеченное пространство жёсткого диска
• Возможность получить управление до старта кода операционной системы
• Возможность изменять ход загрузки ОС
PAGE 5 | Yet Another Conference 2011 | September 19, 2011
Структура жёсткого диска и назначение MBR
PAGE 6 | Yet Another Conference 2011 | September 19, 2011
Действия, выполняемые MBR:
Поиск загрузочного раздела
Проверка сигнатуры AA55h
Передача управление в найденный раздел
Структура жёсткого диска в общем случае
MBR
Reserved
Раздел 1
Раздел 2
Раздел n
1 - ый сектор
2 - 63 сектора
64 - … сектора
Таблица разделов
Начальная загрузка компьютера
PAGE 7 | Yet Another Conference 2011 | September 19, 2011
В случае успеха
MBR Загрузочный раздел
Поиск «активного»
раздела
Буткит Sinowal, модификация жёсткого диска
PAGE 8 | Yet Another Conference 2011 | September 19, 2011
Оригинальный MBR
Код буткита
Драйвер буткита
Структура жёсткого диска до заражения
MBR
Reserved
Раздел 1
Раздел 2
Раздел n
1 - ый сектор
2 - 63 сектора
64 - … сектора
Таблица разделов
Структура жёсткого диска после заражения
MBR
Reserved
Раздел 1
Раздел 2
Раздел n
1 - ый сектор
2 - 63 сектора
64 - … сектора
Таблица разделов
Неразмеченное пространство
Полный алгоритм работы буткит компоненты Sinowal
PAGE 9 | Yet Another Conference 2011 | September 19, 2011
Заражённый MBR
Reserved
Раздел 1
Раздел 2
Раздел n
Таблица разделов
Неразмеченное пространство, занятое
данными буткита
Структура заражённого жёсткого диска
Структура физической памяти
IDT
MBR
Считанный BIOS`ом MBR
BIOS Data
0x0000
0x0400
0x06000x0800
0x7C00
Оригинальный MBR
0x7E00
Код буткита0x8000
0x9000
Код буткита0x9F40
Основные действия буткита
PAGE 10
| Yet Another Conference 2011 | September 19, 2011
Дальнейшие действия, выполняемые буткитом:
Перехват Int 13h в IDT
Перехват управления в ntbootdd.sys после BlLoadBootDrivers
Поиск базы ntoskrnl и перехват в нём IoInitSystem
Зачитывание драйвера буткита из неразмеченной области в выделенную виртуальную память
Запуск драйвера с помощью ZwCreateSystemThread
Что в итоге?
PAGE 11
| Yet Another Conference 2011 | September 19, 2011
Осуществлён запуск вредоносного кода в ring0
Запуск кода буткита осуществляется сразу же после инициализации системы
Вредоносный код исполняется вне какого-либо процесса
Код буткита располагается вне файловой системы
Буткит, подключающий нулевые виртуальные адреса и повышающий уровень привилегий
Буткит Trup - особенности
PAGE 13
| Yet Another Conference 2011 | September 19, 2011
В чём сложность?
• Работа с низкоуровневыми структурами, отвечающими за организацию виртуальной памяти
• Добавление элементов в глобальную таблицу дескрипторов
Буткит Trup - особенности
PAGE 14
| Yet Another Conference 2011 | September 19, 2011
Что это даёт?
• Возможность обращаться к физической памяти по искусственно заблокированным виртуальным адресам
• Возможность повышать привилегии путём перехода из ring3 в ring0 с помощью шлюза вызова
Виртуальная память в Windows
PAGE 15
| Yet Another Conference 2011 | September 19, 2011
Разбиение адресного пространства в системах Windows NT (32-бит)
Для выявления нулевых указателей
Для кода и данных ring 3
Для выявления некорректных указателей
Для кода и данных ring 0
Назначение раздела адресного пространства
0x00000000 – 0x0000FFFF
0x00010000 – 0x7FFEFFFF
0x7FFF0000 – 0x7FFFFFFF0x80000000 – 0xFFFFFFFF
Физическая память в Windows
PAGE 16
| Yet Another Conference 2011 | September 19, 2011
Распределения начальных адресов физической памяти при инициализацииWindows
old IDT
MBR
MBR / Boot Sector
BIOS Data
0x00000x04000x06000x0800
0x7C00
Код буткита0x7E00
Код буткита недоступен из Windows, как из ring0, так и из ring3
Виртуальный адрес -> логический адрес
PAGE 17
| Yet Another Conference 2011 | September 19, 2011
Селектор (16 – бит)
Смещение
Дескриптор
Таблица дескрипторов
+32 – битный логический
адрес
Логический адрес -> физический адрес
PAGE 18
| Yet Another Conference 2011 | September 19, 2011
Логический адрес (32 – бит)
СмещениеКаталог Таблица
CR3
32 – битный физический адрес
Запись n
Запись 2Запись 1
Запись n
Запись 2Запись 1
+
Модификация записи
буткитом
Ring 3 -> ring 0 из «пользовательского» режима
PAGE 19
| Yet Another Conference 2011 | September 19, 2011
Дескриптор 1
Глобальная таблица дескрипторов
Всегда нулевой
Дескриптор кода, DPL = 0
Шлюз вызова, DPL = 3
Ring 3
Ring 0
Дескриптор n
Что же в итоге?
PAGE 20
| Yet Another Conference 2011 | September 19, 2011
Код буткита использовал неотображённую область физической памяти
Вредоносное приложение, запущенное под ring3 безболезненно переходит в ring0
Полиморфный EPO-вирус с собственной виртуальной машиной
PAGE 22
| Yet Another Conference 2011 | September 19, 2011
Особенности рассматриваемого файлового вируса
Файловый вирус – вредоносная программа, модифицирующая исполняемый файл таким образом, что к его оригинальной функциональности добавляется вредоносная составляющая
В чём сложность рассматриваемого вируса?
• Применяется техника EPO (entry point obscuring)• Отсутствие статичных сигнатур вируса• Не производится изменений характеристик секций• Часть кода вируса меняется от поколения к поколению
• Присутствует виртуальная машина с собственным P-кодом
PAGE 23
| Yet Another Conference 2011 | September 19, 2011
Особенности рассматриваемого файлового вируса
Что это даёт?
• Возможность выполнять вредоносные действия в контексте доверенной программы
• Применение собственной виртуальной машины и EPO-техники значительно затрудняет обнаружение заражённых файлов
Типовой вариант файлового вируса
PAGE 24
| Yet Another Conference 2011 | September 19, 2011
Типовой PE-файл до заражения
.code
header
.data
.rsrc
EP
Тот же самый файл после заражения
.code
header
.data
.rsrc
Тело вируса
EP
Изменены PE-заголовок, последняя секция, характеристики последней секции
Схема заражения исполняемого файла исследуемым вирусом
PAGE 25
| Yet Another Conference 2011 | September 19, 2011
Типовой PE-файл до заражения
headerEP
.code
.data.rsrc
Тот же самый файл после заражения
headerEP
.code
.rsrc
.data.data – данные
вирусаТочка входа и характеристики секции не изменяется
Модификация функций оригинального файла вирусом
PAGE 26
| Yet Another Conference 2011 | September 19, 2011
Модификация отдельных функций
Модификация переходов в оригинальном файле вирусом
PAGE 27
| Yet Another Conference 2011 | September 19, 2011
Модификация отдельных переходов
данные вируса
Полная схема работы вируса
PAGE 28
| Yet Another Conference 2011 | September 19, 2011
Заражённый файл
headerEP
.code
.rsrc
Изменённая функция
P-Code
Изменённая функция
Статичное тело вируса.data
Виртуальная машина
PAGE 29
| Yet Another Conference 2011 | September 19, 2011
Формат инструкций виртуальной машины
Относительный адрес функции
Параметр 1 Параметр 2
4 байта
Действия, выполняемые с помощью виртуальной машины:
Поиск ntdll
Вызов ZwProtectVirtualMemory
Расшифровка основного статичного тела, содержащего «полезную нагрузку»
Что же в итоге?
PAGE 30
| Yet Another Conference 2011 | September 19, 2011
Заражённый файл практически невозможно отличить от оригинального:
Отсутствие специфичных статичных фрагментов вредоносного кода
Основной код вируса зашифрован всегда по-разному
Расположение P-кода всегда разное и вычисляется динамически
Модифицированную вирусом секцию сложно отличить от секции обычного файла
Thank You
Vyacheslav Zakorzhevsky, Senior Malware Analyst, Kaspersky [email protected]
19 сентября 2011 / Yet Another Conference, Yandex