Преамбула
В российских реалиях ИБ принято разделять так называемый пентест на внешний и внутренний, в зависимости от рассматриваемой модели нарушителя. Модель нарушителя — это некие исходные/вводные данные, с которыми этичный хакер начинает моделировать и развивать атаку. Внешнему пентесту характерна модель «внешнего злоумышленника», атакующего из внешней сети — интернета и не обладающего какой‑либо информацией о системе. Внутренний этичный хакер моделирует действия потенциального «инсайдера», обладающего привилегиями рядового пользователя.
В большинстве случаев, когда говорят «пентест» без каких‑либо уточнений, подразумевают работы, покрывающие обе модели. В этом случае модель внешнего атакующего, который преодолел сетевой периметр организации, получил доступ в ее сеть и разжился минимальными привилегиями, плавно и изящно перетекает в модель внутреннего нарушителя. Таким образом, разделение на внешний и внутренний пентест напрямую связано с потребностями рынка. Кто‑то хочет лишь оценить возможность преодоления подответственного сетевого периметра и проверить, насколько организация готова к атаке извне. Кто‑то же, наоборот, полностью уверен, что угрозы со стороны интернета нет, и больше всего боится профессионального «инсайдера», охотящегося за корпоративными секретами.
info
Общая теория по пентестам:
- VulnerabilityAssessment
- Open Source Security Testing Methodology Manual
- The Penetration Testing Execution Standard
Немного практики:
В закладки:
Коротко о различиях
Давай выявим особенности, характерные для так называемых внешнего и внутреннего пентеста.
- Внешний пентест подразумевает в 99% случаев плоскую сеть как область работ, на внутренних работах это справедливо лишь в 10% случаев (напрочь отсутствует сегментация сетей).
- В рамках внешнего пентеста намного проще выбрать цель для исследования на предмет уязвимостей. Это напрямую связано с отсутствием «левых» сервисов на периметре. Соответственно, и времени получается уделить на такой ресерч больше.
- Атаки на канальном уровне намного доступнее в рамках внутреннего пентеста.
- Основная цель внешнего пентеста — преодоление внешнего «сетевого» периметра организации.
- Первоочередная цель внутреннего пентеста, если это явно не обговорено, — заполучить максимальные привилегии на всех компонентах ИС.
Преодоление периметра
Как я уже отметил, при внешнем пентесте в большинстве случаев не так много сервисов, которые потенциально могут быть легитимной/нелегитимной точкой входа во внутреннюю сеть. В теории — чем меньше сервисов на периметре, тем больше времени этичный хакер уделяет каждому из них. На практике это, естественно, не так: видя перед собой информацию обо всех доступных на периметре сервисах, в первую очередь выискиваешь те, с которыми встречался в личной практике и удачно эксплуатировал найденные уязвимости, следом идет изучение незнакомых до данного момента программных продуктов, и, наконец, приходишь к анализу автоматизированных сканов на предмет наличия уязвимостей, информация о которых доступна в паблике. Процесс исследования по времени примерно так и разделяется: сначала треть на знакомую область, треть на новые продукты, треть на автосканы. Но если вдруг быстро понимаешь, что в пп. 1 ловить нечего, а в пп. 2 есть потенциальные интересности, все время можешь уделить ему — исследованию незнакомых, но потенциально уязвимых продуктов.
Приведу пример из личной практики, напрямую связанном с сервисами, внимание пентестера на которые переключается не сразу (то есть незнакомыми до данного момента программными продуктами). В моем случае это был ManageEngine ServiceDesk. Немного древний, но хороший пример. Именно такие сервисы становятся темой ресерчей и целями для не очень долго живущих 0day-эксплойтов. И именно на такие сервисы уходит больше всего времени.
История такова. На периметре встретился до этого незнакомый ManageEngine ServiceDesk (веб‑приложение для службы техподдержки, с тикетами и прочими плюшками). В ходе исследования данного продукта было найдено несколько уязвимостей разной степени критичности, которые в совокупности позволяли заполучить полный дамп БД. В том конкретном случае веб‑приложение было завязано на Active Directory и для привязки был использован аккаунт администратора домена. Неясно, зачем это было сделано, но факт остается фактом — в дальнейшем еще не раз такое встречалось. Пароль администратора домена хранился в обфусцированном виде, но исходники ServiceDesk помогли найти его исходное значение. Используя эту учетную запись и доступный на периметре сервис RDP, я получил доступ во внутреннюю сеть. Вышло элегантно.
Типичный пример того, как сервис, до некоторого момента незнакомый, переходит в перечень сервисов, которые в первую очередь ищешь на периметре.
Такие уязвимости очень эффектно для заказчика эксплуатируются в период, когда адвизори на уязвимость уже отправлены разработчикам, но патч, ее исправляющий, еще не вышел. В рамках стандартной политики разглашения информации об уязвимостях этот период занимает порядка трех месяцев. Но в тот раз все пошло не так :). Через пару недель после завершения проекта на exploit-db.com появилась информация об уязвимости за авторством гражданина Сингапура, который дискредитировал наши обещания вендору софта и заказчику о неразглашении информации об уязвимости. Пришлось срочно уведомлять об этой ситуации и тех и других, дабы не запятнать репутацию ответственных пентестеров :).
Переломный момент
Условное обозначение «переломный момент» характерно именно для внутреннего тестирования на проникновение. Если кратко, это получение таких привилегий в ИС / информации об ИС, которые дают возможность получить максимальные привилегии в 100% случаев.
В современных реалиях каждый уважающий себя айтишник, посетитель того же Хабра, обращает внимание на публикации о критичных уязвимостях, позволяющих сразу же получить полный контроль над каким‑либо компонентом ИС. Подобные публикации почему‑то заставляют людей думать, что цепочка, по которой этичный хакер идет шаг за шагом к сокровенным максимальным привилегиям, сводится всего лишь к эксплуатации %famous_vuln_name_here%. Хочу тебя заверить — это совершенно не так.
Как раз таки серьезные уязвимости вроде MS14-068, которые в один шаг предоставляют специалисту ключи от всех дверей, обычно найти незакрытыми куда сложнее. Например, в тот момент, когда для MS14-068 появился PoC, приносящий профит, в округе не оказалось уже ни одного не патченного контроллера домена. Системные администраторы стараются устранить подобные уязвимости настолько быстро, насколько это вообще возможно. Обычно описание подобных уязвимостей в отчете пентестера выглядит так: проверили на всех домен‑контроллерах, уязвимость везде устранена. Отличный пример того, как full disclosure влияет на количество уязвимых систем. Куда большую угрозу представляют не такие публичные, менее разрушительные уязвимости. Шанс раскрутить цепочку лоурисковых багов намного выше, следовательно, и опасности от него куда больше.
Пример переломного момента — сервис JBoss, доступный только на локальном интерфейсе терминальной станции, на которой работают десятки пользователей. Многие забывают, что по умолчанию JMX console не требует авторизации, — секции конфигурационного файла web.xml просто закомментированы, предоставляя тем самым доступ к этому приложению любому локальному пользователю. Деплой простейшего веб‑шелла через JMX console позволяет получить привилегии nt authority/system на терминальной станции и выжать из нее как минимум солидный список логинов и паролей авторизованных в системе пользователей.
9:00 — 18:00
Если ты думаешь, что работа этичного хакера ни капли не зависит от времени суток, то ты не совсем прав. Существует масса причин быть «в строю» в общепринятые дневные рабочие часы, ни раньше ни позже. Это не всегда обязательно, но временами — очень важно. Одно из важнейших обязательств в работе пентестера — соблюдение конфиденциальности, целостности и доступности информации. В данном случае речь идет именно о доступности.
Основная масса работ происходит так называемым методом черного ящика, который подразумевает полное отсутствие у хакера знаний об исследуемой целевой системе. Когда объектом изучения выступает, к примеру, кастомная система ДБО, с кучей своих особенностей и костылей, они легко могут при некорректном взаимодействии пользователя с ними просто перестать работать, что нарушит обязательное условие доступности тестируемого сервиса. Если это случится, всегда есть человек на стороне заказчика, который сможет быстро устранить подобную проблему, — естественно, в свои рабочие часы. Но такое встречается нечасто, так что расслабься.
Бумага
Подробное документирование всех действий в рамках моделирования атаки — неотъемлемая часть работы пентестера. Итоговые документы подобного характера очень часто выглядят, как статьи в твоем любимом журнале из категории «История взлома ...». Помимо описания действий, этичный хакер предоставляет рекомендации по устранению найденных им уязвимостей, а также ведет общение с вендором на тему выпуска патча, если найденная им в ходе работ уязвимость еще не является публичной. В случае с ServiceDesk вендор попросил на выпуск патча достаточно большой отрезок времени, поэтому владельцу уязвимой системы было рекомендовано ограничить доступ к уязвимому функционалу приложения встроенными средствами Apache Tomcat, обслуживающим уязвимое веб‑приложение, и, конечно же, дожидаться официального патча от производителя.
В рамках рекомендаций по устранению уязвимости, связанной с ошибкой конфигурации JBoss, было рекомендовано настроить авторизацию для всех приложений, идущих по умолчанию, попутно предоставив рекомендации, как избежать уязвимости HTTP Verb Tampering.