Skip to main content

Cyberstrike is now open source! AI-powered penetration testing for security professionals. Star on GitHub

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, исключаемых меток, шагов и режима без окна.

ПараметрОписание
Целевой URLURL для начала сканирования
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 только против авторизованных целей. Несанкционированное тестирование на проникновение незаконно.