8(495)909-90-01
8(964)644-46-00
pro@sio.su
Главная
Системы видеонаблюдения
Охранная сигнализация
Пожарная сигнализация
Система пожаротушения
Система контроля удаленного доступа
Оповещение и эвакуация
Контроль периметра
Система домофонии
Парковочные системы
Проектирование слаботочных сетей
Аварийный
контроль
Раздел: Документация

0 ... 10 11 12 13 14 15 16 ... 102

тати говоря, вирус может внедриться и не в первую машишгу юпустив несколько инструкций, пристроиться где-то в середш

да. Для этого ему даже не потребуется включать в свое тело т •ж дизассемблер — с некоторым риском можно ограничиться и

да инструкции call (E8h XXh XXh XXh XXh, где XXh - относитслы

хода, отсчитываемый от конца команды) или mov хх. dword prt t хружающей в регистр хх указатель на текущий обработчик стр точений и встречающейся в подавляющем большинстве совп-

амм. Взгляните на файл, зараженный вирусом Win32.KME (pHL хти точки входа на первый взгляд выглядят вполне нормал адсмотреться к ним повнимательнее, можно обнаружить весьма лй call, вылетающий за пределы кодовой секции файла. Ои-

павление вирусному телу!

ежду прочим, точка входа имеет смысл не только в исполняем! ? динамических библиотеках тоже. При загрузке DLL в намят: же) управление автоматически передается стартовой функции, г пей библиотеку к нормальной работе. С точки зрения вируса, за : своей природе ничем не отличается от обычного исполняемой: г-етвляется анатогичным образом. Аналогичным образом оно и р

IDA - WinNT ChattM

:eaaiiiF6e :88Л11.Г68

:вП8111ГбО

:8881Wв 8

:»«81<ГЙЗ :8881liF*f,

:вав1«гб5 :ов«1!Гбб :eeet «1Г(6/ :S8»f4F«C :8eaiUFii» :в8й1Ы7?

isasmr??

:0881Hf 78 :BB01ilF7» :!1Ив11)К7Р

:вй81ИГ8Я

raeomreo

:8881 til К :№m>tf»r

:8881 UFO 8 :88811»F<C; :88811Г»Й

I.

J

usti ebp

ov eup, t-sp

nd ("•!>, matpfihui

; CSIS Й! v n „ ! • it

MX, fit!!

$.5

esi, esp

eax, 8F5DB?9&!i esp, esi

eta, 8fli)ei!»88h S!l»rt loc 1V8C

<c-1.7. Так выглядит дизассемблерный листинг файла, зараженного вирусо. полняемый код, расположенный в секции .reloc, предназначенной для хран -вмещаемых данных, сигнализирует о ненормальности ситуации


НЕСТАНДАРТНЫЕ СЕКЦИИ

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

1.Код, расположенный в конце последней секции файла весьма характерный признак наличия вируса, равно : мыкающая собой файл и после недолгих мытарств nei «вперед» — на нормальную точку входа (рис. 1.7).

2.То же самое относится и к секциям с нестандартных совпадающими с именем самого вируса или маскируг создаваемые упаковщиками исполняемых файлов (н остается не упакован!) (рис. 1.8). Вирус может внедрг шествующими секциями, проецируя «свою» секции участок виртуальной памяти, не перекрываемый секци. ку в «честных» программах секции чаще всего проециг го в порядке своего физического расположения в фай ции, нарушающей этот порядок, вызывает большие т

ЗДЮА Win95 Nalhan 37Э2

illllINBlij

.f,f.ii.;;i«;)i.-,::. }

; Section 9. (uirtual address 00033808) ; Virtual size: 00082808 (

; Section si« in file: 00001800 (

; Offset to raw data for section: 0802C608 ; riags coeoeoiie: Data Readable Writable ; Alignnent : 16 bytes ?

HattiaNsegment para public "OfiTfi1 use32

assume cs: NathaN ;oi-g *33tlllin

.NathaN: Воззвав start:

public start

теш <?сх,

CfW

stc

wuv ecx, 3ft?h

CMC

e&p, leax"49isa*»]

«-j s «- Л * ......

.• ...... . .J

»»•«««ю«*я:.««»*м TP.00e«3W * 0»i UKtt 0ЮХЫ» ;UJC»»

Рис. 1.8. Так выглядит дизассемблерный листинг файла, заражение-

внедряющегося в собственноручно созданную секцию с нестандартне разоблачающую вирус с головой

do0;

doо;

dbв;

or.It; ends

8192.) W5.)


ТАБЛИЦА ИМПОРТА

Операционные системы семейства Windows поддерживают два основных способа компоновки: статический и динамический. При статической компоновке имена (ординалы) вызываемых API-функций выносятся в специальную таблицу ~~ таблицу импорта, изучение которой дает более или менее полное представление о природе исследуемой программы и круге ее интересов. К потенциально опасным функциям в первую очередь относятся сетевые функции, функции поиска, вызова и удаления файлов, TOOLHELP-функции, используемые для просмотра списка активных процессов и внедрения в них...

Конечно, зловредной программе ничего не стоит загрузить все эти функции и самостоятельно, путем динамической компоновки, в простейшем случае опирающейся на вызов LoadLibrary/GetProcAddress, а то и вовсе на «ручной» поиск API-функций в памяти (адрес системного обработчика структурных исключений дает нам адрес, принадлежащий модулю KERNEL32.DLL, базовый адрес которого определяется сканированием памяти на предмет выявления сигнатур «MZ» и «РЕ» с последующим разбором РЕ-заголовка). Но в этом случае текстовые строки с именами соответствующих функций должны присутствовать в теле программы (сети только они не зашифрованы и не импортируются но ординалу). Подробнее см. главу 4, разделы «Секреты проектирования shell-кода» и «Техника вызова системных функций».

ВНИМАНИЕ--

Статистика показывает, что таблица импорта троянских программ обычно носит резко полярный характер. Либо она вообще практически пуста, что крайне нетипично для нормальных, неупакованных, программ, либо содержит обращения к потенциально опасным функциям « явном виде. Конечно, сам факт наличия потенциально опасных функций еще не свидетельствует о троянской природе программы, но без особой нужды ее все-таки лучше не запускать.

Анализ таблицы импорта позволяет выявить также и ряд вирусных заражений. Собственно, у вируса есть два пути: использовать таблицу импорта файла-жертвы или создавать свою. Если необходимых вирусу API-функций в импорте *ертвы нет и она не импортирует функции LoadLibrary/GetProcAddress, вирус Должен либо отказаться от ее заражения, либо тем или иным образом импортировать недостающие функции самостоятельно. Некоторые вирусы используют вызов но фиксированным адресам, но это делает их крайне нежизнеспособными, ограничивая ареал обитания лишь темп версиями ОС, на которые явно рассчитывали их создатели; другие же определяют адреса функций «вручную»: по сигнатурному поиску или ручным анализом таблицы импорта; первое — громоздко и ненадежно, второе — слишком сложно в реализации для начинающих. И вот тут-то и начинается самое интересное. Разберем два варианта: использование готовой таблицы импорта и внедрение своей. 11а первый взгляд кажется,

0 ОТследить «левые» обращения к импорту жертвы просто нереально, так как не Н11Чем не отличаются от «нормальных». Теоретически. Практически же все

ТАК уж и безнадежно. Большинство сред разработки компилирует программы



0 ... 10 11 12 13 14 15 16 ... 102