На сегодняшний день существует множество полиморфных генераторов. Мне
не понятны мотивации людей, создающих полиморфики которые пробиваются
сегодняшними антивирусами (Dr.Web,AVP и так далее). Вы вставили в свой
движок несколько инструкций, которые не позволяют AV продвинуться в
глубь. Результат, - не определяемый вирус. Появляется заблуждение, что и
в будущем этот зверек не будет обнаруживаться. Некоторые люди искренне
верят в создание FullMorph'а , обнаружение которого станет не возможным.
Через несколько дней появляется очередной апдейт и наше изделие
определяется на "Ура". Если вирус определяется, то и FullMorph будет
тоже. Что мы сделали не так? Ответом может служить то, что генератор не
достаточно "полиморфный". Универсальный генератор должен иметь большое
число "мусорных" инструкций, причем инструкции используемые в
расшифровщике (каркасе) должны так же использоваться в "мусоре".
Допустим наша фишка - ah=0,int 15h; ah=86
Пример кода:
Lab_1:
Lea ax, [0000]
Nop
Int 15h
Xchg al, ah
Cmp al, 86h
Jnz lab_1
Из этого следует, что весь код должен иметь подобные инструкции. Кроме
0x15 прерывания должны вызываться и другие(0x1C,0x08,..). К сожалению
разумных генераторов пока не существует (я не видел). Каждая инструкции
должна играть роль. Подобные вещи реализованы.
Пример:
_Ax dw 0; _Cx dw 0; ....
Gen_mov_ax:
Mov ax, -1
Call random
Push ax
Mov al, 0B8h
Stosb
Pop ax
Stosw
Mov [_Ax], ax
Ret
На данное время не один мною виденный AV не может пробиться сквозь LME
1.8, хотя он далек от идеала. Надеюсь, мои домыслы натолкнули вас на
конкретную идею.
Статья для журнала Top Device
|