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

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

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

 

 

 

 

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

 

 

 

 

 

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

Почему бы не войти в систему…

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

УДЕРЖАНИЕ ROOT-АККАУНТА

Если взломщик надеется подольше удержать за собой максимальные права на Linux-сервере, то он должен постараться выполнить еще несколько действий. Самое главное - это изучить всю систему и найти "закладки": программы и скрипты, установленные администратором сервера, предназначенные для поиска и ликвидации взломов. Наиболее популярны для Linux-серверов на сегодня скрипт, который следит за подтверждением входа (следует искать в /root файл конфигурации оболочки пользователя) и скрипты проверки хеш-суммы всех утилит системы. Чаще всего они запускаются с помощью cron от root, поэтому следует внимательно изучать вывод команды crontab. Если не будет найдено никаких подозрительных записей для cron, то взломщику чаще всего необходимо изучить /var/log. Именно этот каталог содержит результаты всех проверок, если они существуют, и в нем легко можно обнаружить отчеты ловушек админа. Просмотрев журнал, следует подумать об установке руткита, если, конечно, на хосте не установлена прог- рамма-ревизор. Ну а после успешного инсталла все становится проще:

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

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

LINUX - ПРИТОН ХАКЕРОВ? ДА!

Linux был, есть и будет той единственной системой, в которой хакер чувствует себя предельно просто и комфортно. Тем, кто действительно хочет понять всю силу и удобство Linux, прямая дорога в мир sourcebase дистрибутивов. Только там, пройдя через бессонные ночи, килограммы манов, ты познаешь счастье, которое позволит тебе понимать мир хакеров. 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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

* N I X

-xcha

 

 

 

 

 

 

 

 

 

 

 

 

 

Í Å Ï Ð È Ñ Ò Ó Ï Í Û É

 

 

 

 

 

 

 

50 ВЗЛОМ СЕРВИСНАЯ УГРОЗА

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

СЕРВИСНАЯ

УГРОЗА

 

 

 

 

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

 

 

 

 

АТАКИ НА КОНКРЕТНЫЕ СЛУЖБЫ

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

ProFTPD и Wu-ftpd – самые дырявые сервера. Но, несмотря на это, администраторы продолжают их использовать.

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

Èадминистраторов впе- чатляет. Админы реаги-

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

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

ДЫРЯВЫЙ FTP

Начнем с самого низкого системного порта. На двадцать первом порту расположился интересный демон FTP. Ты хочешь поломать его, но вот беда: не знаешь, какой FTPD выдержит атаку, а какой - нет. Публичные эксплоиты встречаются для двух служб: WuFTPD и ProFTPD. Несмотря на дырявость они до сих пор используются админами в работе. Поговорим о каждом релизе в отдельности.

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

Чтобы определиться в названии сервиса, зацепись на него и попробуй залогиниться. Затем напиши команду quit. Если это действительно Wu, то ты увидишь полную статистику по переданным данным (причем номер команды будет равняться числу 221). Кроме этого, в случае анонимного захода Wu-FTPD обязательно проинформирует тебя о правильности email-адре- са, который задается в качестве пароля. Подобная дружелюбность позволит вывести сервер на чистую воду. И, наконец, эксплоиты. Конечно же, абсолютно все версии WuFTPD уязвимы, но в публичных источниках ты можешь найти сплоит для взлома релиза 2.6.2 (www.security.nnov.ru/files/0x82wu262.c). Придется довольствоваться тем, что есть.

Что касается ProFTPD, то эта служба еще дырявее. Существует эксплоит для предпоследнего релиза 1.2.9rc2, что говорит о некомпетентности программистов. Самая популярная ошибка в демонах FTPD – переполнение при передаче длинного параметра какой-либо команде. Но последний эксплоит ориентирован на срыв буфера во время закачивания ASCII-файла. Я протестировал работу этого чудного эксплоита

(www.security.nnov.ru/files/10.04.proftpd_xforce.c

) на версии 1.2.9 и легко получил удаленного root'а. Одна проблема – в публичном эксплоите содержится всего две мишени (таргета :)). Хо- чешь большего? Тогда качай файл www.security.nnov.ru/files/proft_put_down.c. Он снабжен брутфорсом, поэтому является универсальным для всех конфигураций.

Если админ меняет баннер от ProFTPD, это не говорит о том, что хакер не обнаружит баг. Демон выдает себя с потрохами фразой «Anonymous Login ok» при передаче анонимного логина. Для справки: все остальные FTPD вместо слова «Anonymous» пишут «Guest». Когдато я раскусил службу именно по этой отличительной особенности. Чего и тебе желаю :).

SSH – НОСТАЛЬГИЯ ПО ВЗЛОМУ

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

Выводим сервера на чистую воду

ХАКЕРСПЕЦ 10(47) 2004

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

to

 

 

 

 

 

 

 

w Click

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

 

w

 

 

 

 

 

 

 

 

 

 

 

 

w

 

df-xchan

 

 

o

 

КАК И ГДЕ ЛУЧШЕ ИСКАТЬ?

 

.

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

 

e

 

 

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

1. www.xakep.ru. А что ты ожидал увидеть на первом месте? :). Сайт

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

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

буквально вчераш-

 

 

 

 

 

 

 

 

 

 

 

íèé

баг, топай на

 

 

 

 

 

 

 

 

 

 

 

õàkåð.ru

è

áåðè

 

 

 

 

 

 

 

 

 

 

 

нужный эксплоит. В

 

 

 

 

 

 

 

 

 

 

 

остальных случаях

 

 

 

 

 

 

 

 

 

 

 

рекомендую

ïîñå-

 

 

 

 

 

 

 

 

 

 

 

òèòü

другой

ñàéò,

 

 

 

 

 

 

 

 

 

 

 

èáî

ñàéò

Хакера

 

 

 

 

 

 

 

 

 

 

 

снабжен не совсем

 

 

 

 

 

 

 

 

 

 

 

удобным

поиском

 

 

 

 

 

 

 

 

 

 

 

(íà

запрос

SunOS

 

 

 

 

 

 

 

 

 

 

 

exploit, скрипт вер-

 

 

 

 

 

 

 

 

 

 

 

нет ссылку на ка-

 

 

 

 

 

 

 

 

 

 

 

кую-нибудь статью

 

 

Поиск по фразе «SunOS exploit»

 

è ò.ï.).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2. security.nnov.ru. Мой любимый портал по безопасности. У сайта

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

Достаточно

зайти

 

 

 

 

 

 

 

 

 

 

 

на страницу securi-

 

 

 

 

 

 

 

 

 

 

 

t y . n n o v . r u /

 

 

 

 

 

 

 

 

 

 

 

search/exploits.asp

 

 

 

 

 

 

 

 

 

 

 

и написать парочку

 

 

 

 

 

 

 

 

 

 

 

ключевых слов. От-

 

 

 

 

 

 

 

 

 

 

 

вет в виде ссылки

 

 

 

 

 

 

 

 

 

 

 

на рабочий экспло-

 

 

 

 

 

 

 

 

 

 

 

ит не заставит себя

 

 

Лучший результат поиска!

 

долго ждать.

 

 

 

 

 

 

 

 

 

 

 

 

3. securitylab.ru. Еще один отечественный портал по безопасности.

Он имеет плюсы двух предыдущих сайтов. Во-первых, на страницах

этого сайта содержится подробное описание бага на русском язы-

ке (как на хаkер.ru). Во-вторых, сайт обладает весьма функцио-

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

бым ключевым словам (как на security.nnov.ru). Наконец, ты мо-

жешь подписаться на рассылку этого сайта и всегда быть в курсе

новых багов.

 

 

 

 

 

 

 

 

 

 

 

 

4. packetstormsecurity.nl. Из англоязычных ресурсов ПакетШторм

- самый лучший. Мне нравится то, что весь софт разбит на катего-

рии. Это означает, что помимо эксплоитов ты можешь найти бэкдо-

ры, сниферы, логвайперы и многое другое. О поиске я вообще мол-

чу – ответ на стандартный запрос может содержать 30 страниц ссы-

лок, грамотно отсортированных по ревалентности.

 

5. securityfocus.org. Еще один зарубежный ресурс, который суще-

ствует очень давно. На его страницах ты всегда найдешь новые

эксплоиты и описания свежих багов. Лично я обращаюсь к страни-

цам этого портала только за разъяснением той или иной бреши в

сервисе. В остальных случаях мне хватает других источников.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

время sshd практически неуязвим. Па-

 

 

 

 

удаленного root’а. Это удавалось, ес-

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

 

 

 

 

ли версия SSH совпадала с релизом,

èò x2 (www.security.nnov.ru/files/x2.tgz), êîòî-

 

 

 

 

забитым в target. Эксплоит содержал

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

аж 46 целей, правда, на практике уда-

ных источниках. Он позволяет взять

 

 

 

 

валось получить root’а лишь в 5-6 из

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

51

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

 

 

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

* N I X

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ñ Ò Ó Ï Í Û É

 

Длительный взлом перебором

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ï Ð È

 

 

 

 

 

 

 

 

 

 

них. Что удивительно, даже сейчас

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

Å

 

мона (с 1.5-1.2.27 по 1.2.33) в различ-

 

 

 

 

 

 

 

Í

 

 

 

 

 

 

 

 

 

 

 

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

TELNETD – ДРЕВНИЙ СЕРВИС ОТ ДРЕВНИХ АДМИНОВ

Сейчас мы займемся взломом telnetd. Несмотря на то что это старый сервис, он используется на многих unix-like-машинах. Почему же админы его не сносят? Все просто – они оставляют демон в качестве резерва, фильтруя его от внешнего мира. В этом случае ты не законнектишься на сервис, однако сможешь без проблем получить локального root’а, если атакуешь сервер другим способом. Впро- чем, бывают и исключения. К примеру, в Солярке телнет – вообще сервис по умолчанию, поэтому 23-й порт на таких серверах светится всегда. От тебя требуется воспользоваться услугами одного из двух эксплоитов. Первый называется 7350logout (examples.oreilly.de/english_examples/networksa/tools/7350logout), он переполняет буфер в telnetd, засоряя его некорректными данными. Зловредный бинарник способен взломать службу в Солярках 5.6-5.8 за несколько секунд. Второй эксплоит с именем holygrail (examples.oreilly.de/english_examples/networksa/tools/holygrail.c) ломает Соляры 5.5-5.7 удаленно и 5.8 локально. Заюзать эти сплоиты несложно. Достаточно лишь передать им параметры хоста и версии операционки.

Кстати, версия Солярки всегда указа- »

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

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

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

Раритетный эксплоит еще на что-то способен :)

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

F

 

 

 

 

 

 

t

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

 

 

 

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

52

ВЗЛОМ

СЕРВИСНАЯ УГРОЗА

w Click

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

* N I X

-xcha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Í Å Ï Ð È Ñ Ò Ó Ï Í Û É

Holygrail – лучшее для SunOS

Если ты пробил защиту како- го-нибудь маршрутизатора, ищи бажные сервисы в локальной сети. Поверь, там их очень много :).

Чтобы узнать, какие модули подключены к Web-сер- веру, отправь простой WWWзапрос. Информация о библиотеках содержится в строке «Server:».

на в баннере telnetd, что в несколько раз облегчает твою работу.

Бажный демон telnet’а встречается в других системах. Например, во FreeBSD. Для определенных версий FreeBSD существует специальный эксплоит, переполняющий буфер в сервисе. Итог - удаленный root на уязвимой системе. Сейчас такой демон в глобале не встретить, раритетные системы существуют разве что в локальной сети какой-нибудь фирмы.

Служба постепенно замещается защищенным SSHD, поэтому судьба telnetd предрешена. Думаю, через пару лет ты вообще забудешь, что когда-то существовал подобный демон. А пока

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

WWW – ИСТОЧНИК ВСЕХ БЕД

Обратимся к самой популярной глобальной службе - WWW. Думаю, не стоит говорить, что наиболее часто используемый демон в unix-like-опе- рационках называется Apache. Несмотря на его относительную стабильность баги в Apache существуют. Точ- нее, не в самом сервере, а в его многочисленных модулях. Начнем с самого популярного - mod_php. Баг довольно старый, но грех о нем не вспомнить. К тому же, бажные версии модулей можно встретить в сети до сих пор. Итак, ошибка в компоненте заключается в обработке внешних параметров. Если хакер пересылал хитрый запрос любому скрипту, модуль мог открыть shell с командным интерпретатором. Так и происходило, правда, перед этим эксплоит долго перебирал запросы. Еще один баг затаился в

SSL под прицелом

Бедствие от компрессии

Взломать NetBSD – задача не из легких

протоколе OpenSSL. Хакеры быстро реализовали эксплоит для mod_ssl, который позволял брать права WWWсервера. После длительного ажиотажа многие админы обновили библиотеки SSL, в результате чего уязвимость потеряла свою остроту. Раритетный эксплоит называется OpenFuck, вторую его версию ты можешь скачать по адресу packetstormse- curity.org/0304-exploits/OpenFuckV2.c.

Хочешь баг посвежее? Держи! Брешь актуальна для связки Apache 2.x с mod_perl. Модуль, позволяющий добиться акселерации при запуске CGI-сценариев, содержит утечку важных файловых дескрипторов. Сейчас я наглядно объясню, к чему это может привести. Для эксплуатирования жертвы хакеру придется добиться локальных привилегий. Это нужно для того, чтобы иметь доступ к WWW-ката- логу и заливке скрипта (думаю, подойдут права nobody в web-shell’е). Взломщик пишет сценарий, который рождает подпроцесс, а затем останавливает httpd. Затем потомок становится демоном, имитирующим работу Web-сервера. На все запросы клиентов он отвечает, что админа поимели :). Подобное описание всех шагов хакера можно найти на странице www.securitylab.ru/42355.html.

Давай теперь поговорим о других библиотеках. Не так давно стал уязвим компонент mod_gzip (www.security.nnov.ru/files/85mod_gzip.c), который служит для сжатия контента перед передачей. Уязвимость была обнаружена в конце лета прошлого года. Через банальное переполнение буфера злоумышленник может порождать процессы под правами nobody. Для этого хакеру требовалось послать определенные данные, включающие параметр Accept-

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

F

 

 

 

 

 

 

 

t

 

 

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

r

 

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

w Click

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

 

Encoding. Неважно, на.

 

 

 

 

 

e

 

 

 

 

 

p

df

 

 

 

g

.c

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

какой системе крутит-

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ñÿ Apache - áàã òàèò-

 

 

 

 

 

 

 

 

 

 

 

 

ñÿ êàê â FreeBSD, òàê

 

 

 

 

 

 

 

 

 

 

 

 

è â RedHat, Mandrake,

 

 

 

 

 

 

 

 

 

 

 

 

SuSE. Все потому, что

 

 

 

 

 

 

 

 

 

 

 

 

эксплоит снабжен

 

 

 

 

 

 

 

 

 

 

 

 

 

брутфорсом, который

 

 

 

 

 

 

 

 

 

 

 

 

каждый раз переби-

 

 

 

 

 

 

 

 

 

 

 

 

 

рает адрес возврата.

 

 

 

 

 

 

 

 

 

 

 

 

В случае его успеш-

 

 

 

 

 

 

 

 

 

 

 

 

 

ного определения

 

 

 

 

 

 

 

 

 

 

 

 

злоумышленник по-

 

 

 

 

 

 

 

 

 

 

 

 

 

лучит интерактивный

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

shell. При этом версия

 

 

 

 

 

 

 

 

 

 

 

модуля не должна

 

 

 

 

 

 

 

 

 

 

 

 

 

áûòü âûøå 1.3.26. Ïî-

 

 

 

 

 

 

 

 

 

 

 

 

разительно, но даже

 

 

 

 

 

 

 

 

 

 

 

 

сейчас баг актуален.

 

 

 

 

 

 

 

 

 

 

 

 

За примерами далеко

 

 

 

 

 

 

 

 

 

 

 

 

ходить не надо, прос-

 

 

 

 

 

 

 

 

 

 

 

 

то взгляни на скрин-

 

 

 

 

 

 

 

 

 

 

 

 

øîò.

 

 

 

 

 

 

 

 

 

 

 

 

 

Бывает, что и в са-

 

 

 

 

 

 

 

 

 

 

 

 

 

мом Apache встреча-

 

 

 

 

 

 

 

 

 

 

 

 

þòñÿ áàãè. Äàæå ïðè

 

 

 

 

 

 

 

 

 

 

 

отсутствии дополни-

 

 

 

 

 

 

 

 

 

 

 

 

тельных библиотек.

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

в OpenBSD/NetBSD, позволяющая

 

 

 

 

 

 

 

 

 

 

 

брать shell через дырявый httpd

 

 

 

 

 

 

 

 

 

 

 

(www.security.nnov.ru/files/apache-nosejob.c).

 

 

 

 

 

 

 

 

 

 

 

Правда, сейчас найти уязвимый сер-

 

 

 

 

 

 

 

 

 

 

 

вер практически невозможно.

 

 

 

 

 

 

 

 

 

 

 

ДРУГИЕ СЛУЖБЫ

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

1.IRC. Демоны ircd расположены на многих машинах, а их стойкость к атакам оставляет желать лучшего.

Например, недавно был обнаружен баг в популярном hybrid-ircd, который позволяет удаленно убить сервис. Эксплоит публичный (addict3d.org/index.php?page=viewarticle&type= security&ID=1416), но перед тем как его скомпилировать, тебе придется исправить ошибки в исходном коде. Этакая защита от скрипткидисов. Рассказывать о том, как править исходник, я не буду – додумаешься сам. Подскажу лишь, что тебе придется перенести объявления переменных из середины процедуры в ее начало. После того как ты скомпилишь эксплоит, натрави его на какую-ни- будь жертву (сервер, где установлен гибрид) и жди результата. Долго ждать не придется: непропатченный демон быстро уйдет в core dump.

2.CVS. Ты никогда не мечтал взломать разработчиков софта? Служба CVS создана для синхронизации исходных кодов, поэтому часто ставится на сервера разработчиков какого-ли- бо проекта. Хакеры нашли в демоне

ХАКЕРСПЕЦ 10(47) 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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Девелоперы плачут, а хакеры довольны :)

склонность к переполнению буфера. Это показал несложный анализ строки, посылаемой серверу. Багоискатели установили, что выделение памяти происходит не под всю строку, а с некоторым запасом. Таким образом, грамотно составленный запрос позволяет повторно обратиться к функции дырявого CVS. С каждым вызовом злоумышленник может перезаписать память произвольными данными, а затем обратиться к ним. Думаю, ты понимаешь, что произойдет, если ты обратишься к коду, открывающему shell и запускающему /bin/bash. Именно это и реализовано в эксплоите. Кстати, он является публичным и давно ждет тебя по адресу www.xakep.ru/ post/22450/cvs_linux_freebsd_HEAP.txt.

3. mySQL. База данных всегда была лакомым кусочком для хакеров, ведь в ней можно найти ценную информацию. До последнего времени для демона mysqld вообще не было эксплоитов, но хакеры терпеливо ждали. Наконец, был обнаружен изъян в свежих релизах сервиса. Если хакер пошлет демону хитрый авторизационный пакет, то функция сравнения неверно изымет из него пароль. Собственно, пароль в этом случае будет представлять собой строку нулевой длины,

Радио под контролем хакера

Синхронизация привилегий

сравнение с которой даст положительный результат. Как следствие, хакер сможет бороздить просторы БД без какой-либо авторизации :). Команда RuSH выпустила скомпилированный mySQL-клиент, который позволяет логиниться к базе без знания пароля. Только вот версия демона должна быть 5.0 либо не превышать 4.1.3. Сливай mysql по адресу www.xakep.ru/post/23047/mysql_exploit.zip.

4.Shoutcast. Я думаю, что многие из читателей слушают внутрисетевое радио в своей локальной сети. Ты когда-нибудь задумывался, что служба Shoutcast, шлющая тебе звук по сетевым проводам, давно стоит на учете у хакеров? Если нет, то пришло время провести небольшой ликбез :). Баг таится в плохом анализе переменных icy-name и icy-desc, которые отвечают за имя и описания передаваемого файла. Никто же не мешает тебе воткнуть, скажем, /bin/sh вместо названия. Эксплоит можно найти по следующей ссылке www1.xakep.ru/post/14351/exploit.txt. Тестируй эксплоит в своих локальных сетях и наводи злободром на различ- ных серверах.

5.Rsync. Частенько вместо FTP админы используют утилиту rsync. Недавние релизы rsync содержат крити- ческий баг, который позволит тебе повысить локальные привилегии. А все из-за отсутствия проверки в функции strcpy(), которую можно отыскать в коде socket.c. Баг актуален только для Linux, поэтому если тебе попалась машинка с навороченным ядром и старым rsync – все в твоих руках. Скачи- вай (www.xakep.ru/ post/21234/exploit.txt), компилируй, запускай и наслаждайся ;).

404 NOT FOUND

Что я слышу: ты не нашел бажного сервиса? Немедленно перечитывай эту статью, а затем нацеливай nmap на неизведанную сетку. И тебе обязательно улыбнется удача! Не забывай, что многие админы подменяют баннер сервиса, пытаясь скрыть его версию. Но ты выведешь его на чистую воду! Тестируй эксплоиты на якобы неуязвимых сервисах, возможно, это простая подделка. И никогда не забывай обращаться за помощью к сайтам по уязвимости – часто там содержатся дельные статьи по взлому. Прими к сведению, что умный взломщик никогда не отчаивается, ибо знает основные слабости сисадмов. 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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

* N I X

-xcha

 

 

 

 

 

 

 

 

 

 

 

 

 

Í Å Ï Ð È Ñ Ò Ó Ï Í Û É

 

 

 

 

 

 

 

54 ВЗЛОМ ЗАРАЗА ДЛЯ НИКСОВ

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

ЗАРАЗА ДЛЯ НИКСОВ

 

 

 

 

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

 

 

 

 

ВИРУСНЫЙ РАЗГУЛ ПОД UNIX

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

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

Некоторые администраторы полагают, что под *nix вирусов нет. Вирусы же придерживаются иного мнения.

Некоторые пользователи в желании почувствовать себя богом подолгу работают в системе на изпод root'а. Вирусы и хакеры любят таких пользователей :).

»

ОПЕРАТИВНАЯ

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

и Ассемблер, причем последний из них

ОБСТАНОВКА

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

стремительно утрачивает свои пози-

 

 

Первые вирусы,

бы глубоко вирус ни был внедрен.

ции, уступая место Бейсику, Delphi и

 

 

поражающие ELF-фай-

 

 

Считается, что вирусы, внедряющие-

прочей дряни, на которой элегантный

лы (основной формат

ся в исходные тексты, более живучи,

вирус невозможно создать в принципе.

исполняемых файлов под *nix), были

однако в действительности это не так.

А что на счет Си? С эстетической

зарегистрированы в конце 90-х, а те-

Исходные тексты требуются неболь-

точки зрения, это – чудовищный вы-

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

шому числу пользователей, а девело-

бор, и вирусмэйкеры старой школы

ше полусотни представителей (см.

перы активно используют системы

его не прощают (однако написать код

коллекцию вирусов на vx.netlux.org).

контроля версий, отслеживающих це-

на ассемблере, сравнимый с тем, что

Антивирусная Энциклопедия Евге-

лостность программного кода и поз-

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

ния Касперского (www.viruslist.com/virus-

воляющих делать многоуровневый

щие C-компиляторы вроде Microsoft C

list.html?id=3166) сообщает лишь о четыр-

"откат". Было зарегистрировано нес-

Compiler, - дело для новичка не такое

надцати из них, что наводит на серь-

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

уж простое - прим. AvaLANche'а). С

езные размышления о качестве AVP

текстов операционной системы LINUX

другой стороны, будучи низкоуровне-

и добросовестности его создателей.

и сервера Apache, но все они с трес-

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

По умолчанию, UNIX запрещает моди-

ком провалились.

ком, Си неплохо походит для разра-

фикацию исполняемых файлов, и ус-

 

 

То же самое относится и к вирусам,

ботки вирусов, хотя от знания Ассемб-

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

обитающим в интерпретируемых

лера это все равно не освобождает.

можно только на уровне root, который

скриптах, таких, как sh, Perl, PHP. В

Код, генерируемый компилятором,

либо присваивается зараженному фай-

*nix скрипты вездесущи и их модифи-

должен: быть полностью перемещае-

лу администратором, либо самостоя-

кация по умолчанию разрешена, что

мым (то есть независимым от базово-

тельно захватывается вирусом через

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

го адреса загрузки), не модифициро-

дыры в ядре системы. При правильной

размножения вирусов. Если бы поль-

вать никакие ячейки памяти, за иск-

политике разграничения доступа и

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

лючением стекового пространства, и

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

юниксоидный мир погрузился бы в

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

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

эпоху ранней MS-DOS, когда новые

низмы импорта функций, либо подк-

минимуму. К тому же, времена тоталь-

вирусы выходили едва ли не каждый

лючая все необходимые библиотеки

ного обмена софтом давно позади.

день, а так вирусы остаются внутри

самостоятельно, либо обращаясь в

Сейчас уже никто не копирует испол-

пораженного компьютера, не в силах

native-API. Этим требованиям удовлет-

няемые файлы друг у друга, скачивая

вырваться наружу.

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

их напрямую из интернета. Даже если

 

 

Разумеется, вирус может распрост-

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

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

раняться и через интернет, но тогда

та тоже кое-что потребуется.

ный сервер, дальше первого поколе-

это будет уже не вирус, а червь. Неко-

Нельзя объявлять главную функ-

ния его распространение не пойдет и

торые исследователи считают червей

цию программы как main: встретив та-

вторичные заражения будут носить

самостоятельными организмами, не-

кую, линкер внедрит в файл start-up

единичный характер.

которые – разновидностью вирусов,

код, который вирусу не нужен. Нельзя

Файловые вирусы уже неактуальны,

но, как бы там ни было, черви – тема

использовать глобальные или стати-

и отсутствие крупных эпидемий наг-

отдельного разговора.

ческие переменные: компилятор при-

лядно подтверждает этот факт. Тем

 

 

 

 

нудительно размещает их в сегменте

не менее, накопленные методики

ЯЗЫК РАЗРАБОТКИ

данных, но у вирусного кода не может

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

 

 

 

Настоящие хакеры признают

быть сегмента данных! Даже если ви-

 

 

 

 

 

 

ными – без них жизнь троянов и сис-

только один, максимум, два языка – C

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

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

 

 

 

 

 

была бы весьма недолгой. Захватить

 

 

 

 

 

управление атакуемым компьютером

 

 

 

 

 

и заполучить права root'а – все рав-

 

 

 

 

 

но что бросить зернышко на раска-

 

 

 

 

 

ленный асфальт. Хакер должен уко-

 

 

 

 

 

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

 

 

 

 

 

исполняемые файлы, что встретятся

 

 

 

 

 

ему на пути. Но и тогда он не может

 

 

 

 

 

быть ни в чем уверен, поскольку су-

 

 

 

 

 

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

 

Разгул вирусов под UNIX

 

 

 

 

 

 

 

 

 

 

ХАКЕРСПЕЦ 10(47) 2004

 

 

 

 

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

 

 

 

 

 

должен, во-первых, самостоятельно определить адрес его "хвоста", а, вовторых, растянуть сегмент до необходимых размера. Все это тривиально реализуется на Ассемблере, но для компилятора оказывается чересчур сложной задачей. Кроме того, нужно хранить все данные только в локальных переменных, задавая строковые константы в числовом виде. Если написать char x[] = "hello, world", коварный компилятор сбросит "hello, world" в сегмент данных, а затем динамически скопирует его в локальную переменную x. Можно сделать так: x[0]='h', x[1]='e', x[2]='l'… или преобразовать char в int, осуществлять присвоение двойными словами, не забывая о том, что младший байт должен располагаться по наименьшему адресу, что разворачивает строку задом наперед.

Нельзя использовать никакие библиотечные функции, если только не уверен в том, что они полностью удовлетворяют всем вышеперечисленным требованиям. Системные функции обычно вызываются через

интерфейс native-API, также известный под именем sys-call (в Linux-по- добных системах за это отвечает прерывание INT 80h, другие системы обычно используют дальний вызов по селектору семь, смещение ноль). Поскольку системные вызовы варьируются от одной системы к другой, это ограничивает среду обитания вируса и при желании он может прибегнуть к внедрению в таблицу импорта.

Откомпилировав полученный файл, мы получим объектник и ругательство компилятора по поводу отсутствия main. Остается только слинковать его в дво- ичный 32.64-разрядный файл. Естественно, внедрять его в жертву придется вручную, так как системный загрузчик откажется обрабатывать такой файл.

СРЕДСТВА АНАЛИЗА, ОТЛАДКИ И ПЛАГИАТА

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

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

Классический механизм импорта внешних функций из/в ELFфайлов в общем виде выглядит так: на первом этапе вызова импортируемой функции из секции .text вызывается "переходник", который располагается в секции .plt (Procedure Linkable Table) и ссылается в свою очередь на указатель на функцию printf, что расположен в секции .got ("Global Offset Tables"), ассоциированной с таблицей строк, содержащей имена вызываемых функций (или их хэши).

Ниже приведена схема вызова функции printf утилитой ls, позаимствованной из комплекта поставки Red Hat 5.0.

В какое место этой цепочки может внедриться вирус? Ну, прежде всего, он может создать подложную таблицу строк, перехватывая вызовы всех интересующих его функций. Чаще всего заражению подвергается функция printf/fprintf/sprintf (поскольку без нее не обходится практически ни одна программа) и функции файлового ввода/вывода, что автоматически обеспечивает прозрачный механизм поиска новых жертв для заражения.

Вирусы-спутники создают специальную библиотеку-перехватчик во всех заражаемых файлах. Поскольку IDA Pro при дизассемблировании ELF-файлов не отображает имя импортируемой библиотеки, заподозрить что-то неладное в этой ситуации нелегко. К счастью, HEX-редакторы еще никто не отменял. Другие же вирусы склонны манипулировать полями глобальной таблицы смещений, переустанавливая их на свое тело.

55

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

Если исходные тексты вируса отсутствуют (кривые дизассемблерные листинги, выдаваемые за божественное откровение, мы в расчет не берем), препарировать двоичный код вируса приходится самостоятельно. Тут-то нас и поджидает одна большая проблема. Дизассемблер всех времен и народов IDA Pro не приспособлен для работы с ELF-вирусами, поскольку отказывается загружать файлы с искаженным section header'ом (а большинство вирусов никак не корректируют его после заражения!). Других достойных дизассемблеров, переваривающих ELF-формат, мне обнаружить так и не удалось (а самому писать лень). За неимением лучших идей приходится возиться с HEX-ре- дакторами (например, с тем же HIEW'ом), разбираясь со служебными структурами файла вручную.

С отладчиками дело обстоит еще хуже. Фактически под *nix существует всего один более или менее самостоятельный отладчик прикладного уровня – gdb (GNU Debugger), являющийся фундаментом для большинства остальных. Простейшие антиотладоч- ные приемы, нарытые в хакерских мануалах времен первой молодости MSDOS, пускают gdb в разнос или позволяют вирусу вырваться из-под его контроля, поэтому отлаживать вирусный код на рабочей машине категори- чески недопустимо и лучше использовать для этой цели эмулятор, такой, как BOCHS. Особенно предпочтительны эмуляторы, содержащие интегрированный отладчик, обойти который вирусу будет очень тяжело, а, в идеале, вообще невозможно (BOCHS такой отладчик содержит). Кстати говоря, совершенно необязательно для исследования ELF-вирусов устанавливать *nix. Эмулятора для этих целей будет более чем достаточно.

ELF

Структура ELF-файлов (ELF - Execution & Linkable Format) имеет

 

 

 

 

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

 

* N I X

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Í Å Ï Ð È Ñ Ò Ó Ï Í Û É

 

Малочисленность вирусов в мире *nix компенсируется отсутствием нормальных антивирусов.

IE и IRC – вот основные источ- ники для пополнения твоей коллекции вирусов.

Открытость ELF-форма- та вкупе с доступностью исходных текстов системного загрузчика значительно упрощает конструирование вирусов под *nix.

Отладка вирусного кода на интегрированном отладчике эмулятора BOCHS из-под w2k

 

 

 

 

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

 

 

 

 

56 ВЗЛОМ ЗАРАЗА ДЛЯ НИКСОВ

W W W

 

 

 

 

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

 

 

 

 

Í Å Ï Ð È Ñ Ò Ó Ï Í Û É * N I X

Исследование вирусов под UNIX с помощью дизассемблера iceix

Создание вирусов не преследуется по закону. По закону преследуется создание вредоносных программ.

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

*nix- и Windowsвирусы строятся по одним и тем же принципам, причем UNIX-виру- сы даже проще.

много общих черт с PE (Portable Execution) – основным исполняемым форматом платформы Windows 9x и NT, концепции их заражения весьма схожи, хотя и реализуются различ- ным образом.

ELF-файл состоит из ELF-заголовка (ELF-header), описывающего основные особенности поведения файла, заголовка программной таблицы (program header table) и одного или нескольких сегментов (segment), содержащих код, инициализированные/неинициализированные данные и про- чие структуры.

Каждый сегмент представляет собой непрерывную область памяти со своими атрибутами доступа (кодовый сегмент обычно доступен только на исполнение, сегменты данных как минимум доступны на чтение, а при необходимости еще и на запись). Пусть слово "сегмент" не вводит тебя в заблуждение: ничего общего с сегментной моделью памяти тут нет. Большинство 32-битных реализаций UNIX'а помещают все сегменты ELF-файла в один 4- гигабайтный "процессорный" сегмент (так называемый плоская (flat) модель памяти). В памяти все ELF-сегменты должны выравниваться по величине страницы (на x86, равной 4 Кб), но непосредственно в самом ELF-файле хранятся в невыравненном виде, вплотную прижимаясь друг к другу. Сам ELF-заголовок и program header в первый сегмент не входят (ну, формально не входят), но совместно грузятся в память, при этом начало сегмента следует непосредственно за концом program header'а и по границе страницы не выравнивается!

Последним из всех идет заголовок таблицы секций (section header table). Для исполняемых файлов он необязателен и реально используется только в объектниках. Еще в нем нуждаются отладчики – исполняемый файл с изуродованным section header table не отлаживается ни gdb, ни производными от него отладчиками, хотя нормально обрабатывается операционной системой.

Сегменты естественным образом делятся на секции. Типичный кодовый сегмент состоит из секций .init (процедуры инициализации), .plt (секция связок), .text (основой код програм-

ССЫЛКИ ПО ТЕМЕ

bochs bochs.sourceforge.net

Качественный эмулятор ПК с интегрированным отладчиком внутри. Хорошо подходит для экспериментов с вирусами непосредственно на твоей рабочей машине без риска уничтожения информации. Бесплатен, распространяется с исходными текстами.

Executable and Linkable Format – Portable Format Specification www.ibiblio.org/pub/historic-linux/ftp-archives/sunsite.unc.edu/Nov- 06-1994/GCC/ELF.doc.tar.gz

"Родная" спецификация на ELF-формат. Настоятельно рекомендуется к изучению всем вирусописателям, пробующим свои силы на платформе UNIX.

The Linux Virus Writing And Detection HOWTO www.creangel.com/papers/writingvirusinlinux.pdf

Пошаговое руководство по проектированию и реализации вирусов под LINUX с кучей готовых примеров (на английском языке).

"UNIX viruses" îò Silvio Cesare vx.netlux.org/lib/vsc02.html

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

LINUX VIRUSES - ELF FILE FORMAT Marius Van Oers www.nai.com/common/media/vil/pdf/mvanvoers_VB_conf%252020 00.pdf&e=747

Блестящий обзор современных UNIX-вирусов и анализ используемых ими методик внедрения в ELF-файлы (на английском языке).

мы) и .finit (процедуры финализации), атрибуты которых описываются в section header'e. Загрузчик операционной системы ничего не знает о секциях, игнорируя их атрибуты и загружая весь сегмент целиком. Тем не менее, для сохранения работоспособности зараженного файла под отладчиком вирус должен корректировать оба заголовка сразу - как program header, так и section header.

Основные структуры ELF находятся в файле /usr/include/elf.h.

За более подробной информацией обращайся к оригинальной спецификации на ELF-файл "Executable and Linkable Format – Portable Format Specification", составленной, естественно, на английском языке.

МЕТОДЫ ЗАРАЖЕНИЯ

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

exec, предварительно расщепив материнский процесс функцией fork. После завершения работы файлажертвы вирус удаляет временный файл с диска.

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

СТРУКТУРА

ИСПОЛНЯЕМОГО ELF-ФАЙЛА

ELF Header

Program header table Segment 1

Segment 2

Section header table (optional)

ХАКЕРСПЕЦ 10(47) 2004

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

 

 

F

 

 

 

 

 

 

t

 

 

 

 

 

D

 

 

 

 

 

 

 

i

r

 

 

 

P

 

 

 

 

 

 

 

 

o

 

 

 

 

 

 

 

 

NOW!

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

 

w Click

 

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

e

o

 

тов в памяти. Поскольку границы сег-

 

.

 

 

 

 

 

Под последним здесь подразумева-

 

 

p

df

 

 

 

g

.c

 

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

-xcha

 

 

ется последний подходящий сегмент

ментов всегда выравниваются на ве-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

файла, чем, как правило, является

личину 4 Кб, между концом кодового

 

 

 

 

 

 

 

 

 

сегмент инициализированных данных,

сегмента и началом сегмента данных

 

 

 

 

 

 

 

 

 

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

обычно можно наскрести некоторое

 

 

 

 

 

 

 

 

 

ализированных данных, занимающий

количество незанятого пространства.

 

 

 

 

 

 

 

 

 

ноль байт дисковой памяти. Конечно,

Впрочем, никаких гарантий на этот

 

 

 

 

 

 

 

 

 

можно внедриться и в него, но это бу-

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

 

 

 

 

 

 

 

 

 

дет выглядеть как-то странно.

ния подходят далеко не все файлы.

 

 

 

 

 

 

 

 

 

 

Приблизительный алгоритм внедре-

1. вирус открывает файл и, считы-

 

 

 

 

 

 

 

 

 

ния в конец ELF-файла выглядит сле-

вая его заголовок, убеждается, что

 

 

 

 

 

 

 

 

 

дующим образом:

это действительно ELF;

 

 

 

 

 

 

 

 

 

 

1. вирус открывает файл и, считы-

 

2. просматривая program header

 

 

 

 

 

 

 

 

 

вая его заголовок, убеждается, что

table, вирус находит сегмент с атрибу-

 

 

 

 

 

 

 

 

 

это действительно ELF;

òîì PL_LOAD è (PAGE_SIZE % p_filesz)

 

 

 

 

 

 

 

 

 

 

2. просматривая Program Header

>= virus_size; если же такого сегмента

 

 

 

 

 

 

 

 

 

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

нет, вирус отказывается от заражения;

 

 

 

 

 

 

 

 

 

сегмент с атрибутом PL_LOAD;

 

3. поля p_filez (размер на диске) и

 

 

 

 

 

 

 

 

 

 

3. найденный сегмент "распахивает-

p_memsz (размер в памяти) соответ-

 

 

 

 

 

 

 

 

 

ся" до конца файла и увеличивается на

ствующего сегмента увеличиваются

 

 

 

 

 

 

 

 

 

величину, равную размеру тела вируса,

на длину тела вируса;

 

 

 

 

 

 

 

 

 

что осуществляется путем синхронной

 

4. поле p_offset и факультативно

 

 

 

 

 

 

 

 

 

коррекции полей p_filez и p_memz;

sh_offset всех последующих сегмен-

 

 

 

 

 

 

 

 

 

 

4. вирус дописывает себя в конец

тов/секций увеличивается на длину

 

 

 

 

 

 

 

 

 

заражаемого файла;

тела вируса;

 

 

 

 

 

 

 

 

 

 

5. для перехвата управления вирус

 

5. поля e_phoff и факультативно

 

 

 

 

 

 

 

 

 

корректирует точку входа в файл

e_shoff ELF-заголовка увеличивается

 

 

 

 

 

 

 

 

 

(e_entry) либо же внедряет в истинную

на величину тела вируса;

 

 

 

 

 

 

 

 

 

точку входа jmp на свое тело (впрочем,

 

2. вирус внедряет себя в конец выб-

 

 

 

 

 

 

 

 

 

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

ранного сегмента;

 

 

 

 

 

 

 

 

 

отдельного долгого разговора).

 

6. для перехвата управления вирус

 

 

 

 

 

 

 

 

 

 

Теоретически вирус может внед-

корректирует точку входа в файл

 

 

 

 

 

 

 

 

 

риться в середину файла, дописав

(e_entry) либо же внедряет в истин-

 

 

 

 

 

 

 

 

 

свое тело в конец кодового сегмента

ную точку входа jmp на свое тело.

 

 

 

 

 

 

 

 

 

и сдвинув все последующие сегменты

 

Некоторые вирусы внедряются в об-

 

 

 

 

 

 

 

 

 

вниз, однако при этом ему потребует-

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

 

 

 

 

 

 

 

 

 

ся скорректировать все указатели на

чалом первого сегмента (во всяком

 

 

 

 

 

 

 

 

 

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

случае, пытаются это сделать). Одна-

 

 

 

 

 

 

 

 

 

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

ко большинство файлов "приклеива-

 

 

 

 

 

 

 

 

 

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

ют" свой первый сегмент к заголовку,

 

 

 

 

 

 

 

 

 

сам. Как вариант, перед передачей уп-

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

 

 

 

 

 

 

 

 

 

равления программе-носителю вирус

остается свободного места.

 

 

 

 

 

 

 

 

 

может "подтянуть" опущенные сег-

 

 

 

 

 

 

 

 

 

 

 

 

менты вверх, вернув их на свое закон-

ОБЩАЯ СТРУКТУРА

 

 

 

 

 

 

 

 

 

ное место, но, если файл содержит

И СТРАТЕГИЯ ВИРУСА

 

 

 

 

 

 

 

 

 

перемещаемые элементы или прочие

 

 

Конкретная структура вирусного

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

служебные структуры данных, вирусу

кода зависит от фантазии его разра-

 

 

 

 

 

 

 

 

 

их придется скорректировать тоже, в

ботчика и выглядит приблизительно

 

 

 

 

 

 

 

 

 

противном случае системный загруз-

так же, как и в Windows-вирусах.

 

 

 

 

 

 

 

 

 

чик необратимо исказит зараженный

Обычно вначале находится расшиф-

 

 

 

 

 

 

 

 

 

файл и тот откажет в работе. Все это

ровщик, за ним расположены модуль

 

 

 

 

 

 

 

 

 

слишком сложно для начинающих, а

поиска подходящих жертв, инжектор

 

 

 

 

 

 

 

 

 

потому вирусы подобного типа не по-

вирусного кода и процедура передачи

 

 

 

 

 

 

 

 

 

лучили большого распространения.

управления файлу-носителю.

 

 

 

 

 

 

 

 

 

 

Возможно внедриться в область, об-

 

Для большинства ELF-вирусов ха-

 

 

 

 

 

 

 

 

 

разованную выравниванием сегмен-

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

Структура файла echo из комплекта поставки FreeBSD 4.5. Между секциями .finit и

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

Структура файла ls из комплекта поставки RedHat 5.0. Между секциями .rodata и .data имеется 1000h байт, что с лихвой хватает для размещения даже высокотехнологичного вируса

57

Типичная структура вирусного кода

ность системных вызовов: sys_open (mov eax, 05h/int 80h) открывает файл; sys_lseek (mov eax,13h) перемещает файловый указатель на нужное место; old_mmap (mov eax, 5Ah/int 80h) проецирует файл в память; sys_unmap (mov eax, 5Bh/int 80h) удаляет образ из памяти, записывая на диск все изменения, а sys_close (mov eax, 06/int 80h) закрывает сам файл.

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

ЗАКЛЮЧЕНИЕ

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

Всплеск интереса к Linux пошел не на пользу этой операционной системе. В погоне за улучшениями ее превратили в решето, прикрутили "интуитивно понятный" графический интерфейс, но не предупредили пользователей, что прежде чем на- чать работать с системой, следует перелопатить тысячи страниц технической документации и прочи- тать хотя бы пару умных книжек, в противном случае зараза не заставит себя долго ждать. Чем больше народу перейдет на *nix, тем больше среди них окажется хакеров и вирусописателей, и тогда с *nix произойдет то же, что в свое время произошло с MS-DOS. Будут ли эти вирусы добродушными или злобными, зависит от тебя. 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

 

* N I X

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Í Å Ï Ð È Ñ Ò Ó Ï Í Û É

 

Антивирусная Энциклопедия Касперского содержит большое количество фактических ошибок в описании *nix-виру- сов.

Многие *nix-вирусы зависят от версии операционной системы, поэтому всякий исследователь вынужден держать на своей машине зоопарк осей.

Огромная

коллекция *nix-вирусов (и не только) имеется на vx.netlux.org.

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

 

 

 

 

 

 

 

 

 

 

F

 

 

 

 

 

 

t

 

 

 

 

 

 

 

 

 

 

 

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

 

 

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

58

ВЗЛОМ

ОПАСНАЯ ПРАКТИКА

w Click

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

Master-lame-master

 

w

 

 

 

 

 

 

 

o

w

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

.c

 

ОПАСНАЯ

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

* N I X

-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

 

 

 

 

Все взломы реальны, но не забывай, что информация дана только для ознакомления.

Во время эпидемии сломать сервер с помощью эксплоита для mod_php было легко. Яркий тому пример - удаленная атака www.nikita.ru.

Âленные в моем небольшом обзоре хакерских

этюдов, реальны и происходили в 2003-2004ñå взломы, представ-

годах. Имена злоумышленников, по понятным причинам, не называю. В этом материале я старался охватить все методы атак. Итак, приступим!

ВРЕМЯ ДЛЯ ИГР, ИЛИ ВЗЛОМ WWW.NIKITA.RU

Любой игроман знает Никиту. Это не геймерский персонаж, а обычная игровая компания, создающая интересные проекты. Я, например, любил погамать в Parkan, хроника империи. Быть может, ты знаешь эту фирму по другим игрушкам. Это не столь важно. Важно то, что год назад ресурс был взломан неизвестным хакером. Впро- чем, взлом выполнялся по тривиальной схеме, даже скрипткиди мог занять место нашего героя и порулить сервером известной компании. Вот как это было. От нечего делать хакер сканировал подсеть, где обычно хостились сервера крупных компаний. Хостером являлся «Ростелеком», у которого клиенты арендовали место в специальном серверном помещении. Хакер предполагал, что заказчики экономили на сисадминах, поэтому их сервера могли содержать дырки в своих демонах. Вскоре он засек примечательный сервер www.nikita.ru, который располагался в ростелекомовской подсети. Внимание хакера привлекли отсутствие фаервола и много- численные сервисы, крутящиеся на этой машине. Понятно, чем больше сервисов, тем вероятность наличия бага, приводящего к удаленному взлому, выше. Атака происходила как раз в ту пору, когда в публичных источниках появился эксплоит 7350fun, позволяющий поиметь www-права че- рез дырявый mod_php. Контент www.nikita.ru передавался браузеру через PHP-скрипты, поэтому стоило проверить версию модуля - быть может, хозяин машины даже не знал о баге. Чтобы выполнить подобную проверку, достаточно прителнетиться

на 80 порт и отправить стандартный HTTP-запрос, например, такой:

HEAD / HTTP/1.0.

Хакер проделал эту несложную работу, затем пару раз нажал Enter и проанализировал поле Server. Как раз в нем говорилось, что версия mod_php была очень древней - 4.0.6. Впрочем, старый релиз еще не сулил об успешном взломе. Например, если сервер крутится на FreeBSD, mod_php вообще неуязвим. Но попытка не пытка, поэтому сетевой партизан натравил эксплоит на сервер. Строка запуска была следующей:

./7350fun www.nikita.ru /sms/privet.php

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

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

Вот незадача - хакер хотел привилегий рута, а получил какого-то nobody. Права нужно было как-то поднимать. Выполнив команду cat /etc/*release, взломщик узнал, что на машине крутится RedHat 7.3. Затем последовала команда uname -a, которая показала версию ядра. Кернел 2.4.24 (именно это ядрышко находилось в системе) был уязвим. Примерно год назад хакерская группа isec выпустила знаменитый эксплоит для ядерной функции ptrace. Сплойт работал как надо и даже не требовал наличия псевдотерминала (как это делали его предшественники). Но хакера поджидал неожиданный облом. На сервере не было программы wget, которая бы позволила нашему герою слить эксплоит на взломанный шелл. Впрочем, взломщик быстро решил эту проблему: залил файл прямо через консоль с помощью нехитрой команды cat > isec.c << EOF. После отправки текста с помощью сочетаний ctrl+c, ctrl+v хакер набрал магическое слово EOF и полу- чил приглашение bash. Оставалось только скомпилировать и запустить эксплоит. К счастью нашего героя, на кернел не было наложено патчей, поэтому сетевой партизан без проблем получил рутовые права.

После взлома хакер должен позаботиться о собственной безопаснос-

Уязвимый PHP-скрипт

ХАКЕРСПЕЦ 10(47) 2004