2015_лекции / Лекция№3.2_2015
.pdfСтратегии заражения PE-файлов. Упаковщики
Формат PE-файла
точка входа
Обобщенный алгоритм заражения
Размещение кода внутри заражаемого файла
Перехватить управления до начала или в процессе выполнения основной программы
Определение адресов системных функций, необходимых для функционирования
Стратегии заражения PE-файлов (1)
Добавление новой секции
Изменение таблицы секций
Изменение SizeOfImage
Изменениe числа секций NumberOfSection
Изменение точки входа
Изменение размера последней секции
Изменение VirtualSize, SizeOfRawData
Изменение характеристик в заголовке секции (MEM_READ, MEM_WRITE, MEM_EXECUTE)
Изменение точки входа
Изменение SizeOfImage
«Inject your code to a Portable Executable file»
http://www.codeproject.com/Articles/12532/Inject-your-code-to-a-Portable- Executable-file#BuildanImportTableandReconstructtheOriginalImportTable6
Стратегии заражения PE-файлов (2)
Заражение заголовка
Изменение точки входа
Расположение между началом секций и после PE – заголовка
Код вирус должен быть очень коротким
Изменение заголовка (создание 2-го заголовка)
Изменение поля ifaNew
Стратегии заражения PE-файлов (3)
Стратегии заражения PE-файлов (4)
Заполнение «свободных зон»
FileAlignment (512 байт по умолчанию)
Virtual Size >= RawDataSize
Вставка вызова DLL
вставка вызова LoadLibrary (в «свободную» зону)
изменение точки входа на добавленный код
Обфускация точек входа (1)
Цель скрыть истинную точку входа вируса
1) исходная точка входа остается без изменения
2) код, расположенный у точки входа остается без изменения
Обфускация точек входа (2)
Задача :
1) изменить программный код так, чтобы вирус мог получить управление
Базовые стратегии
EP |
|
EP |
|
jmp |
jmp |
|
|
Код |
Код |
программы |
программы |
|
jmp |
вирус
Обфускация точек входа (3)
Базовые стратегии:
Поиск инструкций безусловного перехода (jmp),
установки флагов (CLC, STC, CLI, STI, CLD), NOP
Динамическое отслеживание выполнения (= отладка)
например, перехват прерываний int 1
поиск определенных инструкций
Вставка инструкций , передающих управление вирусному коду (CALL, JMP, PUSH offset + RET)