Пентест как предчувствие

Пентест как предчувствие

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

Андрей Захаров, руководитель группы информационной безопасности компании «Инфосистемы Джет»

Тестирование на проникновение (или, кратко – пентест) относится к одной из тех тем, на которую уже много лет ведутся жаркие дискуссии. Разнообразие точек зрения говорит о том, что эта услуга до сих пор является сложной в восприятии широким рынком и еще ждет своего осмысления и стандартизации.

Когда вы заказываете шарж у уличного художника – вы лишь в общих чертах представляете себе результат. Он может оказаться на уровне state-of-art, или, наоборот, разочаровывающим. Многое зависит от ваших ожиданий, которые сформированы предыдущим опытом.

Одна из проблем пентеста состоит в сложности его презентации, как услуги. В сознании среднестатистического заказчика пентест – это набор действий, в результате которых исполнитель получает доступ к ресурсам организации, используя найденные уязвимости. Проще говоря, осуществляет “взлом”. При обсуждении планируемых работ немногие заказчики вдаются в методологию тестирования, ограничиваясь поверхностным согласованием модели предполагаемого злоумышленника. То, в какой степени заказчик обсуждает свое видение работ с исполнителем, почти не отличается от того, как работает с клиентом уличный художник. Стоит ли удивляться разношерстности результатов?

Чтобы вспомнить, каким предполагался “настоящий пентест”, сделаем краткий экскурс в историю. Появление пентеста как самостоятельной дисциплины связано с понятием “security testing”, которое возникло еще до эпохи персональных компьютеров и предполагало практическую оценку применяемых мер безопасности. Тестирование безопасности получило распространение благодаря появлению британского стандарта BS 7799-1:1995. Несколькими годами позже был выпущен BS 7799-2, который привнес в мир безопасности концепцию циклической PDCA-модели, которая рассматривала систематический мониторинг состояния безопасности как неотъемлемую часть процесса. Бум программных уязвимостей, случившийся на рубеже тысячелетий, высветил огромную проблему в отрасли программного обеспечения и закрепился в повестке дня на долгие годы. Пентесты стали упоминаться в докладах на профильных конференциях, а уже в начале двухтысячных публикациями на эту тему отметились такие организации как SANS Institute.

С ростом числа информационных систем и увеличением объема кода росло и количество программных уязвимостей. Концепция постоянной уязвимости стала новой нормой жизни, а вопрос обеспечения программно-технической безопасности информационных систем свелся к задаче выявления и ликвидации наиболее опасных векторов атак. По аналогии с «доказательной медициной» возникла потребность в аргументированном обосновании необходимости устранения тех или иных уязвимостей. Ответом на эту потребность стало появление в 2005 году методологии скоринга уязвимостей - CVSS, которая позволила учесть ряд факторов риска, включая фактор эксплуатируемости уязвимости. В силу многих причин CVSS так и не стал стандартом в этой области, а обязанность доказывать реализуемость конкретных векторов атак перешло к практикам. Опубликованный в том же 2005 году стандарт PCI DSS выделил пентесты в самостоятельную прикладную задачу и определил базовые правила их проведения. Справедливости ради нужно отметить, что это сделал не сам стандарт, а рынок, в меру своего понимания поставленной задачи. Методологии, которые бы определяли принципы проведения таких работ, появились некоторое время спустя.

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

Злоумышленник – центральное понятие в сфере пентестов. От того, какая модель мошенника берется за основу при проведении работ, во многом зависит итоговый результат. Чаще всего рассматриваются две основные характеристики злоумышленника: осведомленность (информированность) и квалификация. Но этого недостаточно, поскольку в таком двухмерном мире довольно сложно отличить уволенного сотрудника от работающего администратора, а хакера-одиночку от представителя преступной группировки. К характеристикам предполагаемого злоумышленника целесообразно добавить “уровень оснащенности” и “мотивацию”, которые позволят учитывать то, какие средства злоумышленник может использовать, и насколько он целеустремлен в своих действиях.

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

Вместе с тем неправильно воспринимать пентест как механическую работу по выявлению уязвимостей c последующим подбором подходящих средств их эксплуатации. Если бы все было так просто, пентест давно был бы автоматизирован. А он требует от исполнителя серьезной аналитической работы, глубокого понимания природы обнаруженных уязвимостей и готовности к адаптации существующих методов и техник проведения атак под конкретное окружение.

Критики утверждают, что большинство пентестов ограничивается лишь простыми сценариями, а потому полученные результаты не являются достаточно надежными. С этим можно было бы согласиться, если бы не одно “но”. В основе выбора методов проведения атак помимо всех прочих обстоятельств лежит принцип простоты. Чем более простым и надежным является конкретный сценарий атаки, тем более предсказуемый результат он будет иметь и тем чаще применяться. Если оставить в стороне крупные корпорации, инвестирующие в информационную безопасность значительные силы и средства, обнаружится, что для компрометации среднестатистических организаций сложных сценариев не требуется. Критические уязвимости часто находятся на поверхности. Статистика успешных пентестов тому подтверждение.

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

Предположим, что в процессе выполнения анализа публичного веб-сервиса пентестер обнаружил критическую уязвимость в используемой версии PHP, связанную с переполнением. Он также выяснил, что для данной уязвимости в открытом доступе представлен только PoC (proof-of-concept)-код, реализующий относительно безобидный функционал. Как нужно поступить в этом случае?

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

Теперь зададим себе вопрос: как изменится ситуация, если вместо публичного веб-сервера, где была обнаружена уязвимость, пентестер будет иметь дело с внутренним веб-сервером организации? Во-первых, изменится модель предполагаемого злоумышленника, во-вторых, с высокой вероятностью появятся другие перспективные векторы атак. В данной ситуации предполагаемый внутренний злоумышленник вряд ли заинтересуется уязвимостью с неизвестными перспективами. Той же логикой должен руководствоваться и пентестер.

Попробуем еще усложнить постановку задачи. Предположим, что уязвимость обладает высоким потенциалом эксплуатации и потому была продана на черном рынке. Как должен поступить пентестер в этом случае? И снова многое зависит от модели предполагаемого злоумышленника. Если атакуемый веб-сервер представляет значительный интерес для предполагаемых злоумышленников, в качестве которых рассматривается организованная преступная группа, промышляющая, к примеру, хищением и продажей номеров банковских карт, необходимо исходить из того, что у такой группы могут быть все необходимые инструменты для эксплуатации данной уязвимости. Но среднестатистический пентестер не располагает тем же самым. Поэтому всё, что он может сделать – это собрать так много информации о векторах атаки на данную уязвимость, сколько это возможно, и изложить в отчете известные ему детали, обеспечив доказательную базу сделанных им выводов.

На десерт рассмотрим ситуацию, при которой пентестер имеет дело с уязвимостью, которая требует проведения MitM-атаки для эксплуатации. Зачастую такие атаки требуют применения практик социальной инженерии в отношении работников атакуемой организации. Означает ли это, что пентестер должен пойти тем же путем? Однозначного ответа на этот вопрос нет. Если потенциальный злоумышленник менее лимитирован сроками, то пентестер жестко ограничен рамками контракта, в том числе временными. Хотя, скажем прямо, при продуманной организации работ и наличии необходимой инфраструктуры дополнительные затраты на компанию социальной инженерии невелики.

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

К аналогичному заключению пришли и участники Special Interest Group (PCI SSC SIG) во время работы над документом Penetration Testing Guidance. Ни одна из рассмотренных группой альтернатив не позволяет определить минимальный набор сценариев для тестирования, в равной степени применимых для любого заказчика. Таким образом, профилирование пентеста, определение конкретной методологии выполнения работ определяется в каждом конкретном случае индивидуально.

Рассмотренные выше примеры затрагивают лишь некоторые ситуации, с которыми сталкиваются пентестеры в повседневной работе. Логика, которой при этом руководствуются конкретные исполнители, зачастую непрозрачна и непонятна для заказчиков, а критерии принятия решений не оговорены. Многочисленные ограничения и допущения, сопровождающие большинство пентестов, оставляют ощущение недосказанности и бросают тень на полученный результат.

Так как же целесообразно трансформировать современные пентесты, чтобы привнести честность и прозрачность в этот бизнес?

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

Состав реализуемых сценариев атак для конкретной модели предполагаемого злоумышленника – это внутренняя кухня исполнителя. В развитии именно этого подхода заключается будущее пентестов. Совершенствование сценарного подхода связано как с эволюционирующей моделью злоумышленника, так и новыми техниками проведения атак, а также уровнем развития технологий в целом. Если простые сценарии атак остаются практически неизменными, то выполнение сложных атак, реализуемых наиболее опасными злоумышленниками, является объективной необходимостью для заказчика и конкурентным преимуществом исполнителя.

Хакеры ненавидят этот канал!

Спойлер: мы раскрываем их любимые трюки

Расстройте их планы — подпишитесь