Msg : Prev 1722 / 4681 Next
From: Reminder
1997-01-21 04:35:12

To  : All

Subj:

web, avp, adinf & other shit


Привет All! 

Как я и обещал, я начинаю эту тему. Хоть в начале речь 
пойдет в основном об эвристике, коей наделены многие 
анти но в тему также входят возможные обходы ревизоров/ 
мониторов/etc. Итак: 

Эвристик или эвристичекий анализатор состоит из двух 
составных частей, как то: эмулятор кода и анализатор 
наличия вируса. 

Анализаторы наличия вируса начинали 
свое существование уже довольно давно, общепринятой 
классикой (но почему то не для меня) в этом плане 
является Lie Detector by Е.Сусликов. это начало 90-х 
годов. Впоследствии Евгений понял, что это не его 
сфера и переключился на всем вам известный hiew :) 
Так вот, анализатор наличия вирусов это участок 
кода, определяет характерные признаки вируса и 
реагирует соответственно им. Допустим если у вас 
есть поиск (4eh) с маской *.com, а также запись 
(40h) в файл, то можно с некоторой вероятностью 
гарантировать наличие вируса в файле, где вы это 
нашли. 

Далее: эмулятор кода в эвристике предназначен для 
работы в паре с анализатором и для того, чтобы 
можно было обнаруживать шифрующиеся вирусы. 
Эмулятор кода, это не что иное как псевдовыполнение 
инструкций процессора. В идеале эмулятор должен 
эмулировать весь комп'ютер, что естественно недостижимо. 
Эмуляторы кода тоже не новы, они часто использовались в 
отладчиках и для эмуляции на pc других процов, cкажем z80. 

Обломить эвристик безусловно можно как на его эмуляторе, так 
и на его анализаторе. Я приведу и тот и другой способ. 
в качестве примера выберем web 3.17, в силу его наибольшей 
распространенности на територии ex-совка. 

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

есть несколько путей облома эмулятора. наиболее простые 
и действенные из них: 

- знание дыры в уже эмуляции команд эмулятором. 
- невозможность эмулятору проэмулить часть 
машины выходящую за пределы проца. 

иными словами либо глюки в эмуляции проца либо вне его. 

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

ко второму относится эмуляция ОЗУ/ПЗУ/периферии. 

начнем с первого: 

=== Cut === 
; web 3.17 trick number 1 (c) Reminder [DVC] 

xor ax,ax 
sahf 
lahf 
xchg al,ah 
add ax,5 ; ax=7 

call $+3 
pop si 
add si,ax 
jmp si 
mov bl,56h ; эта команда в реальном исполнении не выполнится 
; в исполнении же web'a выполнится. 
=== Cut === 

все дело в том, что после инструкций xor ax,ax / sahf / lahf в 
ah окажется вовсе не 0, а 2. Hа вот таких вот неочевидностях 
и основан в большинстве своем этот метод. Метод поиска глюков 
в эмуляции команд проца. Мы пустили web по ложной ветви, которая 
никогда не выполнится. в данном случае это была команда mov bl,56h. 
bx - это ключ расшифровщика, и запись в него другого значения 
не позволит расшифровать web'у ваш вирус правильно. Более того, 
если вирус только, что откомпилированный и при bx=0 в реальном 
исполнении он произведет посадку в память, то при web'овском 56h 
его эмулятор сам перешифрует ваш код ;) естественно анализатору 
после этого там делать нечего. 

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

Приступим ко второму способу обхода эвристики методом облома 
эмулятора: 

=== Cut === 
in ax,42h 
mov si,ax 
in ax,42h 
cmp ax,si 
jnz ccc 
mov bx,1234h ; web выполняет, реально нет 
ccc: 
=== Cut === 

тут эмулятор обломился на неспособности проэмулить порты ;)) 
всяких разных портов много, посему это очень приятная дырень, 
какую вряд-ли когда смогут заткнуть. 

... 
Остальное я допишу потом, между прочим много примеров и часть из 
того, что вы прочитали здесь вы можете пронаблюдать в моих статьях 
в CHAOS A.D. 1-2. Вы только мне напомните, ok ? А то забуду. ;) 
С " неудовлетворенным гипертрофированным честолюбием (+ еще целый список 
особенностей психики) практически в чистом виде и в высокой концентрации " 
, Kostya Volkov aka Reminder 
.' [SGWW] [DVC] [Crematorium fans Team] [MK Team] [WW] `. 
--- 
* Origin: Kostya Volkov aka Reminder (2:4631/17) 
VX Heavens - коллекция вирусов,исходников и статей.
Хочешь пользоваться клавиатурой - сдвинь мышь, чтобы не мешала
Пользовательского поиска