Действия атакующего (и пентестера) обычно разделены на следующие этапы:
- Пассивный сбор информации;
- Анализ собранной информации;
- Активный сбор информации;
- Проведение атаки.
При этом сбор и анализ информации, а также корректировка выбранных способов проникновения в информационную систему многократно могут повторяться. Первоначальный же сбор информации во многом является ключевым элементом проведения успешного и правильного пентеста. От того, насколько скрупулезно он был осуществлен, может зависеть, как эффективность пентеста в целом, так и эффективность отработки отдельных векторов атаки (социальная инженерия, брутфорс, атака на Web-приложения и пр.).
Пассивный метод сбора информации характерен тем, что его этапы невозможно обнаружить, т.к. на практике они не вызывают никаких подозрений, при этом фактически невозможно определение узла, с которого проводится пассивный сбор информации. Для пассивного сбора информации используются:
- службы Whois;
- анализ DNS;
- неактивное исследование публичных Интернет-ресурсов;
- поисковые системы и интернет сервисы;
- социальные сети.
Активный сбор информации
Активный сбор информации предполагает отправку узлу (сервису, службе) некоторых запросов и последующую их обработку. Примером подобных запросов могут быть, например, запросы к 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/100/1000... самых популярных паролей?
ОтветитьУдалитьна самом деле было несколько итераций:-)
ОтветитьУдалить1. брутфорс по логинам, в условиях, когда не известен их синтаксис. словарь: самые популярные пароли - 12345, 123456, qwerty и т.п.
2. брутфорс по логинам, когда все используемые логины на руках. словари:
- самые популярные пароли (выстрелило, что допустимы цифровые пароли <6);
- все комбинации из цифр длинной от 1 до 6 символов;
- собственные сборки словарей (частично с uinc.ru, частично с insidepro.com, частично собранные из других мест). В словарях содержались как английские слова, так и русские, набранные в латинице; также входили различные комбинации из цифр и букв.
Dmitry Evteev, понятно, спасибо =)
ОтветитьУдалитьКстати, а как обычно консолидируете собранную информацию, например по сотрудникам Заказчика?
Собственное ПО (например, веб-интерфейс+БД), обычные таблицы Excel(ФИО, телефон и т.д.)?
сейчас excel. типовые таблицы:
ОтветитьУдалитьEmail|ИФО|Должность|Подразделение
ИФО|Должность/Подразделение|Возраст|Email|IM|Интересы
а вообще, подумываю написать penetration testing framework, который бы собирал, консолидировал данные и проводил в автоматическом режиме пентест:) только пока руки до него ни как не доходят...
mitry Evteev, ага, с большой кнопкой "Поломать" =) Наверно каждый, кто занимается пентестами, думал хоть раз на тему подобного фреймворка. С другой стороны есть та же кора импакт, хотя там и не совсем хорошее представление информации (благо дело хоть добавили в последнем релизе теги для хостов). Я посматриваю в сторону метаслоита, но там вроде как нет связи между модулями, то есть своего рода единого хранилища информации (про db_* в курсе, но это вроде только для импорта логов нмапа/нессуса). В иммьюнити тоже своё сделали, но у канваса жуткий интерфейс, имхо.
ОтветитьУдалитьда, горе импакт весчь хорошая:)
ОтветитьУдалитьно дело все в том, что вероятность прозохать внешний периметр паблик сборкой сплоитов - это скорее исключение из правил. основные технологические векторы атаки, которые стреляют - это брутфорс и атака на web (90-95% всех успешных технологических атак)
другое дело внутренний пентест... тут уже сообсем другой расклад... когда я говорил про penetration testing framework я подразумевал автоматизацию внешнего пентеста. с core impact соревноваться бесполезно, то, как реализовали они - вызывает уважение.
>> В иммьюнити тоже своё сделали, но у канваса жуткий интерфейс, имхо.
зато оч. интересный reverse shell...
Dmitry Evteev, не так уж всё и хорошо=)
ОтветитьУдалитьНапример, у них какая-то странная политика..в модулях нет как раз чего-нибудь для брута.
И нормально представлять информацию тоже пока не особо хорошо умеют. Зато требования к ресурсам с каждым релизом все жестче.
Да, про реверс в канвасе слышал..и что там эксплоиты достаточно свежие. С другой стороны у них нет такой вкусной вещи как метапретер из метаслоита. А про гуй я кстати даже у них спрашивал ..на рускрипто кажется, представитель отшутился их тогда :)
Меня в последнее время волнует именно представление информации, то есть такая штука , которая умела работать с корой..метаслоитом и тп..ну и красиво и правильно представлять результаты их работы + имела хороший гуй для ввода и анализа информации. Такая помесь аутлайнера/драдиса и генератора отчётов
>> Например, у них какая-то странная политика..в модулях нет как раз чего-нибудь для брута.
ОтветитьУдалитьразве? не обращал внимание... проверю:)
зато core impact превращает пентест из разряда для "избранных" в разряд "пентест для домохозяйки"....))
>> С другой стороны у них нет такой вкусной вещи как метапретер из метаслоита.
ну да, ну да. приходиться комбинировать средства в зависимости от ситуации
>> А про гуй я кстати даже у них спрашивал ..на рускрипто кажется, представитель отшутился их тогда :)
%))
>> и красиво и правильно представлять результаты их работы
решается самописным парсером. готового паблик решения есесно нет. я думал об этом. пришел к выводу, что все данные нужно самостоятельно агрегировать и укладывать из различных источников в свою базу, и делать свой viewer под собственные шаблоны.
Дмитрий, а интересно было бы узнать об опыте атак на веб-приложения, защищенные популярными ныне Web Application Firewalls. Насколько подобные средства защищают?
ОтветитьУдалить:)) как раз об этом я буду рассказывать буквально через 10 дней на CC'09
ОтветитьУдалитьhttp://party.cc.org.ru/seminar.php
ЗЫ: потом выложу сюда презентацию и видео, когда появится...