Escáner DAST orientado a evidencias en Go que rastrea aplicaciones web y APIs, y luego ejecuta comprobaciones adaptativas de SQLi, XSS, RCE, SSRF y autenticación con prueba reproducible.
Escáner Avanzado de Seguridad Web
Descubre endpoints. Prueba aplicaciones web. Inspecciona la evidencia.
Instalación · Uso · Flujo de trabajo · Perfiles · Cobertura · Informes · Apoyar · Características · Registro de cambios
AKCA es un escáner DAST (Dynamic Application Security Testing) de código abierto y orientado a la evidencia, escrito en Go. Combina rastreo HTTP y asistido por navegador, análisis de JavaScript, importación de API, pruebas activas adaptativas, inspección pasiva y evidencia reproducible en un único flujo de trabajo de línea de comandos.
Muchos escáneres rastrean una aplicación y luego envían un amplio conjunto de payloads a cada endpoint descubierto. Esa estrategia puede generar tráfico innecesario, activar sistemas defensivos y producir señales débiles que requieren una importante revisión manual. AKCA adopta un enfoque más contextual: primero aprende sobre el objetivo, modela la superficie de ataque descubierta y luego selecciona las pruebas según el stack tecnológico, los parámetros, el estado de autenticación, el comportamiento del WAF y las capacidades de verificación disponibles.
AKCA está diseñado para:
El objetivo no es agotar ni abrumar al objetivo. Es encontrar debilidades reales con solicitudes deliberadas y evidencia útil.
AKCA no afirma tener paridad de características o detección con plataformas comerciales maduras como Acunetix, Invicti/Netsparker o Burp Suite Professional. Esos productos son construidos por equipos experimentados a lo largo de muchos años. AKCA es mantenido de forma independiente por un desarrollador en su tiempo personal disponible, inspirado por herramientas de seguridad establecidas y moldeado por ideas originales y comentarios de la comunidad. La prioridad actual es un escáner simple, útil y transparente. Se planea una interfaz gráfica cuando el motor sea suficientemente estable y confiable.
Sesión de escaneo de AKCA v0.2.4 con estado del motor en vivo, telemetría de recursos y hallazgos confirmados.
Requiere Go 1.25 o superior.```bash go install github.com/akha-security/akca/engine/cmd/akca@latest akca --version
<details>
<summary>¿Comando no encontrado? Configura tu PATH.</summary>
Para la instalación predeterminada de Go, añade el directorio de binarios de Go al `PATH` de tu terminal actual.
**Linux / macOS**```bash
export PATH="$(go env GOPATH)/bin:$PATH"
Añade esa línea a la configuración de tu shell para conservarla entre sesiones.
Windows PowerShell```powershell $env:Path += ";$(go env GOPATH)\bin"
Para futuras sesiones, añade el mismo directorio a tu variable de entorno `Path` de usuario. Si configuraste `GOBIN`, usa ese directorio en su lugar.
</details>
### Binarios precompilados
Descarga tu compilación desde [GitHub Releases](https://github.com/akha-security/akca/releases/latest). Las versiones incluyen `SHA256SUMS.txt` para la verificación de checksums.
| Plataforma | Arquitectura | Recurso |
| --- | --- | --- |
| 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` |
En Linux o macOS, haz que el archivo descargado sea ejecutable. Para Linux x64:```bash
chmod +x akca-linux-amd64
./akca-linux-amd64 --help
En Windows, renombra la descarga a akca.exe y ejecuta .\akca.exe --help en PowerShell. Los ejemplos a continuación asumen que akca está disponible en tu PATH.
Las comprobaciones respaldadas por el navegador requieren Chrome, Chromium o Edge.
Usa AKCA solo en sistemas que poseas o tengas permiso para probar. Reemplaza la URL de ejemplo con tu objetivo autorizado.
akca -u https://example.com
El perfil predeterminado es `full`. Para guardar un informe HTML:```bash
akca -u https://example.com -f html -o report.html
Ejecutar comprobaciones de inyección SQL, XSS e inyección del lado del servidor, incluida SSTI:```bash akca -u https://example.com -m sql,xss,rce
Ejecutar comprobaciones pasivas:```bash
akca -u https://example.com -m passive
Los escaneos pasivos aún envían solicitudes para descubrimiento e inspección.
Proporciona una cookie de sesión:```bash akca -u https://example.com -c "session=YOUR_SESSION_COOKIE"
O una cabecera de autorización:```bash
akca -u https://example.com -H "Authorization: Bearer YOUR_TOKEN"
Algunas comprobaciones de autorización requieren identidades adicionales o configuración de estado más allá de una única sesión.
akca -u https://api.example.com --api-spec ./openapi.yaml -m api
Discovery admite entradas OpenAPI/Swagger, RAML, Postman, HAR, GraphQL, WSDL, protobuf y AsyncAPI, incluidos los paquetes ZIP compatibles. La cobertura de las pruebas depende del protocolo y la operación importados.
### Inspeccionar el tráfico a través de un proxy```bash
akca -u https://example.com -p http://127.0.0.1:8080
Ejecuta akca --help para ver todas las opciones disponibles.
Usa akca -h para una ayuda diaria concisa, o akca --help para la referencia completa de opciones. Los objetivos de escaneo deben proporcionarse explícitamente con -u o --url.
Selecciona un perfil con -m, o combina varios con comas.
| Perfil | Comprobaciones |
|---|---|
full | Todos los módulos activos y pasivos habilitados; el predeterminado |
sql | Inyección SQL y NoSQL |
xss | XSS reflejado, almacenado, DOM y ciego; comprobaciones relacionadas del lado del cliente |
rce | Inyección de comandos, SSTI, deserialización y comprobaciones relacionadas |
api | Exposición de API, BOLA/IDOR, BFLA, asignación masiva y comprobaciones de tokens |
graphql | Comprobaciones de esquema y operaciones de GraphQL |
ssrf | SSRF, XXE y comprobaciones relacionadas fuera de banda |
auth | Autenticación, autorización, CSRF y comprobaciones de cookies/cabeceras |
passive | Metadatos, TLS, cabeceras de seguridad, secretos y análisis de componentes |
fuzz | Rutas, artefactos expuestos, traversal y comprobaciones relacionadas |
La ejecución depende de los endpoints descubiertos, la configuración, las capacidades de verificación disponibles y los límites del escaneo. Consulta FEATURES.md para la guía completa de capacidades.
AKCA utiliza un pipeline por etapas para que las comprobaciones posteriores puedan beneficiarse de los datos aprendidos anteriormente:
La cobertura es explícita. Un objetivo omitido, fallido, limitado por presupuesto o inacabado se registra como cobertura incompleta; no se trata silenciosamente como un resultado de seguridad limpio.
La siguiente lista describe los motores de descubrimiento y las familias de pruebas de seguridad implementados. Las comprobaciones individuales se ejecutan solo cuando la superficie descubierta, el perfil de escaneo, la configuración, la política de seguridad y los requisitos previos de verificación las hacen aplicables. Una capacidad listada no garantiza que se detecte cada variante de una vulnerabilidad.
Establece un presupuesto total de peticiones y una duración máxima:```bash akca -u https://example.com --request-budget 5000 --time-budget 30m
O calcula el presupuesto del módulo a partir de las combinaciones de URL/método descubiertas:```bash
akca -u https://example.com --requests-per-target 200
AKCA distribuye presupuestos de módulos acotados entre módulos, URLs y parámetros. Las asignaciones no utilizadas se trasladan a trabajo posterior. Un --request-budget positivo tiene prioridad sobre --requests-per-target.
| Opción | Propósito |
|---|---|
--request-budget 5000 | Limita el total de solicitudes, incluidos descubrimiento, reintentos y redirecciones |
--requests-per-target 200 | Deriva el presupuesto del módulo a partir de las combinaciones de URL/método descubiertas |
--crawler-budget 1000 | Limita las solicitudes de descubrimiento |
--time-budget 30m | Limita la duración del escaneo |
--rate-limit 5 | Limita las solicitudes por segundo |
--concurrency 4 | Limita los workers concurrentes |
Por defecto, el escaneo de módulos no tiene cuota de solicitudes. Las interrupciones por presupuesto se reportan como cobertura incompleta. Los objetivos interrumpidos no se reanudan automáticamente cuando trabajo posterior devuelve presupuesto no utilizado. Ninguna configuración de presupuesto garantiza la detección de todas las vulnerabilidades.
Los subdominios vinculados de API/servicio están fuera del alcance predeterminado del objetivo. Para incluir subdominios vinculados bajo el mismo dominio raíz:```bash akca -u https://www.example.com --include-linked-api-subdomains
### Por qué un escaneo completo tarda más
El escaneo completo predeterminado de AKCA está diseñado en torno a la cobertura y la calidad de la evidencia, no al menor tiempo de finalización posible. Por lo tanto, su tiempo de ejecución no es directamente comparable con herramientas que se detienen tras un rastreo HTTP superficial o que reportan una vulnerabilidad a partir de una única diferencia en la respuesta.
Una ejecución exhaustiva puede tardar más porque AKCA:
- Mantiene una sesión de navegador para rutas renderizadas en el cliente e inspecciona JavaScript, incluidos los fragmentos de aplicación cargados de forma diferida.
- Reproduce resultados prometedores con controles antes de promoverlos a hallazgos, lo que reduce los falsos positivos causados por errores genéricos, páginas inestables y respuestas de WAF.
- Realiza comprobaciones con reconocimiento de identidad, estado y callback cuando un módulo requiere una prueba más sólida.
- Respeta el ritmo del objetivo, los reintentos, los presupuestos de solicitudes y las ventanas de observación fuera de banda en lugar de tratar la velocidad como la única métrica de éxito.
La duración del escaneo también depende del tamaño de la aplicación, la latencia de respuesta, los flujos de autenticación, los controles defensivos y el alcance configurado. Para obtener retroalimentación más rápida, seleccione solo los módulos relevantes con `-m` o aplique presupuestos explícitos de rastreo, solicitudes y tiempo. Aumente la tasa y la concurrencia solo cuando el objetivo autorizado pueda manejar de forma segura el tráfico adicional. Un escaneo más corto no es necesariamente un escaneo más completo.
## Informes
Elija un formato de salida con `-f` y una ruta de archivo con `-o`:```bash
akca -u https://example.com -f html -o report.html
Formatos compatibles: HTML, JSON, Markdown, CSV y SARIF. Cada invocación inicia un nuevo escaneo.
Los informes HTML son autocontenidos e incluyen el logotipo de AKCA, resúmenes de riesgo y severidad, estadísticas de vulnerabilidades, detalles estructurados de los hallazgos y evidencia HTTP expandible. Las pestañas de solicitud y respuesta admiten una vista combinada, la expansión del contenido completo y la copia. Cuando un hallazgo conserva un valor de respuesta coincidente, AKCA lo resalta en amarillo, lo que ayuda a localizar un payload reflejado o un secreto expuesto. Los hallazgos pasivos de secretos conservan un extracto alrededor de la coincidencia.
Según el módulo, los hallazgos incluyen:
Los hallazgos de temporización, las cabeceras faltantes y las devoluciones de llamada externas pueden no tener texto de respuesta que resaltar. Su contexto de verificación proporciona la evidencia relevante.
Cuando el escáner almacenó una transacción sin procesar completa, el informe la conserva exactamente. La evidencia más antigua o solo estructurada se representa en un diseño HTTP convencional al estilo Burp con una línea de solicitud, cabeceras ordenadas, un separador de cabecera/cuerpo y frases de motivo de respuesta HTTP estándar. Si el límite de captura del transporte truncó una respuesta, el informe lo indica explícitamente; nunca presenta la porción almacenada como la respuesta completa no disponible.
Reproducir un hallazgo almacenado:```bash akca replay --finding 42
Los informes enmascaran las credenciales reconocidas de forma predeterminada. La evidencia sin procesar almacenada se conserva para su reproducción. Establezca `redact_reports` en `false` en la configuración del escaneo, o use `redact=false` en la API de informes, solo cuando se necesiten exportaciones sin procesar. Revise los informes antes de compartirlos: el enmascaramiento automático no puede reconocer todos los secretos específicos de cada aplicación.
### Configuración de rastreo y prueba
El rastreador mantiene una única sesión de navegador durante cada fase de rastreo, incluidas las cookies y el almacenamiento del navegador. Explora pestañas explícitas que no son formularios y paneles expandibles; no rellena ni envía formularios automáticamente. Las solicitudes del navegador siguen obedeciendo al alcance y a los presupuestos de solicitudes. Para las dependencias estáticas de terceros requeridas, configure los nombres de host exactos por separado:```json
{
"browser_resource_domains": ["cdn.example.com"],
"redact_reports": true
}
Esto permite únicamente solicitudes GET/HEAD de scripts, hojas de estilo, imágenes, fuentes y medios a esos hosts, eliminando credenciales y encabezados personalizados. No añade esos hosts al alcance del escaneo activo ni permite llamadas API de origen cruzado. Las dependencias del navegador bloqueadas producen eventos de brecha de cobertura.
Las URL descubiertas se conservan incluso cuando no se pueden visitar. Un rastreo que agota su presupuesto con trabajo en cola produce un escaneo parcial y un código de salida de CLI distinto de cero. Los mensajes de preflight del módulo distinguen políticas de identidad/estado faltantes de capacidades de verificación configuradas.
Las comprobaciones de límite de tasa no configuradas producen observaciones, no hallazgos de vulnerabilidad. Una prueba de umbral configurada también requiere window_seconds; si las solicitudes no caben dentro de esa ventana, la comprobación no es concluyente. SQLi no trata una respuesta 400 o una evaluación aritmética por sí sola como prueba. Los nuevos errores SQL específicos del proveedor en respuestas 400/422 deben pasar la ruta de verificación de reproducción y control.
Consulte CHANGELOG.md para detalles de la versión.
AKCA no acepta patrocinios ni donaciones personales. Las contribuciones de código, pruebas, documentación y comentarios reflexivos son siempre bienvenidos.
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.
Si deseas apoyar económicamente el proyecto, por favor dona a una organización benéfica de buena reputación en tu país que ayude a niños, comunidades afectadas por desastres, veteranos o personas en necesidad urgente. Cuando sea posible, haz la donación en nombre de mi hija, Akça Aktaş. Puedes compartirlo conmigo en X en @caneraktas_; saber que este proyecto inspiró un acto de ayuda significaría mucho para mí.
Compilar desde el código fuente:```bash git clone https://github.com/akha-security/akca.git cd akca/engine go build -buildvcs=false -trimpath -o ../akca ./cmd/akca
En Windows, use `-o ../akca.exe` para el nombre del ejecutable.
Ejecute las comprobaciones desde el directorio `engine`:```bash
go test ./... -count=1
go vet ./...
go run ./cmd/akca benchmark --strict
El benchmark mide su corpus observado. Para obtener detalles de implementación y limitaciones de verificación, lea la guía de arquitectura y la auditoría de verificación.
Las contribuciones son bienvenidas. Lea CONTRIBUTING.md y el Código de Conducta antes de abrir un pull request. Reporte vulnerabilidades en AKCA a través de SECURITY.md.
Apache License 2.0 · Copyright 2026 AKHA Security contributors.