Сбор информации, как ключевой этап тестирования на проникновение

Действия атакующего (и пентестера) обычно разделены на следующие этапы:

  • Пассивный сбор информации;
  • Анализ собранной информации;
  • Активный сбор информации;
  • Проведение атаки.

При этом сбор и анализ информации, а также корректировка выбранных способов проникновения в информационную систему многократно могут повторяться. Первоначальный же сбор информации во многом является ключевым элементом проведения успешного и правильного пентеста. От того, насколько скрупулезно он был осуществлен, может зависеть, как эффективность пентеста в целом, так и эффективность отработки отдельных векторов атаки (социальная инженерия, брутфорс, атака на Web-приложения и пр.).


Пассивный сбор информации

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

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

Активный сбор информации

Активный сбор информации предполагает отправку узлу (сервису, службе) некоторых запросов и последующую их обработку. Примером подобных запросов могут быть, например, запросы к DNS серверу на перенос обслуживаемой им зоны. Подобные действия в большинстве случаев фиксируются в журналах и могут быть проанализированы системами обнаружения вторжений и ответственными лицами (администраторами, сотрудниками службы информационной безопасности) как в режиме реального времени, так и по истечении некоторого времени.

По сути, использования сканеров уязвимостей (безопасности) также является одним из способов осуществления активного сбора информации.

Попытка проникновения

А вот тут уже начинается самый интересный этап – этап тестирования на проникновение:) Из всех собранных данных выбираются наиболее оптимальные пути для возможности проведения успешной атаки за максимально короткий промежуток времени в отношении объектов исследования. В ход идут любые инструменты, которые только попадают под руку, от наборов публичных эксплоитов (Metasploit, Canvas, etc.), до самых стандартных программ и утилит (telnet, браузер, etc.). А после? А после - вновь сбор и анализ информации, только уже в пределах системы, которую удалось взломать...


Примеры из практики

Довелось мне проводить пентест для одного коммерческого учреждения с числом сотрудников не более 500-та. Потратив приблизительно 5-ть рабочих дней, было собрано достаточно много интересной информации, как то:

  • Неформальные взаимоотношения сотрудников в компании.
  • Тестовые сервисы для партнеров (Web-приложения на нестандартных портах, VPN-сервер).
  • Составлен список возможных логинов (например: devteev, dmitry, d_evteev, dmitry.evteev и т.д.)
  • Составлен список возможных паролей (например: название компании, доменные имена, корпоративные слоганы и др.)

Собранная информация позволила успешно провести атаку по всем отрабатываемым векторам атаки! Например:

Брутфорс – обладая списком предполагаемых логинов и паролей, атака типа брутфорс выстрелила менее чем через 10 минут. Это стало причиной получения списка всех используемых логинов в компании и, как следствие, – компрометации порядка 15% из них.

Web-приложения – зная о работающих "тестовых" Web-приложениях было просто проведено их сканирование в режиме black-box. Этого оказалось вполне достаточно, чтобы получить ряд эксплуатабельных уязвимостей на них и, в последствии, спуститься на уровень ОС.

Проникновение во внутреннюю сеть – не нужно быть гением, чтобы не попробовать залогиниться под скомпрометированной учетной записью к VPN. А пароли-то все привыкли использовать один на все ресурсы. Да здравствует SSO:)

Социалка – зная кто и с кем неформально общается, письмо "от подруги" к "другу" с прикрепленным к нему исполняемым файлом не вызывает не малейшего подозрения. Дальше думаю рассказывать не стоит…

Другой пример.

Не так давно проводил тест на проникновение методом black-box в отношении одного Web-приложения. На этапе сканирования никаких более менее интересных уязвимостей на стороне сервера найдено не было. Сайт прикрыт mod_rewrite, а потому понять, каким образом формируются запросы к самому приложению, с использованием методики черного ящика, не представлялось возможным. Однако стоило только заглянуть в google, как вся внутренняя логика приложения с параметрами предстала перед глазами как на ладони. Полученная информация позволила обнаружить sql-injection и после успешно получить привилегии администратора исследуемого Web-приложения.

10 комментариев :

  1. По поводу брутфорса, по какому словарю был? Тоже состоящий из собранных слов или что-то типа 10/100/1000... самых популярных паролей?

    ОтветитьУдалить
  2. на самом деле было несколько итераций:-)

    1. брутфорс по логинам, в условиях, когда не известен их синтаксис. словарь: самые популярные пароли - 12345, 123456, qwerty и т.п.
    2. брутфорс по логинам, когда все используемые логины на руках. словари:
    - самые популярные пароли (выстрелило, что допустимы цифровые пароли <6);
    - все комбинации из цифр длинной от 1 до 6 символов;
    - собственные сборки словарей (частично с uinc.ru, частично с insidepro.com, частично собранные из других мест). В словарях содержались как английские слова, так и русские, набранные в латинице; также входили различные комбинации из цифр и букв.

    ОтветитьУдалить
  3. Dmitry Evteev, понятно, спасибо =)
    Кстати, а как обычно консолидируете собранную информацию, например по сотрудникам Заказчика?
    Собственное ПО (например, веб-интерфейс+БД), обычные таблицы Excel(ФИО, телефон и т.д.)?

    ОтветитьУдалить
  4. сейчас excel. типовые таблицы:
    Email|ИФО|Должность|Подразделение
    ИФО|Должность/Подразделение|Возраст|Email|IM|Интересы
    а вообще, подумываю написать penetration testing framework, который бы собирал, консолидировал данные и проводил в автоматическом режиме пентест:) только пока руки до него ни как не доходят...

    ОтветитьУдалить
  5. mitry Evteev, ага, с большой кнопкой "Поломать" =) Наверно каждый, кто занимается пентестами, думал хоть раз на тему подобного фреймворка. С другой стороны есть та же кора импакт, хотя там и не совсем хорошее представление информации (благо дело хоть добавили в последнем релизе теги для хостов). Я посматриваю в сторону метаслоита, но там вроде как нет связи между модулями, то есть своего рода единого хранилища информации (про db_* в курсе, но это вроде только для импорта логов нмапа/нессуса). В иммьюнити тоже своё сделали, но у канваса жуткий интерфейс, имхо.

    ОтветитьУдалить
  6. да, горе импакт весчь хорошая:)
    но дело все в том, что вероятность прозохать внешний периметр паблик сборкой сплоитов - это скорее исключение из правил. основные технологические векторы атаки, которые стреляют - это брутфорс и атака на web (90-95% всех успешных технологических атак)
    другое дело внутренний пентест... тут уже сообсем другой расклад... когда я говорил про penetration testing framework я подразумевал автоматизацию внешнего пентеста. с core impact соревноваться бесполезно, то, как реализовали они - вызывает уважение.
    >> В иммьюнити тоже своё сделали, но у канваса жуткий интерфейс, имхо.
    зато оч. интересный reverse shell...

    ОтветитьУдалить
  7. Dmitry Evteev, не так уж всё и хорошо=)
    Например, у них какая-то странная политика..в модулях нет как раз чего-нибудь для брута.
    И нормально представлять информацию тоже пока не особо хорошо умеют. Зато требования к ресурсам с каждым релизом все жестче.

    Да, про реверс в канвасе слышал..и что там эксплоиты достаточно свежие. С другой стороны у них нет такой вкусной вещи как метапретер из метаслоита. А про гуй я кстати даже у них спрашивал ..на рускрипто кажется, представитель отшутился их тогда :)

    Меня в последнее время волнует именно представление информации, то есть такая штука , которая умела работать с корой..метаслоитом и тп..ну и красиво и правильно представлять результаты их работы + имела хороший гуй для ввода и анализа информации. Такая помесь аутлайнера/драдиса и генератора отчётов

    ОтветитьУдалить
  8. >> Например, у них какая-то странная политика..в модулях нет как раз чего-нибудь для брута.
    разве? не обращал внимание... проверю:)
    зато core impact превращает пентест из разряда для "избранных" в разряд "пентест для домохозяйки"....))

    >> С другой стороны у них нет такой вкусной вещи как метапретер из метаслоита.
    ну да, ну да. приходиться комбинировать средства в зависимости от ситуации

    >> А про гуй я кстати даже у них спрашивал ..на рускрипто кажется, представитель отшутился их тогда :)
    %))

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

    ОтветитьУдалить
  9. Дмитрий, а интересно было бы узнать об опыте атак на веб-приложения, защищенные популярными ныне Web Application Firewalls. Насколько подобные средства защищают?

    ОтветитьУдалить
  10. :)) как раз об этом я буду рассказывать буквально через 10 дней на CC'09
    http://party.cc.org.ru/seminar.php

    ЗЫ: потом выложу сюда презентацию и видео, когда появится...

    ОтветитьУдалить