September 26, 2025

Shell or Nothing: как ИИ учат взламывать по-взрослому

Введение

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

Команда исследователей из Фуданьского университета представляет в работе два ключевых результата:

TermiBench - бенчмарк для проверки пентест-агентов, где задача не просто найти флаг, а получить полный контроль над системой (то есть shell).

TermiAgent — новый многоагентный фреймворк с двумя ключевыми механизмами:

    1. Located Memory Activation — борьба с «забыванием» у LLM (эффективное управление контекстом).
    2. Arsenal Module — автоматическое формирование «арсенала эксплойтов» из GitHub/Metasploit (стандартизация PoC).

Реализация идеи

TermiBench

Бенчмарк состоит из 510 хостов с 30 CVE, охватывающих 25 разных сервисов от веб-серверов до баз данных. На каждом хосте может быть до 7 сервисов без наличия уязвимости в придачу к уязвимому. Таким образом создается естественный "шум". Отсутствие неестественных подсказок. Успех засчитывается только если агент получает shell.

TermiAgent

Представляет собой многоагентную архитектуру:

    • Reasoner (планировщик целей):

Выполняет стратегическое планирование; формирует цели (phased goals) и оптимизирует порядок действий на уровне «что сделать дальше» с учётом памяти и доступных инструментов.

    • Assistant (генерация команд).

Переводит план в детализованные, исполняемые инструкции. Инструкции написаны в JSON-формате, которые затем передаются в Executor.

    • Executor (выполнение).

Отвечает за безопасное исполнение инструкций Assistant в полностью контролируемом окружении и возврат результатов в память и логи.

    • Memory (контекст, дерево памяти).

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

    • Arsenal (эксплойты в стандартизированном виде).

Предназначен для сбора, стандартизации и предоставления готовых, контролируемых артефактов (модули), которые агент может «вызвать». Модуль не даёт «эксплойтов» в виде пошаговых PoC в открытом виде, а предоставляет контейнеризированный, тестируемый модуль с метаданными.

Архитектура TermiAgent

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-репозиториев и соответственно подходы к упаковке.

  1. Script-based - эксплойты на основе скриптов (Python/Perl/Ruby/Node). Упаковка включает создание Dockerfile, установку зависимостей, генерацию краткого мануала. Уровень удачной упаковки 63.5%
  2. Packet-based - эксплойты формирующие и отправляющие пакеты (raw sockets, scapy-скрипты и т.п.). Часто менее сложны в контейнеризации, имеют высокую вероятность корректной упаковки (в статье ≈94% success для этого типа).
  3. Command-line / CLI-based - эксплойты содержащие наборы команд, которые запускаются в shell-контексте (без сложной бизнес-логики). Имеют высокий процент успеха упаковки, так как интерфейс использования очевиден.

Тесты

Сравнения проводились по одинаковым условиям (одинаковая инфраструктура исполнения, набор таргетов, повторяемость).

Инфраструктура

Базовые сравниваемые системы:

  • VulnBot (реализованный фреймворк/агент для CTF).
  • PentestGPT (автономный агент/помощник от предыдущих работ).

LLM:

  • GPT-5-2025-08-07
  • DeepSeek-V3-0324
  • Qwen3 (30B, 14B, 8B, 4B, 1.7B)

Железо:

  • Intel® Xeon® Gold 6330 (28 cores)
  • 8× NVIDIA GeForce RTX 4090
  • 512 GB RAM
  • 29 TB SSD
  • Ubuntu 24.04.

Результаты

TermiAgent значительно опережает VulnBot и PentestGPT как в реальных сценариях, так и CTF сценариях и успешен примерно в >50% тестов из набора с реальными задачами. VulnBot показывает значительно худшие результаты - меньше 10% успеха.

Таблица результатов получения доступа к шеллу

TermiAgent сохраняет устойчивую производительность даже с Qwen3-4B/1.7B, что демонстрирует экономию и возможность локального запуска на слабом железе. VulnBot падал сильнее при уменьшении модели.

Таблица получения shell/root_shell на слабых моделях

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 показал, что автономный пентест может быть не только возможным, но и эффективным даже на бытовом оборудовании. Это создаёт предпосылки для дешёвого, массового и более практичного аудита безопасности. При этом возникают и риски, так как такие системы могут использовать и атакующие.