Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #74, ФЕВРАЛЬ 2005 г.

Вторжение в госпиталь

Master-lame-master

Хакер, номер #074, стр. 074-046-1


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

У каждого хакера есть мечта. Один хочет спионерить базу с кредитками на лимон долларов, другой - дефейснуть сайт Microsoft. Я же несколько лет стремился взломать крупный сайт в зоне gov. Не знаю почему, но правительственные сайты всегда вызывали у меня большой интерес. Прошло много времени, прежде чем моя мечта успешно осуществилась.

Замутить сайт в зоне gov очень сложно. Подобные проекты могут содержать только серьезные государственные объединения. Соответственно, с таких ресурсов можно поднять очень ценную информацию, а затем продать ее за большие деньги. Правда, сломать подобный объект очень сложно, так как за ними следят профессиональные администраторы. Но «сложно» не означает «невозможно» - несколько месяцев назад мне удалось проникнуть в национальный госпиталь USA.

Раз ошибка, два ошибка

Признаюсь, что взлом не обошелся без помощи моего хорошего товарища. Все началось с того, что поздним вечером мне на e-mail свалилось интересное письмо. В нем друг радостно повествовал о том, что он написал продвинутый CGI-сканер и взломал с его помощью несколько сайтов. В списке присутствовал проект http://archive.nlm.nih.gov. Если бы проект не был государственным, я бы даже не обратил внимания на ссылку, однако сайт даже на домене четвертого уровня мог быть очень и очень привлекательным. Я отписал ему ответ, в котором попросил дать мне полное описание бага, фигурирующего на этом сайте. Позже выяснилось, что ошибка в скрипте проявлялась из-за невнимательности администратора или автора сценария. Я не буду описывать техническую часть бреши, потому что уже много раз писал о WWW-изъянах и изрядно задолбал всех этими багами :). Тебе важно знать, что если сценарий получит параметр image, то он расценит его значение как команду. Прежде чем рассказывать о моих дальнейших действиях, я напишу лирическое отступление, посвященное защите государственных проектов.

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

Операция «Проникновение»

Первое, что я сделал, – заюзал анонимный проксик и зашел на главную страницу какого-то подразделения государственного госпиталя. Затем обратился к бажному скрипту, передав ему параметр image=ls. В самом конце вернувшегося контента красовался листинг каталога. Далее я определил операционную систему и просмотрел список активных юзеров. В Штатах в то время было раннее утро, поэтому все админы крепко спали :).

В солярке, естественно, отсутствовал wget, но по многолетнему опыту я уже знал, что в системе существует скрипт GET, позволяющий выкачивать файл из любой точки мира. Из-за того что файрвол блокировал практически все входящие соединения, я воспользовался connback-бэкдором cbd. Он сам коннектится на нужный узел и выполняет любую команду. Я бережно залил его на удаленный сервер, затем проверил наличие компилятора и попытался собрать бинарник. Но, увы, у меня этого сделать не получилось. Сначала в моей голове промелькнула мысль о том, что злой админ запретил всем юзать gcc. Но мои сомнения развеялись, когда я закачал простенький сишный файл. Он скомпилился безо всяких осложнений. Далее мне пришла в голову еще одна идея: прицепиться на какой-нибудь солярный шелл и попробовать собрать cbd там. Порывшись в списке паролей на захваченные серверы, я нашел аккаунт на какую-то примитивную университетскую саноську. Сервер без лишних возмущений принял пароль и пустил меня внутрь. На этой машине отсутствовал не только wget, но и GET, поэтому мне пришлось транспортировать код бэкдора через буфер обмена. Когда cbd был залит, я выполнил запрос gcc cbd.c –o cbd и был послан на три буквы :). Компилятор выругался на отсутствие функций inet_addr, socket и т.п. Только тогда до меня доперло, что убогая SunOS по умолчанию не подключает сетевые библиотеки. Стоило мне прибавить парочку включений типа -lsocket –lnsl, как бинарник сразу же скомпилился.

Содержание  Вперед на стр. 074-046-2
<<< НАЗАД ||| ГЛАВНАЯ