Scanner DAST orientado a evidências em Go que rastreia aplicações web e APIs e, em seguida, executa verificações adaptativas de SQLi, XSS, RCE, SSRF e autenticação com prova reproduzível.
Scanner Avançado de Segurança Web
Descubra endpoints. Teste aplicações web. Inspecione as evidências.
Instalação · Uso · Fluxo de Trabalho · Perfis · Cobertura · Relatórios · Apoie · Recursos · Changelog
O AKCA é um scanner de Teste Dinâmico de Segurança de Aplicações (DAST) de código aberto e orientado a evidências, escrito em Go. Ele combina rastreamento HTTP e assistido por navegador, análise de JavaScript, importação de APIs, testes ativos adaptativos, inspeção passiva e evidências reproduzíveis em um único fluxo de trabalho de linha de comando.
Muitos scanners rastreiam uma aplicação e depois enviam um amplo conjunto de payloads para cada endpoint descoberto. Essa estratégia pode gerar tráfego desnecessário, acionar sistemas defensivos e produzir sinais fracos que exigem uma triagem manual substancial. O AKCA adota uma abordagem mais contextual: primeiro ele aprende sobre o alvo, modela a superfície de ataque descoberta e, em seguida, seleciona testes de acordo com a stack tecnológica, parâmetros, estado de autenticação, comportamento do WAF e capacidades de verificação disponíveis.
O AKCA foi projetado para:
O objetivo não é esgotar ou sobrecarregar o alvo. É encontrar fraquezas reais com requisições deliberadas e evidências úteis.
O AKCA não reivindica paridade de recursos ou detecção com plataformas comerciais maduras como Acunetix, Invicti/Netsparker ou Burp Suite Professional. Esses produtos são construídos por equipes experientes ao longo de muitos anos. O AKCA é mantido de forma independente por um único desenvolvedor em seu tempo pessoal disponível, inspirado por ferramentas de segurança estabelecidas e moldado por ideias originais e feedback da comunidade. A prioridade atual é um scanner simples, útil e transparente. Uma interface gráfica está planejada quando o motor estiver suficientemente estável e confiável.
Sessão de varredura do AKCA v0.2.4 com status do motor em tempo real, telemetria de recursos e achados confirmados.
Requer Go 1.25 ou mais recente.```bash go install github.com/akha-security/akca/engine/cmd/akca@latest akca --version
<details>
<summary>Comando não encontrado? Configure o seu PATH.</summary>
Para a instalação padrão do Go, adicione o diretório de binários do Go ao `PATH` do seu terminal atual.
**Linux / macOS**```bash
export PATH="$(go env GOPATH)/bin:$PATH"
Adicione essa linha à configuração do seu shell para mantê-la entre sessões.
Windows PowerShell```powershell $env:Path += ";$(go env GOPATH)\bin"
Para sessões futuras, adicione o mesmo diretório à sua variável de ambiente `Path` do usuário. Se você configurou `GOBIN`, use esse diretório em vez disso.
</details>
### Binários pré-compilados
Baixe sua build em [GitHub Releases](https://github.com/akha-security/akca/releases/latest). As releases incluem `SHA256SUMS.txt` para verificação de checksum.
| Plataforma | Arquitetura | Asset |
| --- | --- | --- |
| 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` |
No Linux ou macOS, torne o arquivo baixado executável. Para Linux x64:```bash
chmod +x akca-linux-amd64
./akca-linux-amd64 --help
No Windows, renomeie o download para akca.exe e execute .\akca.exe --help no PowerShell. Os exemplos abaixo assumem que akca está disponível no seu PATH.
As verificações com suporte de navegador requerem Chrome, Chromium ou Edge.
Use o AKCA apenas em sistemas que você possui ou tem permissão para testar. Substitua a URL de exemplo pelo seu alvo autorizado.
akca -u https://example.com
O perfil padrão é `full`. Para salvar um relatório HTML:```bash
akca -u https://example.com -f html -o report.html
Execute verificações de injeção SQL, XSS e injeção do lado do servidor, incluindo SSTI:```bash akca -u https://example.com -m sql,xss,rce
Execute verificações passivas:```bash
akca -u https://example.com -m passive
Varreduras passivas ainda enviam requisições para descoberta e inspeção.
Forneça um cookie de sessão:```bash akca -u https://example.com -c "session=YOUR_SESSION_COOKIE"
Ou um cabeçalho de autorização:```bash
akca -u https://example.com -H "Authorization: Bearer YOUR_TOKEN"
Algunas verificações de autorização exigem identidades adicionais ou configuração de estado além de uma única sessão.
akca -u https://api.example.com --api-spec ./openapi.yaml -m api
O Discovery oferece suporte a entradas OpenAPI/Swagger, RAML, Postman, HAR, GraphQL, WSDL, protobuf e AsyncAPI, incluindo pacotes ZIP suportados. A cobertura de testes depende do protocolo e da operação importados.
### Inspecionar o tráfego através de um proxy```bash
akca -u https://example.com -p http://127.0.0.1:8080
Execute akca --help para todas as opções disponíveis.
Use akca -h para ajuda concisa do dia a dia, ou akca --help para a referência completa de opções. Os alvos de varredura devem ser fornecidos explicitamente com -u ou --url.
Selecione um perfil com -m, ou combine vários com vírgulas.
| Perfil | Verificações |
|---|---|
full | Todos os módulos ativos e passivos habilitados; o padrão |
sql | Injeção SQL e NoSQL |
xss | XSS refletido, armazenado, DOM e cego; verificações relacionadas do lado do cliente |
rce | Injeção de comandos, SSTI, desserialização e verificações relacionadas |
api | Exposição de API, BOLA/IDOR, BFLA, atribuição em massa e verificações de tokens |
graphql | Verificações de esquema e operações GraphQL |
ssrf | SSRF, XXE e verificações out-of-band relacionadas |
auth | Verificações de autenticação, autorização, CSRF e cookies/cabeçalhos |
passive | Metadados, TLS, cabeçalhos de segurança, segredos e análise de componentes |
fuzz | Caminhos, artefatos expostos, travessia e verificações relacionadas |
A execução depende dos endpoints descobertos, da configuração, das capacidades de verificação disponíveis e dos limites de varredura. Consulte FEATURES.md para o guia completo de capacidades.
O AKCA usa um pipeline em estágios para que verificações posteriores possam se beneficiar de fatos aprendidos anteriormente:
A cobertura é explícita. Um alvo ignorado, com falha, limitado por orçamento ou inacabado é registrado como cobertura incompleta; ele não é silenciosamente tratado como um resultado de segurança limpo.
A lista a seguir descreve os motores de descoberta e as famílias de testes de segurança implementados. Verificações individuais são executadas apenas quando a superfície descoberta, o perfil de varredura, a configuração, a política de segurança e os pré-requisitos de verificação as tornam aplicáveis. Uma capacidade listada não é garantia de que toda variante de uma vulnerabilidade será detectada.
Defina um orçamento total de requisições e uma duração máxima:```bash akca -u https://example.com --request-budget 5000 --time-budget 30m
Ou calcule o orçamento do módulo a partir das combinações de URL/método descobertas:```bash
akca -u https://example.com --requests-per-target 200
AKCA distribui orçamentos limitados de módulos entre módulos, URLs e parâmetros. As alocações não utilizadas são transferidas para trabalho posterior. Um --request-budget positivo tem precedência sobre --requests-per-target.
| Opção | Propósito |
|---|---|
--request-budget 5000 | Limita o total de requisições, incluindo descoberta, tentativas e redirecionamentos |
--requests-per-target 200 | Deriva o orçamento do módulo a partir das combinações de URL/método descobertas |
--crawler-budget 1000 | Limita as requisições de descoberta |
--time-budget 30m | Limita a duração do scan |
--rate-limit 5 | Limita requisições por segundo |
--concurrency 4 | Limita workers concorrentes |
Por padrão, o scan do módulo não tem cota de requisições. Interrupções por orçamento são reportadas como cobertura incompleta. Alvos interrompidos não são retomados automaticamente quando trabalho posterior devolve orçamento não utilizado. Nenhuma configuração de orçamento garante a detecção de todas as vulnerabilidades.
Subdomínios de API/serviço vinculados estão fora do escopo de alvo padrão. Para incluir subdomínios vinculados sob a mesma raiz:```bash akca -u https://www.example.com --include-linked-api-subdomains
### Por que uma Varredura Completa demora mais
A Varredura Completa padrão do AKCA é projetada em torno de cobertura e qualidade de evidências, não do menor tempo de conclusão possível. Seu tempo de execução, portanto, não é diretamente comparável ao de ferramentas que param após um rastreamento HTTP superficial ou relatam uma vulnerabilidade a partir de uma única diferença de resposta.
Uma execução abrangente pode demorar mais porque o AKCA:
- Mantém uma sessão de navegador para rotas renderizadas no cliente e inspeciona JavaScript, incluindo chunks de aplicação carregados de forma preguiçosa.
- Reproduz resultados promissores com controles antes de promovê-los a achados, reduzindo falsos positivos causados por erros genéricos, páginas instáveis e respostas de WAF.
- Executa verificações com reconhecimento de identidade, estado e callback quando um módulo exige prova mais forte.
- Respeita o ritmo do alvo, tentativas, orçamentos de requisições e janelas de observação fora de banda, em vez de tratar a velocidade como a única métrica de sucesso.
A duração da varredura também depende do tamanho da aplicação, latência de resposta, fluxos de autenticação, controles defensivos e do escopo configurado. Para obter feedback mais rápido, selecione apenas os módulos relevantes com `-m` ou aplique orçamentos explícitos de rastreamento, requisições e tempo. Aumente a taxa e a concorrência apenas quando o alvo autorizado puder lidar com segurança com o tráfego adicional. Uma varredura mais curta não é necessariamente uma varredura mais completa.
## Relatórios
Escolha um formato de saída com `-f` e um caminho de arquivo com `-o`:```bash
akca -u https://example.com -f html -o report.html
Formatos suportados: HTML, JSON, Markdown, CSV e SARIF. Cada invocação inicia uma nova varredura.
Os relatórios HTML são autónomos e incluem o logótipo AKCA, resumos de risco e severidade, estatísticas de vulnerabilidades, detalhes estruturados dos achados e evidência HTTP expansível. Os separadores de pedido e resposta suportam uma vista combinada, expansão de conteúdo completo e cópia. Quando um achado preserva um valor de resposta correspondente, o AKCA realça-o em amarelo, ajudando-o a localizar um payload refletido ou um segredo exposto. Os achados passivos de segredos retêm um excerto em torno da correspondência.
Dependendo do módulo, os achados incluem:
Achados de temporização, cabeçalhos em falta e callbacks externos podem não ter texto de resposta para realçar. O seu contexto de verificação fornece a evidência relevante.
Quando o scanner armazenou uma transação bruta completa, o relatório preserva-a exatamente. Evidência mais antiga ou apenas estruturada é apresentada num layout HTTP convencional ao estilo Burp, com uma linha de pedido, cabeçalhos ordenados, um separador cabeçalho/corpo e frases de razão de resposta HTTP padrão. Se o limite de captura de transporte truncou uma resposta, o relatório indica-o explicitamente; nunca apresenta a porção armazenada como a resposta completa indisponível.
Reproduzir um achado armazenado:```bash akca replay --finding 42
Relatórios mascaram credenciais reconhecidas por padrão. Evidências brutas armazenadas são preservadas para reprodução. Defina `redact_reports` como `false` na configuração de varredura, ou use `redact=false` na API de relatórios, apenas quando exportações brutas forem necessárias. Revise os relatórios antes de compartilhá-los: o mascaramento automático não consegue reconhecer todos os segredos específicos de cada aplicação.
### Configuração de rastreamento e comprovação
O rastreador mantém uma sessão de navegador durante cada fase de rastreamento, incluindo cookies e armazenamento do navegador. Ele explora abas explícitas que não sejam de formulário e painéis expansíveis; ele não preenche nem envia formulários automaticamente. As requisições do navegador ainda obedecem ao escopo e aos orçamentos de requisições. Para dependências estáticas de terceiros obrigatórias, configure os hostnames exatos separadamente:```json
{
"browser_resource_domains": ["cdn.example.com"],
"redact_reports": true
}
Isso permite apenas solicitações GET/HEAD de script, folha de estilo, imagem, fonte e mídia para esses hosts, removendo credenciais e cabeçalhos personalizados. Não adiciona esses hosts ao escopo de varredura ativo nem permite chamadas de API entre origens. Dependências de navegador bloqueadas produzem eventos de lacuna de cobertura.
URLs descobertas são retidas mesmo quando não podem ser visitadas. Um rastreamento que esgota seu orçamento com trabalho na fila produz uma varredura parcial e um código de saída CLI diferente de zero. Mensagens de pré-verificação do módulo distinguem políticas de identidade/estado ausentes de capacidades de verificação configuradas.
Verificações de limite de taxa não configuradas produzem observações, não descobertas de vulnerabilidade. Uma prova de limite configurada também requer window_seconds; se as solicitações não couberem nessa janela, a verificação é inconclusiva. SQLi não trata uma resposta 400 ou avaliação aritmética isoladamente como prova. Novos erros SQL específicos de fornecedor em respostas 400/422 devem passar pelo caminho de verificação de replay e controle.
Consulte CHANGELOG.md para detalhes da versão.
AKCA não aceita patrocínios ou doações pessoais. Contribuições de código, testes, documentação e feedback atencioso são sempre bem-vindos.
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.
Se você gostaria de apoiar financeiramente o projeto, por favor doe para uma instituição de caridade respeitável em seu país que ajude crianças, comunidades afetadas por desastres, veteranos ou pessoas em necessidade urgente. Quando possível, faça a doação em nome da minha filha, Akça Aktaş. Você pode compartilhar comigo no X em @caneraktas_; saber que este projeto inspirou um ato útil significaria muito para mim.
Compilar a partir do código-fonte:```bash git clone https://github.com/akha-security/akca.git cd akca/engine go build -buildvcs=false -trimpath -o ../akca ./cmd/akca
No Windows, use `-o ../akca.exe` para o nome do executável.
Execute as verificações a partir do diretório `engine`:```bash
go test ./... -count=1
go vet ./...
go run ./cmd/akca benchmark --strict
O benchmark mede seu corpus observado. Para detalhes de implementação e limitações de verificação, leia o guia de arquitetura e a auditoria de verificação.
Contribuições são bem-vindas. Leia o CONTRIBUTING.md e o Código de Conduta antes de abrir um pull request. Relate vulnerabilidades no AKCA através do SECURITY.md.
Apache License 2.0 · Copyright 2026 AKHA Security contributors.