Shell or Nothing: как ИИ учат взламывать по-взрослому
Введение
Автоматизированное тестирование на проникновение давно стало мечтой индустрии кибербезопасности. Ведь ручной пентест дорог и требует экспертизы. На помощь приходят агенты на базе ИИ. Однако до сих пор они проверялись в искусственных условиях CTF-соревнований, где задачи упрощены и часто снабжены подсказками.
Команда исследователей из Фуданьского университета представляет в работе два ключевых результата:
TermiBench - бенчмарк для проверки пентест-агентов, где задача не просто найти флаг, а получить полный контроль над системой (то есть shell).
TermiAgent — новый многоагентный фреймворк с двумя ключевыми механизмами:
Реализация идеи
TermiBench
Бенчмарк состоит из 510 хостов с 30 CVE, охватывающих 25 разных сервисов от веб-серверов до баз данных. На каждом хосте может быть до 7 сервисов без наличия уязвимости в придачу к уязвимому. Таким образом создается естественный "шум". Отсутствие неестественных подсказок. Успех засчитывается только если агент получает shell.
TermiAgent
Представляет собой многоагентную архитектуру:
Выполняет стратегическое планирование; формирует цели (phased goals) и оптимизирует порядок действий на уровне «что сделать дальше» с учётом памяти и доступных инструментов.
Переводит план в детализованные, исполняемые инструкции. Инструкции написаны в JSON-формате, которые затем передаются в Executor.
Отвечает за безопасное исполнение инструкций Assistant в полностью контролируемом окружении и возврат результатов в память и логи.
Выполняет удержание и актуализацию контекста (всех действий, выводов, гипотез) в форме, пригодной для LLM-агентов, а так же решает проблему «забывания» в длинных сессиях.
Предназначен для сбора, стандартизации и предоставления готовых, контролируемых артефактов (модули), которые агент может «вызвать». Модуль не даёт «эксплойтов» в виде пошаговых PoC в открытом виде, а предоставляет контейнеризированный, тестируемый модуль с метаданными.
TermiAgent основан на LangGraph, состоящем из более чем 3500 строк кода Python и около 700 строк определений подсказок. TermiAgent требует в качестве входных данных только IP-адрес целевого хоста или подсеть, в которой он находится. Цель TermiAgent по умолчанию соответствует реальным сценариям пентестинга, направленным на получение контроля над целевой машиной, например, получение шелла.
TermiAgent взаимодействует с бэкендом LLM через формат API, совместимый с OpenAI[28], что обеспечивает адаптивность при переключении между различными LLM для адаптации к различным средам пентестинга. Все команды во время пентеста выполняются через хост Kali Linux для взаимодействия с целевой машиной. Весь процесс полностью автоматизирован и не требует вмешательства человека до достижения цели.
Эксплуатация уязвимости
Авторы делают основной фокус на RCE (Remote Code Execution). Из исходного NVD-списка (31k RCE кандидатов за 2015–2025) авторы через GitHub-поиск добрали примерно 6500 репозиториев, из которых в итоге упаковали 1378 контейнеризованных эксплойтов + мануалы. Также интегрировано около 1077 Metasploit-эксплойтов.
В статье выделяется три типа PoC-репозиториев и соответственно подходы к упаковке.
- Script-based - эксплойты на основе скриптов (Python/Perl/Ruby/Node). Упаковка включает создание Dockerfile, установку зависимостей, генерацию краткого мануала. Уровень удачной упаковки 63.5%
- Packet-based - эксплойты формирующие и отправляющие пакеты (raw sockets, scapy-скрипты и т.п.). Часто менее сложны в контейнеризации, имеют высокую вероятность корректной упаковки (в статье ≈94% success для этого типа).
- Command-line / CLI-based - эксплойты содержащие наборы команд, которые запускаются в shell-контексте (без сложной бизнес-логики). Имеют высокий процент успеха упаковки, так как интерфейс использования очевиден.
Тесты
Сравнения проводились по одинаковым условиям (одинаковая инфраструктура исполнения, набор таргетов, повторяемость).
Инфраструктура
- VulnBot (реализованный фреймворк/агент для CTF).
- PentestGPT (автономный агент/помощник от предыдущих работ).
Результаты
TermiAgent значительно опережает VulnBot и PentestGPT как в реальных сценариях, так и CTF сценариях и успешен примерно в >50% тестов из набора с реальными задачами. VulnBot показывает значительно худшие результаты - меньше 10% успеха.
TermiAgent сохраняет устойчивую производительность даже с Qwen3-4B/1.7B, что демонстрирует экономию и возможность локального запуска на слабом железе. VulnBot падал сильнее при уменьшении модели.
TermiAgent в реальном сценарии требовал в среднем лишь 7.4% финансовых затрат и 18.7% времени по сравнению с VulnBot.
Отключение Arsenal Module снижает эффективность примерно на 29.66%.
Отключение Located Memory Activation (LMA) даёт снижение эффективности на 66.95%. Это говорит, что память и привязка контекста - ключевые компоненты для реального multi-service pentesting.
Устранение полей описания эксплойта, например, удаление базового Docker-образа сильно снижает возможность контейнеризации, а отсутствие code-dependencies может привести к нулевой успешности эксплуатаций для некоторых PoC.
Вывод
TermiBench даёт возможность тестировать автономных агентов и получать объективную оценку их реальных возможностей.
TermiAgent показал, что автономный пентест может быть не только возможным, но и эффективным даже на бытовом оборудовании. Это создаёт предпосылки для дешёвого, массового и более практичного аудита безопасности. При этом возникают и риски, так как такие системы могут использовать и атакующие.