При создании системы Линус использовал единственный источник – книгу Мариса Баха «Разработка ОС UNIX».
Linux – это самая открытая и свободная система, но при этом ядро потенциально нарушает множество патентов, по мнению некоторых компаний (например, небезызвестной SCO).
Детище хакера-одиночки угрожает монополии софтверного гиганта.
Сервисная угроза / Атаки на конкретные службы
Докучаев Дмитрий aka Forb (forb@real.xakep.ru)
Никто не застрахован от ошибок. В сети всегда отыщется сервер с бажным демоном. Не важно, каким именно будет сервис. Важно то, что ты в любой момент можешь его взломать, заработав на этом системные привилегии.
Инертность системных администраторов впечатляет. Админы реагируют на уязвимость в определенной службе лишь тогда, когда баг перерастает в эпидемию. В обычных случаях никто не мешает хакеру поиметь хороший ресурс через уязвимость в сервисе. Однако получить shell после однократного применения эксплоита удается далеко не всегда. С твоего позволения, я рассмотрю особенности демонов включая их стойкость к различным эксплоитам.
Начнем с самого низкого системного порта. На двадцать первом порту расположился интересный демон 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/0x82-wu262.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». Когда-то я раскусил службу именно по этой отличительной особенности. Чего и тебе желаю :).
Следующий сервис, который я опишу, – это sshd. Он висит на 22-м порту и служит для удаленного подключения к серверу. Служба снабжена защитным алгоритмом шифрования, поэтому хакер никогда не отловит пароль, передающийся демону. Что касается стойкости ко взлому, то в наше время sshd практически неуязвим. Пару лет назад хакеры написали эксплоит x2 (www.security.nnov.ru/files/x2.tgz), который уже давно находится в публичных источниках. Он позволяет взять удаленного root’а. Это удавалось, если версия SSH совпадала с релизом, забитым в target. Эксплоит содержал аж 46 целей, правда, на практике удавалось получить root’а лишь в 5-6 из них. Что удивительно, даже сейчас можно встретить уязвимые версии демона (с 1.5-1.2.27 по 1.2.33) в различных локальных сетях. Стоит лишь получить доступ к маршрутизатору и просканить баннеры всех сервисов локальной сети. Кто знает, может тебе и повезет…
Сейчас мы займемся взломом telnetd. Несмотря на то что это старый сервис, он используется на многих unix-like-машинах. Почему же админы его не сносят? Все просто – они оставляют демон в качестве резерва, фильтруя его от внешнего мира. В этом случае ты не законнектишься на сервис, однако сможешь без проблем получить локального root’а, если атакуешь сервер другим способом. Впрочем, бывают и исключения. К примеру, в Солярке телнет – вообще сервис по умолчанию, поэтому 23-й порт на таких серверах светится всегда. От тебя требуется воспользоваться услугами одного из двух эксплоитов. Первый называется 7350logout (http://examples.oreilly.de/english_examples/networksa/tools/7350logout), он переполняет буфер в telnetd, засоряя его некорректными данными. Зловредный бинарник способен взломать службу в Солярках 5.6-5.8 за несколько секунд. Второй эксплоит с именем holygrail (http://examples.oreilly.de/english_examples/networksa/tools/holygrail.c) ломает Соляры 5.5-5.7 удаленно и 5.8 локально. Заюзать эти сплоиты несложно. Достаточно лишь передать им параметры хоста и версии операционки. Кстати, версия Солярки всегда указана в баннере telnetd, что в несколько раз облегчает твою работу.
Бажный демон telnet’а встречается в других системах. Например, во FreeBSD. Для определенных версий FreeBSD существует специальный эксплоит, переполняющий буфер в сервисе. Итог – удаленный root на уязвимой системе. Сейчас такой демон в глобале не встретить, раритетные системы существуют разве что в локальной сети какой-нибудь фирмы.
Служба постепенно замещается защищенным SSHD, поэтому судьба telnetd предрешена. Думаю, через пару лет ты вообще забудешь, что когда-то существовал подобный демон. А пока – атакуй сервера, админы которых не позаботились о безопасности.
Обратимся к самой популярной глобальной службе – WWW. Думаю, не стоит говорить, что наиболее часто используемый демон в unix-like-операционках называется Apache. Несмотря на его относительную стабильность баги в Apache существуют. Точнее, не в самом сервере, а в его многочисленных модулях. Начнем с самого популярного – mod_php. Баг довольно старый, но грех о нем не вспомнить. К тому же, бажные версии модулей можно встретить в сети до сих пор. Итак, ошибка в компоненте заключается в обработке внешних параметров. Если хакер пересылал хитрый запрос любому скрипту, модуль мог открыть shell с командным интерпретатором. Так и происходило, правда, перед этим эксплоит долго перебирал запросы. Еще один баг затаился в протоколе OpenSSL. Хакеры быстро реализовали эксплоит для mod_ssl, который позволял брать права WWW-сервера. После длительного ажиотажа многие админы обновили библиотеки SSL, в результате чего уязвимость потеряла свою остроту. Раритетный эксплоит называется OpenFuck, вторую его версию ты можешь скачать по адресу http://packetstormsecurity.org/0304-exploits/OpenFuckV2.c.