Ориентированный на доказательства DAST-сканер на Go, который сканирует веб-приложения и API, а затем выполняет адаптивные проверки SQLi, XSS, RCE, SSRF и аутентификации с воспроизводимыми доказательствами.
Продвинутый сканер веб-безопасности
Обнаруживайте эндпоинты. Тестируйте веб-приложения. Изучайте доказательства.
Установка · Использование · Рабочий процесс · Профили · Покрытие · Отчёты · Поддержка · Возможности · История изменений
AKCA — это открытый сканер динамического тестирования безопасности приложений (DAST), ориентированный на доказательства и написанный на Go. Он объединяет HTTP- и браузерный краулинг, анализ JavaScript, импорт API, адаптивное активное тестирование, пассивную инспекцию и воспроизводимые доказательства в одном рабочем процессе командной строки.
Многие сканеры обходят приложение, а затем отправляют широкий набор полезных нагрузок на каждый обнаруженный эндпоинт. Такая стратегия может создавать избыточный трафик, активировать защитные системы и давать слабые сигналы, требующие значительной ручной проверки. AKCA использует более контекстный подход: сначала изучает цель, моделирует обнаруженную поверхность атаки, а затем выбирает тесты в соответствии с технологическим стеком, параметрами, состоянием аутентификации, поведением WAF и доступными возможностями верификации.
AKCA разработан для того, чтобы:
Цель — не исчерпать и не перегрузить цель. Она в том, чтобы находить реальные слабости с помощью продуманных запросов и полезных доказательств.
AKCA не заявляет о паритете функций или обнаружения со зрелыми коммерческими платформами, такими как Acunetix, Invicti/Netsparker или Burp Suite Professional. Эти продукты создаются опытными командами на протяжении многих лет. AKCA независимо поддерживается одним разработчиком в свободное личное время, вдохновлён проверенными инструментами безопасности и сформирован оригинальными идеями и отзывами сообщества. Текущий приоритет — простой, полезный и прозрачный сканер. Графический интерфейс планируется, когда движок станет достаточно стабильным и надёжным.
Сессия сканирования AKCA v0.2.4 с живым статусом движка, телеметрией ресурсов и подтверждёнными находками.
Требуется Go 1.25 или новее.```bash go install github.com/akha-security/akca/engine/cmd/akca@latest akca --version
<details>
<summary>Команда не найдена? Настройте PATH.</summary>
Для стандартной установки Go добавьте каталог бинарных файлов Go в `PATH` текущего терминала.
**Linux / macOS**```bash
export PATH="$(go env GOPATH)/bin:$PATH"
Добавьте эту строку в конфигурацию вашей оболочки, чтобы она сохранялась между сессиями.
Windows PowerShell```powershell $env:Path += ";$(go env GOPATH)\bin"
Для будущих сессий добавьте тот же каталог в переменную среды `Path` вашего пользователя. Если вы настроили `GOBIN`, используйте вместо этого тот каталог.
</details>
### Готовые бинарные файлы
Скачайте свою сборку со страницы [GitHub Releases](https://github.com/akha-security/akca/releases/latest). В релизах включён файл `SHA256SUMS.txt` для проверки контрольных сумм.
| Платформа | Архитектура | Файл |
| --- | --- | --- |
| Linux | x64 / ARM64 | `akca-linux-amd64` / `akca-linux-arm64` |
| macOS | Intel / Apple Silicon | `akca-darwin-amd64` / `akca-darwin-arm64` |
| Windows | x64 | `akca-windows-amd64.exe` |
В Linux или macOS сделайте скачанный файл исполняемым. Для Linux x64:```bash
chmod +x akca-linux-amd64
./akca-linux-amd64 --help
В Windows переименуйте загруженный файл в akca.exe и выполните .\akca.exe --help в PowerShell. В приведённых ниже примерах предполагается, что akca доступен в вашем PATH.
Проверки через браузер требуют наличия Chrome, Chromium или Edge.
Используйте AKCA только на системах, которыми вы владеете или на тестирование которых у вас есть разрешение. Замените пример URL на ваш авторизованный целевой адрес.
akca -u https://example.com
Профиль по умолчанию — `full`. Чтобы сохранить HTML-отчёт:```bash
akca -u https://example.com -f html -o report.html
Запустите проверки SQL-инъекций, XSS и серверных инъекций, включая SSTI:```bash akca -u https://example.com -m sql,xss,rce
Запустите пассивные проверки:```bash
akca -u https://example.com -m passive
Пассивные сканирования всё равно отправляют запросы для обнаружения и проверки.
Укажите cookie сессии:```bash akca -u https://example.com -c "session=YOUR_SESSION_COOKIE"
Или заголовок авторизации:```bash
akca -u https://example.com -H "Authorization: Bearer YOUR_TOKEN"
Некоторые проверки авторизации требуют дополнительных идентификаторов или настройки состояния помимо одной сессии.
akca -u https://api.example.com --api-spec ./openapi.yaml -m api
Discovery поддерживает входные данные OpenAPI/Swagger, RAML, Postman, HAR, GraphQL, WSDL, protobuf и AsyncAPI, включая поддерживаемые ZIP-архивы. Покрытие тестированием зависит от импортированного протокола и операции.
### Инспектирование трафика через прокси```bash
akca -u https://example.com -p http://127.0.0.1:8080
Запустите akca --help, чтобы увидеть все доступные параметры.
Используйте akca -h для краткой повседневной справки или akca --help для полного справочника параметров. Цели сканирования должны быть указаны явно с помощью -u или --url.
Выберите профиль с помощью -m или объедините несколько через запятую.
| Профиль | Проверки |
|---|---|
full | Все включённые активные и пассивные модули; используется по умолчанию |
sql | SQL- и NoSQL-инъекции |
xss | Отражённые, хранимые, DOM- и слепые XSS; связанные проверки на стороне клиента |
rce | Инъекции команд, SSTI, десериализация и связанные проверки |
api | Открытость API, BOLA/IDOR, BFLA, mass assignment и проверки токенов |
graphql | Проверки схемы и операций GraphQL |
ssrf | SSRF, XXE и связанные out-of-band проверки |
auth | Аутентификация, авторизация, CSRF и проверки cookie/заголовков |
passive | Метаданные, TLS, заголовки безопасности, секреты и анализ компонентов |
fuzz | Пути, открытые артефакты, обход каталогов и связанные проверки |
Выполнение зависит от обнаруженных эндпоинтов, конфигурации, доступных возможностей верификации и лимитов сканирования. Полное руководство по возможностям см. в FEATURES.md.
AKCA использует поэтапный конвейер, чтобы последующие проверки могли опираться на факты, полученные ранее:
Покрытие является явным. Пропущенная, неудачная, ограниченная бюджетом или незавершённая цель фиксируется как неполное покрытие; она не рассматривается молча как чистый результат проверки безопасности.
Следующий список описывает реализованные движки обнаружения и семейства проверок безопасности. Отдельные проверки выполняются только тогда, когда обнаруженная поверхность, профиль сканирования, конфигурация, политика безопасности и предварительные условия верификации делают их применимыми. Указанная возможность не является гарантией того, что будет обнаружен каждый вариант уязвимости.
Задайте общий бюджет запросов и максимальную длительность:```bash akca -u https://example.com --request-budget 5000 --time-budget 30m
Или рассчитайте бюджет модуля на основе обнаруженных комбинаций URL/метод:```bash
akca -u https://example.com --requests-per-target 200
AKCA распределяет ограниченные бюджеты модулей между модулями, URL-адресами и параметрами. Неиспользованные выделенные ресурсы переносятся на более позднюю работу. Положительное значение --request-budget имеет приоритет над --requests-per-target.
| Опция | Назначение |
|---|---|
--request-budget 5000 | Ограничивает общее количество запросов, включая обнаружение, повторные попытки и перенаправления |
--requests-per-target 200 | Выводит бюджет модуля из обнаруженных комбинаций URL/метод |
--crawler-budget 1000 | Ограничивает запросы на обнаружение |
--time-budget 30m | Ограничивает продолжительность сканирования |
--rate-limit 5 | Ограничивает количество запросов в секунду |
--concurrency 4 | Ограничивает количество параллельных воркеров |
По умолчанию сканирование модуля не имеет квоты на запросы. Прерывания из-за бюджета сообщаются как неполное покрытие. Прерванные цели не возобновляются автоматически, когда более поздняя работа возвращает неиспользованный бюджет. Ни одна настройка бюджета не гарантирует обнаружение всех уязвимостей.
Связанные поддомены API/сервисов находятся за пределами области целей по умолчанию. Чтобы включить связанные поддомены под тем же корнем:```bash akca -u https://www.example.com --include-linked-api-subdomains
### Почему полное сканирование занимает больше времени
Полное сканирование AKCA по умолчанию рассчитано на охват и качество доказательств, а не на минимально возможное время завершения. Поэтому его время выполнения не следует напрямую сравнивать с инструментами, которые останавливаются после поверхностного HTTP-обхода или сообщают об уязвимости на основе единственного различия в ответах.
Комплексный запуск может занять больше времени, потому что AKCA:
- Поддерживает сессию браузера для маршрутов, отрисовываемых на стороне клиента, и анализирует JavaScript, включая лениво загружаемые чанки приложения.
- Повторно воспроизводит перспективные результаты с контрольными проверками, прежде чем повысить их до находок, что снижает количество ложных срабатываний, вызванных общими ошибками, нестабильными страницами и ответами WAF.
- Выполняет проверки с учётом идентичности, состояния и обратных вызовов, когда модулю требуется более убедительное подтверждение.
- Соблюдает темп работы с целью, повторные попытки, бюджеты запросов и окна внеполосного наблюдения, а не рассматривает скорость как единственный показатель успеха.
Длительность сканирования также зависит от размера приложения, задержки ответов, потоков аутентификации, защитных механизмов и настроенной области охвата. Для более быстрой обратной связи выбирайте только нужные модули с помощью `-m` или задайте явные бюджеты обхода, запросов и времени. Увеличивайте скорость и параллелизм только тогда, когда авторизованная цель может безопасно выдержать дополнительный трафик. Более короткое сканирование не обязательно является более полным.
## Отчёты
Выберите формат вывода с помощью `-f` и путь к файлу с помощью `-o`:```bash
akca -u https://example.com -f html -o report.html
Поддерживаемые форматы: HTML, JSON, Markdown, CSV и SARIF. Каждый запуск начинает новое сканирование.
HTML-отчёты являются самодостаточными и включают логотип AKCA, сводки по рискам и уровням серьёзности, статистику уязвимостей, структурированные сведения о находках и раскрываемые доказательства HTTP. Вкладки запроса и ответа поддерживают объединённый просмотр, полное раскрытие содержимого и копирование. Там, где находка сохраняет совпадающее значение ответа, AKCA выделяет его жёлтым, помогая обнаружить отражённую полезную нагрузку или раскрытый секрет. Находки пассивных секретов сохраняют фрагмент вокруг совпадения.
В зависимости от модуля находки включают:
Находки по таймингам, отсутствующим заголовкам и внешним обратным вызовам могут не иметь текста ответа для выделения. Их контекст верификации предоставляет соответствующие доказательства.
Когда сканер сохранил полную необработанную транзакцию, отчёт сохраняет её в точности. Более старые или только структурированные доказательства отображаются в обычном HTTP-макете в стиле Burp со строкой запроса, упорядоченными заголовками, разделителем заголовков и тела и стандартными фразами причины HTTP-ответа. Если лимит захвата транспорта усек ответ, отчёт сообщает об этом явно; он никогда не представляет сохранённую часть как недоступный полный ответ.
Воспроизвести сохранённую находку:```bash akca replay --finding 42
Отчёты по умолчанию маскируют распознанные учётные данные. Необработанные сохранённые доказательства сохраняются для воспроизведения. Установите `redact_reports` в `false` в конфигурации сканирования или используйте `redact=false` в API отчётов, только когда необходимы необработанные экспорты. Просматривайте отчёты перед передачей: автоматическое маскирование не может распознать все секреты, специфичные для приложения.
### Конфигурация обхода и подтверждения
Сканер сохраняет одну сессию браузера на протяжении каждой фазы обхода, включая cookies и хранилище браузера. Он исследует явные вкладки без форм и раскрываемые панели; он не заполняет и не отправляет формы автоматически. Запросы браузера по-прежнему подчиняются области действия и бюджетам запросов. Для необходимых сторонних статических зависимостей настройте точные имена хостов отдельно:```json
{
"browser_resource_domains": ["cdn.example.com"],
"redact_reports": true
}
Это разрешает только запросы GET/HEAD для скриптов, таблиц стилей, изображений, шрифтов и медиа к этим хостам, удаляя учётные данные и пользовательские заголовки. Это не добавляет эти хосты в активную область сканирования и не разрешает кросс-доменные вызовы API. Заблокированные зависимости браузера создают события пробелов в покрытии.
Обнаруженные URL сохраняются, даже если их невозможно посетить. Сканирование, исчерпавшее свой бюджет с оставшейся в очереди работой, создаёт частичное сканирование и ненулевой код выхода CLI. Сообщения предварительной проверки модулей отличают отсутствующие политики идентификации/состояния от настроенных возможностей верификации.
Ненастроенные проверки ограничения скорости создают наблюдения, а не находки уязвимостей. Доказательство настроенного порога также требует window_seconds; если запросы не укладываются в это окно, проверка не даёт однозначного результата. SQLi не рассматривает ответ 400 или одну лишь арифметическую оценку как доказательство. Новые специфичные для вендора ошибки SQL в ответах 400/422 должны пройти путь воспроизведения и контрольной верификации.
Подробности выпуска см. в CHANGELOG.md.
AKCA не принимает спонсорство или личные пожертвования. Вклад в код, тестирование, документация и вдумчивая обратная связь всегда приветствуются.
Projeye maddi olarak destek olmak istiyorsanız, bana göndermek yerine Mehmetçik Vakfı, AFAD, Türk Kızılay veya Çocuk Hizmetleri Genel Müdürlüğü aracılığıyla desteklenen güvenilir sosyal yardım çalışmalarından birine bağış yapmanızı rica ediyorum. Mümkünse bağışınızı kızım Akça Aktaş adına yapın. Bağıştan sonra X üzerinden @caneraktas_ hesabına mesaj göndermeniz beni gerçekten çok mutlu eder.
Если вы хотите поддержать проект финансово, пожалуйста, пожертвуйте в пользу надёжной благотворительной организации в вашей стране, которая помогает детям, сообществам, пострадавшим от бедствий, ветеранам или людям в срочной нужде. Когда возможно, сделайте пожертвование от имени моей дочери, Akça Aktaş. Вы можете поделиться этим со мной в X at @caneraktas_; знание того, что этот проект вдохновил на полезный поступок, будет для меня очень значимым.
Сборка из исходного кода:```bash git clone https://github.com/akha-security/akca.git cd akca/engine go build -buildvcs=false -trimpath -o ../akca ./cmd/akca
В Windows используйте `-o ../akca.exe` для имени исполняемого файла.
Запускайте проверки из каталога `engine`:```bash
go test ./... -count=1
go vet ./...
go run ./cmd/akca benchmark --strict
Бенчмарк измеряет свой наблюдаемый корпус. Для получения сведений о деталях реализации и ограничениях верификации прочитайте руководство по архитектуре и аудит верификации.
Мы приветствуем вклад сообщества. Прочитайте CONTRIBUTING.md и Кодекс поведения перед созданием pull request. Сообщайте об уязвимостях в AKCA через SECURITY.md.
Apache License 2.0 · Copyright 2026 AKHA Security contributors.