Крис Касперски: разговоры о дефейсах

Xakep, номер #047, стр. 047-066-2


Т: Опиши технику дефейса.

К: Универсальных приемов нет. Все зависит от конкретной ситуации. К тому же, приводить код, заведомо зная, для чего им воспользуются - это уже соучастие в преступлении. Так что увольте!

Т: Можешь привести учебный пример, естественно - для сисадминов и сисопов? :)

К: Почему бы и нет? Вот классический (правда, сейчас редко где работающий) пример. Вводим в поле, спрашивающее ваш e-mail, нечто вроде Hack2000@mail.ru; mail Hack2000@mail.ru

Или другой пример. Сканируем порты жертвы (сойдет любой сканер), смотрим, что за ПО стоит там. Наугад тыкаем пальцем и попадаем, ну, скажем, в SMTP-сервер. Запускаем telnet и вводим адрес жертвы, указав в качестве порта 25-порт (на нем работает SMTP). На экране появляется что-то вроде:

220 gate.chiti.uch.net ESMTP Qflymail 1.2.3; Sun, 26 Mar 2000 16:21:53 +0300 (EEST)

"Ага!" - говорим мы и набираем в поисковике "Qflymail 1.2.3+Download", желая найти этот Qflymail в сети. Находим дистрибутив, к сожалению, не содержащий исходных текстов. Что ж! Запускам дизассемблер и углубляемся в анализ ассемблерного кода - если повезет, нам удастся найти ошибку, позволяющую захватить управление сервером. И такая ошибка действительно находится! Qflymail буферизирует свой вывод, но при этом размер буфера фиксирован и довольно невелик. Поэтому, если в ответ на HELO ввести слишком длинную строку, то сервер, возвращая наше приветствие к нам назад, "разорвет" свой буфер и затрет следующие за его концом данные. Остальное дело техники - пишем в машинных кодах маленькую программку, которая делает то, что нам нужно, и размещаем ее в строке, вводимой в ответ на приглашение HELO, с таким расчетом, чтобы при срыве стека затертый адрес возврата именно на нее передал управление.

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

Администратору защититься от таких атак нельзя... увы, серверное ПО крайне ненадежно и содержит множество ошибок, особенно если это халявное ПО no-name кодеров. Впрочем, и в ПО именитых фирм дыр также предостаточно, поэтому все решает вопрос случая. Кто первый найдет дырку - атакующий или эксперт по безопасности.

Т: Можешь объяснить, дизасм нужен только для анализа ПО, стоящего на сервере?

Назад на стр. 047-066-1  Содержание  Вперед на стр. 047-066-3