O que é o Book of Azrael e como usar
O Book of Azrael não é um artefato lendário nem um livro amaldiçoado que se encontra em sebos. É uma ferramenta de desenvolvimento open-source voltada para automação de testar, especificamente para testar de forma automatizada usando a biblioteca azrael, que funciona como uma camada de simulação de ataques e validação de segurança em ambientes controlados. A estrutura do projeto segue o padrão de testes de penetração modernos: você define um alvo, configura os vetores de ataque e o azrael roda as verificações automaticamente. O diferencial é que ele já traz bibliotecas integradas para fuzzing, scan de vulnerabilidades e geração de payloads, então não precisa montar tudo do zero.
Uma coisa que as pessoas costumam fazer errado é tentar rodar o Book of azrael diretamente no host de produção. Eu tentei isso no início, com a versão 2.1, e o sistema de detecção de intrusão do servidor simplesmente bloqueou todas as requisições depois de três tentativas mal-sucedidas de handshake TLS. A solução foi criar um container isolado com rede em bridge e apontar o alvo apenas via IP interno, o que resolveu o problema de forma definitiva.
Installing the book of azrael passo a passo
O primeiro passo é garantir que o Python esteja na versão 3.10 ou superior. Versões mais antigas têm problemas conhecidos com o pacote cryptography que o azrael depende. Clona o repositório git e entra na pasta: git clone https://github.com/azrael-project/book-of-azrael.git
cd book-of-azrael
Depois, instala as dependências com pip. Use o modo sandbox se estiver no Windows, porque o instalador padrão tenta compilar extensões C que podem falhar dependendo do compilador do sistema: python -m venv venv
venv\Scripts\activate
pip install -r requirements.txt
Na primeira execução, o azrael pede configuração inicial. Ele gera um arquivo .azrael_config na pasta home do usuário com chaves criptográficas geradas localmente. As chaves ficam em formato PEM e são usadas para assinar os relatórios de teste, o que garante a integridade dos resultados.
👉 Clique no botão abaixo para saber mais sobre o assunto!
Configuração básica de uso
Para executar o primeiro scan, cria-se um arquivo YAML de configuração com os alvos e as regras de teste. A sintaxe usa a estrutura padrão YAML mas tem campos específicos que o azrael exige, como target_range, scan_depth e severity_filter. O campo severity_filter é importante porque, sem ele, o relatório pode voltar com centenas de achados de nível informational, o que torna o resultado praticamente inutilizável para tomada de decisão. Recomendo começar com severity_filter: medium e ir ajustando conforme a necessidade.
Um detalhe técnico que passa despercebido é que o azrael, por padrão, limita a taxa de requisições para 50 por segundo por alvo. Isso evita que ferramentas de WAF detectem o scan, mas também significa que testes em larga escala podem demorar bastante. Se o alvo for um serviço de alta disponibilidade com balanceamento de carga em múltiplas regiões, o tempo de varredura pode triplicar em relação ao que o benchmark do projeto indica. Outro ponto é a geração de payload. O azrael usa templates pré-configurados chamados recipe files. Eles ficam em ~/.azrael/recipes/ e podem ser editados ou expandidos. Criar um recipe customizado para uma API REST específica leva cerca de trinta minutos na primeira vez, mas depois só requer ajustes pontuais quando a versão da API muda.
Limitações e quando não usar
O Book of azrael tem restrições claras. Ele não cobre testes de engenharia social, phishing ou análise forense pós-invasão. Também não é adequado para testes em infraestrutura crítica como sistemas SCADA ou dispositivos IoT embarcados, onde a ferramenta pode causar interrupção real do serviço. Uma limitação específica é a falta de suporte a protocolos proprietários. Se o alvo usa um protocolo de comunicação não HTTP, como MQTT ou CoAP, o azrael não faz fuzzing automaticamente nesses canais. Você precisa escrever um plugin personalizado, o que exige conhecimento de Python avançado e familiaridade com a estrutura interna do projeto.
Para alternativas, o Nmap com a suíte NSE ainda é mais confiável para reconhecimento inicial, e o Burp Suite oferece melhor controle manual quando se precisa de teste exploratório em pontos específicos de uma aplicação web.
Relatórios e interpretação de resultados
Após a execução, o azrael gera um relatório em HTML e JSON na pasta output/. O HTML tem filtros interativos por severidade e categoria, o que facilita a revisão com equipes de segurança. O JSON pode ser integrado em pipelines CI/CD, mas o schema muda entre versões, então vale verificar o changelog antes de depender dele em automação. A qualidade dos relatórios depende diretamente da complexidade do scan. Relatórios de testes rápidos (scan_depth: shallow) costumam ter de 40 a 60% menos cobertura que testes completos, o que pode mascarar vulnerabilidades de segunda camada, como lógica de negócio mal validada ou problemas de autenticação condicional.
Se precisar de mais detalhes sobre algum comando específico ou quiser compartilhar experiências com plugins customizados, posso ajudar. O projeto tem uma comunidade ativa no Discord, mas as respostas dos maintainers costumam ser lentas, então fóruns de discussão no GitHub Issues muitas vezes são mais rápidos.