Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги хакеры / журнал хакер / специальные выпуски / Специальный выпуск 45_Optimized

.pdf
Скачиваний:
15
Добавлен:
20.04.2024
Размер:
11.27 Mб
Скачать

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

 

 

 

 

 

 

 

 

F

 

 

 

 

 

 

t

 

 

 

 

 

 

 

 

 

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

r

 

 

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

 

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

 

 

 

 

 

 

 

 

 

 

F

 

 

 

 

 

 

t

 

 

 

 

 

 

 

 

 

 

 

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

 

 

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

40

ОСНОВЫ

ДЕСЯТКА САМЫХ-САМЫХ

w Click

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

Докучаев Дмитрий aka Forb (forb@real.xakep.ru)

 

w

 

 

 

 

 

 

 

o

w

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

df

 

 

n

e

 

ДЕСЯТКА

 

WOLFR

-xcha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

O V E

 

 

 

 

 

 

 

САМЫХ-САМЫХ

 

E R

 

 

 

 

 

 

 

ОБЗОР ХИТОВЫХ ПЕРЕПОЛНЕНИЙ

 

F F

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

B U

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

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

что иное, как простое переполнение буфера.

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Существует

несколько

версий

эксплоитов для RPCDCOM. Ты сможешь найти их на своем любимом сайте www.xakep.ru.

Баг ptrace() охватывает большое число ядер в ветках 2.2, 2.4 и 2.6.

Âсамый очевидный баг можно узреть только

после длительного тестирования продукта.Бесспорно, что даже

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

Позволь представить тебе 10 хитовых переполнений, которые имели место в компьютерной истории и потрясли весь мир.

1. RPC-DCOM overflow

Лето прошлого года ознаменовалось мрачным известием: все NT-сис- темы от Microsoft оказались уязвимыми. Баг приводил к полному имперсонированию системы с правами "SYSTEM". 16 июля, в день обнаружения уязвимости, на сайте lsd.pl появилась информация о загадочном переполнении. Что интересно, суть ошибки никто раскрывать не собирался. Говорилось лишь о том, что в коде форто- чек юзается некорректное обращение к интерфейсу __RemoteGetClassObject, которое может подменить именованный канал epmapper. Несколько дней спустя, когда MS выложила все необходимые патчи, команда Xfocus раскрыла миру суть уязвимости в RPC, причем оказалось, что Винда имела не одну, а две бреши - локальную и удаленную. Когда происходил локальный запрос к API-функции CoGetInstanceFromFile(), контроль над параметром, отвечающий за длину файла, не производился. При удаленном обращении длина строго контролировалась. Если же заюзать RPC, то нетрудно составить запрос вида "\\servername\c$\itsverylongfilename.t xt", который мог бы привести к переполнению буфера.

Но здесь не все так гладко, как кажется на первый взгляд. Для того чтобы передать аргумент API-функ-

ции, требуется подменить "\\servername" на что-либо другое (изначально это имя машины, к которой осуществляется реквест). Кроме того, необходимо учесть, что shell-код не должен иметь определенных символов, по которым происходит проверка в функции GetMachineName(). Это реализуется с помощью специально подобранных адресов возврата. Они зависят от версии операционной системы, и, если они сгенерированы неверно, RPC-сервис аварийно завершит работу.

Бьюсь об заклад, что ты баловался RPC-DCOM эксплоитом и ощутил, что значит не угадать адрес возврата:

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

Бажный DCOM

Подобное переполнение юзалось вирмейкерами в детище msblast. Этот чудесный червь сумел попасть в тысячи машин и совершить глобальную атаку на windowsupdate.com.

2. Ptrace stack overflow in kernel

По цифрой два выступает брешь в линуксовом ядре. Конечно, она имеет лишь локальный характер стекового переполнения, но ошибку содержат практически все ветки ядер 2.2 и 2.4. Так же, как и в случае с DCOM, ник-

то не собирался раскрывать суть уязвимости. В багтраке говорилось, что ptrace() содержит компрометирующую уязвимость, ведущую к локальному руту. Однако через нес-

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

-ядро собрано с поддержкой подключения внешних модулей;

-в кернеле доступно использование функции ptrace();

-загрузчик модулей доступен и на него стоит ссылка в /proc/sys/kernel/modprobe.

Допустим, что все три условия выполняются (в 99% случаев это так и есть). Зная, что кернел сам изменяет EUID, можно присоединить собственный процесс к уже существующему. При этом в стек загрузится shell-код, искусный бэкдор или другие вредные вещи.

Спустя год, когда о баге уже забыли, как о страшном сне, появилась еще одна напасть. Как всегда, программисты неэффективно пофиксили брешь.

Âитоге, если наплодить несколько процессов, к одному из них можно присоединить "левый" процесс. С вытекающими последствиями и командным shell'ом.

Локальный рут за полминуты

Вывод: Linux не такой уж и защищенный, как кажется на первый взгляд, порой от кернеловых уязвимостей охота застрелиться :). Так что, если желаешь абсолютной безопасности, ставь патчи от ptrace().

3. ASN.1 heap overflow

Данный баг появился не так давно. Бдительно проанализировав работу защищенной библиотеки MSASN1.DLL, входящей в секурный комплект ASN

ХАКЕРСПЕЦ 08(45) 2004

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

 

o

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

 

m

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

.

 

 

 

 

 

(Abstract Syntax Notation One), компа-

 

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

-xcha

 

 

 

 

 

ния eEyes обнаружила шокирующую брешь. Ошибка в процессе ASN.1 декодирования позволяла хакеру перезаписать участок памяти и выполнить некоторый код. Если всмотреться в особенности работы библиотеки, то можно понять принцип бага: в протоколе существует некоторая функция, выделяющая блок памяти под данные. Ей передается необходимая длина этого блока. При этом юзер не может задать длину от фонаря: есть функции, проверяющие достоверность данных. eEyes нашла способ подставить такое значение параметра, при котором указатель на память "проедет" допустимое 32-битное адресное поле и занимает нулевую позицию (интервал длины от 0xFFFFFFFD до 0xFFFFFFFF). В противном случае мы получим простое цело- численное переполнение, результатом которого будет аварийное завершение атакуемой службы (именно по такому принципу работали DoS'еры для ASN.1). Если же все-таки поступить хитрым образом и сместить поинтер до нуля, можно вставить определенный код на определенную позицию памяти (которую атакующий, естественно, будет знать). В итоге, shellкод успешно выполнится, а служба будет функционировать в обычном режиме. Если тебя интерсуют подробности, топай на http://www.securitylab.ru/42702.html.

Уязвимость в ASN.1 признана securitylab'ом самым хитовым багом в Windows из-за того, что протокол используется не только в самих форточках, но и в приложениях Mozilla, Internet Explorer и в софте для IP-те- лефонии. Кстати, все новые эксплоиты для службы lsass.dll (а также про-

цесс размножения червя Saccer) основаны на бреши в ASN.1.

Ошибка в lsass.dll базируется на баге в ASN.1

4. do_brk() kernel overflow

Опять Linux и опять кернел. В конце ноября прошлого года обнаружилась брешь в ядре, через которую был произведен взлом нескольких крупных Debian-серверов. Как оказалось, параметры ядерной функции do_brk() не проверялись на размер. Это влекло за собой переполнение буфера. Технически это выглядит следующим образом: do_brk() работал напрямую с памятью, однако размер памяти, который может использовать обычный пользователь, контролировался, мягко говоря, не очень хорошо. В итоге, миновав участок пользовательского пространства, злоумышленник мог пе-

Используем брешь в do_brk()

РЕЗЮМЕ

Подведем итоги этого обзора. Всмотрись в таблицу и увидишь все документированные источники и ссылки на эксплоиты. Вдобавок я оценил рассмотренные уязвимости по 10-балльной шкале.

¹

Уязвимость

BugTraq

Эксплоит

Оценка

 

 

 

 

 

1

RPC-DCOM

http://www.security.nnov.ru/sea

http://www.security.nnov.ru

10

rch/document.asp?docid=4899

/files/w2krpcdos.c

 

 

 

2

ptrace()

http://www.security.nnov.ru/sea

http://kamensk.net.ru/forb/

8

rch/document.asp?docid=2106

isec.c

 

 

 

3

ASN.1

http://www.securitylab.ru/427

http://kamensk.net.ru/forb/1

9

02.html

/x/lsasrv.c

 

 

 

 

 

 

 

 

4

do_brk()

http://security.nnov.ru/search

http://www1.xakep.ru/post/

7

/document.asp?docid=5475

20623/dobrk.txt

 

 

 

5

mIRC

http://www.irchelp.org/irchelp

http://kamensk.net.ru/forb/1

6

/mirc/exploit.html

/x/mirc-dos.tar.gz

 

 

 

 

 

 

 

 

6

Half-Life

http://www.securitylab.ru/?ID

http://www.security.nnov.ru

5

=40144

/files/pu-hl.c

 

 

 

 

 

 

 

 

7

Internet Explorer

http://www.securitylab.ru/428

http://www.securitylab.ru/4

7

43.html

2844.html

 

 

 

 

 

8

Shoutcast

http://security.nnov.ru/search

http://www1.xakep.ru/post/1

7

/document.asp?docid=5346

4351/shoutdown.01.tar

 

 

 

9

SERV-U

http://www.securitylab.ru/447

http://www.securitylab.ru/4

6

16.html

4716.html

 

 

 

 

 

 

 

 

10

Wu-Ftpd

http://securitylab.ru/40948.html

http://securitylab.ru/40948

7

 

 

 

.html

 

41

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

Эта функция служила лишь нача- лом всех бед. После do_brk() появились mremap() и munmap(), которые базируются на общем mmap()-вызо- ве. В конце концов, баг запатчили, но далеко не все админы применяют выпущенные багфиксы.

5.mIRC buffer overflow

Ñядрами систем разобрались. Пришло время ознакомиться с багами в популярном софте. Самым безопасным IRC-клиентом всегда считался mIRC. В нем практически никогда не находили серьезных ошибок. 11 октября 2003 года любопытные хакеры обнаружили переполнение буфера в процедуре DCC-передачи. Дело в том, что имя файла не контролируется на размер - типичный недочет, ведущий к переполнению буфера. В итоге, если хакер подставит в качестве имени большую последовательность вида "x x x x x...", заканчивающуюся символом с ASCII-кодом 1, клиент сразу же отбросит копыта. В свежих релизах баг якобы пофиксили, но окончательный фикс объявили только с выходом последней версией клиента (6.14).

Эксплоит для убийства клиентов

6. Half-Life buffer overflow

Следующим хитовым багом явля-

 

ется брешь в протоколе обмена

 

Half-Life. Как ты знаешь, в провай-

 

дерских сетях часто встречаются та-

 

кие сервера. Переполнению подвер-

 

жены как клиенты, так и машины на

 

базе FreeBSD. Если прикинуться

 

своим HL-серваком, старательно

 

разрекламировать его в ламерских

 

чатах, а затем запустить специаль-

 

ный эксплоит, у клиента Халфа сор-

 

вет крышу :). С помощью кривых па-

 

кетов сервер переполняет буфер у

 

машины ламера и запускает команд-

»

íûé shell.

Локальный рут через Half-Life

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

O V E R F L O W

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

B U F F E R

 

Недавняя

уязвимость в виндовом SSL обусловлена тем, что протокол использует бажные функции библиотеки ASN.1.

Если хо- чешь обезопасить себя от mIRC'овой ошибки, но лень делать апдейт, выполни команду /ignore -wd *.

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

O V E R F L O W

-xcha

 

 

 

 

 

 

 

 

 

 

 

 

 

B U F F E R

 

 

 

 

 

 

 

Осел IE славится своими переполнениями.

Полный их список ты можешь найти на securitylab.ru.

Если ты все еще юзаешь бажный SERV-U, немедленно отправляйся на www.serv- u.com и обновляй демон.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

F

 

 

 

 

 

 

 

t

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

P

 

 

 

 

 

NOW!

o

42

ОСНОВЫ

ДЕСЯТКА САМЫХ-САМЫХ

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

to

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

Если использовать эксплоит для

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ЗА РАМКАМИ ОБЗОРА

 

 

 

 

 

 

 

 

p

df

-x cha

g

.c

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

FreeBSD HL-сервера, то мы получим

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

рутовый /bin/sh. Сплоит скомпромети-

 

 

Не думай, что хакеры откопали только десять переполнений. На

 

 

 

 

 

 

 

 

 

 

 

рует сервер к переполнению, пуляясь

 

 

 

 

 

 

 

 

 

 

 

 

 

 

самом деле их тысячи, но я выбрал лишь самые хитовые и, по боль-

 

 

 

 

 

 

 

 

 

 

 

в него кривыми UDP-пакетами. Этакий

 

 

 

 

 

 

 

 

 

 

 

 

забавный серверный Half-Life ;).

 

шей части, актуальные до сих пор. Действительно, найти в инете

 

 

 

 

 

 

 

 

 

 

 

7. Buffer overflows in Internet

 

жертву, подверженную одной из десятки уязвимостей, - как два

 

 

 

 

 

 

 

 

 

 

 

 

байта переслать. Но не вздумай убеждаться в этом - старший брат

 

 

 

 

 

 

 

 

 

 

 

Explorer

 

 

 

 

 

 

 

 

 

 

 

 

следит за тобой ;).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Наконец мы добрались до нашего

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

любимого ослика ;). В нем тоже были

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

найдены грешки программистов

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Microsoft. В осле обнаружили не одну,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

а даже несколько смертельных багов.

 

 

С помощью Internet Explorer можно

 

 

 

 

 

 

 

 

 

 

 

Первой уязвимостью является пере-

 

 

 

 

 

 

 

 

 

 

 

 

 

полнение, ведущее к перезаписи спе-

 

 

 

выполнить произвольный код,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

циальных регистров и последующей

переполнив буфер.

 

 

 

 

 

 

 

 

 

 

 

порче виндового реестра. Как ты зна-

 

 

 

 

 

 

 

 

 

 

 

 

ешь, в IE применима конструкция ви-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

да file://c:\filename. При этом никто не

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

запрещено, то разрешено. Вот и стали

 

 

 

 

 

 

 

 

 

 

мешает подставить вместо c: шестнад-

'win2k/private/inet/mshtml/src/site/do

 

 

 

 

 

 

 

 

 

 

цатеричное значение (например, xff).

wnload/imgbmp.cxx'.

 

 

 

 

подставлять хакеры вместо реально-

 

 

 

 

 

 

 

 

 

 

Это нововведение приведет к инте-

 

 

 

 

 

 

 

 

 

го файла всякую фигню. В итоге, бу-

 

 

 

 

 

 

 

 

 

 

ресной ситуации: перезапишутся три

8. Shoutcast heap overflow

 

 

 

 

фер переполнялся, а shell-код, грамот-

 

 

 

 

 

 

 

 

 

регистра ECX EDX и EDI. Когда это слу-

Еще одна хитрая уязвимость наш-

 

 

 

 

но переданный серверу, выполнялся

 

 

 

 

 

 

 

 

 

 

чится, системные записи в реестре по-

лась в проекте Shoutcast. Все нача-

 

 

 

 

на ура. По понятным причинам злоу-

 

 

 

 

 

 

 

 

 

 

летят к чертовой матери :). После это-

лось с того, что хакер с ником HEX за-

 

 

 

 

мышленник получал командный shell

 

 

 

 

 

 

 

 

 

 

го IE наотрез откажется отображать

метил возможность переполнения

на левом порту. Если по каким-то при-

 

 

 

 

 

 

 

 

 

 

любую запрошенную страницу (отмаз

значений переменных icy-name и icy-

чинам адрес возврата был подобран

 

 

 

 

 

 

 

 

 

 

будет выглядеть следующим образом:

desc (имя и описание сервиса), пере-

неверно, взломщик просто останавли-

 

 

 

 

 

 

 

 

 

 

"You cant access this file, path, drive.

дающихся через Web. Их размер, как

 

 

 

 

вал работу Serv-U.

 

 

 

 

 

 

 

 

 

 

 

Permission Denied"). Только переуста-

обычно, не контролировался. Через

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

новка IE избавит юзера от такого на-

несколько дней после этого компания

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

зойливого окна.

 

 

 

 

m00-security наколбасила виндовый

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Как выяснилось, ослика также тош-

эксплоит. Причем сырцы этого сплои-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

нит от греческих символов :). Если

 

та хранились в строжайшей тайне, до

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

сделать интересный запрос вида

тех пор пока хакер не выложил src-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

about:более_2_тысяч_греческих_сим-

код, приводящий к краху линуксовый

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

волов, вылезет окно с инфой о пере-

 

Shoutcast.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

полнении. То же окошко можно поя-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

вится, если подставить символы в

 

 

 

 

 

 

 

 

Симпатичная мордочка Serv-U

 

 

 

 

 

 

 

 

 

 

 

http-ссылку. Ничто не мешает хакеру

 

 

 

 

 

 

 

 

 

Не успели девелоперы пофиксить

 

 

 

 

 

 

 

 

 

 

 

смастерить страничку, которая будет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

убивать IE у нерадивых посетителей.

 

 

 

 

 

 

 

 

этот баг, как хакеры нашли еще один.

 

 

 

 

 

 

 

 

 

 

Брешь может проявиться и в мирное

 

 

 

 

 

 

 

 

На этот раз неверная обработка ко-

 

 

 

 

 

 

 

 

 

 

 

время, когда пользователь серфит

 

 

 

 

 

 

 

 

манды LIST -l с подставным парамет-

 

 

 

 

 

 

 

 

 

 

 

какой-нибудь буржуйский инет-мага-

 

 

 

 

 

 

 

 

ром в 134 байта убивала Serv-U. Убий-

 

 

 

 

 

 

 

 

 

 

зин (именно об этом гласил первоис-

 

 

 

 

ство сервака можно было осущест-

 

 

 

 

 

 

 

 

 

 

 

точник уязвимости).

 

 

 

 

 

 

 

 

вить даже без эксплоита, вручную.

 

 

 

 

 

 

 

 

 

 

 

Дыра в сервере Shoutсast

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

И, наконец, самый свежий баг, кото-

 

 

 

 

 

Однако к описанию приводился пол-

 

 

 

 

 

 

 

 

 

 

 

Единственным спасением является

 

 

 

 

 

 

 

 

 

 

 

 

 

 

рый обнаружился после анализа

ноценный перловый сплоит.

 

 

 

 

 

 

 

 

 

 

 

честно спионеренных исходников

 

то, что без знания пароля, задаваемо-

Вскоре багоискатели откопали тре-

 

 

 

 

 

 

 

 

 

 

Windows. С помощью Internet Explorer

го при конфигурации сервера, хакер

 

 

 

 

 

тий изъян - в функции MDTM. Эта ко-

 

 

 

 

 

 

 

 

 

 

можно выполнить произвольный код,

не сможет переполнить буфер. Одна-

 

 

 

 

манда отображает время создания

 

 

 

 

 

 

 

 

 

 

 

переполнив буфер. Брешь достаточ-

ко дефолтовый пассворд выглядит

 

 

 

 

файла. Ошибка заключается в том,

 

 

 

 

 

 

 

 

 

 

 

но простая: злоумышленник должен

как "changeme" и, как ни странно,

 

 

 

 

что размер этого файла не может пре-

 

 

 

 

 

 

 

 

 

сконструировать специально обрабо-

юзается многими админами. Если вер-

 

 

 

 

вышать 256 байт. Когда хакер переда-

 

 

 

 

 

 

 

 

 

танный bitmap-файл. Когда такой

сия демона - старше 1.9.2, перепол-

ет слишком длинный аргумент, проис-

 

 

 

 

 

 

 

 

 

 

файл будет загружен в браузер ушас-

 

нить буфер уже не удастся.

ходит переполнение буфера. Послед-

 

 

 

 

 

 

 

 

 

 

того ламера, возникнет переполнение

 

 

 

 

 

 

 

 

 

ствий может быть два: либо осущест-

 

 

 

 

 

 

 

 

 

 

буфера. Изъян нашли в коде

9. Serv-U buffer overflows

 

 

 

 

вится корректная передача shell-кода

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Теперь поговорим об FTP-серверах.

 

 

 

 

(с последующим открытием порта),

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Виндовый Serv-U, славившийся ста-

 

 

 

 

применимого для определенной ОС,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

бильностью, изрядно подпортил себе

либо сервис просто уйдет в даун.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

репутацию. Багоискатели нашли це-

 

 

 

 

 

Из всего этого можно сделать один

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

лых три уязвимости, которые приво-

 

 

 

 

вывод: хакеры всерьез занялись изу-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

дят либо к краху сервера, либо к по-

 

 

 

 

чением Serv-U. И в новых релизах бу-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

лучению абсолютных прав на маши-

дут найдены подобные ошибки.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

не. Рассмотрим эти бреши подробнее.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Первая дырка затаилась в команде

 

 

 

 

qP. Wu-ftpd buffer overflow

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

CHMOD, изменяющей права на фай-

 

 

 

 

 

И, наконец, пришло время для само-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

лы. Ее параметр ограничен лишь 256

 

 

 

 

го бажного проекта - wu-ftpd

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

байтами, но это ограничение никто не

 

 

 

 

(фтпд'шник, который писался в Ваши-

 

 

 

 

 

 

 

 

 

Множество переполнений в браузере

 

проверяет. А, как известно, что не

нгтонском университете). Каждый

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ХАКЕРСПЕЦ 08(45) 2004

 

 

 

 

hang

 

 

 

 

 

 

 

 

 

 

 

hang

 

 

 

 

 

 

 

 

 

df-xchan

 

 

 

 

 

ÈÃÐÛdf-x chan

 

 

 

 

 

 

 

C

 

e

E

 

 

 

 

 

 

 

C

 

e

E

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

BUY

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

 

 

m

w Click

 

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

g

.c

 

 

 

.

 

 

 

 

g

.c

 

 

 

p

 

 

 

 

 

 

 

 

 

 

p

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e

 

 

ПО КАТАЛОГАМ

 

 

 

 

 

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

С ДОСТАВКОЙ НА ДОМ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Эксплуатируем Винду с бажным FTPD

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

просвещенный человек знает, что не существует релиза, в

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

котором хакеры не нашли бы ошибок :). Впрочем, предпос-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ледняя версия сервера продержалась без атак довольно

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

продолжительное время. Но, опять же, багоискатели обна-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ружили брешь в SKEY-обмене, приводящую к переполне-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

нию буфера и получению абсолютных прав. Переполнение

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

найдено в функции skey_challenge(). Привожу кусок кода

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

src/skey_challenge.c:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

if (pwd == NULL || skeychallenge(&skey, pwd->pw_name, sbuf))

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

sprintf(buf, "Password required for %s.", name);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

else

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

sprintf(buf, "%s %s for %s.", sbuf, pwok ? "allowed" : "required",

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

name);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

/* переменная name не проверяется на размер */

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

return (buf);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Наложи патч... или смени FTPD ;)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Даже я смог узреть возможность переполнения. Куда

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

смотрят вашингтонские программисты - одному Богу изве-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ñòíî.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ЭТО КОНЕЦ?

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

К сожалению, абсолютной защиты от переполнений не

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

существует. Возможно, что в самых стабильных и защи-

WWW.GAMEPOST.RU

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

мость. Каждый день какой-нибудь хакер находит перепол-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

нение буфера или стека. Радует, что софт, в котором нахо-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

дится брешь, не очень популярен. Однако из этого обзора

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

видно, что иногда overflow встречается в крупных и очень

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

популярных приложениях. E

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

 

 

 

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

РЕАЛИЗАЦИЯ

ВСКРЫТИЕ ЧЕРВЯКА

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

44

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

 

 

 

 

 

 

 

w Click

 

 

 

 

 

 

 

 

 

 

 

 

 

o

m

Крис Касперски aka мыщъх

 

 

 

 

 

 

 

o

m

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

w

 

 

 

 

Content:

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

g

.c

 

 

 

 

 

 

 

.

 

 

 

 

g

.c

 

 

 

p

 

 

 

 

 

 

 

 

 

 

 

 

 

 

p

 

 

 

 

 

 

 

 

 

 

df

 

 

n

e

 

ВСКРЫТИЕ

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

червей

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

44 Вскрытие червяка

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Исследование работы сетевых

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

48 SEH на службе у

ЧЕРВЯКА

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

контрреволюции

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Руководство по перезаписи SEH-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

обработчика

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

52 Отравляем приложения

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Переполнения при обработке

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

данных

ИССЛЕДОВАНИЕ РАБОТЫ СЕТЕВЫХ ЧЕРВЕЙ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

56 Unicode-Buffer

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Overflows

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Проблемы эксплуатации формата

ы живем в неспокойное время. Интернет содрогается под ударами червей,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Unicode и написание Unicode shell-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ìактивность которых стремительно растет. Пять опустошительных

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

кодов

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

60 Платформа. Overflow.

эпидемий за последние три года, миллионы зараженных машин. И все из-за

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ошибок переполнения!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Власть!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Переполнение буфера в системах

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Windows è *nix

»

УТРАЧЕННОЕ ЗВЕНО

целью получения научных грантов и даже не

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

64 Живучий код

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Черви относятся к наибо-

под эгидой агрессивной идеологии Open

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Техника написания переносимого

лее независимым обитателям

Source, а для собственного удовольствия и

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

shell-êîäà

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

кибернетического мира. Их по-

удовлетворения программистского зуда, кото-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

68 Защитись и замети!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

явление уходит своими корня-

рый сжигает вас изнутри, гонит вперед, под-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Защита от эксплоитов и

ми в глубокую древность, когда землей пра-

брасывает по ночам из постели, подкидывая

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

закрытие уязвимостей

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

вили динозавры - огромные и неповоротли-

новые идеи, которые тут же необходимо оп-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

после атаки

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

вые ламповые ЭВМ, издающие при работе

робовать. Вот это - настоящее! Это не элект-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ужасный треск и скрежет. Пионеры компью-

ронная таблица, не база данных, созданная

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

терной индустрии - в прошлом небритые сту-

для простых клерков. В каждой сточке кода -

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

дены с неутолимой жаждой деятельности, а

частичка вас самих, придающая смысл всему

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ныне сотрудники респектабельных корпора-

происходящему. Это то звено, которое отли-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ций - активно экспериментировали с биоки-

чает ремесло от конвейера, но оно, к сожале-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

бернетическими моделями, пророча им боль-

нию, сейчас оказалось практически утрачено.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

шое будущее. Во время становления инфор-

Электронно-вычислительные машины перес-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

матики как науки Настоящие Программисты

тали вызывать благоговение, превратившись

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(Real Programmer), неутомимые энтузиасты,

в "компы", и мистическое чувство единения с

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

свято верили, что еще чуть-чуть и грохочу-

ними рассыпалось, исчезло.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

щее создание приобретет интеллект, а вмес-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

те с ними - навыки самосовершенствования

ЯВЛЕНИЕ ЧЕРВЯ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

и саморазмножения. В то время понятия "ви-

Червями называют разновидность виру-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

рус" еще не существовало, и никто не видел

сов, размножающуюся без участия челове-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

в биокибернетических механизмах ничего

ка. Если файловый вирус активизируется

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

порочного. О них говорили в курилках, их об-

лишь при запуске зараженного файла, то се-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

суждали на научном уровне, им выделялось

тевой червь проникает в твою машину са-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

РЕАЛИЗАЦИЯ

драгоценное машинное время.

мостоятельно - достаточно лишь просто вой-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

С приходом к власти корпораций все изме-

ти в интернет. По сути, черви являются высо-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

нилось. Информатика из науки превратилась

коавтономными роботами, брошенными в пу-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

в продажную девку капитализма, торгующую

чину всемирной сети и вынужденными бо-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

собой и не интересующуюся ничем, кроме

роться за выживание. Червей можно срав-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

прибыли. Программное обеспечение расколо-

нить с космическими зондами, конструктор

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

лось на правильное и неправильное. Пра-

которых должен предусмотреть все до мело-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

вильное - то, которым можно торговать. Не-

чей, ведь потом исправить ошибку уже не

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

правильное - написанное не ради денег, не с

удастся. Кстати, ошибки проектирования

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

вирус

 

когда

что поражал

механизмы распространения

машин

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

обнаружен

заразил

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вирус

 

1988, ноябрь

UNIX, VAX

отладочный люк в sendmail, переполнение

6.000

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Морриса

 

буфера в finger, слабые пароли

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Melissa

 

1999, ???

e-mail через MS

человеческий фактор

1.200.000

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Word

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

LoveLetter

2000, ìàé

e-mail через VBS

человеческий фактор

3.000.000

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Klez

 

2002, èþíü

e-mail через баг в IE

уязвимость в IE с IFRAME

1.000.000

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

sadmind/IIS

2001, ìàé

Sun Solaris/IIS

переполнение буфера в Sun Solaris

8.000

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

AdminSuite/IIS

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Code Red I/II

2001, èþëü

ISS

переполнение буфера в IIS

1.000.000

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Nimda

 

2001, сентябрь

ISS

переполнение буфера в IIS, слабые пароли и др.

2.200.000

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Slapper

 

2002, èþëü

Lunix Apache

переполнение буфера в OpenSSL

20.000

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Slammer

 

2003, январь

MS SQL

переполнение буфера в SQL

300.000

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Love San

 

2003, август

NT/200/XP/2003

переполнение буфера в DCOM

1.000.000

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(???)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Top10 червяков - от червя Морриса до червей наших дней

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ХАКЕРСПЕЦ

08(45) 2004

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

F

 

 

 

 

 

 

 

t

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

45

 

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

df-xchan

 

червей обходятся намного дороже

 

 

 

 

 

 

ГОЛОВА ЧЕРВЯ CODE

 

 

 

КУСОК ХВОСТА ЧЕРВЯ

 

 

.

 

.c

 

 

 

 

 

 

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ошибок проектирования космических

 

 

 

 

 

 

RED, ПРИХОДЯЩАЯ В

 

 

 

МОРРИСА

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

станций. Вы только представьте, ка-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ПЕРВОМ TCP-ПАКЕТЕ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

кая на worm-мейкерах лежит ответ-

 

 

 

 

 

 

 

 

 

rt_init()/* 0x2a26 */

 

 

 

 

 

 

 

 

 

 

ственность! Поэтому пионерам червей

 

ЗАПРОСА

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

лучше не писать. Лучше им учить мат.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

{

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

часть, ассемблер и TCP/IP-протоколы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

FILE *pipe;

 

 

 

 

 

 

 

 

 

 

и забыть о деструкции! Деструктив-

 

 

 

 

 

 

GET /default. ida?

 

 

 

char input_buf[64];

 

 

 

 

 

 

 

 

 

 

ный код - это плохой код. На ванда-

 

 

 

 

 

 

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

 

 

 

int l204, l304;

 

 

 

 

 

 

 

 

 

 

лизм много ума не надо, а вот ухит-

 

 

 

 

 

 

 

 

XXXXXXXXXXXXXXXXXXXXXXХХХХХХХХХХX

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

риться проникнуть в миллион удален-

 

 

 

 

 

 

%u9090%u6858%ucbd3%u7801%u9090

 

 

 

ngateways = 0;

 

 

 

 

 

 

 

 

 

 

ных узлов, при этом ни один из них не

 

 

 

 

 

 

%u6858%ucbd3%u7801%u9090%u6858

 

 

 

pipe = popen(XS("/usr/ucb/netstat -r -

 

 

 

 

 

 

 

 

 

 

уронив, - это цель, достойная истинно-

 

 

 

 

 

 

%ucbd3%u7801%u9090%u9090%u8190

 

 

 

n"), XS("r"));

 

 

 

 

 

 

 

 

 

 

го хакера!

 

 

 

 

 

 

 

 

%u00c3%u0003%u8b00%u531b%u53ff

 

 

 

/* &env102,&env 125 */

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

%u0078%u0000%u00= a HTTP 1.0

 

 

 

if (pipe == 0) return 0;

 

 

 

 

 

 

 

 

 

 

КОНСТРУКТИВНЫЕ

 

 

 

 

 

 

 

 

Contenttype: text/ xml,

 

 

 

while (fgets(input_buf, sizeof(input_buf),

 

 

 

 

 

 

 

 

 

 

ОСОБЕННОСТИ ЧЕРВЯ

 

 

 

 

 

 

 

 

Contentlength: 3379

 

 

 

pipe))

 

 

 

 

 

 

 

 

 

 

 

 

 

С анатомической точки зрения

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

{ /* to 518 */

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

червь представляет собой морфоло-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

other_sleep(0);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

гически неоднородный механизм, в ко-

 

 

 

 

 

 

Голова у червя может быть не одна.

 

 

 

if (ngateways >= 500) break;

 

 

 

 

 

 

 

 

 

 

тором можно выделить, по меньшей

 

 

 

 

Тогда он может поражать несколько

 

 

 

sscanf(input_buf, XS("%s%s"), l204,

 

 

 

 

 

 

 

 

 

 

мере, три основных компонента: ком-

 

 

типов серверов (например, сервера

 

 

 

 

l304);/* <env+127>"%s%s" */

 

 

 

 

 

 

 

 

 

 

пактную голову и протяжный хвост с

 

 

 

 

MS SQL, MS IIS и SendMail), значитель-

 

 

 

/* other stuff, I'll come back to this

 

 

 

 

 

 

 

 

 

 

ядовитым жалом. Разумеется, это

 

 

 

 

но расширяя ареал своего обитания. У

 

 

 

later */

 

 

 

 

 

 

 

 

 

 

только схема, и черви совсем не обя-

 

 

 

 

червя Морриса было две головы - од-

 

 

 

}/* 518, back to 76 */

 

 

 

 

 

 

 

 

 

 

заны полностью ей соответствовать.

 

 

 

 

на поражала finger, другая - sendmail,

 

 

 

pclose(pipe);

 

 

 

 

 

 

 

 

 

 

 

Необходимость дробления монолит-

 

 

 

 

а MWORM'а - целых пять, что позволя-

 

 

 

rt_init_plus_544();

 

 

 

 

 

 

 

 

 

 

ной структуры червя на голову и

 

 

 

 

ло ему распространятся через web-,

 

 

 

return 1;

 

 

 

 

 

 

 

 

 

 

хвост вызвана ограниченным разме-

 

 

 

 

 

 

ftp-сервера и дыры в демонах rpc, bind

 

}/* 540 */

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ром переполняющихся буферов, ко-

 

 

 

 

è lpd. Love San, Slapper è Slammer èìå-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

торый в подавляющем большинстве

ли по одной голове, что совсем не по-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

случаев не превышает пары десятков

 

 

 

 

мешало занять им первые места в

ции будет расти в геометрической

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

прогрессии. Ввиду высокой алгоритми-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ческой сложности и отсутствия огра-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ошибки проектирования червей

 

 

 

ничений на предельно допустимый

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

размер, хвост червя чаще всего разра-

 

 

 

 

 

 

 

 

 

 

 

 

 

обходятся намного дороже ошибок

 

 

 

батывается на языках высокого уров-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

проектирования космических станций.

 

 

 

ня, например, на языке Си, хотя Форт

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

или Алгол подошли бы ничуть не ху-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

же, но это уже дело вкуса, о котором

 

 

 

 

 

 

 

 

 

 

байт. Только самым крохотным и при-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

не спорят (но Си все равно лучше).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

митивным червям удается втиснуться

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

в этот объем целиком, в остальных же

 

 

 

 

 

 

 

Настоящий червь должен

 

 

 

 

 

 

 

 

 

 

случаях сначала на атакуемую маши-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ну забрасывается загрузчик, устанав-

 

 

 

 

 

 

 

 

 

 

 

вести кочевую жизнь,

 

 

 

 

 

 

 

 

 

 

ливающий TCP/IP-соединение и под-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

блуждая от машины к машине.

 

 

 

 

 

 

 

 

 

 

тягивающий оставшийся хвост, иначе

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

называемый основным телом червя.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Голова червя отвечает за перепол-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

нение буфера, захват управления

 

 

 

 

Top10. Как видно, количество голов са-

 

 

 

Подавляющее большинство червей

 

 

 

 

 

 

 

 

 

 

удаленной машиной, установку

 

 

мо по себе еще ни о чем не говорит, и

 

 

 

неядовито, и весь вред от них сводит-

 

 

 

 

 

 

 

 

 

 

TCP/IP-соединения и транспортировку

 

 

 

 

одна умная голова лучше трех глупых.

 

 

 

ся к перегрузке сетевых каналов из-

 

 

 

 

 

 

 

 

 

 

хвоста. Образно говоря, голова - это

 

 

 

 

 

 

Хвост червя решает более общие за-

 

 

 

за неконтролируемого размножения.

 

 

 

 

 

 

 

 

 

 

ниндзя, десантирующийся в укреп-

 

 

 

 

дачи. Оказавшись на территории ве-

 

 

 

Лишь у немногих на конце хвоста рас-

 

 

 

 

 

 

 

 

 

 

ленный район вражеского подразде-

 

 

 

 

 

 

роятного противника, спецназ должен

 

 

 

положено ядовитое жало или, в бо-

 

 

 

 

 

 

 

 

 

 

ления, бесшумно делающий охране

 

 

 

 

первым делом окопаться. Некоторые

 

 

 

лее общем случае, полезная нагрузка

 

 

 

 

 

 

 

 

 

 

харакири, отпирающий ворота и за-

 

 

 

 

черви зарываются в исполняемые

 

 

 

(читай - боевая начинка). Например,

 

 

 

 

 

 

 

 

 

 

жигающий посадочный маяк, обеспе-

 

 

 

 

файлы, прописывая путь к ним в клю-

 

 

 

червь может устанавливать на атаку-

 

 

 

 

 

 

 

 

 

 

чивающий приземление основной

че автоматического запуска, некото-

 

 

 

 

емой машине терминальный shell, пре-

 

 

 

 

 

 

 

 

 

 

группы. Как минимум, голова червя

 

 

 

 

рые довольствуются одной лишь опе-

 

 

 

доставляющий возможность удален-

 

 

 

 

 

 

 

 

 

 

включает в себя запрос, посылаемый

 

 

 

 

ративной памятью, погибая после вык-

 

 

 

ного администрирования. До тех пор

 

 

 

 

 

 

 

 

 

 

серверу, срывающий крышу одному

 

 

 

 

лючения питания или перезагрузки. И

 

 

 

пока эпидемия такого червя не будет

 

 

 

 

 

 

 

 

 

 

из его буферов и передающий управ-

 

 

 

 

это правильно! Настоящий червь дол-

 

 

 

остановлена, в руках его создателя

 

 

 

 

 

 

 

 

 

 

ление либо на shell-код, либо на сек-

 

 

 

 

жен вести кочевую жизнь, блуждая от

 

 

 

будут находиться рычаги управления

 

 

 

 

 

 

 

 

 

 

ретную функцию root, которая обес-

 

 

 

 

машины к машине, - в этом и есть его

 

 

 

нашим миром и он в любой момент

 

 

 

 

 

 

 

 

 

 

печивает удаленный доступ к серве-

 

 

 

 

 

 

предназначение. Как говорится, мавр

 

 

 

сможет прервать его бренное сущест-

 

 

 

 

 

 

 

 

 

 

ру. Голова червя чаще всего пишется

 

 

 

 

сделал свое дело и может уходить, а

 

 

 

вование. Нет, атомные электростан-

 

 

 

 

 

 

 

 

 

 

на голом ассемблере, а в наиболее от-

 

 

 

 

червю предстоит сделать не так уж и

 

 

 

ции взорвать не удастся, но вот по-

 

 

 

 

 

 

 

 

 

 

ветственных случаях - непосредствен-

 

 

 

 

много: найти, по меньшей мере, две

 

 

 

дорвать экономику, уничтожив банко-

 

 

 

 

 

 

 

 

 

 

но в машинном коде (трансляторы ас-

 

 

 

 

жертвы, пригодные для внедрения, и

 

 

 

вскую информацию, сможет даже на-

 

 

 

 

 

 

 

 

 

 

семблера не переваривают многих

 

 

 

 

забросить в них свою голову (точнее,

 

 

 

чинающий хакер. Знающие люди ут-

 

 

 

 

 

 

 

 

 

 

эффективных трюков).

 

 

 

 

копии своих голов). Теперь, даже если

 

 

 

верждают, что такая угроза нависала

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

червь умрет, численность его популя-

 

 

 

уже неоднократно и лишь грубые

»

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

O V E R F L O W

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

B U F F E R

 

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

Голова у червя может быть и не одна, тогда он может поражать несколько типов серверов, например, MS SQL, MS IIS и SendMail.

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

BUY

 

 

 

 

 

 

 

 

 

46

РЕАЛИЗАЦИЯ

ВСКРЫТИЕ ЧЕРВЯКА

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

w Click

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

 

 

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

размножению, но и поднимая с посте-

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ный узел не висит и на нем установ- .

 

 

 

 

 

 

e

 

 

 

p

df

 

 

 

g

.c

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

p

df

 

 

 

g

.c

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

 

 

 

 

 

W

-xcha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ли матерящихся администраторов, ус-

 

 

 

 

лена уязвимая версия сервера или

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

танавливающих свежие заплатки и

 

 

 

 

операционная система, известная

 

 

 

 

 

 

 

 

 

 

 

 

O

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

перетирающих червей в труху. Пойми-

 

 

 

 

червю и совместимая с shell-кодом од-

 

 

 

 

 

 

 

 

 

 

L

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

те же вы наконец, что администрато-

 

 

 

 

 

 

ной или нескольких его голов.

 

 

 

 

 

 

 

 

 

 

 

 

F

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ры объявляют войну лишь тем чер-

 

 

 

 

 

 

Первые две задачи решаются предель-

 

 

 

 

 

 

 

 

 

 

R

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

вям, которые им сильно досаждают.

 

 

 

 

но просто: червь отправляет серверу ле-

 

 

 

 

 

 

 

 

 

 

 

E

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ведите себе скромнее! Будьте тише

 

 

 

 

гальный запрос, на который тот обязан

 

 

 

 

 

 

 

 

 

 

 

 

V

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

воды, ниже радаров!

 

 

 

 

 

 

ответить (для web-сервера это запрос

 

 

 

 

 

 

 

 

 

 

 

 

O

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

GET), и, если сервер что-то промычит в

 

 

 

 

 

 

 

 

 

 

 

 

R

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ТАКТИКА И СТРАТЕГИЯ

 

 

ответ, значит жив, курилка! Заметим, что

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Основные враги ниндзя - это тем-

 

 

 

 

отправлять серверу эхо-запрос, более из-

 

 

 

 

 

 

 

 

 

 

E

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

нота, неизвестность, колючая прово-

 

 

 

 

вестный в народе как ping, неразумно, так

 

 

 

 

 

 

 

 

 

 

F

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

лока и волкодавы, снующие по охра-

 

 

 

 

как его может сожрать недружелюбно

 

 

 

 

 

 

 

 

 

 

 

 

F

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

няемой территории.

 

 

 

 

настроенный брандмауэр.

 

 

 

 

 

 

 

 

 

 

 

 

U

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Подготовка к заброске shell-кода на-

С определением версии сервера де-

 

 

 

 

 

 

 

 

 

 

 

B

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Стремительное размножение червей вызывает засорение

чинается с определения IP-адресов,

 

 

 

 

ла обстоят значительно сложнее, и

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ошибки, допущенные при проектиро-

пригодных для вторжения. Если

 

 

 

 

универсальными решениями здесь и

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

червь находится в сети класса С, три

не пахнет. Некоторые протоколы под-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

вании червей, не позволили ей во-

старших бита IP-адреса которой рав-

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

плотиться в жизнь.

ны 110, то ее можно и просканировать

 

 

 

 

возвращают версию сервера в строке

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Последний писк моды - модульные

(распотрошите любой сканер, если не

 

 

 

 

приветствия, но чаще всего информа-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

черви, поддерживающие возмож-

знаете как). Сканирование сетей ос-

 

 

 

 

 

 

цию приходится добывать по косвен-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ность удаленного конфигурирования

тальных классов занимает слишком

ным признакам. Различные операци-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

и подключения плагинов через интер-

много времени и немедленно привле-

 

онные системы и сервера по-разному

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

нет. Только прикиньте, насколько ус-

кает к себе внимание администрато-

 

 

 

 

 

 

реагируют на нестандартные пакеты

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ложняется борьба в условиях непре-

ров, а этим черви предпочитают не

 

 

 

 

или проявляют себя специфическими

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

рывно изменяющейся логики поведе-

злоупотреблять. Вместо этого они вы-

 

 

 

 

портами, что позволяет осуществить

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ния червя. Администраторы ставят

бирают пару-тройку случайных IP-ад-

 

 

 

 

грубую идентификацию жертвы. А

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

фильтры, а червь их успешно преодо-

ресов, выдерживая каждый раз секу-

 

 

 

 

точность червю нужна, как зайцу пан-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

левает! Запускают антивирус, а червь

ндную паузу, дающую TCP/IP-пакети-

 

 

 

 

талоны, а собаке пятая нога, ведь

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

подхватывает брошенный ему щит и,

кам время рассосаться и предотвра-

 

 

 

 

главное - отсеять заведомо неподхо-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

воспользовавшись замешательством

щающую образование "запоров".

 

 

 

 

дящих кандидатов. Если забросить го-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

противника, со всей дури бьет его по

Червь Slammer, поражающий SQL-

 

 

 

 

лову червя на неподходящий укрепи-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

голове. Правда, и здесь проблем тоже

сервера, не делал такой паузы и поэ-

 

 

 

 

тельный район, ничего не произойдет.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

хватает. Система распространения

тому сдох раньше времени, а вот Love

 

 

 

 

Голова, точнее, копия головы погиб-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

плагинов должна не только быть пол-

San жив и поныне. Nimda и некоторые

 

 

 

 

нет, только и всего.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Найти деск-

ностью децентрализованной, но и

другие черви не играют в кости и оп-

 

 

 

 

 

 

На завершающей стадии разведы-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

риптор

 

 

 

уметь при случае постоять за себя, в

ределяют целевые адреса эвристи-

 

 

 

 

вательной операции червь посылает

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

TCP\IP-ñîå-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

случае если администраторы подки-

ческим путем: анализируя содержи-

удаленному узлу условный знак, нап-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

динения

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

можно пе-

нут плагин-бомбу, которая разорвет

мое жесткого диска (перехватывая

ример, выпускает две зеленые ракеты

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ребором

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

червя на куски. В общем, тут есть еще

проходящий сквозь них трафик), они

 

 

 

 

(отправляет TCP-пакет с кодовым пос-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

âñåõ ñîêå-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

тов через

над чем подумать и поработать!

ищут url'ы, е-mail'ы и прочие полез-

ланием внутри). Если узел уже захва-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

функцию

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ные ссылки, занося их в список канди-

чен другим червем, он должен выпус-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

getpeer-

ДОЛГ ПЕРЕД ВИДОМ, ИЛИ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

name.

датов на заражение.

 

 

 

 

 

 

тить в ответ три фиолетовых. Это наи-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

РОЖДЕННЫЙ, ЧТОБЫ УМЕРЕТЬ

 

Затем кандидаты проходят предва-

 

 

 

 

более уязвимая часть операции, ведь

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Считается, что естественная цель

рительное тестирование. Червь дол-

 

 

 

 

если противник, то есть администра-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

всех живых организмов (и червей в

жен убедиться, что данный IP-адрес

 

 

 

 

тор, пронюхает об этом, вражеский

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

том числе) - это неограниченная экс-

действительно существует, удален-

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Окопавшись

пансия, или, попросту говоря, захват

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

в системе,

всех свободных и несвободных терри-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

червь прис-

торий. На самом деле, это неверно.

 

 

 

Подготовка к заброске shell-кода

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

тупает к

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

поиску но-

Чтобы не подохнуть от голода, каж-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

вых жертв

дый индивидуум должен находиться в

 

 

 

начинается с определения IP-адресов,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

и рассылке

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

своей голо-

гармонии с окружающей средой, под-

 

 

 

пригодных для вторжения.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

âû ïî ïîä-

держивая баланс численности своей

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ходящим

популяции в равновесии. Нарушение

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

адресам.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

этого правила оборачивается неиз-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

менной катастрофой.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Червь должен бережно относиться

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

к ресурсам кибернетического мира -

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

оперативной и дисковой памяти, про-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

цессорному времени и пропускной

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

способности сетевых каналов, по-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

братски разделяя их с остальными

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

обитателями "глубины". Предостав-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ленные сами себе, черви размножа-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ются в геометрической прогрессии, и

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

численность их популяции взрывооб-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

разно растет. А ведь толщина магист-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ральных интернет-каналов не безгра-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

нична! Рано или поздно сеть перена-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

сыщается червями и "встает", не

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

только препятствуя их дальнейшему

 

Червь рассылает запросы по различным IP-адресам

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ХАКЕРСПЕЦ 08(45) 2004

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

g

.c

 

 

 

p

 

 

 

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

Червь получает ответ, идентифицирующий подходящую жертву, и забрасывает голову, начиненную shell-кодом

Голова переполняет буфер, захватывает управление и подтягивает основной хвост

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

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

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

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

Захваченный узел становится новым бастионом для дальнейшего распространение червя

47

Если захват управления пройдет успешно, shell-код должен будет найти дескриптор TCP/IP-соединения, через которое он был заслан, и подтянуть оставшийся хвост. Проще, конечно, было бы затащить хвост через отдельное TCP/IP-соединение, но, если противник окружил себя грамотно настроенным брандмауэром, вряд ли вы через него пробьетесь. А вот использовать уже установленные TCP/IP-соединения никакой брандмауэр не запрещает.

И вот вся группа в сборе. Роем окопы от забора и до обеда! Самое глупое, что только может предпринять спецназ, это сгрузить свою тушу в исполняемый файл, затерявшийся в густонаселенных трущобах Windows\System32 и автоматически загружающийся при каждом старте системы по ключу HKLM\Software\Microsoft\Windows\Cur rentVersion\Run. Хорошее место для засады, нечего сказать! Стоит дотянуться администратору до клавиатуры, как от червя и мокрого места не останется. А вот если червь внедряется в исполняемые файлы на манер файловых вирусов, то его удаление потребует намного больше времени и усилий.

Для проникновения в адресное пространство чужого процесса червь должен либо создать в нем удаленный поток, вызвав функцию CreateRemoteThread, либо пропат- чить непосредственно сам машинный код, вызвав WriteProcessMemory (разумеется, речь идет лишь об NT-по- добных системах, UNIX требует к себе принципиально иного подхода).

Как вариант, можно прописаться в ветке реестра, ответственной за автоматическую загрузку динамических библиотек в адресное пространство каждого запускаемого процесса: HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_D LLs. Тогда червь получит полный контроль над всеми событиями, происходящими в системе, например, блокируя запуск неугодных ему программ. Интересно, сколько штанов протрет администратор, прежде чем разберется, в чем дело?

Окопавшись в системе, червь приступает к поиску новых жертв и рассылке своей головы по подходящим адресам; предварительно он уменьшает свой биологический счетчик на единицу, а когда тот достигнет нуля - самоликвидируется.

Таков в общих чертах жизненный цикл червя, такова его карма.

ЗАКЛЮЧЕНИЕ

Черви приходят из мрака небытия, рождаясь в подсознании своих создателей, и уходят туда же. Черви не умирают. Благодаря новым идеям они трансформируются, перевоплощаются. Будущее всемирной сети в ваших руках, друзья. E

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

O V E R F L O W

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

B U F F E R

 

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

Нет ничего хуже для червя, чем прописаться

â

HKLM\Softw

are\Microsof

t\Windows\ CurrentVers ion\Run.

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

O V E R F L O W

-xcha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

 

 

 

 

 

 

 

 

 

 

F

 

 

 

 

 

 

t

 

 

 

 

 

 

 

 

 

 

 

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

 

 

 

P

 

 

 

 

 

NOW!

o

48

РЕАЛИЗАЦИЯ

SEH НА СЛУЖБЕ У КОНТРРЕВОЛЮЦИИ

 

 

 

 

BUY

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Крис Касперски aka мыщъх

 

 

 

 

 

o

m

 

w

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

p

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

df

 

n

e

 

SEH НА СЛУЖБЕ

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ó КОНТРРЕВОЛЮЦИИ

 

 

 

 

 

 

 

 

 

 

B U F F E R

РУКОВОДСТВО ПО ПЕРЕЗАПИСИ SEH-ОБРАБОТЧИКА

Ïерезапись SEH-обработчика - это модный и относительно молодой механизм борьбы с защитой от переполнения буферов в Windows 2003 Server, также находящий себе и другие применения. Это отличный способ перехвата

управления и подавления сообщений о критических ошибках, демаскирующих факт атаки.

SEH в шутку расшифровывают как Sexual Exception Handling.

Защита от переполнения буфера, встроенная в Windows 2003 Server, функционирует именно на основе SEH.

Ñисключений (Structured Exception Handling -

SEH, в шутку расшиф- ровываемый как Sexualтруктурной обработкой

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

Указатели на SEH-обработчики в подавляющем большинстве случаев располагаются в стеке, в так называемых SEH-фреймах, и переполняющиеся буфера могут затирать их. Перезапись SEH-фреймов обычно преследует две цели: перехват управления путем подмены SEH-обработчика и подавление аварийного завершения программы при возникновении исключения. Защита от переполнения буфера, встроенная в Windows 2003 Server, как и многие другие защиты данного типа, функционирует именно на основе SEH. Перехватывая SEH-об- работчик и подменяя его своим, мы тем самым перекрываем кислород защите, и она не срабатывает.

Захватывающие перспективы, не правда ли? Во всяком случае, они стоят того, чтобы в них разобраться!

КРАТКО О СТРУКТУРНЫХ ИСКЛЮЧЕНИЯХ

Адрес текущего SEH-фрейма содержится в двойном слове по смещению ноль от селектора FS, для извле- чения которого можно воспользоваться следующей ассемблерной абракадаброй:

mov eax,FS:[00000000h] mov my_var,eax.

Он указывает на структуру типа EXCEPTION_REGISTRATION, прототип которой описывается так:

_EXCEPTION_REGISTRATION struc

 

prev

dd

?

; адрес предыдущего SEH-фрейма

handler

dd

?

; адрес SEH-обработчика

 

_EXCEPTION_REGISTRATION ends

 

При возбуждении исключения управление передается текущему SEH-обра- ботчику. Проанализировав ситуацию, SEH-обработчик, который представляет собой обычную cdecl-функцию, должен возвратить либо ExceptionContinueExecution, сообщая операционной системе, что исключение успешно обработано и исполнение программы может быть продолжено, либо ExceptionContinueSearch, если он не знает, что с этим исключением делать, и тогда операционная система переходит к следующему обработчику в цепочке (собственно говоря, возвращать управление необязательно, и SEH-обработчик может удерживать его хоть до бесконечности, как обработчи- ки, установленные shell-кодом, обычно

èпоступают).

Последним идет обработчик, назна-

ченный операционной системой по умолчанию. Видя, что дело труба и никто с исключением не справляется, он лезет в реестр, извлекает оттуда ключ HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug, и в зависимости от его состояния либо прихлопывает засбоившее приложение, либо передает управление отладчику (или, как вариант, Доктору Ватсону).

При создании нового процесса операционная система автоматически добавляет к нему первичный SEHфрейм с обработчиком по умолчанию, лежащий практически на самом дне стековой памяти, выделенной процессу. "Дотянуться" до него последовательным переполнении практически нереально, так как для этого потребуется пересечь весь стек целиком! Таких катастрофических переполнений старожилы не встречали уже лет сто!

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

Разработчик может назначать и свои обработчики, автоматически создающиеся при упоминании волшебных слов try и except (такие обработ- чики мы будем называть пользовательскими). Несмотря на все усилия Microsoft основная масса программистов совершенно равнодушна к структурной обработке исключений (некоторые из них даже такого слова не слышали!), поэтому вероятность встретить в уязвимой программе пользовательский SEH-фрейм достаточно невелика, но все же она есть В противном случае для подмены SEHобработчика (а первичный SEH-обра- ботчик в нашем распоряжении есть всегда) придется прибегнуть к индексному переполнению или псевдофункции poke, о которой уже шла речь в других статьях номера.

Для исследования структурных обработчиков исключений напишем нехитрую программку, трассирующую SEH-фреймы и выводящую их содержимое на экран. Законченная реализация может выглядеть, например, так:

main(int argc, char **argv)

{

int *a, xESP; __try{ __asm{

mov eax,fs:[0]; mov a,eax mov xESP, esp

} printf("ESP: %08Xh\n",xESP); while((int)a != -1)

{

printf("EXCEPTION_REGISTRATION.prev: %08Xh\n"\

ХАКЕРСПЕЦ 08(45) 2004