Пентест на стероидах. Автоматизируем процесс

    С данной темой доклада я выступал на CodeFest. А здесь я перескажу словами, что, как и зачем.


    Доклад довольно поверхностный и не требует практически никакой квалификации в области ИБ. Был рассчитан на целевую аудиторию (веб-разработчики, тестировщики (не на проникновение), сисадмины и т.д.). Все довольно просто: несколько утилит, запустили, подождали, разбираем отчет.

    Видеоприглашение на конференцию:



    Пентест

    «Пентест» (тестирование на проникновение) — оценка безопасности конечного узла или ресурса средствами и методами «злоумышленников» © Wiki. Отличия от хакинга в том, что у него (хакинга) задача найти любую уязвимость для требуемых целей, раскрутить и проэксплуатировать. Здесь же — комплексный анализ цели.

    Чем занимаемся?

    Цель — автоматизировать тестирование на проникновение сетевого ресурса по стратегии «черного ящика», получив объективные результаты, не потратив ни цента на ПО.

    Этапы тестирования

    Разобьем проверку на 2 этапа:
    1. Тестирование сетевых сервисов
    2. Тестирование web-приложения (приложений)

    Будем искать уязвимости, проверять вышедшие эксплойты, искать «слабые» аккаунты, ошибки конфигурации, а так же просто человеческую халатность.

    Let's go!


    image


    Часть 1. Сетевые сервисы — Armitage (nmap + msf)

    Armitage — это GUI к Metasploit Framework и Nmap. Визуализирует цели, собирает данные, позволяет в целом упростить процесс взлома пентеста.

    image


    Чтобы себе более четко представили, о чем идет речь, вот скрин:
    image

    Modules (синим) — выбор эксплойтов и пост-эксплойтов (применяются уже после того, как удалось установить сессию. К примеру — получить дамп конфигов).

    Targets (оранжевым) — собственно, цели. В зависимости от статуса цели, меняется её иконка. Если вы только добавили нужный хост и о нем ничего не известно — будет просто «черный» монитор или иконка оборудования. Если удалось установить ОС — появится иконка ОС. И «последнее» состояние — иконка в красной рамочке с молниями — один из эксплойтов сработал, удалось установить shell-сессию.

    Tabs (зеленым) — консоль текущей активности задач

    Перейдем к процесссу.
    • Добавляем хост (Hosts -> Add Hosts)
    • Щелкаем на него правой, Scan. На этом этапе запускается не указанный выше Nmap, а встроенный в metasploit модуль сканирования портов. Но вы так же для этой задачи можете использовать и Nmap.
    • Attacks -> Find Attacks. На этом шаге происходит поиск доступных эксплойтов под найденные сервисы (совпадение происходит по открытым портам).
    • Attacks -> Hail Mary. Это модуль поочередного запуска эксплойтов из шага выше. Запускает эксплойт и ждет reverse коннекта. Учтите, что для этого ваш IP должен быть «белым».
    • Дожидаемся завершения операции. Процесс проходит вот так

    После завершения работы модуля Hail Mary нас ожидает два результата. Или эксплойт(ы) сработал(и) и сессия(и) создана(ы)
    image

    Или нет
    image

    После проверки запущенных сетевых сервисов, проверку на устойчивость к паблик-эксплойтам можно так же проверить дефолтовые/распространные аккаунты. Для этого выберите в меню цели Login -> класс сервиса -> галку «Check all credentials» -> Launch.

    Armitage, Metasploit Framework входит в состав Metasploit, который можно скачать тут. Момент: после установки просто 1 раз запустите консоль фреимворка и закройте ее (инициализация начальных данных). После этого стартуйте Armitage и разрешите ему стартануть RPC-сервер metasploit'a.

    Часть 2. Web


    • Nikto
    • Skipfish
    • Havij
    • 1337day.com, exploit-db.com


    Момент. о Nikto и Skipfish я рассказывал в статье Обзор бесплатных инструментов для пентеста web-ресурсов и не только v2

    Nikto — perl'овая утилита, для поиска брешей типа неудаленных файлов (/1.php /info.php), наличия скриптов управления БД (phpmyadmin, phppgadmin и т.п.), да и просто уязвимых скриптов. Вот с последним у нее довольно туго, так как проверка идет просто отправкой нужного HTTP запроса и смотрится на код ответа (404/200), а не то, что действительно ли подвержен скрипт какому-то уже вышедшему эксплойту.
    P.S. На самом деле, давно не обновляется, нужно искать замену (или дорабатывать)… Пока в курсе только платных аналогов.



    Страница продукта — www.cirt.net/nikto2

    skipfish
    Сканер веб-скриптов на предмет уязвимостей от Google (теперь над ним трудится не только Michal Zalewski). Ищет все что можно, сколько можно (было дело почти 5 суток), жрет трафик и как итог генерирует отчет в html5. Учтите, я пару раз им положил сервера, вызвав отказ в обслуживании, переполнив /tmp (при каждом обращении php создавал сессии).

    Исходники качаем тут, а собранный под win можно скачать здесь (упоминал в этой статье).
    image

    imageHavij — находит и раскручивает SQL-инъекции. Вообще, штука must have, работает четко, быстро, обходит некоторые фильтры (хотя было дело, один банальный WAF не обошел, проверялся на CTF в этой задаче). Существует две версии — платная и бесплатная. Отличаются по функционалу. И одна из самых нужных фич — это поиск инъекции в параметре с ЧПУ, типа
    site.com/users/sql_inj/topics
    которой нет в бесплатной версии. Больше особо рассказывать нечего, у программы есть GUI, все предельно понятно и удобно :)

    Скачать можно тут

    1337day.com / exploit-db.com
    В основном предназначены при ситуации, когда на целевом ресурсе найдены распространяемые скрипты. Заходим на сайты выше и ищем под них эксплойты, и поочередно запускаем (эдакий Hail Mary из Armitage). Стоит учесть момент, что чаще уязвимы плагины к скриптам, нежели сами скрипты.

    Еще, при анализе веба может случиться так, что есть «соседнее» уязвимое приложение, и через него можно получить доступ к анализируему и слить ту же базу, заразить вирусом или провести дефейс.

    Чем еще?

    Тулз немеренно, перечислять топ-сек-лист смысла нет, но некоторые «комбайны» нельзя не назвать. Правда, они уже косвенно относятся к нашей теме (помните про 0 центов за ПО?), но можно попробовать получить Shareware версию.

    MaxPatrol / XSpider
    Отечественные продукты от компании Positive Technologies, чьи сотрудники тоже пишут на Хабрахабре. XSpider (7.8) это урезанная версия MaxPatrol. Практически ничего общего не имеет с предыдущими версиям в 7ой ветке (странно, что не сменили major версию, ведь есть все основания для этого). Вебинар про XSpider 7.8 (от Олега Матыкова, руководителя отдела проектных решений Positive Technologies) можно поглядеть тут (pdf).
    Вообще хотелось бы сказать пару слов про новый XSpider. Как минус бы я вынес интерфейс, уж больно он перегружен и непродуман (имхо). Но, понятное дело, что от продукта нам нужно другое, вот как раз сканирование включает в себя практически всю статью выше, исключая некоторые моменты (к примеру — skipfish самообучаем, и чем чаще вы его запускаете, тем больше его словарь), правда это компенсируется просто с головой постоянными новыми билдами продукта. Сам он напичкан-перепичкан ну просто всем, чем можно. Словари для брутфорса тоже порадовали. Вообще, мне как-то недавно удалось им найти уязвимость на ресурсе (один из самых популярных в рунете), о которой я слышал только мельком и ни один другой сканер ее не находил. Shareware версию с ограничениями на количество хостов можно получить, обратившись в отдел продаж PT, и уже опробовать на своих ресурсах.

    Acuentix
    Веб-сканер, удобен для начинающих, очень понятный интерфейс. Полную версию так же можно попросить у отдела продаж, они очень отзывчивые. Только учтите, что потом просто завалят вам почту — «как вам наш продукт?», «не хотите купить?» и т.п.

    Nessus (OpenVAS)
    Nessus и его бесплатный аналог OpenVAS. Назвал бы их эксплойт-машины :) Nessus home-версия — бесплатна, а OpenVAS сам по себе бесплатен.

    А чем еще?

    image

    Конечно же руками, ручной анализ никто не отменял. Он напрямую зависит от рук и знаний проверяющего, немного от удачи, а так же немного от «энергетического взлома», о котором нигде не найдешь статей. Но это уже не тема нашей статьи (доклада).

    Идеальный случай
    image

    Это, конечно же, статистический анализ кода. Обычно я делаю это регулярками (хотя делал то 2 раза в жизни, больно трудоемкий процесс и не всегда возможный), типа grep -nr «exec» ./ и анализа полученного результата. Хотя и для этого есть тоже скрипты, но обычно они не применимы, так как они в большинстве своем устарели и предназначены для проектов не на фреимворках (прошли те времена, когда писали без них).

    Примеры

    Наверное, даже больше опыт использования утилит выше (отголоски из моей истории начала 2011 года)

    1. Blackbox, проверен весь сайт, найдены такие вещи как CSRF/XSS, но ничего такого, чем бы можно было «сковырнуть» ресурс полностью.
    Armitage->Host->Login->ftp->check all credentials
    И находится anonymous:anonymous, смотрящий по ошибке в /var/www

    2. Вроде, 5 суток я убил тогда, покидая ПК только на сон и еду. CSRF/XSS/phpmyadmin, установленный скорее всего пакетным менеджером, так как был в нижнем регистре и прописанный в алиасах апача (соответственно администратор не видел этого скрипта в public html). PMA неуязвимый (версия была уязвима, но были не те условия). И ничего… уже расстроился :) Skipfish отвалился (как раз случай с DOS ресурса из-за сканирования). Ресурс подняли, skipfish сканит снова и находит брутом…
    site/scripts/config.ini
    Бинго! .ini файл, который отдается апачем как plain text с конфигами подключения к базе! Как узналось позднее, использовался для какого-то cron-скрипта. Используем в по ошибке поставленным PMA.

    P.S. Как говорят СМИ, некоторые инструменты выше используют в своих делах Anonymous.

    На этом у меня все. Как бонус презентация


    И демо использования Havij и Armitage (советую к просмотру).



    Всем, кто осилил — жму руку :)

    upd 25/05/2012: добавлена запись выступления
    Метки:
    Поделиться публикацией
    Похожие публикации
    Реклама помогает поддерживать и развивать наши сервисы

    Подробнее
    Реклама
    Комментарии 18
    • +2
      Помимо havij существуют еще sqlmap, к которому недавно приделали gui.
      • +1
        Да, я ушел с sqlmap в сторону havij все же.
        Были задачи, где второй справился лучше. Наоборот — пока нет.
        Хотя, когда требуется пробиться любыми силами в работу идет все, что можно.
        Про GUI не знал, спасибо.
      • 0
        Хороший обзорный материал. Как раз думал чем подконтрольный сервер пропентестить снаружи кроме nmap и metasploit. Вот, теперь знаю чем
        • +3
          Blackbox, проверен весь сайт, найдены такие вещи как CSRF/XSS, но ничего такого, чем бы можно было «сковырнуть» ресурс полностью.

          Вот Вам кажется это мелочью, а некоторые уже из этих знаний выбивают $1000 на пентесте сайтов. Каков ценник будет когда откроют для себя robots.txt -даже ума не приложу.
          • 0
            :)) Я там оставлял свой комментарий по этому поводу.
            • 0
              людям кто читает только ализаровский(желтый) текст не обращаясь к первоисточнику — деньги я ни у кого не *выбивал* это раз, а два задачей поста было показать что с CSRF нужно что то делать на уровне браузера путем демонстрации неплохих уязвимостей(вывод денег со скрилла вроде бы не фигня). читайте первоисточники и HN
              вы типа «язвите» но нелепо и не к месту выходит (похоже на бугурт оче)
          • +1
            С удовольствием послушал доклад и перечитал статью. Спасибо!
            • +4
              Я могу с одного раза угадать, в какой операционной системе был снят первый скриншот с твитом.
              • 0
                Hail Mary Огонь )))
                • 0
                  Вы вышли на центральную площадь города, выложили лоток с огнестрельным оружием и начали кричать «Всем бесплатно! Берите кто хочет!»

                  В общем в рядах скрипт-кидди ждем значительного пополнения.
                  • +5
                    Да, я прекрасно понимаю, что этим воспользуются не только для тестирования своих ресурсов и в полку скрипт-кидди прибудет.
                    Но, знаете, я сам так начал (да думаю как и многие) и меня в 2005 зажег подробный (подобный) скринкаст из журнала «Хакер» по применению (ух, как сейчас помню...) эксплойта под IPB 1.3-2.x. Пишу в консоли perl exploit.pl, а мне сообщение об ошибке, что же делать :) В итоге начал во всем разбираться, качать софт, интерпретаторы, тогда впервые попробовал перебор паролей (после того, как эксплойт сработал был получен хэш пароля. Целью был superstar.kz, очень популярный на то время ресурс и проект в Казахстане). И да, я был скрипт-кидди на то время.
                    И вот как-то оно все закрутилось-завертелось, один софт, другой софт, репорты админам об уязвимостях, взломы, а порой ничего не понятно как вообще это работает, что внутри эксплойта, учишься, развиваешься и постепенно переходишь уже в осмысленную деятельность.
                    Вообщем, это я все к тому, что скрипт-кидди это наиболее частый старт в области ИБ (имхо) и ничего страшного в этом нет.
                    Вопрос лишь в ответственности за свои деяния и выборе стороны, за кого играешь.
                    • +1
                      Убить можно и микроскопом. Что ж теперь: не продавать их?
                    • –2
                      А для Metasploit айпишник обязательно должен быть белым? я не знаю где такой взять даже… все ведь сидим через роутеры :)
                      • 0
                        Никто не ответит мне? :(
                        • +1
                          Нет (ответ на первоначальный вопрос)
                          При использовании эксплойта можно выбрать каким методом, в случае успешной атаки, произойдет коннект.
                          Всего их 2:
                          reverse (wait for) — коннект «на себя», для этого вам на вашей машине (хотя, тут можно указать и другую машину, к примеру какой-нить сервер) нужно слушать порт и иметь соотв. белый IP
                          bind (connect to) — в случае, если у вас серый IP. Коннект к целевой машине. В случае успешной атаки целевой хост откроект порт с доступным шеллом.

                          Может возникнуть логичный вопрос — почему чаще используют первый метод? Часто фаирволл настроен подобным образом — «запретить все и разрешить несколько», и в этом случае, даже при успешной атаке мы не получим нужного.
                          • 0
                            Спасибо! Т.е., если у меня на роутере белый айпишник, я могу просто пробросить свой порт для reverse.

                            Настраивается так: Armitage -> Listeners. И это влияет на запускалку Hail Mary. Я правильно понял?
                            • 0
                              Есть ещё VPN
                        • 0
                          Насчет статистического анализа, его можно автоматизировать:
                          find-xss.net/scanner/
                          www.scovetta.com/yasca.html
                          rips-scanner.sourceforge.net/

                          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.