Обзор бесплатных инструментов для пентеста web-ресурсов и не только v2
Как-то давно я уже писал об этом, но немного скудно и сумбурно. После я решил расширить список инструментов в обзоре, добавить статье структуры, учесть критику (большое спасибо Lefty за советы) и отправил ее на конкурс на СекЛаб (и опубликовал ссылку, но по всем понятным причинам ее никто не увидел). Конкурс закончен, результаты объявили и я с чистой совестью могу ее (статью) опубликовать на Хабре.
Бесплатные инструменты пентестера веб-приложений
В данной статье я расскажу о наиболее популярных инструментах для пентестинга (тестов на проникновение) веб-приложений по стратегии «черного ящика».
Для этого мы рассмотрим утилиты, которые помогут в данном виде тестирования. Рассмотрим следующие категории продуктов:
Сетевые сканеры
Сканеры брешей в веб-скриптах
Эксплойтинг
Автомазация инъекций
Дебаггеры (снифферы, локальные прокси и т.п.)
Некоторые продукты имеют универсальный «характер», поэтому буду относить их к той категории, в которой они имеют больший результат (субъективное мнение).
Сетевые сканеры.
Основная задача — раскрыть доступные сетевые сервисы, установить их версии, определить ОС и т. д.
Nmap Nmap («Network Mapper») это бесплатная утилита с открытым исходным кодом для анализа сети и аудита безопасности систем. Яростные противники консоли могут использовать Zenmap, это GUI к Nmap’у.
Это не просто «умный» сканер, это серьезный расширяемый инструмент (из «необычных фишек» — наличие скрипта для проверки узла на наличие червя "Stuxnet" (упоминалось тут). Типовой пример использования:
nmap -A -T4 localhost
-A для определения версии ОС, сканирования с использованием скриптов и трассировки
-T4 настройка управления временем (больше — быстрее, от 0 до 5)
localhost — целевой хост
Что-нибудь по жестче?
nmap -sS -sU -T4 -A -v -PE -PP -PS21,22,23,25,80,113,31339 -PA80,113,443,10042 -PO --script all localhost
Это набор опций из профиля «slow comprehensive scan» в Zenmap. Выполняется довольно долго, но и дает в итоге более детальную информацию, которую можно узнать о целевой системе. Справочное руководство на русском языке, если решили углубиться, а так же советую перевод статьи Beginner’s Guide to Nmap.
Nmap получил статус “Security Product of the Year” такими журналами и сообществами как Linux Journal, Info World, LinuxQuestions.Org и Codetalker Digest. Интересный момент, Nmap можно увидеть в фильмах «Матрица: Перезагрузка», «Крепкий орешек 4», «Ультиматум Борна», «Хоттабыч» и других.
IP-Tools IP-Tools — эдакий набор из разных сетевых утилит, поставляется с GUI, «посвящена» windows юзерам.
Сканер портов, общих ресурсов (расшаренные принтеры/папки), WhoIs/Finger/Lookup, telnet клиент и многое другое. Просто удобный, быстрый, функциональный инструмент.
Нет особого смысла рассматривать остальные продукты, так как очень много утилит в данной области и все они имеют схожий принцип работы и функционал. Все же самым часто используемым остается nmap.
Сканеры брешей в веб-скриптах
Пытаются найти популярные уязвимости (SQL inj, XSS, LFI/RFI и т.д.) или ошибки (не удаленные временные файлы, индексация директорий и т.п.)
Acunetix Web Vulnerability Scanner Acunetix Web Vulnerability Scanner — по ссылке заметно что это xss сканер, но это не совсем так. Бесплатная версия, доступная по ссылке дает довольно большой функционал. Обычно человека, запустившего этот сканер первый раз и впервые получив отчет по своему ресурсу охватывает небольшой шок, и вы поймете почему, сделав это. Это очень мощный продукт для анализа просто всевозможных уязвимостей на сайте и работает не только с привычными нам сайтами на php, но и на других языках (хоть отличие в языке не показатель). Инструкцию описывать особо смысла нет, так как сканер просто «подхватывает» действия пользователя. Что-то похожее на «далее, далее, далее, готово» в типичной установке какого-либо ПО.
Nikto Nikto это Open Source (GPL) веб-сканер. Избавляет от рутинной ручной работы. Ищет на целевом сайте неудаленные скрипты (какие-нибудь test.php, index_.php и т.п.), инструменты администрирования бд (/phpmyadmin/, /pma и подобные) и т.д., то есть проверяет ресурс на самые частые ошибки, возникшие обычно из-за человеческого фактора.
Плюс, если находит какой-нибудь популярный скрипт, то проверяет его на вышедшие эксплоиты (которые есть в базе).
Сообщает о доступных «нежелательных» методах, типа PUT и TRACE
Ну и так далее. Очень удобно, если ты работаешь аудитором и каждый день проводишь анализ сайтов.
Из минусов хотел бы отметить высокий процент ложных срабатываний. К примеру если ваш сайт вместо 404 ошибки (когда она должна возникнуть) отдает все время главную, то сканер скажет, что на вашем сайте все скрипты и все уязвимости из его базы. На практике такое не так часто встречается, но как факт, многое зависит от структуры вашего сайта.
Классическое использование:
./nikto.pl -host localhost
Если нужно быть авторизованным на сайте, можно выставить cookie в файле nikto.conf, переменная STATIC-COOKIE.
Wikto Wikto — Nikto под Windows, но с некоторыми дополнениями, как «нечеткой» логикой при проверке кода на ошибки, использование GHDB, получение ссылок и папок ресурса, реал-таймовым мониторингом HTTP запросов/ответов. Wikto написан на C# и требует .NET framework.
skipfish skipfish — сканер веб-уязвимостей от Michal Zalewski (известного под ником lcamtuf). Написан на С, кроссплатформинен (для Win нужен Cygwin). Рекурсивно (и очень долго, порядка 20~40 часов, хотя последний раз у меня работал 96 часов) обходит весь сайт и находит всевозможные бреши в безопасности. Так же генерирует очень много трафика (по несколько гб входящего/исходящего). Но все средства хороши, тем более, если есть время и ресурсы.
Типичное использование:
w3af w3af — Web Application Attack and Audit Framework, open-source сканер веб-уязвимостей. Имеет GUI, но можно работать из под консоли. Точнее, это фреймворк, с кучей плагинов.
Рассказывать про его преимущества можно долго, лучше испробовать его :]
Типичная работа с ним сводится к выбору профиля, указания цели и, собственно, запуска.
Mantra Security Framework Mantrais a dream that came true. Коллекция свободных и открытых инструментов по ИБ, встраиваемых в веб-браузер.
Очень полезны при тестировании веб-приложений на всех этапах.
Использование сводится к установке и запуску браузера.
На самом деле очень много утилит в данной категории и довольно сложно выделить из них конкретный список. Чаще всего каждый пентестер сам определяет набор нужных ему инструментов.
Эксплойтинг
Для автоматизированного и более удобного использования уязвимостей в программном обеспечении и скриптах пишут эксплойты, которым нужно только передать параметры, чтобы использовать брешь в безопасности. А есть продукты, которые избавляют от ручного поиска эксплоитов, да и еще и применяют их «на лету». Об этой категории сейчас и пойдет речь.
Metasploit Framework The Metasploit® Framework — эдакий монстр в нашем деле. Он столько умеет, что инструкция выйдет на несколько статей. Мы рассмотрим автоматический эксплоитнг (nmap + metasploit). Суть такова, Nmap проанализирует нужный нам порт, установит сервис, а metasploit попробует применить к нему эксплоиты, исходя из класса сервиса (ftp, ssh и т.п.). Вместо текстовой инструкции я вставлю видео, довольно популярное на тему autopwn
А можно просто автоматизировать работу нужного нам эксплойта. К примеру:
msf > use auxiliary/admin/cisco/vpn_3000_ftp_bypass
msf auxiliary(vpn_3000_ftp_bypass) > set RHOST [TARGET IP]
msf auxiliary(vpn_3000_ftp_bypass) > run
На самом деле возможности данного framework очень обширны, поэтому, если решили углубиться, переходим по ссылке
Armitage Armitage — OVA жанра киберпанкGUI для Metasploit. Визуализирует цель, рекомендует эксплоиты и предоставляет расширенные возможности данного фреймворка. В общем для тех, кто любит, чтобы все красиво и эффектно выглядело.
Скринкаст:
Tenable Nessus® Tenable Nessus® vulnerability scanner — очень много чего умеет, но нам от него нужна одна из возможностей — определение, для каких сервисов есть эксплойты. Бесплатная версия продукта «home only»
Использование:
Скачали (под свою систему), установили, зарегистрировали (ключик приходит на почту).
Запустили сервер, добавили юзера в Nessus Server Manager (кнопка Manage users)
Заходим по адресу
https://localhost:8834/
и получаем флэш-клиент в браузере
Scans -> Add -> заполняем поля (выбрав подходящий нам профиль сканирования) и жмем Scan
Через некоторое время отчет о сканировании появится во вкладке Reports
Для проверки практической уязвимости сервисов к эксплоитам можно использовать выше описанный Metasploit Framework или попробовать найти эксплоит (к примеру на Explot-db, packet storm, explot search и др.) и использовать его вручную против своей системы ИМХО: слишком громоздкий. Привел его как одного из лидеров в данном направлении софтверной индустрии.
Автоматизация инъекций
Поиск инъекций производят многие из web app sec сканеров, но они все же просто общие сканеры. А есть утилиты, которые конкретно занимаются поиском и эксплуатацией инъекций. О них сейчас и пойдет речь.
sqlmap sqlmap — open-source утилита для поиска и эксплуатации SQL инъекций. Поддерживает такие сервера БД, как: MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, SQLite, Firebird, Sybase, SAP MaxDB.
Типичное использование сводится к строчке:
python sqlmap.py -u "http://example.com/index.php?action=news&id=1"
Хватает мануалов, в том числе и на русском языке. Софтина очень облегчает работу пентестера при работе над данным направлением.
Добавлю официальную видео демонстрацию:
bsqlbf-v2 bsqlbf-v2 — скрипт на perl, брутфорсер «слепых» Sql инъекций. Работает как и с integer значениями в url, так и со строковыми (string).
Поддерживает БД:
MS-SQL
MySQL
PostgreSQL
Oracle
Пример использования:
./bsqlbf-v2-3.pl -url www.somehost.com/blah.php?u=5 -blind u -sql "select table_name from imformation_schema.tables limit 1 offset 0" -database 1 -type 1
-url www.somehost.com/blah.php?u=5 — Ссылка с параметрами -blind u — параметр для инъекции (по умолчанию забирается последний из адресной строки) -sql «select table_name from imformation_schema.tables limit 1 offset 0» — наш произвольный запрос в базу -database 1 — сервер БД: MSSQL -type 1 — тип атаки, «слепая» инъекция, основанная на True и Error (к примеру синтаксические ошибки) ответах
Дебаггеры
Эти инструменты в основном используют разработчики, при проблемах с результатами выполнения своего кода. Но это направление полезно и при пентестинге, когда можно подменять нужные нам данные «на лету», анализировать, что приходит в ответ на наши входные параметры (к примеру при фаззинге) и т.д.
Burp Suite Burp Suite — набор утилит, которые помогают при тестах на проникновение. В Сети лежит хороший обзор на русском языке от Raz0r (правда за 2008 год).
В бесплатную версию входит:
Burp Proxy — локальный прокси, позволяет изменять уже сформированные запросы от браузера
Burp Spider — паук, ищет существующие файлы и директории
Burp Repeater — ручная отправка HTTP-запросов
Burp Sequencer — анализ случайных значений в формах
Burp Decoder — стандартный кодер-декодер (html, base64, hex и т.п.), коих тысячи, которые можно быстро написать на каком-нибудь языке
Burp Comparer — компонент сопоставления строк
В принципе этот пакет решает практически все задачи, связанные с этим направлением.
Fiddler Fiddler — Fiddler это отладочный прокси, логирующий весь HTTP(S) трафик. Позволяет исследовать этот траффик, устанавливать breakpoint’ы и «играться» с входящими или исходящими данными.
Есть еще и Firesheep, монстр Wireshark и другие, выбор за пользователем.
Заключение
Естественно, каждый пентестер имеет свой арсенал и свой набор утилит, так как их просто множество. Я постарался привести одни из наиболее удобных и популярных. Но чтобы любой желающий мог ознакомится и с другими утилитами в этом направлении, я приведу ссылки ниже.
upd: Документация по BurpSuite на русском от команды «Hack4Sec» (добавил AntonKuzmin)
P.S. Нельзя умолчать про XSpider. Не участвует в обзоре, хотя он условно-бесплатен (узнал, когда отправил статью на СекЛаб, собственно из-за этого (не знания, да и неимения последней версии 7.8) и не включил его в статью). И по идее планировался его обзор (у меня заготовлены для него непростые тесты), но не знаю, увидит ли его мир.
P.P.S. Некоторый материал из статьи будет использован по прямому назначению в грядущем докладе на CodeFest 2012 в секции QA, в котором будут неупомянутые здесь инструменты (бесплатные, ессно), а так же рассказан алгоритм, по какому порядку что использовать, какой результат ожидать, какие конфигурации использовать и всякие хинты и трюки при работе (размышляю над докладом почти каждый день, постараюсь рассказать от себя все лучшее по теме топика)
Кстати, по данной статье было занятие на Open InfoSec Days (тэг на Хабре, сайт), можно грабить корованы глянуть материалы.