Новый подход заставляет агента для пентеста на базе LLM доказывать факт взлома, а не просто заявлять о нем, используя механизмы «запрос-ответ» (challenge-response) с одноразовыми числами (nonces), что исключает ложноположительные срабатывания. Эта техника, продемонстрированная во фреймворке HALO, превращает утверждение «похоже, мы получили шелл» в «у нас действительно есть шелл».

Почему важны ложноположительные срабатывания при взломе

Автоматизированные движки эксплуатации, построенные на больших языковых моделях, могут выдавать десятки «успешных» компрометаций портов за один запуск. Многие сервисы выводят такие строки, как «uid=0», в своих баннерах, и специально подготовленная цель может имитировать эти выводы, даже не выполняя код атакующего. Когда агент доверяет таким ответам, каждое последующее решение — будь то перемещение внутри сети (pivot), эксфильтрация данных или боковое перемещение (lateral movement) — основывается на лжи. Команды безопасности тратят часы на погоню за призрачными точками входа, а специалисты по реагированию на инциденты могут неверно расставить приоритеты реальных угроз.

Превращение заявления в доказательство

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

Этот сдвиг меняет модель проверки с «вывод выглядит правильно» на «вывод доказывает выполнение». Это устраняет предвзятость оптимизма, которая мешает работе автономных инструментов нападения.

Построение надежной цепочки доставки

Доставка полезной нагрузки цели по-прежнему требует надежной цепочки. HALO классифицирует три распространенных пути:

  • Reverse shells — скомпрометированный хост инициирует соединение с прослушивателем (listener), который контролирует атакующий. Полезно, когда входящий трафик заблокирован.
  • Bind shells — атакующий подключается напрямую к слушающей службе на цели. Работает, когда фильтры исходящего трафика нестрогие.
  • Blind callbacks — односторонний сигнал (например, DNS-запрос), подтверждающий выполнение в сильно ограниченных средах, где невозможно открыть прямой канал связи.

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

Обеспечение автономности эксплойтов

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

Очистка следов разработки

При подготовке к публичному релизу автор обнаружил реальные IP-адреса, оставшиеся в истории Git. Чистое рабочее дерево не стирает эти записи; Git сохраняет каждый коммит. Автор переписал репозиторий, объединив его в один чистый коммит, и заменил утекшие адреса диапазонами, предназначенными только для документации согласно RFC 5737 (например, 192.0.2.0/24). Это предотвращает случайное раскрытие производственной инфраструктуры при распространении инструмента.

Практические правила для инструментов безопасности

  • Используйте IP-диапазоны только для документации в каждом тестовом окружении.
  • Удаляйте секреты и файлы конфигурации из начального коммита.
  • Применяйте механизмы challenge-response с nonce для проверки любого заявленного взлома.
  • Проверяйте именно тот файл, который будет доставлен, а не какой-то косвенно связанный скрипт.

Доказательство лучше оптимизма. Заставляя автономного агента для пентеста предъявлять проверяемый токен, HALO показывает, что взлом считается взломом только тогда, когда цель может доказать, что она выполнила код атакующего. Сначала строится барьер; всё остальное следует за ним.