Ручная троянизация приложений под windows

         

Обход антивирусов


И все бы было у нас хорошо, если бы антивирусы ни ругались на инфицированный файл. А они ругаются, причем матом, что портит нам весь бизнес и создает угрозу отрыва хвоста и детородного органа вместе с ним:

Рисунок 11 реакция антивирусов на бациллу

Вернемся к адресу 1006571h, в котором происходит передача управления на бациллу и посмотрим, что тут можно предпринять:

100656a ! ff1594100001     call   dword ptr [KERNEL32.dll:GetModuleHandleA]

1006570 ! 50               push   eax

1006571 ! e88a9dffff       call   1000300h

1006576 ! 894598           mov    [ebp-68h], eax

1006579 ! 50               push   eax

100657a ! ff1568110001            call   dword ptr [MSVCRT.dll:exit]

Листинг 4 окрестности точки в которой происходит перехват управления

Очевидно, антивирус отслеживает команду CALL, эмулируя ее выполнение. А как на счет передачи управления через ret? Интересно, сможет ли он с ним справиться? Давайте заменим CALL 1000300h на PUSH 1000300h/RET. Это ведь несложно. Правда, возникает одна проблема, — "чистый" CALL на байт короче и этого самого байта нам как раз не хватает! К счастью, следом за CALL'ом расположена команда MOV [EBP-68h], EAX, копирующая код возврата в локальную переменную, а кому он сейчас нужен? Поэтому мы можем смело оттяпать от нее один байт и перекрыть оставшиеся два байта операциями NOP. (Как вариант, можно перенести часть Start-Up кода внутрь бациллы, но в нашем случае это излишне).

Подводим курсор к 1006571h, жмем <Ctrl-A> и пишем PUSH 1000300h/RET/NOP/NOP. К сожалению, HTE позволяет ассемблировать только одну команду за раз, поэтому жать <Ctrl?A> приходится многократно. Еще необходимо в теле бациллы заменить JMP 100299Eh/RET на CALL 100299Eh/JMP 1006579h (мы ведь заменили CALL на эквивалент JMP'а, поэтому, для достижения гармонии необходимо проделать обратную ему операцию).

Сохраняем изменения по <F2>, выходим и… Бацилла по прежнему работает как миленькая, но антивирус уже не ругается. Обиделся, наверное. Или уснул.

Рисунок 12

Вообще-то, это не самый надежный антивирусный прием, зато самый простой! Остальные можно найти в статье "техника выживания в мутной воде или как обуть антивирус", опубликованной в таком-то номере хакера.



Содержание раздела