
ChatGPT генерирует эксплойты, автосканеры находят уязвимости за минуты, а фреймворки сами пишут отчеты. Неужели профессия пентестера обречена? Спойлер: нет, не обречена. Но кардинально меняется.
Современные инструменты творят чудеса. AMASS за полчаса соберет карту субдоменов компании, Nuclei проверит тысячи уязвимостей по готовым шаблонам, а Metasploit поможет получить доступ к системе парой команд. Скорость впечатляет, но есть нюанс. Автоматизация отлично справляется с рутиной и шаблонными задачами, а вот креативное мышление пока остается прерогативой человека. Найти цепочку нестандартных действий, которая приводит к компрометации системы, или понять, что безобидная на вид уязвимость может обанкротить компанию — такое машинам не под силу.
В этой статье Сергей Зыбнев — наш эксперт, который прошел путь от сисадмина до администратора средств защиты и, наконец, пентестера расскажет, где автоматизация незаменима, а где без человеческого мозга не обойтись. Пройдем по всем этапам пентеста от разведки до написания отчета, и посмотрим, как грамотно сочетать силу машин с интуицией специалиста.
Автоматизированный vs ручной пентест
Автоматизация как нитро-ускоритель для пентестера: позволяет охватить максимум таргетов, расширить скоуп и быстрее прийти к финишу. Специализированное ПО действительно способно на многое:
поиск уязвимостей;
генерация payload;
создание рабочих PoC при наличии частичной информации в публичном доступе;
генерация и кастомизация эксплойтов под конкретную цель (например, с помощью LLM или специальных тулз);
сбор артефактов и доказательств эксплуатации;
интеграция с системами управления задачами, подготовка отчетов и так далее.
В большинстве случаев автоматизированный пентест покрывает популярные методологии вроде OWASP или NIST по заданным алгоритмам: ищет типовые уязвимости, перебирает шаблонные конфигурации, эксплуатирует описанные баги. Автоматика отлично показывает себя там, где важны скорость и повторяемость.
Ручной подход, напротив — чистое искусство. Креатив, адаптация к нестандартным ситуациям, анализ бизнес-логики и поиск тех хитроумных цепочек и нестандартных векторов атак, которых нет ни в одной публичной базе.
На практике эти подходы не конкурируют, а дополняют друг друга. Автоматизация снимает рутину, освобождая эксперта для полета мысли. Это как в детективных сериалах: хитроумные анализы и системы видеонаблюдения помогают найти улики и зацепки, но распутывает дело все равно сыщик
Притом важно понимать, что ни один из этапов тестирования нельзя автоматизировать на 100%. Давайте разберемся, какие задачи по зубам машинам, а где без человека — никуда, на каждой из укрупненных стадий пентеста.
Сбор информации о цели в открытых источниках (OSINT) и разведка
Пожалуй, OSINT остается чемпионом по уровню автоматизации среди всех стадий пентеста. Примерно 90–95% задач здесь легко закрываются с помощью тех или иных программ.
Возможности и инструменты автоматизации
Современные инструменты помогают собрать обширные массивы данных за считаные минуты, причем без прямого взаимодействия с инфраструктурой заказчика. В этот «автоматизированный невод» попадается самая разная информация: от доменов и IP-адресов до корпоративных утечек.
Комбинирование различных источников данных и создание единого workflow
Эту задачу отлично решает, например, Recon-ng, благодаря своей модульной архитектуре. Его интерфейс, к слову, напоминает Metasploit, и этим нравится многим пентестерам.
Типичный сценарий автоматизации с Recon-ng выглядит примерно так:
# Создаем воркспейс для цели
workspaces create target_company
# Добавляем домен для исследования
db insert domains
example.com
# Загружаем модуль для поиска субдоменов
modules load recon/domains-hosts/hackertarget
# Запускаем автоматический сбор
run
# Переключаемся на сбор email-адресов
modules load recon/domains-contacts/whois_pocs
run
Главная фишка Recon-ng — возможность скриптовать рутину. Можно написать один ресурсный файл, который последовательно запустит десятки модулей, соберет данные из разных источников и сам сформирует отчет.
Глубокая автоматизация поиска субдоменов
Для этой цели часто используют AMASS. Инструмент применяет множество техник: от анализа веб-архивов и API различных сервисов до DNS-перебора и скрапинга поисковиков.
# Базовый автоматизированный поиск
amass enum -d target.com -o results.txt
# Расширенный поиск с использованием ASN
amass enum -d target.com -asn -ipv4 -w wordlist.txt
# Интеграция с пассивными источниками
amass enum -passive -d target.com
AMASS автоматически агрегирует данные из десятков источников: CertDB, Censys, VirusTotal, архивов Wayback Machine и так далее. Результат — полная карта внешнего периметра без активных запросов к инфраструктуре цели.
Автоматизированная разведка устройств
Shodan прекрасно автоматизирует поиск устройств, торчащих в интернет, сканирует порты и «читает» баннеры сервисов по всему миру.
# Поиск всех устройств организации по IP-диапазону
net:192.168.1.0/24
# Автоматический поиск уязвимых сервисов
product:"Apache" version:"2.2" country:"US"
# Поиск IoT-устройств с дефолтными паролями
"default password" port:23
API Shodan позволяет написать скрипт, который будет регулярно мониторить появление новых устройств в сети организации и слать алерты о потенциальных угрозах.
Создание карты внешнего периметра
Автоматизация — это хорошо, а интеграция инструментов — еще лучше. Вот упрощенный пример автоматизированного пайплайна для OSINT и разведки:
theHarvester собирает базовую информацию: домены, email-адреса, IP.
AMASS углубленно ищет субдомены и картирует инфраструктуру.
Recon-ng агрегирует данные из множественных источников.
Shodan ищет конкретные уязвимые сервисы и устройства.
Результат работы такой связки — детальная карта внешнего периметра организации за 15–30 минут. Без шума и пыли единого активного сканирования.
Ограничения автоматизации
Перефразируя известную поговорку, «собирай, но перепроверяй». Хотя львиную долю информации удается собрать автоматически, некоторые ценные данные могут ускользнуть от инструментов. Вот основные грабли:
API-лимиты. Большинство сервисов ограничивает количество запросов. Классика жанра: API-ключ истек, автоматика этого не заметила и отрапортовала, что ничего не нашла, а пентестер потом руками раскапывает Клондайк.
Контроль качества данных. Автоматика работает как пылесос, засасывая все подряд, включая устаревшую и неточную информацию. Требуется ручная фильтрация.
Игнорирование бизнес-контекста. Инструменты не понимают специфику и цели бизнеса, а значит, могут пропустить неочевидные, но критически важные зацепки.
Сканирование портов, сервисов и баннеров
Этот этап также предоставляет обширное поле для автоматизации. Хотя и здесь не обходится без подводных камней. По традиции начнем с хорошего.
Возможности и инструменты автоматизации
Современные сканеры поддерживают десятки техник, каждая из которых решает свою задачу.
Базовое сетевое сканирование
Это, пожалуй, самая благодатная почва для автоматизации. Даже если инструменты что-то упустят, их можно дообогащать с каждым новым пентестом и таким образом совершенствовать поиск. «Швейцарским ножом» здесь по праву признан Nmap.
Основные автоматизированные сценарии с Nmap:
# Быстрое сканирование всего диапазона портов (65535)
nmap -T4 -p- 192.168.1.0/24
# Детальное сканирование с определением сервисов и ОС
nmap -sS -sV --version-all -O 192.168.1.1
# Агрессивное сканирование, с низкими таймингами timeout
nmap -sV -T4 target.com
# Stealth-сканирование для обхода файрволов. По факту редко используется, т.к. очень долго приходится ждать
nmap -sF -T1 192.168.1.1
Быстрое сканирование
Для оперативного сканирования больших сетей подходят такие инструменты, как Masscan. Некоторые тулзы способны передавать миллионы пакетов в секунду и, в теории, могут просканировать чуть ли не весь интернет за какие-то минуты.
# Быстрое сканирование большой сети
masscan 10.0.0.0/8 -p80,443,22 --rate=10000
# Сканирование с получением баннеров
masscan 192.168.1.0/24 -p80 --banners --source-ip 192.168.1.100
# Сканирование всех портов на конкретном хосте
masscan 192.168.1.1 -p1-65535 --rate=1000
Автоматический сбор баннеров
Тот же Masscan может автоматически собирать баннеры сервисов, хотя для этого и требуются «танцы с бубном». Поскольку у него собственный TCP/IP стек, локальная система может убивать соединения RST-пакетами раньше, чем будет получен баннер.
Возможное решение — использовать отдельный IP или временно заблокировать порты через iptables:
# Linux: блокируем порт для Masscan
iptables -A INPUT -p tcp --dport 60000 -j DROP
masscan 10.0.0.0/8 -p80 --banners --source-port 60000
# macOS/BSD
sudo ipfw add 1 deny tcp from any to any 60000 in
masscan 10.0.0.0/8 -p80 --banners --source-port 60000
Выбор инструмента для автоматизации
Выбор между Nmap и Masscan зависит от задачи:
Критерий |
Nmap |
Masscan |
Скорость |
Медленнее, но тщательно |
Миллионы пакетов/сек |
Глубина анализа |
Детальный анализ, определение ОС |
Только открытые порты |
Скрытность |
Множество stealth-техник |
Агрессивное сканирование |
Кастомизация |
Высокая с NSE-скриптами |
Ограниченная |
Применение |
Детальная оценка уязвимостей |
Быстрые масштабные сканы |
Впрочем, на самом деле выбирать что-то одно не обязательно. Обе тулзы легко интегрируются в автоматизированные пайплайны (например, как в репозитории masstomap). Так можно объединить скорость Masscan для первичного обнаружения и точность Nmap для детального анализа.
Ограничения автоматизации
Теперь о тех самых «граблях», на которые наступают при автоматизации этого этапа пентеста.
Зависимость от инфраструктуры. Сканер может найти массу открытых портов в одной сети, но пропустить все самое интересное в другой. Почему? Например, во второй компании грамотнее настроены средства защиты или случилась банальная сетевая ошибка, мешающая сканированию. Так что, если инструмент ничего не нашел, это повод засучить рукава и проверить сеть вручную.
Противодействие средств защиты. Распространенный сценарий — эмуляция открытия всех портов для защиты от автосканирования. Если сеть обширная, сканер уходит в бесконечный цикл, пытаясь проверить 65 535 портов на сотнях серверов. Остается только воскликнуть «Горшочек, не вари!» и, опять же, перейти к ручному анализу.
Бесконечный поток мусора. Другой неприятный сценарий: на автоматически сканируемый порт начинает литься нескончаемый поток мусорных данных. Автоматика сходит с ума, сканирование зависает.
Низкая глубина сканирования. Например, сканер не станет расшифровывать обфусцированный JavaScript-файл — такие задачи остаются за пентестером. Некоторые инструменты умеют проводить глубокий анализ API, но для этого нужно проделать серьезную подготовительную работу: настроить учетные записи, роли доступа. По умолчанию сканер просто пробежится по верхам, в лучшем случае укажет на устаревшую версию SSL. Как говорится, ни в чем себе не отказывайте.
Поиск известных уязвимостей
Итак, у нас есть карта открытых портов и сервисов. Самое время поискать в них дыры с помощью автоматизации. Современные тулзы за считаные минуты сопоставляют версии сервисов с базами CVE и выдают список потенциальных уязвимостей. При поиске известных CVE автоматизация обеспечивает 80–90% покрытия при минимальных временных затратах.
Возможности автоматизации
Автоматика лучше всего справляется с поиском клиентских уязвимостей, например, XSS. Можно даже узнать о факте эксплуатации по ответу сервера, не открывая браузер (хотя зайти и перепроверить никогда не помешает).
Классический поиск уязвимостей
Базовый инструмент здесь — Nmap с его скриптовым движком. Например, скрипт Vulners автоматически сопоставляет обнаруженные версии сервисов с онлайн-базой vulners.com, которая регулярно обновляется и содержит информацию о CVE.
# Комбинированное сканирование: порты + уязвимости
nmap -sV --script vulners 192.168.1.1
# Использование встроенных скриптов для поиска уязвимостей
nmap --script vuln 192.168.1.1
# Автоматизированный поиск с детализацией
nmap -sV --script vulners --script-args vulners.showall 192.168.1.1
Nmap Vulners интегрируется прямо в процесс сканирования. Не нужно ничего запускать отдельно — все в одной команде. Скрипт сам анализирует баннеры, извлекает версии и сверяет их с базой.
Шаблонный подход к автоматизации
Другой инструмент, Nuclei, стал популярен благодаря YAML-шаблонам. В отличие от старых сканеров, Nuclei имитирует реальные условия эксплуатации, что резко снижает число ложных срабатываний.
# Базовое сканирование с использованием всех шаблонов
nuclei -u https://target.com
# Сканирование конкретных типов уязвимостей
nuclei -u https://target.com -t cves/
# Сохранение результатов в машиночитаемом виде для дальнейшего использования в pipeline
nuclei -target example.com -json-export output.json
# Сканирование с применением шаблонов, которые будут тестировать цели динамически (DAST). Раньше называлось -sast
nuclei -l targets.txt -dast
Сила Nuclei — в его обширной и постоянно обновляемой базе шаблонов от сообщества. Каждый шаблон — это не просто сигнатура, а полный сценарий проверки: HTTP-запросы, анализ ответов и условия срабатывания.
Ловите пару советов, как получать новые шаблоны для Nuclei быстрее остальных:
Писать самостоятельно. Изучайте публичные ресерчи и генерируйте шаблоны, в том числе с помощью ChatGPT (с качественным промптом он справляется лучше, чем встроенная Nuclei AI).
Заглядывать в Pull Requests репозитория nuclei-templates. Проверяйте последние PR, оценивайте качество шаблона и копируйте его себе локально, не дожидаясь мержа. Лично я так однажды заполучил шаблон на RCE в популярной системе, которая как раз поджидала меня у заказчика и еще не успела пропатчиться. Бинго!
Правда, есть и плохая новость: не все шаблоны одинаково полезны. К некоторым прилагается замаскированная полезная нагрузка, которая может постучаться на сервер злоумышленника. Так что смотрите, что юзаете.
Зато Nuclei поддерживает множество протоколов (TCP, DNS, HTTP, HTTPS), и с его помощью можно автоматизировать поиск уязвимостей не только в вебе, но и в сетевой инфраструктуре.
# Пример автоматизированного шаблона для поиска CVE
id: CVE-2021-44228
info:
name: Apache Log4j RCE
severity: critical
requests:
- method: GET
path:
- "{{BaseURL}}"
headers:
X-Api-Version: "${jndi:ldap://{{interactsh-url}}}"
Пассивная автоматизация поиска уязвимостей
Shodan также автоматизирует поиск, но делает это пассивно — через анализ уже собранных данных. Платформа различает два типа уязвимостей: verified (проверенные) и unverified (непроверенные). Первые определяются автоматически по метаданным. Если сервер работает на старом Apache, Shodan связывает с ним все известные уязвимости для этой версии.
# Поиск CISCO IOS с basic auth
"Cisco IOS" "http auth"
# Также можно использовать shodan cli. Для этого надо будет на странице аккаунта выпустить API токен
pip install shodan
shodan init
shodan search --fields ip_str,port,org,hostnames microsoft iis 14.0
# Поиск только проверенных уязвимостей
has_vuln:true http.status: 200
Интеграция инструментов для комплексной автоматизации
На практике упомянутые инструменты часто используют в связке для максимального покрытия:
Nmap обнаруживает сервисы и их версии.
Nmap Vulners сопоставляет версии с CVE.
Nuclei проверяет конкретные уязвимости через активное тестирование.
Shodan предоставляет контекст об уязвимостях в глобальном масштабе.
Такой подход автоматизирует весь цикл: от обнаружения сервисов до подтверждения наличия уязвимостей, сводя участие эксперта на этапе первичной оценки к минимуму.
Ограничения автоматизации
Увы, и здесь автоматика не всесильна.
Ложноположительные срабатывания (false positives). Особенно этим грешит Shodan при поиске unverified уязвимостей.
Слепота к логическим багам и бизнес-атакам. Вот мы и подошли к главному. Автоматика может найти технические недочеты, но уязвимости в бизнес-логике требуют креативного мышления. Представьте: проблема кроется в неправильной последовательности операций или возможности обойти ограничения через комбинацию легитимных действий. Инструменты не понимают намерений разработчиков и не могут отличить баг от фичи.
Проблемы с контролем доступа. Уязвимости, нарушающие контроль доступа, тоже часто не по зубам автоматике. Например, если два пользователя из разных отделов могут получить доступ к файлам друг друга, автоматизировать такую проверку сложно. Нужно создать два аккаунта, загрузить их в сканер... Немногие инструменты на это способны.
Слепые зоны для бизнес-атак. Это атаки, где импакт не технический, а финансовый. Скажем, найден API-ключ, который дает доступ к платным функциям сервиса. Сканер пометит это как низкий приоритет (information disclosure), а пентестер сразу поймет, что это грозит компании прямыми убытками.
Не заложенные в сканеры атаки. Если тип атаки не описан в шаблоне, для автоматики его просто не существует. Такое придется искать вручную. Да, сейчас эти задачи пытаются решать с помощью LLM, анализируя запросы и ответы, но результаты пока не впечатляют.
Золотая середина — это комбинация автоматизированного сбора информации с ручным анализом. Машины могут разметить все функции приложения и проанализировать эндпоинты API, но только человек сможет понять бизнес-процессы и найти в них изъян.
Эксплуатация и повышение привилегий
Этот этап хуже всего поддается автоматизации. Лишь около 50% задач здесь можно выполнить с помощью скриптов — остальное требует творческого, порой совершенно нестандартного подхода.
Возможности и инструменты автоматизации
Фреймворки вроде Metasploit и Cobalt Strike упрощают эксплуатацию, генерацию пейлоадов и управление сессиями. Интеграция с LLM и специализированные тулзы помогают адаптировать эксплойты под конкретные цели.
Легко автоматизируются и простые виды атак: например, когда находишь админский роут без авторизации, перебираешь числовой ID и получаешь доступ к чужому файлу. Еще одно хорошее направление для автоматизации — сбор артефактов в системе при поиске векторов повышения привилегий. Применение инструментов здесь безопасно, так как все ограничивается зондированием почвы (например, проверка версии sudo на уязвимость).
Эксплуатация мисконфигов тоже неплохо автоматизируется. Что, если невнимательный админ оставил исполняемый файл в Linux с SUID-битом и правами на запись для всех? Прекрасно! Пентестер может отредактировать файл, добавить свой код и получить полный доступ к системе.
Ограничения автоматизации
Главный камень преткновения здесь — высокие риски «положить» что-нибудь. Да, на рынке есть решения с функцией автоэксплуатации, но применять их нужно по главному медицинскому принципу: noli nocere (не навреди).
Все мы слышали мемы про LLM, которая по запросу «удали французский» выполняет rm -fr /. Поздравляем, вы только что снесли всю систему! И отвечать за это будет пентестер, а не искусственный интеллект. Другая распространенная ошибка — бездумное использование так называемых nuclear exploit, которые с высокой вероятностью обрушат сервис (классический пример — уязвимость MS08-067).
Автоматизация не способна оценить риски и часто действует как слон в посудной лавке. Поэтому стоит сто раз подумать, посоветоваться с коллегами и изучить, как ведет себя эксплойт на стенде. Возможно, лучше не рисковать и провести атаку вручную.
Чтобы избежать плачевных последствий, используйте автоматизацию эксплуатации в режиме «круиз-контроля». Представьте, что ПО — это ваш штурман: оно подсказывает, куда и как ехать, но руль держите вы. Каждую команду нужно тщательно отслеживать, разрешая или отклоняя ее запуск
Другая проблема — сложность «объяснения» задачи машине. Как составить такой промпт для LLM, чтобы она учла все нюансы, поняла, что и как можно ломать, а какие сервисы лучше не трогать? Это тонкая работа. Многие детали проясняются только по ходу пентеста и требуют гибкого, человеческого подхода.
Стоит упомянуть и генерацию полезной нагрузки (payload). Автоматика хороша в стандартных решениях, но как только требуется хитрый обход файрвола, WAF или специфичный эксплойт под закаленную (hardened) систему — все. Здесь нужны глубокое понимание контекста и изобретательность.
Подготовка отчетов и подведение итогов пентеста
Наконец, финишная прямая — отчет. И здесь тоже есть где разгуляться автоматизации. Впрочем, как и везде, тулзы помогают с формой, но не с содержанием.
Возможности и инструменты автоматизации
Автоматизация незаменима при рутинном оформлении отчетов. Платформы вроде Dradis, Faraday или PCF собирают результаты тестирования, формируют документы по шаблону и интегрируются с баг-трекерами. Достаточно зайти в общий дашборд, выбрать уязвимость, отметить критичность и составить описание. Инструмент сам соберет все части в один структурированный документ, да еще и проставит водяные знаки.
Еще автоматизация с легкостью возьмет на себя редактуру. Те же LLM владеют десятками языков и разбираются в орфографии и пунктуации не хуже любого граммар-наци (с чем мы их и поздравляем). При необходимости в них можно загрузить справочники, словари и предыдущие, уже выверенные отчеты, чтобы довести качество текста до идеала.
Ограничения автоматизации
И здесь тоже не обходится без «ложки дегтя».
Первое ограничение — необходимость жесткой стандартизации формы отчетов. Чтобы автоматически собирать отчеты, инструментам нужны повторяющиеся паттерны и эталоны. С этим часто возникают проблемы, так как специалисты любят проявлять креатив и отходить от форматов, превращая каждый отчет в уникальное произведение.
Второе ограничение — проблема контекста. Для автогенерации нужна стандартизированная база уязвимостей с описаниями и уровнями критичности. И здесь все упирается в характер информации. Например, факт раскрытия локальных путей на сервере (/var/www/html) сам по себе мало что говорит. А вот слитые API-ключи или внутренние роуты — это уже совсем другая история. Базы базами, но логические выводы, оценка реального импакта и толковые рекомендации по усилению защиты — все это остается за пентестером.
Вместо заключения: так уволят ли пентестеров?
Так что, пора паковать чемоданы и переучиваться на бариста? Не думаю.
Специализированные инструменты действительно упрощают и ускоряют все этапы тестирования, но ключевое слово здесь — «инструменты». Возможно, когда-нибудь автоматизация поумнеет настолько, что сможет сама разобраться в бизнес-логике, выполнять сложные атаки и строить полноценный kill chain. Но, будем честны, это вопрос не самого близкого будущего. И даже тогда вряд ли удастся обойтись без опытного пилота, который держит руку на штурвале и контролирует действия машины. Пусть скрипты перебирают субдомены и проверяют патчи — у пентестера найдутся дела поинтереснее.
Главное, помните: даже самый умный инструмент может снести систему заказчика одной неосторожной командой. Так что сохраняйте контроль.