Хакер - Спецвыпуск журнала «Хакер» #47, октябрь 2004 г.
Одним зарутанным провайдером стало больше :). Все из-за того, что админ вовремя не настроил фаервол. Фаервол отпугивает хакера: если бы alpha следил еще и за ним, то взломщик вряд ли смог порутать WWW-сервер. Хотя кто знает, ведь существует много способов обхода даже самых навороченных фаерволов…
Вторжение к буржуйским студентамБывает, что хакер находит баг, который не позволяет поднять привилегии без использования какого-нибудь заковыристого метода. Так случилось при взломе сервера одного иноземного университета http://trinity.edu. Хакер даже не знал, в какой точке планеты этот университет, он ломал сервер по заказу. Надо сказать, взлом не обошелся без использования самого хардкорного метода. Сперва хакер начал сканировать Web. Так вышло, что на роутере стоял фаервол, фильтрующий все порты, кроме 21, 22 и 80. Баннер FTPD показал, что на сервере крутится SunOS 5.9, которая по тем временам была самой надежной из Солярок. Соответственно, первый метод (использование эксплоита) отпадал сразу. Итак, хакер начал с WWW. Бегло просмотрев скрипты, состряпанные студентами, взломщик наткнулся на занятный сценарий с названием view.cgi, которому передавался всего один параметр – название файла. По-видимому, скрипт создавался, чтобы показывать сишные проекты (когда взломщик ткнул по ссылке, перед ним появился исходник файла project). Особо не надеясь на успех, наш герой изменил значение параметра на /etc/passwd, но это привело к фатальной ошибке. Интерпретатор ругался на то, что не может найти файл /www/students/cgi/projects/etc/passwd.cpp. Потирая руки, сетевой партизан еще раз поменял значение опции на «../../../../../etc/passwd%00», и сервер без проблем показал файл с аккаунтами. Почему так произошло? Все просто: из-за нулевого байта расширение «.cpp» не было приплюсовано к открываемому документу – функции open() передавался файл /etc/passwd%00.cpp, что фактически открывало системный passwd.
Взломщик увидел, что в системе прописаны порядка сотни учетных записей. В таком случае целесообразно применить перебор на пару «login:login», ведь особо одаренные студенты любят устанавливать пароль, равный логину (либо не задавать его вообще). Хакер скормил имена студентов специальному скрипту и передал список пар переборщику Brutus. В качестве сервиса был выбран FTP, ибо другие порты фильтровались сетевым экраном. Спустя пару минут, Brutus сообщил, что несколько студентов действительно выбрали пароль, равный логину. Не медля наш герой прицепился к шеллу по SSH и был готов к повышению своих прав.
Поиск информации в логах ни к чему путному не привел. Доступ к историям команд админов был закрыт от посторонних глаз, логи студентов-ламеров не содержали ничего интересного. Наконец, взломщик вспомнил, что пароль может содержаться в .htpasswd. Команда locate .htpasswd показала три подобных конфига. Два из них имели атрибут 400, а последний не содержал полезных хэшей (в документе хранилась строка guest:пароль, но юзер guest вообще не присутствовал в /etc/passwd). Второй поисковый запрос был направлен на нахождение конфигов .htaccess. Их было больше, и почти все хакер мог посмотреть. В одном из таких файлов наш герой нашел ссылку на базу с паролями, который назывался .secure. В нем он обнаружил все юзерские хэши. Этакий дубликат /etc/shadow. Оставалось взять из него рутовый пароль и расшифровать его прогой John The Ripper. Джоник запускался на мощной 4-процессорной тачке, которую хакер купил за $100 якобы для математических вычислений :). Брутфорсер запускался в трех режимах – single, wordlist и all. Стартовый скрипт, который обращался к John, содержал всего три строки.
start.sh – запуск John The Ripper в разных режимах
./john -single passwd > > crk_passwd
./john -w:big_wordlist.txt -rules passwd > > crk_passwd
./john -i:all passwd > > crk_passwd
Загрузив все четыре камня, взломщик отошел от компа, надеясь, что к его возвращению пароль успешно раскриптуется. Спустя час пароль действительно был расшифрован. Взломщику повезло: в качестве пароля выступало слово «Street00». Кстати, подобное словечко было получено благодаря опции -rules, которая извращает словарные слова, подставляя к ним всякие нулики и меняя регистр букв. Вот, собственно и все. Теперь злоумышленник вошел на сервер под рутом, благо sshd разрешал подобные операции. Проверив, что пароль действительно совпадает с системным, наш герой обменял системный аккаунт на пару сотен WMZ.
Хочешь еще?Все комбинации методов взлома в рамках одного материала не описать. Бывают случаи, когда взломщику приходится удивляться неработоспособности атак, отработанных годами. Подобные аномалии случаются, если на сервере стоит какая-нибудь антихакерская приблуда (например, IDS). Случается, что бдительные админы сразу пресекают хакерские действия, отключая узел от сети. Если хочешь быть в курсе грамотных взломов, рекомендую читать ежемесячную рубрику «Нашумевшие истории крупных взломов» в журнале Х.
Как видишь, если долго мучиться, что-нибудь получится. Но чтобы добиться этого «что-то», хакер должен обладать некоторыми качествами:
1. Внимательность. Взломщик никогда не упустит деталей, даже мелких. Из мелочей может сложиться довольно неплохой результат. Это видно в случае, когда хакер грамотно пропарсил .bash_history и обнаружил там рутовый пароль.
2. Невидимость. Хакер должен заботиться о собственной безопасности, поэтому в его «реквизитах» обязательно присутствуют такие софтины, как SocksCap и SocksChain. Помимо этого, грамотный взломщик никогда не забывает чистить за собой логи.
3. Упертость. Нужно никогда не терять надежду и насиловать сервер по полной программе. Как говорится, настоящий хакер набирает пароль до тех пор, пока сервер не ответит, что он правильный :).
Все взломы реальны, но не забывай, что информация дана только для ознакомления.
Во время эпидемии сломать сервер с помощью эксплоита для mod_php было легко. Яркий тому пример – удаленная атака www.nikita.ru.
John The Ripper умеет осуществлять перебор на одни цифры. Для этого используй параметр -i:digits.
Brutus умеет производить брутфорс как по FTP-, так и по HTTP-протоколу (перебор значений различных форм). Кроме этого, переборщик позволяет подключать внешние плагины, которые ты можешь написать сам :).
Руткит shv4 ты можешь найти и в публичных источниках. Правда, это не так-то просто сделать :).
Дырявые скрипты в наше время не редкость. Как правило, хакеры находят их по нестандартным поисковым запросам.
Хорошая альтернатива Brutus2 – программа hydra. Она написана командой THC и полностью адаптирована под консоль *nix.
В логе http-запросов содержатся интересные параметры, в которых вполне может находиться пароль для какого-нибудь админского ресурса.
Охота за багами / Автоматизированный сбор уязвимостей
Докучаев Дмитрий aka Forb ([email protected])
Несмотря на то что багов в сети крутится огромное количество, поиск уязвимой машины вручную – дело достаточно нудное и долгое. Время, как известно, деньги, поэтому логично, что взломщики процесс поиска всячески автоматизируют. И воображение их не ограничивается банальным сканером портов под Windows :).
Работу хакера выполняют многочисленные сканеры безопасности, рутеры и прочие относительно интеллектуальные утилиты. Они круглыми сутками трудятся на шеллах и десктопах, старательно записывая каждую найденную уязвимость в журнал.
О том, какие реализации автоматизированного поиска багов встречаются, я поведаю далее.
Их разыскивают хакерыНачнем с классификации софта для поиска уязвимостей.
Самыми популярными программками являются авторутеры. В их задачу входит сканирование указанного диапазона адресов на предмет уязвимой службы, проникновение на сервер с помощью эксплоита, добавление нового пользователя с 0-уидом и запись информации в журнал. Главным недостатком подобного софта является огромное количество следов (если можно назвать следом нового юзера с правами админа :)), им оставляемых на машине-жертве. Избавиться от этого достаточно серьезного изъяна можно путем модифицирования shell-кода (подробнее об этом читай в Спеце #08.04(45)), например, встроив в него код, создающий LKM для сокрытия присутствия хакера и т.п.
Не менее распространенными в хакерских кругах являются сканеры безопасности. В отличие от авторутера, сканер – менее активный инструмент, после обнаружения уязвимости он оповещает о ней злоумышленника (интерактивно либо через лог), а не использует тотчас же эксплоит. Предмет сканирования может быть любым: www-скрипт, порт дырявого демона, хост или даже целая подсеть!
Помимо сканеров и «комплектов злых бинарников» существуют гибкие эксплоиты. Принцип их работы немного схож с алгоритмом авторутера, однако весь вражеский код зашит в один-единственный файл. Гибкий эксплоит тоже сканирует некоторый диапазон адресов на предмет уязвимости и применяет свой арсенал для всех найденных тачек. Под Windows отличным примером такой программки служил бы kaht2 (RPC DCOM-эксплоит).