Всем привет!
В первой статье я рассказал вам о том, как настроить интеграцию HexStrike-AI и OpenCode, чтобы получить инструмент для занятий настоящим вайб-пентестом. Мы всё настроили, испытали на одной из CTF-задач и получили, имхо, фантастический результат. Более того, все используемые компоненты - Open Source, а OpenCode предлагает несколько бесплатных AI-моделей для использования, что позволяет настроить и использовать эти инструменты каждому! Прошло почти 2 недели после первой статьи и в этой я хочу поделиться своими мыслями, найденными проблемами, а также мы продолжим улучшать наш инструментарий, работая над простой идеей.
Идея: Инструмент решения отдельных CTF-задач у нас есть, а можно ли и, если да, то как автоматизировать решение сразу всех задач CTF-площадки? Также, в процессе, я покажу несколько неочевидных, на первый взгляд, кейсов использования OpenCode.
Как думаете, сейчас это реально? Интересно? Тогда давайте делать! Но прежде, как и в первой статье:
Все материалы данной статьи носят исключительно образовательный характер. Любые действия, связанные с анализом защищённости, тестированием на проникновение или доступом к компьютерной информации без явного согласия владельца ресурса или соответствующих полномочий могут быть квалифицированы как правонарушение в соответствии с законодательством Российской Федерации. В частности, Уголовный кодекс РФ предусматривает ответственность за неправомерный доступ к охраняемой законом компьютерной информации (статья 272 УК РФ) — вплоть до уголовной ответственности за деяния, совершённые без согласия правообладателя информации.
Пожалуйста, всегда действуйте очень осторожно, обдуманно и только в рамках закона!
Произошёл какой-то перелом в скорости разработки. Посмотрите на то, как обновляется OpenCode:
По несколько релизов в день! Я сделал вывод, что к подобной скорости изменений нужно привыкать! В подтверждение своего вывода, я приведу скрин поста CEO Vercel, который пишет о том, что на их платформе хостинга скиллов для AI-агентов каждый час добавляется 550 новых скиллов!
Скорости развития просто поразительные! Но давайте к сути.
Мы с вами говорим о максимальной автоматизации решения CTF. Первое, что нужно сделать - это дать возможность OpenCode работать с браузером. Нам нужно, чтобы OpenCode:
Мог сам находить задания на CTF-площадке;
Если в задании есть файл, он должен иметь возможность сам его скачать;
После решения задачи он должен сам вставить найденный флаг и подтвердить решение задачи.
Для решения этих задач будем использовать Crome DevTools MCP.
Как видно на скриншоте, это то, что нам и нужно! Ниже описаны требования для установки:
Но тут давайте мы остановимся и осознаем одну не самую очевидную вещь: мы установили и настроили OpenCode - AI-агента для разработки и пентеста. А почему бы нам его не использовать в т. ч. для установки необходимого окружения? Вайб-инсталляция возможна?
Открываем OpenCode.
Отдельно хочу сказать, что по умолчанию в OpenCode есть 2 агента, или 2 режима работы: Plan и Build. Переключение между ними осуществляется клавишей TAB.
Plan - режим, который служит для планирования (окно агента становится фиолетовым). Ключевое - агент не имеет доступ на создание файлов и запись.
Build - режим, при котором агент имеет доступ к вашей файловой системе на создание и запись (окно агента синего цвета).
Переходим в режим Plan и задаём агенту вопрос, см. скриншот выше. По итогу я получил следующий ответ:
Тут всё логично: Node.js пришел как зависимость при обновлении Kali Linux. Давайте попробуем разрешить corepack. Тут, поскольку нам для установки потребуется root-пароль, я установил npm в отдельном терминале:
Опять просим OpenCode проверить, корректно ли установлены node и npm?
Теперь в OpenCode с помощью команды /new открываем новую сессию и пишем:
Спустя какое-то время получаем результат:
Чтобы проверить и убедиться, закрываем и снова открываем OpenCode. Вводим команду /mcps и видим, что второй наш MCP установлен корректно.
Теперь наш агент может работать с браузером. Для наших экспериментов мы продолжим использовать CTF-площадку https://ctf.bug-makers.ru/, тем более, что после первой статьи мне написали её представители и сказали, что не против моих экспериментов.
Логика эксперимент следующая: Берём все задачи определённой категории (я взял WEB, т.к. у нас всё же пентест в приоритете) и просим агента решить все задачи из этой категории. Как я писал в первой статье, промпт (текстовый запрос к агенту) очень важен, т.к. чем более детально вы опишите задачу, тем лучше и быстрее агент её выполнит. После нескольких попыток, я сформировал следующий запрос:
Тебе необходимо решить все задачи категории WEB с https://ctf.bug-makers.ru/challenges. Будь внимателен, в этой категории сейчас 18 задач, те, которые отмечены зелёным - решены. Полное задание бери из карточки задачи. В некоторых заданиях приложены файлы, которые должны помочь решить задание. Файлы скачивай и используй для решения. Когда задача решена и найден флаг, то внеси его в карточку соответсвующией задачи в поле Флаг и нажми кнопку Отправить. Если флаг корректный, то карточка задачи становится зелёной и задача считается решённой Use chrome-devtools Use hexstrike
После старта, агент попросит вас авторизоваться на площадке ну и начнёт работу. Этому эксперименту я посвятил 4 часа и вот что у меня получилось:
Чтобы вас не томить, вот что получилось за 4 часа:
8 решённых задач. После этого я остановил эксперимент.
Основной вывод: Подход, когда мы вот так топорно 1 запросом просим решить агента все задачи - не работает!
Проблемы:
! Агент, спустя какое-то время, начинает терять контекст своих рассуждений. Приходится его останавливать и поправлять (именно поэтому я ограничил в эксперименте категорию задач только задачами WEB).
! OpenCode плохо работает с внешними MCP, ответ которых большой и требует времени. Это делает невозможным использование многих важных инструментов HexStrike, потому что они всегда падают с таймаутом.
Это ошибка именно в OpenCode, т.к. именно он не дожидается ответа от MCP. Надеюсь, эту ошибку скоро исправят.
Что хорошо:
! Несмотря ни на что, 3 из этих 8 задач были решены полностью автоматически. 2 задачи Агент не смог решить сам, но решил сразу после того, как я указал ему на то, как лучше сделать.
! 1 задачу агент не смог решить с первого раза, но решил сам со второго раза, когда сам же к ней вернулся спустя какое-то время.
! В процессе решения агент перебирает очень много разных вариантов. Он не устаёт и не жалуется.
В настоящее время данные инструменты не способны полностью автоматизировать работу пентестера. Но! Это - прекрасный ассистент, которой экономит кучу времени на рутинных задачах.
Контекст часто теряется, поэтому CTF-задачи лучше решать отдельно по одной и лучше сразу при постановке задачи указывать агенту на что стоит обратить внимание в первую очередь.
Надо периодически следить за ходом рассуждений агента и не стесняться его останавливать и поправлять, если видите, что он уходит не туда. Например, в задаче про слепую инъекцию, агент написал скрипт автоматизации получения флага, нашёл весь флаг, а потом написал, что не может решить задачу и переходит к следующей. Пришлось его остановить и указать ему, что флаг он уже нашёл - вот он!
Есть ошибка OpenCode, связанная с таймаутом, которая не позволяет ему в полной мере использовать инструментарий HexStrike. Будем ждать её решения разработчиками.
Всё очень быстро развивается! Обещают выпустить 7 версию HexStrike, OpenCode обновляется каждый день! Думаю, что уже летом этого года результаты будут принципиально лучше!
Если вам понравилась эта статья, подписывайтесь, поставьте мне лайк и напишите ваши мысли в комменты.
Ну и приходите ко мне в мой Телеграм, где я пишу про кибербез.
Источник


