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

0 ... 8 9 10 11 12 13 14 ... 102

Листинг 1.5. Атак выглядят окрестности точки входа вируса Win2K.Inta.1676

texf.DOOnOOO start

text text text text text text text

0001ЮС0 0001Ю04 0001Ю0А 0001100D 00011013 00011019 0001101C

proc near mov lea mov lea lea mov mov

eax edx

push

push

call

or

jnz

mov

retn

[esp+arg 0] icc 11129 [eax+34h], edx edx. dword 117A0 eax. aHh [edx+8]. eax [eax+4J. aSystemrootSyst

1200h 0

ExAllocatePool eax. eax short loc 1103E eax. OCOOOOOOlh

"HH"

:"\\SystemRoot\\system32\\ driversWinf .sys"

texf.OOOHOlC

text:00011023 text:00011028 text:0001IC2D text:00011032 text:00011034 .text:00011036 . text:0001103B

Смотрите, в то время как «хорошая» программа лениво опрашивает текущую версию операционной системы и иже с ней, зловредный вирус сломя голову несется в объятья драйвера inf.sys. Правильные программы так не поступают, и коварность вирусных планов разоблачается с первого взгляда!

ПРИМЕЧАНИЕ-—

Разумеется, отсутствие стартового кода еще не есть свидетельство вируса! Быть может, исследуемый файл был упакован или разработчик применил нестандартный компилятор/набор библиотек. Ну, с упаковкой мы уже разобрались, а с идентификацией компилятора поможет справиться IDA и ваш личный опыт.

ПРИМЕЧАНИЕ

Текущие версии IDA PRO определяют версию компилятора непосредственно по стартовому коду и если он отсутствует или был изменен, механизм распознавания дезактивируется и поиском подходящей библиотеки сигнатур нам приходится заниматься вручную, через меню File ► Load file ► FLIRT signature file. И если обнаружится, что нормальный start-up у файла все-таки есть, но выполнение программы начинается не с него, — шансы на присутствие вируса существенно возрастают!

Троянские программы, в большинстве своем написанные на языках высокого Уровня, имеют вполне стандартный start-up и потому на такую наживку обнаруживаться не хотят. Взять, например, того же Kileza (листинг 1.6).

Листинг 1.6. Стандартный стартовый код червя I-Worm.Kjlez.h

text:

te*t:00408458Dushebp:subj408458

text text text

00408458 start

proc near

00408458

push

ebp

00408459

mov

ebp. esp

0040845B

push

OFFFFFFFFh

:0040845D

push

offset stru

Продолжение #


Листинг 1.6 (продолжение)

text

: 00408462

DUSh

offset except handler3

text

:00408467

mov

eax. large fs:0

text

:0040846D

push

eax

text

:0040846E

mov

large fs:0. esp

text

:00408473

mov

[ebp+var 18]. esp

text

:0040847E

call

ds:Get.Vei"sion : Get current version

of Windows

text

:004084AF

ХОГ

esi. esi

text

:004084B1

push

esi

text:

:004084B2

call

heap init

text:

:004084C4

mov

[ebp-fvar 4], esi

text:

:004084C7

call

loinit

text:

:004084CC

cal 1

ds:GetCommandtineA

text:

:004084D2

mov

dword 494E68. eax

text:

:00408407

call

crtGetEnv ironmentStri ngsA

text:

:0040840C

TlOV

dword 493920. eax

text:

:004084E1

call

setargv

text:

004084E6

cal 1

setenvp

text:

004084EB

call

emit

text:

:004084F0

mov

[ebp-StartupInfo.dwFlags]. esi

text:

:004084F3

lea

• eax. [ebp+StartupInfo]

text:

004084F6

pus

eax : IpStartupInfo

text:

004084F7

call

ds.GetStartupInfoA

text:

004084FD

call

wincmdln

Даже «невооруженным» глазом видно, что стартовый код червя идентичен стартовому коду Microsoft Visual С++ 6.0, что совсем не удивительно, поскольку именно на нем червь и написан.

ТОЧКА ВХОДА

При внедрении вируса в файл точка входа в него неизбежно изменяется. Лишь немногие из вирусов ухитряются заразить файл, не прикасаясь к последней. Вирус может вписать по адресу оригинальной точки входа jump на свое тело, слегка подправить таблицу перемещаемых элементов, вклиниться в массив RVA-адресов таблицы импорта, внедриться в незанятые области кодовой секции файла и т. д., однако ареал обитания таких особей ограничен преимущественно застенками лабораторий, и в дикой природе они практически не встречаются. Не тот уровень подготовки у вирусописателей, не тот... «Нормальные» точки входа практически всегда находятся в кодовой секции исполняемого файла (. text), точнее — в гуще библиотечных функций (Навигатор IDA PRO но умолчанию выделяет их голубым цветом), непосредственно предшествуя секции данных (рис. 1.3 и 1.4). Точки входа зараженного файла, напротив, чаще всего располагаются между секцией инициализированных и неинициализированных данных, практически у самого конца исполняемого файла.


jcra наиболее вероятного внедрения вирусов

ЮД. TETRIS.wce

jf £* iwip Stm-ih ¥*»•> apUc>:id#(№. Hate•

iKixi£J «Hi jdjJ*jgLkJ

text

8№83B4E

text-

88W386E

public start

text

88iifl3B6E start

proc near

.text

88%83B*f

.test

в№вЗ»6С. uar 7$

» dword ptr ~78h

.text .text

в№вШ>6Г «a> /4 ЙЙ«ЗЙ6К

-dword ptr 74h

-byte ptr

.text

88ii83Bf>E u-arjiu

* dword ptr -6Ch

.text

88Л83В6Е var~68

« dword ptr -68h

.text

88i83B6E w«i>~6

~ byte ptr -6ih

.text

88i»83B6E v<sr~ae

« bite ptr ~681>

.text

ВМШЗВбЕ StarfupJ»f»

~ Stfl8TUPlHFOft ptr

-Set)

.text

- dword ptr 18h

text

8Ш»83В6Е млг~Ц

« dword ptr 1*th

.text

8Й483Й6Е «ar~*

* Sward ptr

. text

ВВШШбЕ

text

88483B6E

push ebp

SUb i»e3B6E

text

e8i83B6F

nov ebp, esp

text

88»«83B71

push 8FFFFFFFFH

text

88it83B73

push offset onk

*4 85988

text

push offset loc

JiBSCtC

text

№>№>D/D

ciou eax, large

ts:B

teat

push eax

text

а84вЗВ8<(

raou large fsie,

esp

Ш..........

<KsiDown обкоме

Ш4Ш881Ы*!

•*c. 1.3. Так выглядит дизассемблерный листинг нормального файла. ">чка входа расположена внутри секции .text в гуще библиотечных vhkuuu, приходясь приблизительно на середину файла

iK происходит потому, что при дозаписи своего тела в конеи ая» секция оказывается самой последней секцией инициализ) памяти, за которой простирается обширный регион неиници: -иных, без которого не обходится практически ни одна програ vc и демаскирует! Ни один из известных автору упаковщико айлов так себя не ведет, и потому ненормальное расположен высокой степенью вероятности свидетельствует о заражении г •ожег ли вирус внедриться в середину файла? Да, может, но дл> ется Разорвать себе задницу. Точнее - скорректировать все ылки между концом и началом файла, что очень и очень нет ЬШая тот факт, что всякая секция, независимо от ее физиче: может быть спроецирована по произвольному вирту;. пУс может обосноваться в кусочке незанятой памяти, остави кП1ия стартовых адресов секций по кратным адресам. (С ••«•«ого образа выравниваются но адресам кратным 2001



0 ... 8 9 10 11 12 13 14 ... 102