HackBrowser
HackBrowser — это автономный веб-сканер Cyberstrike. Он открывает браузер Chromium, позволяет LLM перемещаться по целевому приложению, читая дерево доступности, и пересылает каждый захваченный HTTP-запрос — обогащённый контекстом UI — в конвейер анализа. Затем proxy-agent анализирует и тестирует каждый запрос.
Когда использовать HackBrowser
| Сценарий | Выбор |
|---|---|
| Ручное исследование с несколькими ролями | Расширение Chrome |
| Автоматическое сканирование без участия оператора | HackBrowser |
Нужен контекст UI-форм (флаги readonly, hidden, disabled) в захватах | HackBrowser |
| Существующая предварительно аутентифицированная сессия браузера | Оба варианта — расширение Chrome проще |
Оба пути ведут к одной конечной точке /session/ingest и одному конвейеру proxy-agent. Их можно комбинировать в рамках одной сессии.
Как это работает
┌────────────────────────────────────────────────────────────────────┐│ Chromium (Playwright) ││ ├── Scanner — DOM → дерево доступности (RawElement[]) ││ ├── Navigator — вызов LLM → план страницы (задачи форм/кликов) ││ ├── Executor — План → действия Playwright ││ ├── Capture — HTTP-запросы + снимок ui_context ││ └── Live panel — Shadow-DOM оверлей телеметрии (видимый режим) │└────────────────────────────┬───────────────────────────────────────┘ │ POST /session/ingest ▼┌────────────────────────────────────────────────────────────────────┐│ Cyberstrike API ││ ├── Нормализация → дедупликация → Request.add ││ └── IngestQueue → SessionPrompt(agent="proxy-agent") │└────────────────────────────┬───────────────────────────────────────┘ ▼ proxy-agent → proxy-analyzer + тестировщики уязвимостейLLM видит страницу как дерево доступности и решает, какие формы заполнять и какие кнопки нажимать. Каждый захваченный запрос включает снимок ui_context — поля формы, их флаги и скрытые параметры — который proxy-analyzer использует для выявления подозрительных форм запросов.
Запуск сканирования
/hackbrowser
Выполните /hackbrowser в TUI для открытия диалога запуска с полями для целевого URL, учётных данных, scope, исключаемых меток, шагов и режима без окна.
| Параметр | Описание |
|---|---|
| Целевой URL | URL для начала сканирования |
| Scope | Шаблоны имён хостов для ограничения захвата (например, *.example.com) |
| Исключения | UI-метки, которые планировщик должен пропустить (семантическое совпадение) |
| Шаги | Максимальное количество страниц для сканирования (по умолчанию: 50) |
| Учётные данные | Учётные данные для сканирования. Активирует видимый режим браузера. |
| Без окна | Запуск без видимого окна браузера |
Отмена сканирования
/hackbrowser-stopИнициировано агентом
Агент также может запустить HackBrowser автономно, когда этого требует разговор (например, «протестируй это приложение»). Инструмент возвращает управление немедленно — захваты поступают в сессию по мере продвижения сканирования.
Сканирование с несколькими учётными данными
Выберите две или более учётных записей в диалоге запуска /hackbrowser для последовательного сканирования по ролям.
Для каждой учётной записи HackBrowser открывает видимое окно Chromium, ждёт вашего входа, затем выполняет полное сканирование с пометкой ID учётных данных. Конвейер WSTG затем может сравнить, к чему имеет доступ каждая роль.
Данные контекста UI
Отличие от расширения Chrome — блок ui_context, прикреплённый к каждому захвату:
{ "ui_context": { "pageUrl": "https://shop.example.com/settings/profile", "formName": "Update Profile", "fields": [ { "name": "email", "type": "text", "isReadOnly": true }, { "name": "role", "type": "hidden", "isHidden": true, "value": "user" } ], "hiddenParams": ["account_id", "_csrf"] }}proxy-analyzer использует эти сигналы для пометки:
- Поле
readonly, отправленное в запросе — проверить, применяет ли сервер ограничение - Поле
hidden— кандидат на массовое присваивание - Параметр в
hiddenParams(без UI-элемента) — скрытый параметр наивысшего риска - Элемент, видимый только одной роли — проверить с другими учётными данными
Сетевой scope
По умолчанию HackBrowser захватывает запросы, соответствующие *.{eTLD+1} целевого URL. Переопределите scope в диалоге запуска /hackbrowser, добавив пользовательские шаблоны имён хостов (например, app.example.com, api.example.com).
Устранение неполадок
| Ошибка | Решение |
|---|---|
| Chromium не установлен | bunx playwright install chromium |
| Playwright не установлен | npm install --prefix ~/.local/share/cyberstrike playwright |
| Worker не найден | Переустановите: npm install -g @cyberstrike-io/cyberstrike |
| Уже запущен | Дождитесь завершения или выполните /hackbrowser-stop |
Danger
Используйте HackBrowser только против авторизованных целей. Несанкционированное тестирование на проникновение незаконно.