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

0 ... 23 24 25 26 27 28 29 ... 102

84

Глава 2. Вирусы в UNIX, или Гибель Титан

статическом анализе). Вместе с тем таких вирусов пока существует немНо (да и те — сплошь лабораторные), так что никаких поводов для паники п ° нет. Л вот шифрование критических к раскрытию участков вирусного т 9 встречается гораздо чаще. Однако для дизассемблера IDA PRO это не бог вес/ какая сложная проблема, и даже многоуровневая шифровка снимается 6езща лейшего умственного и физического напряжения.

IDA View-fl -

.text

08048455 Infect

proc

near

мои

eax.

5

. text

0804845R

ХОГ

edx.

edx

.text

0804845C

ХОГ

ecx.

ecx

.text

08O4845E 08O4845F

inc

ecx

text

inc.

........ecx

text

08048460

< int

8Bh"

.text

08848462

"feet-

........eax.

eax

text

08048464

is

Iocret.80485Efl

text

0884846(1

мои

[ebp*01. eax

.text

0804846D

xche

eax.

ebx

.text

0884846E

мои

eax.

13h

.text

08848473

-.....век.

edx

.text

88048475

<.int

80h..

text

08848477

мои

......esi.

eax

text

08048479

push

eax

. text

0804847(1

xor

eax.

eax

.text

0884847C

xor

edx.

edx

.text

080484 7E

inc

ah

.text

08048480

inc

ah

.text

08048482

push

eax

.text

08048483

push

ecx

.text

08048484

push

ebx

text

08048485

inc

ecx

-text

08048486

push

ecx

.text

08848487

inc

ecx

.text

08848488

inc

ecx

.text

08048489

push

ecx

.text

0804848И

push

eax

.text

08048486

push

edx

.text

0884848C

мои

eax.

ЬЙЬ

text

08048491

--«hx„

esp

.text

08048493

int

80h„

;

.text

08048495

Sar-

esp.

18h

.text

08048498

test

eax.

eax

L08048455: Infect <

ВПНВ

coot ж:г:

LINUX

-2-ITl-j

sub..8e4S4th-6Tp -

LINUX - sys lseek

: LINUX - o!d MBap

Рис. 2.10. Фрагмент файла, зараженного вирусом VirTool.Linux.Mmap.443, демаскирующим свое присутствие прямым обращением к native-API операционной системы

Впрочем, на каждую старуху есть проруха, и IDA Pro тому не исключение. При нормальном развитии событий IDA Pro автоматически определяет имена вы зываемых функций, оформляя их как комментарии. Благодаря этому замеча тельному обстоятельству для анализа исследуемого алгоритма нет нужды по стоянпо лезть в справочник. Такие вирусы, как, например, Linux.ZipWorm, не мо.

----------.....---— —---,-------....... .....----1 ---- ----гI ..р

смириться с подобным положением дел и активно используют снециаль

------(.ZP

IDA

приемы программирования, сбивающие дизассемблер с толку. Тот же Linux-ZP

Worm проталкивает номера вызываемых функций через стек, что вводт в замешательство, лишая ее возможности определения имен последних (-тинг 2.15).

Листинг 2.15.

.text:080483C0 .lext:080483C2 .text:080483C4 ,text:080483C6

Фрагмент вируса Linux.ZipWorm, активно и небезуспешно противостоящего дизассемблеру IDA PRO

push push sub pop

13h 2

ecx. edx


08OJ83C7

.text

С80483С8

pop eax ; // FAX := 2. эго вызов fork

int 80h ; LINUX - <—IDA не смогла определить лмя вызова!

t-J:gt*70 sub 8049278

IDfi View-fi proc near

-2-1

lea inl jb

rein endp

: CODE XREF: sub 89C9C20-3CTp si;b .804967t>87i[» eax. large ds:8Fl)h aflh: LINUX -

short loc 8849268

align 4

jmp loc 88537E8 align 4

\ II HOD! 1 N

CODE HREF: c.ib..8049284*Sii

procnear CODE XREF sub 3i!4<i8;U*25T.

. :;иЬ..8й49.?!:(1-1.:-В1:) .

leaeax. large ds:0M)h

int80h ; LINUX -

jbshort loc 88492/C retn endp

,e: :»927П : -------

Sfc»K loc 804927C

2 08049284 "08049284

1*1:08049284

„ 08049284 sub 8049284 1ех1:в8049284 text 08049284 text-081)4928(1 te*t:.08049?8C texl 0804928E „ „„ text:0804928E sub 884928t text:0804928E

texl:0804928E . --------

-88949276: svfc .8849270-6

Рис. 2.11. Фрагмент «честного» файла cat из комплекта поставки Free BSD, аккуратно размещающего native-API вызовы в функциях-обертках

С одной стороны, вирус действительно добился поставленной перед ним цели, и днзассемблерный листинг с отсутствующими автокомментариями с первого приступа не возьмешь. Но давайте попробуем взглянуть на ситуацию под другим углом. Сам факт применения антиотладочных приемов уже свидетельствует если не о заражении, то, во всяком случае, о ненормальности ситуации. Так что за противодействие анализу исследуемого файла вирусу приходится расплачиваться ослабленной маскировкой (в программистских кулуарах по этому случаю обычно говорят «из зараженного файла вирусные уши торчат»). Уши будут торчать еще и потому, что большинство вирусов никак не заботится 0 создании стартового кода или хотя бы плохонькой его имитации. В точке входа «честной» программы всегда (ну, или практически всегда) расположена нормальная функция с классическим прологом и эпилогом, автоматически распознаваемая дизассемблером IDA Pro (листинг 2.16).

Лист

Миг 2.16. Пример нормальной стартовой функции <

te080480B8 start

«*Е р р

-ext:080480BB

58048136

ЗВ start

I с классическим прологом и эпилогом

proc near

mov sub

ret endp

ebp. esp.

esp OCh


86

Глава 2. Вирусы в UNIX, или Гибель Титаник

---HJKgj

В некоторых случаях стартовые функции перелают бразды правления ] startjnain и заканчиваются по hit без ret. Это вполне нормальное явлец v «Вполне», потому что очень многие вирусы, написанные на ассемблере, полу" чают в «подарок» от линкера такой же стартовый код. Поэтому присутст стартового кода в исследуемом файле не дает нам никаких оснований счц-п * его здоровым (листинг 2.17).1

Листинг 2.17. Альтернативный пример нормальной стартовой функции

.text.08048330 .text:08048330 .text-.08048330 .text:08048332 .text:08048333 .text:08048335 .text .-08048338 .text .-08048339 ,text:0804833A ,text:0804833B .text:08048340 .text-.08048345 .text -.08048346 .text-.08048347 .text:0804834C .text: 08048351 .text:08048352 .text:06C48353 .text.08048353

public start start

start

proc near

xor

pop

mov

and

push

push

push

PLiSh DUSh

pusn

push

push

call

hit

ncp

nop

endp

ebp esi ecx esp eax esp edx offset offset ecx

os".

offset

ebp esp

0FFFFFFF8h

sub 804859C sud 8C482BC

loc 8048430 llbc start main

Большинство зараженных файлов выглядит иначе. В частности, стартовый код вируса PolyEngine.Linux.LIME.poly (листинг 2.18).

Листинг 2.18. Стартовый код вируса PolyEngine.Linux.LIME.poly

.data:080499Cl LIMLEND:

.data:080499Сjmoveax.4

.data:080499C6movebx.1

.data:080499CB" movecx.offset genjnsg

.data:08049900movedx.20h

.data:080499D5int80h

.data-.0804990/movecx.32h

Alternative name is main

"Generates 50 [LiMEJ encrypt

l.INiUX sys write

ПЕРЕХВАТ УПРАВЛЕНИЯ ПУТЕМ МОДИФИКАЦИИ ТАБЛИЦЫ ИМПОРТА

Перехват управления, осуществляемый путем модификации таблицы вцс заражаемого файла, -- вероятно, самый г]юмоздкий и неуклюжий спос° ]fC.i дрения вирусной заразы, какой только есть. Забавно, но многие исслоД°,етс не имеют о нем вообще никакого представления. В elf-файлах исп(,-1Ь jpyfl сложный, хотя и хорошо документированный способ импорта внеппШ*



0 ... 23 24 25 26 27 28 29 ... 102