2015_лекции / Лекция№3.2_2015
.pdfОбфускация точек входа (4)
Стратегии (Win32)
Поиск вызовов функций
Поиск вызовов системных API
010016B7 |
E8807D0000 |
call |
SUB_L010094 |
|
|
|
3C |
|
|
... |
|
0100943C |
SUB_L0100943C: |
|
|
0100943C |
8BFF |
mov |
edi,edi |
0100943E |
51 |
push |
ecx |
0100943F |
FF1514150001 |
call |
[msvcrt.dll!ti |
|
|
|
me] |
01009445 |
59 |
pop |
ecx |
01009446 |
C3 |
retn |
|
Обфускация точек входа (5)
Стратегии (Win32)
Переопределение таблицы импорта
Переопределение адресов системных вызовов =>
возможно только после загрузки программы в память
Injective Code inside Import Table http://www.ntcore.com/files/inject2it.htm
PE загрузчик
Обфускация точек входа (5)
Переопределение таблицы импорта
Обфускация точек входа (5)
Стратегии (Win32)
Использование отладочного API
Перед заражением цель запускается в режиме отладки
Использование нестандартных точек входа
Секция TLS
Определение адресов API-функций
Поиск необходимых функций в таблице импорта
Поиск функций LoadLibrary /GetProcAddress
Вызов системных функций по жестко прописанным адресам
Добавление в таблицу импорта необходимых функций
(LoadLibrary/GetProcAddress)
Поиск функций в памяти (Kernel32.Dll проецируется в адресное пространство процессовб базовый адрес всегда выравнивается по 64 КБ => просканировать половину пространства, найти сигнатуру, найти смещение разобрать таблицу импорта)
Использование обработчика структурных исключений
Использование структуру PEB (Process Environment Block) – структура постоянно меняется
Стратегии защиты от обнаружения
Техника самозащиты, используемая вредоносным ПО
Обфускация точек входа
Использование упаковщиков
Обфускация кода
Шифрование
Полиморфизм
Метаморфизм
Анализ окружения на наличие средств отладки
Анализ окружения на наличие антивирусных решений
Стелс-технологии
Упаковщики
75% ВрПО, заражающие бинарные файлы используют упаковщики
Обычно используются алгоритмы сжатия и шифрования
Скрываются таблицы импорта и таблицы адресов
Часть кода распаковщика также упаковывается
Используют обфускацию кода
Источники:
K. Roundy, B. Miller Binary-Code Obfuscations in Prevalent Packer Tools, University of Wisconsin, 2012
M. Sikorski, A. Honig. Practical Malware Analysis. The Hands-On Guide to Dissecting Malicious Software. NY: No Starch Press, 2012 - 800 P.
Структура упаковщика
Процедура распаковки
Распаковать исполняемый файл
Разрешить все импорты исполняемого файла
Передать управление исходной точке входа
инструкция передачи управления = переход в конец (tail jump).
инструкция jmp – самый простой и наиболее распространненный способ =>
передача управления часто маскируется (инструкции push, ret, call, системные вызовы NtContinue ZwContinue.
Процедура распаковки