Андроид. Windows. Антивирусы. Гаджеты. Железо. Игры. Интернет. Операционные системы. Программы.

Комплексный тест на проникновение. Что такое тестирование на проникновение? Проведение внутреннего анализа защищенности

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

Планирование и подготовка

Планирование и подготовка начинается с определения целей и задач тестирования проникновения.

Клиент и тестер совместно определяют цели, чтобы обе стороны имели одинаковые цели и понимание. Общими задачами тестирования проникновения являются:

  • Определить уязвимость и повысить безопасность технических систем.
  • Обеспечить безопасность ИТ внешней сторонней стороной.
  • Повысить безопасность организационной / кадровой инфраструктуры.

Исследование

Разведка включает в себя анализ предварительной информации. Много раз, тестер не имеет много информации, кроме предварительной информации, то есть IP-адрес или блок IP-адресов. Тестер начинается с анализа доступной информации и, при необходимости, запросов от пользователя на получение дополнительной информации, такой как описания системы, планы сети и т. Д. Этот шаг - это тест пассивного проникновения, своего рода. Единственная цель - получить полную и подробную информацию о системах.

Открытие

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

  • Обнаружение сети - например, открытие дополнительных систем, серверов и других устройств.
  • Host Discovery - определяет открытые порты на этих устройствах.
  • Service Interrogation - опроса портов, чтобы обнаружить фактические сервисы, которые работают на них.

Анализ информации и рисков

На этом этапе тестер анализирует и оценивает информацию, собранную перед этапами тестирования для динамического проникновения в систему. Из-за большого числа систем и размера инфраструктуры это занимает много времени. При анализе тестер рассматривает следующие элементы:

  • Определенные цели теста на проникновение.
  • Потенциальные риски для системы.
  • Расчетное время, необходимое для оценки потенциальных недостатков безопасности для последующего активного тестирования на проникновение.

Однако из списка идентифицированных систем тестер может выбрать тестирование только тех, которые содержат потенциальные уязвимости.

Активные попытки вторжения

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

Итоговый анализ

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

Подготовка отчета

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

Однако, документируя окончательный отчет, необходимо учитывать следующие моменты:

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

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

Объектами тестирования могут быть как отдельные информационные системы, например: CMS (система управления содержимым), CRM (система управления взаимоотношениями с клиентами), интернет клиент-банк, так и вся инфраструктура в целом: периметр сети, беспроводные сети, внутренняя или корпоративная сеть, а так же внешний периметр.

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

Тестирования на проникновение принято делить на BlackBox, WhiteBox и GreyBox:

BlackBox — «черный ящик». Специалист располагает только общедоступной информацией о цели исследования, её сети и параметрах. Данный вариант максимально приближен к реальной ситуации. В качестве исходных данных для тестирования исполнителю сообщается только имя компании или ее сайт, а всю остальную информацию, такую как используемые компанией IP-адреса, сайты, точки выхода офисов и филиалов компании в сеть Интернет, исполнителю придётся выяснять самому.

WhiteBox – полная противоположность BlackBox. В данном случае, специалисту предоставляется максимум необходимой для него информации, вплоть до административного доступа на любые сервера. Данный способ позволяет получить наиболее полное исследование уязвимости объекта. При WhiteBox исполнителю не придётся тратить время на сбор информации, составления карты сети, и другие действия перед началом тестирования, а так же сократит время самого тестирования, т.к. часть проверок просто не придется делать. Плюс данного метода в более полном и комплексном подходе к исследованию. Минус в том, что это менее приближено к ситуации реальной атаки злоумышленника.

GrayBox – это средний вариант между WhiteBox и BlackBox, когда исполнитель действует по варианту BlackBox и периодически запрашивает информацию о тестируемой системе, для того чтобы сократить время исследования или более эффективно приложить свои усилия. Такой вариант самый популярный, так как позволяет провести тестирование без траты лишнего времени на сбор информации, и больше времени уделить поиску уязвимостей, при этом данный вариант остается достаточно близким к реальной ситуации действия злоумышленника.

1. ОСОБЕННОСТИ ПРОНИКНОВЕНИЯ НА УДАЛЕННУЮ КОМПЬЮТЕРНУЮ СИСТЕМУ.

Любое объективное и полноценное тестирование на проникновение обладает рядом особенностей и должно выполняться с учетом рекомендаций и правил.

Правила и рамки информационного тестирования на проникновение представлены в методологиях OSSTMM и OWASP. Впоследствии полученные данные можно легко адаптировать для проведения оценки соответствия с какими-либо промышленными стандартами и «лучшими мировыми практиками», такими как, Cobit, стандартами серии ISO/IEC 2700x, рекомендациями CIS/SANS/NIST/etc и стандартом PCI DSS.

Для осуществления такой оценки в полном объеме одних лишь технологических данных будет недостаточно. Для полноценной оценки требуется интервьюирование сотрудников различных подразделений оцениваемой компании, анализ распорядительной документации, различных процессов информационных технологий (ИТ) и информационной безопасности (ИБ) и много еще чего.

Что касается тестирования на проникновение в соответствии с требованиями стандарта по защите информации в индустрии платежных карт, – он не намного отличается от обычного тестирования, проводимого с использованием методик OSSTMM и OWASP. Более того, стандартом PCI DSS рекомендуется придерживаться правил OWASP при проведении как пентеста (AsV), так и аудита (QSA).

Основные отличия тестирования по PCI DSS от тестирования на проникновение в широком смысле этого слова заключаются в следующем:

  • Стандартом не регламентируется (а значит и не требуется) проведение атак с использованием социальной инженерии.
  • Все проводимые проверки должны максимально минимизировать угрозу «Отказа в обслуживании» (DoS). Следовательно, проводимое тестирование должно осуществляться методом «серого ящика» с обязательным предупреждением администраторов соответствующих систем.
  • Основная цель такого тестирования – это попытка осуществления
    несанкционированного доступа к данным платежных карт (PAN, Cardholder Name и т.п.).

Метод GrayBox позволяет снизить риск отказа в обслуживании при проведении подобных работ в отношении информационных ресурсов, функционирующих в режиме 24/7.

В общем случае тестирование на проникновение по требованиям PCI должно удовлетворять следующим критериям:

  • п.11.1(b) – Анализ защищенности беспроводных сетей
  • п.11.2 – Сканирование информационной сети на наличие уязвимостей (AsV)
  • п.11.3.1 – Проведение проверок на сетевом уровне (Network-layer
    penetration tests)
  • п.11.3.2 – Проведение проверок на уровне приложений (Application-layer penetration tests)

Определение границ проводимого исследования. В первую очередь необходимо выявить границы тестирования на проникновение, определиться и согласовать последовательность выполняемых действий. В лучшем случае со стороны подразделения ИБ может быть получена карта сети, на которой схематично показано, каким образом процессинговый центр взаимодействует с общей инфраструктурой. В худшем – придется общаться с системным администратором, который знает собственные недоработки и получение исчерпывающих данных об информационной системе будет затруднено его нежеланием делиться своими данными об ИС. Так или иначе, для проведения пентеста по PCI DSS, как минимум, требуется получить следующую информацию:

  • сегментация сети (пользовательская, технологическая, ДМЗ, процессинг и т.д.);
  • межсетевое экранирование на границах подсетей (ACL/МСЭ);
  • используемые Web-приложения и СУБД (как тестовые, так и продуктивные);
  • используемые беспроводные сети;
  • какие-либо детали обеспечения безопасности, которые необходимо учесть в ходе проведения обследования (например, блокировка учетных записей при N попытках неправильной аутентификации), особенности инфраструктуры и общие пожелания при проведении тестирования.

2. ЭТАПЫ ТЕСТИРОВАНИЯ НА ПРОНИКНОВЕНИЕ

Рассмотрим возможные этапы проведения тестирования на проникновение. В зависимости от располагаемой информации (BlackBox/ WhiteBox/ GreyBox), последовательность действий может быть различной: сбор данных, сетевое сканирование, взлом системы, вредоносное ПО, социальная инженерия.

2.1 Сбор данных.

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

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

Так же информацию могут предоставлять внутренние URL сайта, адреса e-mail, телефонные номера, факсы, DNS-сервер, диапазон IP-адресов, сведения о маршрутизации.

С развитием интернета широкое распространение получили WHOIS-сервисы. Whois (от английского «who is» - «кто такой») – сетевой протокол, базирующийся на протоколе TCP. Его основное предназначение – получение сведений о «регистранте» (владельце домена) и «регистраторе» (организации, которая домен зарегистрировала), имена DNS серверов, дату регистрации и дату истечения срока действия. Записи об IP адресах сгруппированы по диапазонам (например, 8.8.8.0 - 8.8.8.255) и содержат данные об организации, которой этот диапазон делегирован.

2.2 Сетевое сканирование.

Сетевое сканирование можно разделить на составляющие:

1. Сканирование диапазона IP-адресов для определения «живых» хостов

2. Сканирование портов

3. Обнаружение служб и их версий

4. Сканирование для определения ОС

5. Сканирование уязвимостей

1. Сканирование диапазона IP-адресов.

Фундаментальная задача при исследовании любой сети это сократить набор IP-диапазонов до списка активных хостов. Сканирование каждого порта каждого IP адреса медленно и необязательно. Интерес к исследованию определенных хостов во многом определяется целями сканирования. Задачи администраторов по обнаружению работающих хостов в сети могут быть удовлетворены обычным ICMP-пингом, людям же, которые тестируют способность сети противостоять атакам из вне, необходимо использовать разнообразные наборы запросов с целью обхода брандмауэра.

Задачу обнаружения хостов иногда называют пинг сканированием (ping scan), однако она намного превосходит использование обычных ICMP запросов ассоциирующихся с вездесущими ping утилитами. Сканировать сеть предпочтительно с помощью произвольных комбинаций мультипортовых TCP SYN/ACK, UDP и ICMP запросов. Целью всех этих запросов является получение ответов, указывающих, что IP адрес в настоящее время активен (используется хостом или сетевым устройством). В большинстве сетей лишь небольшой процент IP адресов активен в любой момент времени. Это особенно характерно для адресных пространств вида 10.0.0.0/8. Такие сети имеют 16 млн. IP адресов, но бывают случаи, когда они используются компаниями, в которых не более тысячи машин. Функция обнаружения хостов может найти эти машины в этом необъятном море IP адресов.

2. Сканирование портов.

Существует множество различных приемов сканирования портов и выбираются для конкретной задачи подходящий (или комбинацию из нескольких). Рассмотрим наиболее популярные приемы сканирования:

TCP SYN сканирование
SYN это используемый по умолчанию и наиболее популярный тип сканирования. Он может быть быстро запущен, он способен сканировать тысячи портов в секунду при быстром соединении, его работе не препятствуют ограничивающие бранмауэры.

Различные типы UDP сканирования
В то время как большинство сервисов Интернета используют TCP протокол, UDP службы также широко распространены. Тремя наиболее популярными являются DNS, SNMP и DHCP (используют порты 53, 161/162 и 67/68). Т.к. UDP сканирование в общем случае медленнее и сложнее TCP, то многие специалисты по безопасности игнорируют эти порты. Это является ошибкой, т.к. существуют UDP службы, которые используются атакующими.

TCP NULL, FIN и Xmas сканирования
Эти три типа сканирования используют незаметную лазейку в TCP RFC, чтобы разделять порты на открытые и закрытые.\

TCP ACK сканирование
Этот тип сканирования сильно отличается от всех других тем, что он не способен определить открый порт. Он используются для выявления правил брандмауэров, определения учитывают ли он состояние или нет, а также для определения фильтруемых ими портов.

3. Обнаружение служб и их версий.

При сканировании удаленной системы может быть выявлено, что порты25/tcp,80/tcp, и 53/udp открыты. Используя сведения можно узнать, что эти порты вероятно соответствуют почтовому серверу (SMTP), веб серверу (HTTP), и серверу доменных имен (DNS) соответственно. Эта информация обычно верна, т.к. подавляющее большинство служб, использующих 25 TCP порт, фактически, почтовые сервера. Тем не менее, не следует полностью полагаться на эту информацию. Люди могут и запускают службы с использованием нестандартных портов.

После обнаружения каких-либо TCP и/или UDP портов происходит процедура их идентификации с целью определения какие приложения (службы) их используют. Используя базу данных запросов для обращения к различным службам и соответствующие выражения для распознавания и анализа ответов можно определить протоколы службы (напр. FTP, SSH, Telnet, HTTP), имя приложения (e.g. ISC BIND, Apache httpd, Solaris telnetd), номер версии, имя хоста, тип устройства (напр. принтер, роутер), семейство ОС (напр. Windows, Linux) и иногда различные детали типа: возможно ли соединится с X сервером, версию протокола SSH, или имя пользователя.

4. Сканирование для определения ОС.

Возможно определить ОС на удаленной системе на основе анализа работы стека TCP/IP. Посылается серия TCP и UDP пакетов на удаленный хост и изучается практически каждый бит в ответах. После проведения множества тестов таких как TCP ISN выборки, поддержки опций TCP, IP ID выборки, и анализа продолжительности процедуры инициализации, сравнивается результаты сбазой данных, содержащей известные наборы типичных результатов для различных ОС и, при нахождении соответствий, можно сделать вывод об установленной ОС.

5. Сканирование уязвимостей.

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

2.3 Взлом системы.

Успех реализации того или иного алгоритма взлома на практике в значительной степени зависит от архитектуры и конфигурации конкретной операционной системы, являющейся объектом этого взлома.

Однако имеются подходы, которым может быть подвергнута практически любая операционная система:

  1. Кража пароля.
  2. Наблюдение за пользователем в момент его ввода пароля, дающего право на работу с операционной системой.
  3. Получение пароля из файла, в котором этот пароль был сохранен пользователем.
  4. Поиск пароля, который пользователи зачастую записывают на бумажном носителе.
  5. Кража внешнего носителя парольной информации (дискеты или электронного ключа, на которых хранится пароль пользователя, предназначенный для входа в операционную систему).
  6. Полный перебор всех возможных вариантов пароля.
  7. Подбор пароля по частоте встречаемости символов и биграмм, с помощью персональных словарей и наиболее часто применяемых паролей.
  8. Сканирование жестких дисков компьютера.
  9. Сборка «мусора».
  10. Превышение полномочий (используя ошибки в программном обеспечении или в администрировании операционной системы, исследователь получает полномочия, превышающие полномочия, предоставленные ему согласно действующей политике безопасности).
  11. Запуск программы от имени пользователя, имеющего необходимые полномочия, или в качестве системной программы (драйвера, сервиса, демона и т. д.).
  12. Подмена динамически загружаемой библиотеки, используемой системными программами, или изменение переменных среды, описывающих путь к таким библиотекам.
  13. Модификация кода или данных подсистемы защиты самой операционной системы.
  14. Отказ в обслуживании (целью этой атаки является частичный или полный вывод из строя операционной системы).
  15. Захват ресурсов (подконтрольная программа производит захват всех имеющихся в операционной системе ресурсов, а затем входит в бесконечный цикл).
  16. Бомбардировка запросами (подконтрольная программа постоянно направляет операционной системе запросы, реакция на которые требует привлечения значительных ресурсов компьютера).
  17. Использование ошибок в программном обеспечении или администрировании.

2.4 Вредоносное программное обеспечение.

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

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

Троянские программы - это вредоносные программы, выполняющие несанкционированные пользователем действия. Такие действия могут включать:

  1. Удаление данных
  2. Блокирование данных
  3. Изменение данных
  4. Копирование данных
  5. Замедление работы компьютеров и компьютерных сетей.

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

  1. Бэкдоры. Троянская программа бэкдор предоставляет злоумышленникам возможность удаленного управления зараженными компьютерами. Такие программы позволяют автору выполнять на зараженном компьютере любые действия, включая отправку, получение, открытие и удаление файлов, отображение данных и перезагрузку компьютера. Троянцы-бэкдоры часто используются для объединения группы компьютеров-жертв в ботнет или зомби-сеть для использования в криминальных целях.
  2. Эксплойты. Эксплойты - это программы с данными или кодом, использующие уязвимость в работающих на компьютере приложениях.
  3. Руткиты . Руткиты - это программы, предназначенные для сокрытия в системе определенных объектов или действий. Часто основная их цель - предотвратить обнаружение вредоносных программ антивирусным ПО, чтобы увеличить время работы этих программ на зараженном компьютере.

2.5 Социальная инженерия.

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

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

Техники социальной инженерии:

  • Претестинг. Претекстинг - это набор действий, проведенный по определенному, заранее готовому сценарию (претексту).
  • Фишинг. Фишинг (англ. phishing, от fishing - рыбная ловля, выуживание) - это видинтернет-мошенничества, целью которого является получение доступа к конфиденциальным данным пользователей - логинам и паролям. Целью фишинга является незаконное получение конфиденциальной информации.
  • Quid pro quo . Квид про кво (отлат. Quid pro quo - «то за это») - в английском языке это выражение обычно используется в значении «услуга за услугу». Зачастую социальный инженер представляется сотрудником технической поддержки, который сообщает о возникновении технических проблем на рабочем месте сотрудника и предлагает помощь в их устранении.

Проведенное в 2003 году исследование в рамках программы Информационная безопасность показало, что 90% офисных работников готовы разгласить конфиденциальную информацию, например свои пароли, за какую-либо услугу или вознаграждение.

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

Организация псевдоатаки.

Для организации псевдоатаки на компьютерную систему используем программные средства Social Engineering Toolkit (SET) и Metasploit Framework (MFS). Эти утилиты по умолчанию включены в дистрибутив Backtrack 5, предназначенный для тестирования возможности системного и сетевого взлома. Так же используем две виртуальные машины с такими ОС как: Windows 7 и Backtrack 5.

Генерация бэкдора. SET будем использовать для создания бэкдора с обратным TCP, а MFS для создания handler’a (обработчик), чтобы обрабатывать пакеты от созданного бэкдора, который будет поддерживать канал связи между потенциальным злоумышленником и системой, на которой будет запущен бэкдор.

Все действия производятся в консольном режиме на ОС Backtrack 5. Создание полезной нагрузки достигается через утилиту SET, п. 4 Create a Payload and Listerer

Создание полезной нагрузки с обратным TCP (для установления обратной связи) производится путем выбора п. 2 Windows Reverse TCP Meterpreter и затем п. 16 Backdoored Executable . Данная операция завершает создание бэкдора. При его создании также указывается номер порта, через который будет происходить обратная связь. В папке / pentest / exploits / SET будет сформирован msf.exe, на основе выбранных нами опций.

Настройка эксплойта. Эксплоит предназначен для получения запросов TCP от созданного бэкдора. Его настройка производится через запуск MFS и выбор эксплоита handler (прослушиватель): use exploit/multi/handler .

Вследствие этого MFS переключается в контекст обработчика эксплоита. Дальнейшая задача состоит в конфигурировании полезной нагрузки для этого эксплоита. Поскольку бэкдор ориентирован (создан) с Revers_TCP Meterpretor, то обмен информацией происходит через TCP соединение: set / payload windows / meterpreter / revers _ tcp . Кроме того необходимым является указание в опциях Local Host (ip-адреса потенциального злоумышленника).

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

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

70% сайтов имеют уязвимости высокой степени риска, которые приводят к компрометации ресурса и утечки данных.

Penetration test (сокр. pentest) или тест на проникновение - моделирование действий хакера на сайт, с целью получения абсолютно объективной оценки текущего уровня информационной безопасности исследуемого ресурса.

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

Зачем проводить тест на проникновение?

Проведения теста на проникновения решает в первую очередь следующие задачи:

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

В большинстве случаев тестирование проходит методом черного ящик (black box).

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

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

  • OWASP Testing Guide
  • OWASP Top10
  • Web Application Security Consortium Threat (WASC) Classification
  • Стандарты серии ISO 17799/27000

Проведение работ можно логически разбить на следующие этапы:

1. Сбор и анализ информации

2. Идентификация уязвимостей

3. Реализация атаки на веб-приложение

4. Анализ и составление отчета

5. Устранение уязвимостей

Сбор и анализ информации.

На данном этапе производится сканирование портов исследуемого ресурса, а также идентификация доступных сервисов, служб, средств защиты.

Идентификация уязвимостей.

Сбор и анализ информации об имеющихся уязвимостях в обнаруженных версиях служб, сервисов, скриптах. Выявление способов использования уязвимостей, оценка рисков использования уязвимостей. Тестирование уязвимостей OWASP Top10 (https://www.owasp.org). Анализ и тестирование логики веб-приложений, проверка возможности раскрытияе чувствительных данных, тестирование механизмов проверки входных данных (SQL Injection, XML Injection, XSS, Code Injection, B/H/S overflows) и т.д.

Реализация атаки на веб-приложение.

Проверка выполнение произвольного кода на стороне сервера, получение прав на чтение или запись файлов/бд на сервере, доступ к приватной информации и т.д.

Анализ и составление отчетов.

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

Как должен выглядеть список проверок и тестов?

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

1. «Abuse of Functionality». Злоупотребление функциональными возможностями. Использование функций веб-приложения с целью обхода механизмов разграничение доступа.

2. «Brute Force». Перебор паролей по словарям простых и стандартных паролей.

3. «Directory Indexing» Поиск листинга директорий.

4. «Content Spoofing».Подмена содержания сайта. отображение удаленного

5. «Credential/Session Prediction».Предсказуемое значение идентификатора

сессии позволяет перехватывать сессии других пользователей. Подобные атаки

выполняются путем предсказания или угадывания уникального идентификатора

сессии пользователя.

6. «Cross­Site Scripting». Атака на веб­приложение, заключающиеся во внедрении

в выдаваемую веб-­системой страницу вредоносного кода (который будет

выполнен на компьютере пользователя при открытии им этой страницы) и

взаимодействии этого кода с веб-­сервером злоумышленника.

7. «Cross­Site Request Forgery». Подделка межсайтовых запросов. Атака на

посетителей веб­сайта, использующая недостатки протокола HTTP.

8. «HTTP Response Smuggling». Атаки, основанные на некорректной передачи

ответов HTTP.

9. «HTTP Response Splitting». Атаки с разделением ответов HTTP.

10. «HTTP Request Smuggling». Атаки некорректной передачи запросов HTTP.

11. «HTTP Request Splitting». Атаки с разделением запросов HTTP.

12. «LDAP Injection». Внедрение операторов LDAP ­ атака на веб-сервер,

создающаю запросы к службе LDAP на основе данных, вводимых

пользователем.

13. «Null Byte Injection». Обход проверки фильтра веб-­инфраструктуры, путем

добавления в url символа нулевого байта, с целью изменения логики

веб-­приложения и получения НСД к файлам.

14. «OS Commanding». Выполнение команд ОС посредством манипуляций

входными данными приложения.

15. «Path Traversal». Получения доступа к файлам, директориям и командам,

находящимся вне основной директории веб-­сервера.

16. «Predictable Resource Location». Предсказуемое расположение ресурсов,

позволяющие получить доступ к скрытым данным или функциональным

возможностям.

17. «Remote File Inclusion» (RFI).Тип атаки, которая позволяет использовать

удаленный файл на серверной стороне, через скрипт на веб­-сервере.

18. «Routing Detour». Маршрутизация SOAP сообщений.

19. «Session Fixation». Фиксация сессии. Используя данный класс атак,

злоумышленник присваивает идентификатору сессии пользователя заданное

значение.

20. «SOAP Array Abuse». Инъекции определений наборов данных в SOAP­ сообщение.

21. «SSI Injection». Внедрение серверных расширений. Вставка серверных команд в

HTML код или запуск их напрямую с сервера.

22. «SQL Injection». Внедрении в запрос произвольного SQL ­кода.

23. «URL Redirector Abuse». Редиректы без верификации для спама.

24. «XPath Injection». Внедрение операторов XPath ­ атаки направленные на

веб-сервер, создающие запросы на языке XPath на основе данных, вводимых

пользователем.

25. «XML Attribute Blowup»."Раздутие" параметров.

26. «XML External Entities». Инклуд внешнего файла.

27. «XML Entity Expansion». Внедрение переменных из тела сообщения.

28. «XML Injection». Внедрении в запрос произвольного XML­кода.

29. «XQuery Injection». Внедрении в запрос произвольного XQuery ­кода.

Как должен выглядеть отчет?

Отчет должен содержать введение, где будет описана методика проведения работ, объект аудита, границы тестирования (scope), так же должна содержаться информация об используемых инструментальных средствах анализа защищенности, которые будут применяться при тестировании. Каждой уязвимости, обнаруженной в ходе проведения тестирования присваивается определенная степень риска – высокая, средняя, низкая.

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

Для описания степени риска и оценки критичности обнаруженных уязвимостей используются классификации "The Common Vulnerability Scoring System (CVSSv2)", MITRE (CAPEC) и OWASP. Так же все уязвимости должны быть классифицированы по сложности эксплуатации и обнаружению.

Пример уязвимости:

Unrestricted upload

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

Сложность эксплуатации – легко.

Тип – удаленная.

Воздействие (CVSSv2) – Бизнесс воздействие – 10 баллов

CWE-434: Unrestricted Upload of File

OWASP Unrestricted File Upload

А надо ли...?

Необходимость проведения теста на проникновение каждый определяет сам для себя. Задачи проведения перечислены в начале статьи. Если ресурс содержит критически важные и ценные данные, имеет высокую посещаемость, идет обработка перс. данных ну или сайт просто приносит хорошие деньги - необходимость проведения теста очевидна. Достаточно вспомнить недавнюю утечки данных FL.ru http://siliconrus.com/2015/02/fl-hacked .

По опыту могу сказать, что ломают все сайты, которые представляют той или иной интерес для взломщика. Иногда взлом происходит просто ради интереса или продвижения политический идей и т.д. (http://ru.wikipedia.org/?oldid=65240870). В этом месяца было много дефейсов (подмена содержания главной страницы) исламским государством. На сайтах размещалась молитва и различные изображения, отпугивая клиентов.

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

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

Каковы причины уязвимостей системы?

Пробелы в безопасности появляются на разных стадиях процесса и зависят от множества факторов:

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

Чем отличаются тестирование на проникновение и оценка уязвимости?

Обе эти методики преследуют одну цель – сделать программный продукт безопасным, но имеют разные рабочие процессы.

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

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

Оценка уязвимости следует заранее определенной и установленной процедуре, в то время как тестирование на проникновение решает единственную задачу — разрушения системы вне зависимости от принятых подходов.

Для чего нужно тестирование на проникновение?

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

Рассмотрим результаты применения данной методики подробнее. Итак, тестирование на проникновение предоставляет:

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

Как выполнить тестирование на проникновение?

Тестирование на проникновение системы может осуществляться с использованием любого из следующих подходов:

1. Ручное тестирование на проникновение
Для проведения ручного тестирования на проникновение программного продукта используется последовательный стандартный подход, включающий следующие этапы:

    • Планирование тестирования проникновения. Этот этап включает в себя сбор требований, определение сферы применения, стратегий и целей тестирования проникновения в соответствии с нормами безопасности. Кроме того, он может содержать оценку и перечисление проверяемых областей, типы планируемых испытаний и другие связанные с этим проверки.
    • Разведка. Сбор и анализ максимально подробной информации о системных и связанных с ними атрибутах безопасности, полезных для таргетинга и атаки на каждый блок, для эффективного и результативного тестирования системы проникновения в систему. Различают две формы сбора и анализа информации о целевой системе: пассивная и активная разведка (в первом случае не предполагается прямое взаимодействие с системой).
    • Анализ уязвимости. На этом этапе тестировщики выявляют и обнаруживают уязвимые области системы, которые в дальнейшем будут использоваться для входа и атаки с помощью тестов на проникновение.
    • Эксплуатация. Фактическое испытание на проникновение в систему, включающее внутренние и внешние атаки. Внешние атаки – это сэмулированные атаки со стороны внешнего мира, преобладающие за пределами границы системы / сети (например, получение несанкционированного доступа к функциям и данным системы, относящимся к приложениям и серверам, обращенным к общественности). Внутренние атаки начинаются уже после вторжения авторизованных объектов в систему или сеть и имеют целью различные действия (при достижении компромисса с целостностью и правдивостью системы), которые способны преднамеренно или непреднамеренно скомпрометировать систему.
    • Пост-эксплуатация. Следующий шаг – анализ каждой атаки на систему для оценки ее цели и задачи, а также ее потенциального воздействия на системные и бизнес-процессы.
    • Отчетность. На самом деле, отчетность включает в себя документационную работу по мероприятиям, проводимым на всех упомянутых этапах. Кроме того, она может описывать различные риски, выявленные проблемы, уязвимые области (использованные или нет) и предлагаемые для устранения недостатков решения.

2. Автоматическое тестирование на проникновение

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

Назовем лишь некоторые из популярных и широко используемых инструментов тестирования на проникновение:

Многие инструменты для автоматизированного тестирования можно найти в готовых сборках Linux (Kali Linux , Mantra OS).

Для работы над конкретным проектом придется выбирать инструмент, отвечающий целому ряду требований и критериев:

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

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

Типы испытаний на проникновение

Тестирование на проникновение в зависимости от используемых элементов и объектов может быть отнесено к следующим типам:

    • Социальная инженерия. Тестирование с подключением «человеческого контингента», способного четко выявлять и получать конфиденциальные данные и другую информацию через Интернет или телефон (к этой группе могут относиться сотрудники организации или любые другие уполномоченные лица, присутствующие в сети организации).
    • Веб-приложение. Используется для обнаружения прорех в безопасности и иных проблем в нескольких вариантах веб-приложений и сервисов, размещенных на стороне клиента или сервера.
    • Сетевая служба. Тестирование проникновения в сеть для выявления и обнаружения возможности доступа хакерам или любому неавторизованному объекту.
    • Клиентская часть. Как видно из названия, этот тест используется для тестирования приложений, установленных на клиентском сайте / приложении.
    • Удаленное подключение. Тестирование vpn или аналогичного объекта, который может обеспечить доступ к подключенной системе.
    • Беспроводные сети. Тест предназначен для беспроводных приложений и сервисов, включая их различные компоненты и функции (маршрутизаторы, фильтрационные пакеты, шифрование, дешифрование и т.д.).

Классифицировать тестирование на проникновение также можно и на основе используемых подходов к тестированию:

    • Белый ящик. При таком подходе тестировщик будет иметь полный доступ к глубоким знаниям о функционировании и основных атрибутах системы. Это тестирование очень эффективно, так как понимание каждого аспекта системы очень полезно при проведении обширных испытаний на проникновение.
    • Черный ящик. Тестировщикам предоставляется только высокоуровневая информация (например, URL или IP-адрес организации) для проведения тестирования на проникновение. Специалист может ощутить себя хакером, который ничего не знает о системе / сети. Это весьма трудоемкий подход, так как тестировщику требуется значительное количество времени для изучения свойств и деталей системы; кроме того, высока вероятность пропустить часть областей из-за недостатка времени и информации.
    • Серый ящик. Тестировщик получает ограниченную информацию (например, знания алгоритма, архитектуры, внутренних состояний) для имитации внешней атаки на систему.

Ограничения тестирования на проникновение.

У тестирования на проникновение существует ряд ограничений:

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

Вывод:

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

В завершение приведу несколько полезных ссылок.
Проект Awesome Penetration Testing постоянно обновляет инструменты, статьи, книги по тестированию на проникновение.

Стандарты:

Сертификация:

Последняя пара лет была богата на события, которые резко повысили интерес общества к теме хакерских атак. Скандал со взломом систем демократической партии США, выведение из строя энергетических систем инфраструктуры Министерства финансов и казначейства Украины, вирусы-вымогатели, уже не только шифрующие файлы, но и блокирующие работу промышленного и медицинского оборудования, MIRAL, гигантский ботнет из бытовых устройств, оставивший без связи половину США и Либерию, злоумышленники, массово потрошащие банки, как волки беззащитных овечек… Под ударом даже SWIFT! Хакеры из киношных гиков стали частью реальности миллиардов людей.

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

В этот раз мы решили сосредоточиться исключительно на практических моментах информационной безопасности (ИБ), связанных с компьютерными атаками и непосредственной защитой от них. Для взлома в исполнении «белых шляп», т.е. специалистов, легально имитирующих действия злоумышленников, используется термин «тестирование на проникновение» (penetration test, pentest). За этим термином скрываются сразу несколько направлений исследования защищенности, и в каждом из них работают свои узкие специалисты. В статье мы разберемся, что такое пентест, зачем он нужен и где проходит граница между атакой хакера и тестированием на проникновение.

Пентест по сути своей - это один из видов аудита ИБ. И в этом его главное отличие от реального взлома. Хакер ищет самую короткую дорогу к контролю над системами жертвы. Если на периметре нашлась дыра, злоумышленник сосредотачивается на закреплении и развитии атаки вовнутрь. А пентестер, которому заказали внешнее тестирование сети, должен скрупулезно обследовать хост за хостом, даже если уже найдена целая куча дыр. Если хосты однотипны (например, 1000 одинаковых рабочих станций), исследователь, конечно, может сделать контрольную выборку, но пропускать принципиально отличные системы недопустимо. Наверное, для заказчика это самый простой способ определить некачественный пентест.

Пентест не заменяет полноценный аудит ИБ. Для него характерен узконаправленный взгляд на исследуемые системы. Пентест по сути своей имеет дело со следствиями, а не с причинами недостатков ИБ. Зачем же его вообще проводить? Когда промышленность выпускает новый образец военной техники, инженеры тщательно просчитывают свойства брони, характеристики вооружения, но на военной приемке технику все равно выкатывают на полигон, обстреливают, подрывают и т.д. Эксперимент - критерий истины. Пентест позволяет понять, так ли хорошо, как мы думаем, выстроены у нас процессы ИБ, надежны ли системы защиты, верна ли конфигурация на серверах, понимаем ли мы путь, по которому пойдет реальный хакер. Таким образом, может сложиться впечатление, что пентест необходим компаниям, которые уже основательно вложились в ИБ. В теории это так, но на практике зачастую совсем иначе.

Я вывел для себя такую формулу пентеста:

Исследование - это самая очевидная часть пентеста. Как в кино: странные ребята в худи в ночи громят ИТ-оборону. На деле зачастую все несколько прозаичнее, зато данный образ позволяет пентестерам не соблюдать корпоративный дресс-код.

Отчет - обычно не самая любимая часть работы для пентестеров, но она критически важна. Заказчик работ должен получить детальное описание всех успешных и неуспешных попыток проникновения, понятное описание уязвимостей и, что очень важно, рекомендации по их устранению. К последней части рационально привлекать профильных специалистов по ИБ, потому что знать, как сломать, вовсе не означает знать, как правильно и безопасно это поправить в реальности корпоративной ИТ-инфраструктуры.

И последний компонент, ради которого зачастую и организуется весь пентест, - это шоу. Такой аудит на порядок превосходит любой другой по наглядности, особенно для непрофессионалов. Это лучший способ продемонстрировать недостатки ИБ руководству компании в доступной для неспециалистов форме. Краткое (на паре страниц) Executive Summary со сканом паспорта CEO, титульного листа конфиденциального отчета и базы клиентов может принести для ИБ в компании больше пользы, чем весь 200 страничный отчет, идущий далее. Именно поэтому зачастую пентест заказывают компании, где ИБ до этого толком не занимались, и бизнес, а зачастую и ИТ, не понимают серьезности существующих рисков.

Параметры тестирования

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

Поставленная заказчиком работ цель атаки может сильно отличаться от пентеста к пентесту. Под «просто взломайте нас» обычно подразумевается захват контроля над ИТ-инфраструктурой (права администратора домена, сетевого оборудования), компрометация бизнес-систем и конфиденциальной информации. А бывают узконаправленные пентесты. Например, в рамках сертификации по требованиям безопасности карточных данных PCI DSS целью ежегодного обязательного пентеста является компрометация именно карточных данных. Здесь в первый же день работ сеть банка может быть полностью захвачена, но, если последний бастион с секретными данными не падет, организация успешно пройдет проверку.

Модель знаний о системе определяет стартовую позицию пентестера. От полной информации о системе (White box) до полного ее отсутствия (Black box). Зачастую выделяют и средний вариант (Grey box), когда, например, пентестер имитирует действия непривилегированного пользователя, имеющего некоторые данные о системе. Это может быть рядовой клерк, компания-партнер, клиент с доступом в личный кабинет и т.п. White box - это скорее аудит, а не классический пентест. Применяется в том случае, когда нужно детально изучить защищенность на узком участке. Например, проверяется новый клиентский портал. Исследователю предоставляется вся информация по системе, зачастую исходный код. Это помогает детально изучить систему, но едва ли имитирует реальные атаки. Заказчики Black box пентеста хотят получить полную имитацию атаки хакера, который не обладает инсайдерской информацией о системе.

Модель знаний сильно пересекается с понятием модель нарушителя. Кто нас атакует: внешний хакер, инсайдер, администратор? Деление это очень условно. Компрометация рабочей станции рядового пользователя или подрядчика с технической точки зрения моментально превращает внешнего хакера во внутреннего нарушителя.

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

Виды атак

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

Внешний инфраструктурный пентест - анализ сетевого периметра из Интернета. Пентестер пытается скомпрометировать доступные сетевые сервисы и по возможности развить атаку вовнутрь сети. Многие считают, что это и есть имитация реальной атаки, направленной на проникновение в сеть компании извне. На деле злоумышленники сегодня в 80–90% случаев преодолевают сетевой периметр с использованием методов социальной инженерии. Не нужно ломиться в крепостные стены, если под ними есть замечательный подкоп. Однако часто дырки бывают и тут. Например, недавно мы проводили работы для крупного авиационного завода, в рамках которых еще на этапе автоматического анализа сканер подобрал пароль к системе удаленного управления АСУ ТП. Халатность подрядчика, забывшего отключить удаленный доступ, позволяла хакеру поднять давление в трубопроводах с техническими жидкостями на порядок. Со всеми вытекающими в прямом и переносном смысле.

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

Shadow IT

Часто проникновение проходит с использованием систем, которые выпадают из поля зрения ИТ. Все серверы на периметре обновлены, а про IP-телефонию или систему видеонаблюдения забыли. И хакер уже внутри. Для такой инфраструктуры, выпавшей из поля зрения администраторов, есть специальный термин - Shadow IT. По оценке Gartner, к 2020 году до трети всех взломов будут проходить с использованием Shadow IT. На наш взгляд, это вполне реалистичная оценка.

Например, однажды наш пентестер нашел на идеально защищенном периметре банка необновленные системы колл-центра, через которые за 2 дня удалось полностью скомпрометировать все основные банковские АС. Оказалось, что за них отвечал не департамент ИТ, а телефонисты. В другом случае точкой входа для пентеста была сеть секретарей на ресепшн, полностью изолированная от корпоративной. Каково же было удивление заказчика работ, когда через пару дней пентестер отчитался о полном захвате сети. Ему удалось взломать необновленный принтер, залить на него шелл и получить доступ в VLAN управления принтерами. Скомпрометировав их все, пентестер получил доступ во все офисные сегменты компании.

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

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

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

Основными результатами атаки на web-ресурс обычно является компрометация данных из СУБД и возможность атаки на клиентов (например, различные виды XSS находятся на сайтах каждого второго банка). Чуть реже компрометация web-сервера позволяет проникнуть в саму сеть компании, но зачастую, если искомые данные уже скомпрометированы, это может и не потребоваться злоумышленнику.

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

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

Рост интереса к тестированию на устойчивости к DDoS особенно заметен в последние пару лет. Информация о крупных атаках постоянно появляется в прессе, но ими дело не ограничивается. В сегменте розничного интернет-ритейла, например, в пики продаж (перед праздниками) атаки идут практически непрерывно. Что делать с примитивными атаками, направленными на исчерпание канала связи или ресурсов серверов путем отправки огромных объемов трафика, в целом ясно. Интереснее изучить устойчивость ресурса к атакам уровня приложения. Даже один клиент, генерирующий сравнительно небольшое число специфических запросов к web- сайту, может вывести его из строя. Например, специфические запросы в поле поиска по сайту могут полностью положить back-end.

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

Более того, бытует мнение, что от этого лома нет приема. Этот термин объединяет огромное число техник, включающих рассылку обманных сообщений по почте, телефонное и личное общение для получения доступа на объект или к системам, разбрасывание у офиса компании-жертвы флешек с вредоносным вложением и многое другое.

Атаки на Wi-Fi ошибочно относят к внутреннему пентесту. Если ваш смартфон не ловит корпоративный Wi-Fi за пределами проходной, это не дает гарантий того, что злоумышленники не смогут до него дотянуться. Направленная антенна с ebay стоимостью 100$ позволяла нам проводить работы с расстояния более километра от точки доступа. В рамках пентеста Wi-Fi не всегда рассматривается как точка проникновения в сеть. Чаще он используется для атаки на пользователей. Например, пентестер паркуется у проходной предприятия до начала рабочего дня и разворачивает сеть с тем же именем (SSID), что у корпоративного Wi-Fi. Устройства в сумках и карманах сотрудников пытаются присоединиться к знакомой сети и передают для аутентификации в ней… доменные логин и пароль. Затем пентестер использует эти утечки для доступа к почте пользователей, VPN-серверам и т.д.

Анализ мобильных приложений для злоумышленника упрощается тем, что их легко скачать из магазина и детально исследовать в «песочнице», восстановив исходный код. Для обычных web-ресурсов о такой роскоши приходится только мечтать. Поэтому данный вектор атаки так популярен сегодня. Мобильные клиенты сейчас очень распространены не только у банков и ритейла. Их выпускают все подряд, а о безопасности думают в самую последнюю очередь.

Условно исследование мобильного приложения можно разделить на 3 компоненты: анализ восстановленного исходного кода на наличие дыр в безопасности, исследование приложения в «песочнице» и анализ методов взаимодействия приложения с сервером (содержание пакетов, API, уязвимости самого сервера). У нас недавно был кейс, когда API серверной части мобильного банковского приложения работало так, что можно было сформировать пакет, вызывающий перевод произвольной суммы денег с любого счета в банке на любой другой счет. И это было не исследование перед стартом приложения - оно уже давно было в продуктиве. Многие мошеннические схемы сегодня также реализуются при помощи мобильных приложений, так как про борьбу со фродом забывают еще чаще, чем про ИБ.

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

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

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

Ограничения пентеста

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

В заключение

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

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

Похожие публикации