Содержание статьи
Легальный взлом. Можно ли заниматься любимым делом и прокачивать свои навыки в пентесте, не нарушая закон? Где можно проводить инъекции и экспериментировать со сплоитами, не думая о том, включен VPN или нет? Как опробовать полученные знания, пробравшись от бага в скрипте до самого рута в системе? Способ есть!
Нас часто спрашивают: «Как научиться взлому?». Ответ прост: так же, как и любому другому предмету. Сначала ты глубоко и вдумчиво изучаешь теорию, затем приступаешь к практике. Разница лишь в том, что для изучения, скажем, математики полно готовых задачников для тренировки, а для взлома — их вроде бы и нет. «Как это нет? А любая шароварная программа, любой ресурс в Сети — чем не площадка для взлома?» — возмутишься ты. Это, конечно, вариант. Только, во-первых, начав эксперименты в подобном ключе, ты имеешь все шансы их быстро и закончить. А, во-вторых, не имея за плечами даже минимального опыта, сразу брать быка за рога, пытаясь анализировать серьезные ресурсы — все равно что бросаться на амбразуру. Занятие, мало того, что опасное, но еще и бестолковое. Есть вариант лучше!
Многие компании, занимающиеся обучением специалистов по информационной безопасности, готовят всевозможные кейсы. Те же самые задачки по математике, но только в контексте пентеста. Аналогичные решения предлагают и просто энтузиасты, демонстрируя на них различные приемы взлома. За основу часто берут старые версии известных продуктов, в которых полно неисправленных уязвимостей, иногда такие квесты пишут с нуля — так или иначе, в них намеренно встроили баги, которые можно удачно эксплуатировать. Некоторые из площадок хостятся прямо в Сети, предлагая пройти своеобразный ][-квест (такой, как наш, ring0cup.ru), другие предполагают установку на свой собственный веб-сервер, третьи распространяются в виде образа виртуальной машины — ее просто надо запустить. Во всем разнообразии этих проектов нам сегодня и предстоит разобраться.
Damn Vulnerable Web app
Обычно создатели веб-приложений всячески хвастаются высокой надежностью свого продукта, кичатся встроенным WAF (файрволом для веб-приложений) и стыдливо отшучиваются, если в их сценариях находят очередной баг. Разработчики Damn Vulnerable Web App, напротив, категорически заявляют, что установка на живом веб-сервере неприемлема, потому как приложение… «чертовски уязвимо» :). Все самые распространенные ошибки горе-программистов собраны в одном месте, чтобы ты смог потренироваться на проведении самых разных атак. В качестве платформы выбрана наиболее популярная связка PHP/ MySQL, по этой же причине мы начинаем наш обзор именно с DVWA. Если хочешь сэкономить время на настройке веб-сервера, все отлично заведется на готовых сборках: Denwer'е (www.denwer.ru) или XAMPP'е (www.apachefriends.org/xampp-en.html). Собственно, необходимо лишь распаковать файлы в public html-каталог и обратиться в браузере к http://127.0.0.1/dvwa/index.php. Не придется даже ковыряться с ручным созданием базы: в меню есть кнопка «Create / Reset Database».
Но если все же захочется что-то подкрутить, то это можно сделать в конфиге /config/config. inc.php. Еще один момент касается настройки PHP: надо убедиться, что в PHP.ini внесены все изменения.
magic_quotes_gpc = Off
allow_url_fopen on
allow_url_include on
Проект постоянно обновляется, а в конце 2009 года он был даже приобретен инвесторами, так что вполне возможно, что вскоре нас ждут серьезные улучшения.
Mutillidae
Автор этого проекта поначалу собирался снять для новичков видеоуроки по пентесту веб-приложений с объяснением основ пентеста. Когда же дело дошло до поиска подходящей платформы для демонстрации различных типов уязвимостей, автор попал впросак. Подходящей платформы попросту не нашлось: большинство решений оказались слишком сложны для объяснения азов новичкам, только начинающим знакомство с проблемами безопасности веб-приложений.
Так и родился проект Mutillidae. Автор взял список из десяти типов уязвимостей OWASP Top 10: SQL-инжекции, XSS, CSRF и так далее — и написал скрипты так, чтобы желающий мог попробовать свои силы в эксплуатировании каждой из них. Код намеренно написан очень просто, чтобы облегчить понимание сути уязвимостей. Как и DWVA, проект легко устанавливается под виндой и туксом даже на XAMPP-сервере, а необходимые базы данных создаются с помощью опции «Setup/ reset the DB» из главной страницы проекта.
Автор предлагает последовательно читать информацию о каждой уязвимости из OWASP Top 10 (www.owasp.org/index.php/OWASP_Top_Ten_Project) и, разобравшись в вопросе, пробовать свои силы на Mutillidae. Если эксплуатация тебе удалась, то во второй части квеста баг надо пофиксить.
Webgoat
Когда автор Mutillidae говорил о том, что многие из хакерских квестов не подходят для новичков, он имел в виду, в том числе, разработку WebGoat. Проект примечателен тем, что развивается в рамках уже знакомого проекта OWASP (Open Web Application Security Project), под эгидой которого выпускается большое количество security-утилит. Но если два предыдущих проекта предлагают играться с PHP-приложениями, то здесь ты столкнешься с кодом, написанным на Java. Для хостинга J2EE-приложений используется стандартный TomCat-сервер — к счастью, он уже включен в сборку WebGoat и настроен так, чтобы запустить его можно было максимально просто:
- Сначала распаковываем WebGoat-OWASP_ Standard-x.x.zip в рабочую директорию.
- Стартуем демон TomCat'а, запустив webgoat.bat. Для этого в системе должен быть установлен свежий J2EE.
- Переходим в браузере по ссылке http://localhost/WebGoat/attack.
- Авторизируемся как guest/guest.
- Пробуем свои силы.
Задания, как правило, привязаны к реальной проблеме. Например, в одном из квестов предлагается провести SQL-инжекцию с целью украсть список поддельных кредитных номеров. Некоторые задания сопровождаются учебной составляющей, показывающей пользователю полезные хинты и уязвимый код.
Securibench
Когда пройдешь все замысловатые квесты WebGoat, можешь перейти на более сложный проект Stanford SecuriBench. Дело в том, что разработчики не писали его с нуля, умышленно оставляя слабые места — вместо этого они пошли по другому пути и собрали подборку из 8 реально существующих программ. Все они написаны на Java: форумный движок jboard, блогерский сценарий blueblog и так далее. Само собой, в качестве образцов были выбраны достаточно старые и сырые релизы, которые не раз светились в багтраках. И тем не менее, это вполне реальные приложения, создатели которых задумывались о защите, а потому эксплуатировать бреши будет уже не так просто. По сути, SecuriBench — всего лишь сборник уязвимых программ, поэтому каждую из них тебе придется устанавливать и настраивать вручную, предварительно позаботившись о настройке сервера Tomcat. Примечательно, что проект родился в ходе работы авторов над утилитами для статического анализа кода, поэтому если будешь искать подопытных кроликов, чтобы потестить тулзы для исследования сорцов, то приложения из SecuriBench — как раз то, что надо.
Moth
Еще один сборник реально существующих приложений, но в совершенно ином виде представлен в проекте Moth. От других проектов его отличает то, что распространяется он в виде образа для виртуальной машины, в которой установлена Ubuntu 8.10. Собственно, все, что потребуется для запуска, — это любой из продуктов VMware, способный запустить виртуальную машину, в том числе бесплатный VMware Player (www.vmware.com/products/player). Изначально Moth настроен на получение всех сетевых настроек от DHCP-сервера, поэтому надо убедиться, что сетевые параметры в настройках виртуальной машины выставлены соответствующе (у меня, к примеру, IP выдает роутер, поэтому я просто выбрал режим Bridged, выпускающий виртуальную машину в физическую сеть).
Далее достаточно запустить виртуалку, залогиниться в систему (moth/moth), посмореть ifconfig'ом полученный системой IP и обратиться к админке Moth через браузер: http://<moth-ip_address>
. Ты попадешь на главную страницу, откуда можно перейти на предустановленные на сервер скрипты известных продуктов: блогерский движок WordPress 2.6.5, форум Vanilla 1.1.4 и другие разработки на базе PHP/MySQL, а также один проект на Java + Tomcat6 + MySQL. Для усиления реальности происходящего реализованы три способа для обращения к скриптам: напрямую, через mod_security, и через PHP-IDS:
-
http://moth/w3af/audit/xss/simple_xss.php?text=<script>alert('xss');</script>
-
http://moth/mod_security/w3af/audit/xss/simple_xss.php?text=<script>alert('xss');</script>
-
http://moth/php-ids/w3af/audit/xss/simple_xss.php?text=<script>alert('xss');</script>
Mod_security и PHP-IDS представляют из себя WAF (Web Application Firewall) и предлагают дополнительную защиту для веб-приложений (подробнее в нашей статье «Файрвол для веб-приложений» в октябрьском номере «Хакера»).
Каждый из них ведет подробный лог подозрительных запросов, поэтому это еще и отличный способ разобраться, как эти самые WAF работают и как можно их обмануть. Сам проект обновляется, и авторы обещают в ближайшем будущем добавить уязвимые приложения, написанные на Python и Ruby.
Тестовые площадки продуктов по ИБ
Сам дистрибутив Moth создавался со вполне конкретной целью. Так же, как мы собирали систему для удобного тестирования антивирусов с помощью виртуальных машин, так и автор Moth компоновал дырявые вебпроекты, чтобы иметь возможность удобно тестировать автоматические сканеры безопасности. В результате у него получилась платформа, на которой он смог протестировать коммерческие продукты и открытый фреймворк w3af (w3af.sourceforge.net), специально разработанный для упрощения поиска и эксплуатирования уязвимостей в веб-приложениях. Тут надо сказать, что производители коммерческих сканеров безопасности и сами активно занимаются созданием подобных площадок для проведения полевых испытаний. В конце концов, где еще им отлаживать свои продукты и демонстрировать их возможности клиентам? Так, разработчики Acutenix WVS предлагают сразу три сайта на разных платформах: testphp.acunetix.com, testasp.acunetix.com, testaspnet.acunetix.com.
Тестовый ресурс от HP (в теории для их HP WebInspect) находится по адресу zero.webappsecurity.com. Площадка для взлома от разработчиков IBM Rational AppScan располагается на demo.testfire.net. Не надо ломиться туда для поиска багов вручную, а вот попробовать на этих проектах автоматические сканеры в действии можно вполне.
Уязвимые ОС
А вот создатель pWnOS решил не ограничиваться только веб-приложениями и решил выпустить на основе виртуальной машины уязвимую систему, поставив перед тобой задачу «получи root'а». Легенда следующая: тебя, как пентестера, нанимают для изучения защищенности одного из выделенных серверов. Вот тут и начинается игра: поиск живых хостов nmap'ом, поиск уязвимых сервисов, получение сертификатов для доступа по SSH, поиск локальных сплоитов и так далее — короче, рай для новичков.
Инструкции, как заставить это работать под VirtualBox'ом, советы и рекомендации по прохождению можно найти на форуме forums.heorot.net.
О проекте Damn Vulnerable Linux (www.amnvulnerablelinux.org) мы писали уже не раз. Это, пожалуй, наиболее раскрученная разработка из всех сегодня представленных. В своем дистрибутиве разработчики намеренно оставили бажные демоны, на которых можно легко применить сетевые сплоиты, уязвимые сценарии, позволяющие выполнить наиболее распространенные виды атак (SQL-инъекция, XSS и т.д.), и просто недостаточно защищенные приложения, специально для того, чтобы желающие могли потренироваться эти самые уязвимости находить. Система распространяется в виде LiveCD-образа и легко запускается под виртуальной машиной VMware или VirtualBox. Другой проект De-ICE PenTest состоит уже не из одной системы, а из трех. Легенда такова: генеральный директор некой компании должен провести пентест своей ИТ-инфраструктуры, чтобы отчитаться перед советом директоров. Будучи уверенным, что с безопасностью и так все в порядке, он для галочки нанимает новичка и поручает ему сделать пентест одного из серверов. Когда ты справишься с этим заданием, тебе предложат сделать более сложный пентест другой системы — это второй квест. Когда и здесь обнаруживаются критические ошибки, директор отдает тебе на растерзание диапазон IP-адресов и говорит: «Делай, что хочешь!». Каждое из трех заданий распространяется в виде LiveCD и также отлично запускается под виртуальными машинами. Инструкции по настройке и шпаргалки по прохождению ищи на de-ice.hackerdemia.com/doku.php.
Крякинг и реверсинг
На протяжении всей предыдущей части материала мы касались исключительно веб-взлома, обходя стороной взлом программ. Что же делать тем, кто хочет удариться в реверсинг? К счастью, в этой области проблем с квестами никогда не было. Начинающие cracker’ы и опытные реверсеры могут развлекаться на небольших программах, которые специально созданы для того, чтобы их взломали. Я говорю о так называемых crackmes’ах, которые можно скачать, например, с www.crackmes.de или www.tdhack.com. Для удобства они рассортированы по сложности: начиная от самых простых заданий, специально рассчитанных на тех, кто только осваивает отладчик, и заканчивая сложными задачками с массой антиотладочных трюков, которые могут поспорить с серьезной защитой у настоящих программ. Упершись в тупик, всегда можешь попросить помощи у огромного компьюнити, к тому же для многих из крякмисов выложены мануалы по прохождению.
Кстати говоря, если ты действительно решился взяться за cracking, рекомендую прочитать наш старый материал «Cracking — это просто» из ][ #08/2005. Все основные моменты и простейшие приемы мы рассматривали на одной из популярных подборок crackmes'ов.
Разработка сплоитов
Если внимательно изучать описания последних сплоитов, несложно заметить, что большинство из них эксплуатируют старые версии приложений, которые по-прежнему остаются в ходу. Самый ходовой пример — IE8, запущенный под Vista/W7, практически не ломают, а для IE 6/7 под XP даже публичные сплоиты выходят каждый месяц. Вот с «осла» и начнем: где взять старую версию, если система давно обновила его до «восьмерки»? Тебе поможет Internet Explorer Collection (finalbuilds.edskes.net/iecollection.htm). С помощью одного инсталлятора ты сможешь разом установить все версии Internet Explorer и в случае необходимости быстро переключаться между ними. Программа прописывает в системе различные движки IE и делает это так, чтобы они не конфликтовали между собой. Правда надо иметь в виду, что для старых версий браузера могут возникнуть проблемы с их запуском под последними версиями винды. Понятно, а как быть с другими браузерами и вообще любыми программами: где найти старую уязвимую версию? Конечно, уязвимости лучше искать в новых версиях — это как-то правильнее :).
Но если все-таки хочешь поэкспериментировать с готовыми сплоитами, разобраться что к чему, тебе помогут сервисы www.oldapps.com и oldversion.com, где хостятся устаревшие версии программ. Можно, например, скачать полсотни различных версий Winamp'а, начиная с релиза 0.2 — только представь, сколь давно это было.
Зачем?
Можно сколько угодно читать готовые инструкции и вслед за кем-то повторять якобы «взлом». Или скачивать готовые сплоиты и пытаться применить их, абсолютно не понимая, что они делают. Но разве тебе это интересно? Ведь если разобраться во всем, а каждый шаг делать с пониманием, то и удовольствия от процесса ты получишь гораздо больше. Этот материал едва ли будет полезен опытным пентестерам, но если ты только начинаешь свой путь, возьми эти решения на заметку. Более эффективного и безопасного способа освоить азы пентеста не существует.
Links
Есть проекты, не попавшие в обзор.
- The Butterfly Security Project: sourceforge.net/projects/thebutterflytmp
- Старенькие hackme квесты от компании Foundstone: www.foundstone.com
- OWASP InsecureWebApp: www.owasp.org/index.php/Category:OWASP_Insecure_Web_App_Project
- BadStore: www.badstore.net
- OWASP SiteGenerator: www.owasp.org/index.php/Owasp_SiteGenerator
Головоломки для хакера
Один из самых интересных способов развлечься со взломом, поломав голову над хакерскими задачками — это хакерские квесты. Некоторые из таких квестов ведут рейтинг, в котором учитывается время решения задачки и количество неправильных попыток для ввода результата. Если ты когда-нибудь пробовал проходить наши ][-конкурсы, то понимаешь, о чем идет речь. Несколько квестов и сейчас доступны в рамках проекта ring0cup.ru, так что если хочешь попробовать силы в поиске автора зловредного трояна, утащив у него архив с логами, или в расшифровке сдампленного трафика, в котором передавались финансовые потоки предприятия, то добро пожаловать. Ресурсов, предлагающих такие квесты, довольно много — кратко расскажу о некоторых из них:
- mod-x.com. В этой онлайн игре ты становишься одним из агентов структуры ModX, тебе даются задания и ты должен их проходить. Задания разделяются на разные уровни сложности, поэтому чем дальше у тебя получится пройти, тем интереснее будет играть.
- hax.tor.hu/welcome. В этом квесте сначала придется пройти разминку, выполнив 5 простых заданий.
- quest.fsb-my.name/index.php. Очень неплохой квест, предлагающий задания на самые разные темы, в том числе крякмисы.
- vicnum.ciphertechs.com. Соревнование «Capture the flag», включающее большое количество ][-заданий. Кстати, ты можешь узнать, как устроена игра изнутри — исходники проекта открыты (sourceforge.net/projects/vicnum).
Список можно продолжать и дальше. Если этого перечня тебе окажется мало, а вероятно, так и будет, рекомендую ресурс hackergames.net, на нем собрано более 150 ссылок на квесты и челленджи с комментариями игроков, а также мануалами по прохождению.