Как извлечь шеллкод из памяти

Как извлечь шелл-код из памяти

Вредоносные программы иногда запускают шеллкод прямо в памяти. В этой небольшой статье я покажу, как извлечь шеллкод из памяти.

Еще по теме: Как обнаружить шелл-кoд на взломанной машине

Размещение шеллкода в памяти

Обычный способ размещения шелл-кода в памяти — это использовать VirtualAlloc для выделения памяти с нужными разрешениями. Затем вредоносная программа использует RtlMoveMemory для записи шелл-кода в выделенное пространство. После чего создается поток для передачи элемента управления в это место.

Размещение шеллкода в памяти
Размещение шеллкода в памяти

Как извлечь шелл-код из памяти

Для извлечения шеллкода мы можем использовать хуки api. Обычно устанавливают точку останова при любом вызове API. Я буду использовать x64dbg. Вы можете использовать любое другое приложение.

Загрузите исполняемый файл в x64dbg. Перейдите к символам и найдите VirtualAlloc. Установите точку останова и выполняйте до возврата.

Извлечь шелл-код из памяти

VirtualAlloc вернет адрес выделенной памяти. Он будет в регистре rax / eax. Это адрес, по которому вы найдете шеллкод.

Извлечение шеллкода из памяти

Установите точку останова при вызове функции CreateThread. Третий аргумент будет адресом памяти, куда мы скопировали шеллкод.

Сравните выделенное значение с EAX
Сравните выделенное значение с EAX

Следуйте по адресу в дампе. Вот где находится шеллкод:

Это шеллкод в памяти
Шеллкод

Давайте сравним шеллкод, найденный в памяти, с шелл-кодом в исходном коде. Первые три байта — это DA CB BB.

Шеллкод в памяти

Да, совпадает. Этот метод можно использовать для извлечения распакованных / расшифрованных исполняемых файлов в память.

Еще по теме: Лучшие программы для реверс-инжиниринга

ВКонтакте
OK
Telegram
WhatsApp
Viber

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *