Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #66, ИЮНЬ 2004 г.

Секреты маскировки

Крис Касперски

Xakep, номер #066, стр. 066-032-3


Можно ли противостоять автоматическим распаковщикам, ничего не смысля в ассемблере и не разрывая свою задницу напополам? На первый взгляд, стоит лишь откопать в Сети малоизвестный упаковщик, поновее да покруче, и все будет торчком. Взять, например, OBSIDIUM, который многим хакерам зубы пообломал, и с которым еще не справляется ни один антивирус.

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

А другие приемы борьбы есть?! Да, и не один, а, как минимум, целых три: уничтожение сигнатур упаковщика, внедрение подложных сигнатур и дезактивация эмулятора.

Уничтожение сигнатур

Если выбранный нами упаковщик настолько крут, что не может быть распакован на виртуальной машине антивирусного эмулятора (универсальном распаковщике), антивирус пытается опознать упаковщик "в лицо", передавая бразды правления соответствующей процедуре распаковки, либо распаковывающей файл самостоятельно, либо инструктирующей эмулятор на предмет обхода антиотладочных приемов. Исказив сигнатуру упаковщика, мы предотвратим его опознание, обломав антивирус по полной программе. Причем, в отличие от сигнатур самих вирусов, до которых еще докопаться надо, сигнатуры популярных упаковщиков хорошо известны.

В частности, для ASPack/ASProtect достаточно затереть первый байт точки входа, поменяв 60h (опкод команды PUSHAD) на 90h (опкод команды NOP). Строго говоря, это не совсем корректный хак, нарушающий балансировку стека, однако никак не сказывающийся на работоспособности подавляющего большинства программ.

Как мы будем действовать? Возьмем bo2k.exe (или любой другой файл) и, предварительно убедившись, что он успешно опознается всеми антивирусами, пропустим его через ASPack, а затем повторим процедуру опознания вновь. И AVP, и Dr.WEB продолжают визжать, подтверждая тот факт, что данный упаковщик им хорошо известен.

Загружаем файл в HIEW, однократным нажатием на <ENTER> переходим в hex-режим, давим <F5>, перемещаясь в точку входа, жмем <F3> для разрешения редактирования, говорим "90", подтверждая серьезность своих намерений клавишей <F9>. Dr.WEB насупился и молчит. AVP тоже заткнулся. Естественно, помимо NOP, можно использовать и другие однобайтовые команды, такие как: inc eax/40h, inc ebx/43h, inc ecx/41h, inc edx/42h, inc esi/46h, inc edi/47h, dec eax/48h, dec ebx/4bh, dec ecx/49h, dec edx/4ah, xchg ebx,eax/93h и многие другие. Не надо злоупотреблять 90h – иначе антивирусы просто пополнятся новой сигнатурой!

Если лень возиться с hiew'ом, воспользуйся любым подходящим скремблером – программой для автоматического затирания сигнатур. Их легко найти в Сети, правда, большинство из них ни хрена не работают, потому что искажают совсем не те сигнатуры, на которые реагируют антивирусы, или в оголтелом порыве энтузиазма гробят файл так, что вместе с антивирусом его перестает узнавать и сам распаковщик. Так, в частности, ведет себя незаслуженно популярный HidePX.

Назад на стр. 066-032-2  Содержание  Вперед на стр. 066-032-4