Перейти к содержанию

Penetration testing


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

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

Сбор информации (Gathering information).

Представляет из себя проведение разведки без непосредственного воздействия на инфраструктуру и информационные системы/активы предприятия. Заключается в сборе максимального количества информации которая может быть полезна в последствии. В качестве примера можно привести OSINT (Open source intelegence)

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

К примеру, используя такие сервисы как DNSDumpster, а также различные инструменты из состава dnsutils такие как dig, nslookup, whois, можно получить различные сведения о владельце домена. А изучая информацию о размещенных вакансиях - узнать об используемых системах и т.д.

Еще одним крайне полезным инструментом для проведения пассивной разведки является shodan.io, который по сути является сканером всего Интернета.

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

Сканирование (Enumeration).

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

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

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

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

Инструменты используемые на этапе Enumeration
  • nmap - Утилита для исследования сети и сканер портов.
  • gobuster - Утилита для перебора директорий, субдоменов, виртуальных хостов
  • feroxbuster - Утилита аналог gobuster, однако быстрее (привет Rust).
  • nikto - Утилита для сканирования web сайтов/приложений
  • WPScan - Утилита для сканирования сайтов на Wordpress

Эксплуатация уязвимостей (Exploitation).

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

Эскалация привилегий (Privelege escalation).

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

Пост-эксплуатация (Post explotation).

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