Вячеслав Закоржевский, Kaspersky Lab
Пришёл в «Лабораторию Касперского» в середине 2007 года на должность вирусного аналитика. В конце 2008 года занял позицию старшего вирусного аналитика в группе эвристического детектирования. В область интересов входит исследование полиморфных вирусов и сильно изменяющихся зловредов. Также следит за современными тенденциями в методах обфускации, антиэмуляции и прочих, применяемых вредоносным программным обеспечением.
Тема доклада
Сложнейшие техники, применяемые буткитами и полиморфными вирусами.
Тезисы
Бытует мнение, что современные зловреды достаточно просты и пишутся неподготовленными людьми. Данное выступление призвано развеять этот миф. В презентации будут описаны три зловреда, которые используют нетривиальные и сложные методы в процессе своего функционирования. В частности, будет рассмотрена схема работы современных буткитов, которые всё больше и больше набирают обороты. На двух других примерах мы проиллюстрируем изобретательность вирусописателей, которые пытаются максимально усложнить жизнь исследователям и антивирусным компаниям. В одном случае они использовали собственную виртуальную машину совместно с EPO техникой заражения. А в другом - «подключение» нулевых виртуальных адресов для размещения в них своих данных.
1. Сложнейшие техники, применяемые буткитами и полиморфными вирусами Vyacheslav Zakorzhevsky, Senior Malware Analyst, Kaspersky Lab 19 сентября 2011 / Yet Another Conference, Yandex
2. Обзор выступления PAGE 2 | Yet Another Conference 2011 | September 19, 2011 Современное вредоносное ПО уже давно перешло из разряда «поделок» в категорию «сложных программ» В чём сложность? Зачем? Как?
7. Структура жёсткого диска и назначение MBR PAGE 6 | Yet Another Conference 2011 | September 19, 2011 Действия, выполняемые MBR: Поиск загрузочного раздела Проверка сигнатуры AA55h Передача управление в найденный раздел Структуражёсткого диска в общем случае MBR 1 - ый сектор Таблица разделов 2 - 63 сектора Reserved Раздел 1 64 - … сектора Раздел 2 Раздел n
8. Начальная загрузка компьютера PAGE 7 | Yet Another Conference 2011 | September 19, 2011 В случае успеха Поиск «активного» раздела Загрузочный раздел MBR
9. БуткитSinowal, модификация жёсткого диска PAGE 8 | Yet Another Conference 2011 | September 19, 2011 Структуражёсткого диска после заражения Структуражёсткого диска до заражения MBR MBR 1 - ый сектор 1 - ый сектор Таблица разделов Таблица разделов 2 - 63 сектора Reserved 2 - 63 сектора Reserved Раздел 1 64 - … сектора Раздел 1 64 - … сектора Раздел 2 Оригинальный MBR Код буткита Драйвер буткита Раздел 2 Раздел n Раздел n Неразмеченное пространство
10. Полный алгоритм работы буткит компоненты Sinowal PAGE 9 | Yet Another Conference 2011 | September 19, 2011 Структура заражённого жёсткого диска Структура физической памяти Заражённый MBR 0x0000 IDT Таблица разделов 0x0400 Reserved BIOS Data 0x0600 Раздел 1 MBR 0x0800 0x7C00 Раздел 2 Считанный BIOS`омMBR Раздел n 0x7E00 Оригинальный MBR Неразмеченное пространство, занятое данными буткита 0x8000 Код буткита 0x9000 0x9F40 Код буткита
11. Основные действия буткита PAGE 10 | Yet Another Conference 2011 | September 19, 2011 Дальнейшие действия, выполняемые буткитом: Перехват Int 13h в IDT Перехват управления в ntbootdd.sys после BlLoadBootDrivers Поиск базы ntoskrnlи перехват в нём IoInitSystem Зачитывание драйвера буткита из неразмеченной области в выделенную виртуальную память Запуск драйвера с помощью ZwCreateSystemThread
12. Что в итоге? PAGE 11 | Yet Another Conference 2011 | September 19, 2011 Осуществлён запуск вредоносного кода в ring0 Запуск кода буткита осуществляется сразу же после инициализации системы Вредоносный код исполняется вне какого-либо процесса Код буткита располагается вне файловой системы
16. Виртуальная память в Windows PAGE 15 | Yet Another Conference 2011 | September 19, 2011 Разбиение адресного пространства в системах Windows NT (32-бит) Назначение раздела адресного пространства 0x00000000 – 0x0000FFFF Для выявления нулевых указателей 0x00010000 – 0x7FFEFFFF Для кода и данных ring 3 Для выявления некорректных указателей 0x7FFF0000 – 0x7FFFFFFF 0x80000000 – 0xFFFFFFFF Для кода и данных ring 0
17. Физическая память в Windows PAGE 16 | Yet Another Conference 2011 | September 19, 2011 Распределения начальных адресов физической памяти при инициализацииWindows 0x0000 old IDT 0x0400 BIOS Data 0x0600 MBR 0x0800 0x7C00 MBR / Boot Sector 0x7E00 Код буткита Код буткита недоступен из Windows, как из ring0, так и из ring3
18. Виртуальный адрес -> логический адрес PAGE 17 | Yet Another Conference 2011 | September 19, 2011 Смещение Селектор (16 – бит) Таблица дескрипторов 32 – битный логический адрес + Дескриптор
19. Логический адрес -> физический адрес PAGE 18 | Yet Another Conference 2011 | September 19, 2011 Логический адрес (32 – бит) Смещение Каталог Таблица Запись n Запись 2 Запись 1 Запись n Запись 2 Запись 1 + 32 – битный физический адрес Модификация записи буткитом CR3
20. Ring 3 -> ring 0 из «пользовательского» режима PAGE 19 | Yet Another Conference 2011 | September 19, 2011 Глобальная таблица дескрипторов Ring 3 Дескриптор кода, DPL = 0 Шлюз вызова, DPL = 3 Дескриптор n Ring 0 Дескриптор 1 Всегда нулевой
21. Что же в итоге? PAGE 20 | Yet Another Conference 2011 | September 19, 2011 Код буткита использовал неотображённую область физической памяти Вредоносное приложение, запущенное под ring3 безболезненно переходит в ring0
28. Типовой вариант файлового вируса PAGE 24 | Yet Another Conference 2011 | September 19, 2011 Тот же самый файл после заражения Типовой PE-файл до заражения header header EP .code .code .data .data .rsrc .rsrc EP Тело вируса Изменены PE-заголовок, последняя секция, характеристики последней секции
29. Схема заражения исполняемого файла исследуемым вирусом PAGE 25 | Yet Another Conference 2011 | September 19, 2011 Тот же самый файл после заражения Типовой PE-файл до заражения header header EP .code EP .code .data .data .data – данные вируса .rsrc Точка входа и характеристики секции не изменяется .rsrc
30. Модификация функций оригинального файла вирусом PAGE 26 | Yet Another Conference 2011 | September 19, 2011 Модификация отдельных функций
31. Модификация переходов в оригинальном файле вирусом PAGE 27 | Yet Another Conference 2011 | September 19, 2011 Модификация отдельных переходов
32. Полная схема работывируса PAGE 28 | Yet Another Conference 2011 | September 19, 2011 Заражённый файл header EP .code Изменённая функция Изменённая функция данные вируса Статичное тело вируса .data P-Code .rsrc
33. Виртуальная машина PAGE 29 | Yet Another Conference 2011 | September 19, 2011 Формат инструкций виртуальной машины Относительный адрес функции Параметр 1 Параметр 2 4 байта Действия, выполняемые с помощью виртуальной машины: Поиск ntdll Вызов ZwProtectVirtualMemory Расшифровка основного статичного тела, содержащего «полезную нагрузку»
34. Что же в итоге? PAGE 30 | Yet Another Conference 2011 | September 19, 2011 Заражённый файл практически невозможно отличить от оригинального: Отсутствие специфичных статичных фрагментов вредоносного кода Основной код вируса зашифрован всегда по-разному Расположение P-кода всегда разное и вычисляется динамически Модифицированную вирусом секцию сложно отличить от секции обычного файла
35. Vyacheslav Zakorzhevsky, Senior Malware Analyst, Kaspersky Labvyacheslav.zakorzhevsky@kaspersky.com 19 сентября 2011 / Yet Another Conference, Yandex