w12scan
w12scan é um mecanismo de descoberta de ativos de rede que permite enviar tarefas através de uma interface WEB. O w12scan agregará automaticamente os ativos relacionados para facilitar a análise e uso. w12scan também é meu projeto de graduação.
w12scan é dividido em parte WEB (para exibir dados) e parte Cliente (para pesquisar dados de ativos relacionados).
Aqui está o código aberto da parte web, a parte cliente está em https://github.com/boy-hack/w12scan-client
Um vídeo para conhecer o W12SCAN

Ideia de design
Baseado em python3 + django + elasticsearch + redis (desduplicação + middleware de comunicação entre web e cliente). Use a API WEB para adicionar alvos de varredura. Após a conclusão da varredura, ela será exibida na parte WEB.

Características
Parte WEB
- Poderosa sintaxe de pesquisa
- Através da sintaxe de pesquisa, é possível pesquisar CMS, nomes de serviços, títulos, países, etc., encontrando rapidamente alvos relevantes.
- title=“abc” # pesquisar no título
- header=“abc” # pesquisar no cabeçalho HTTP
- body=“123” # pesquisar no corpo
- url = “*.baidu.com” # pesquisar subdomínios de baidu.com,
* é um caractere curinga
- ip = ‘1.1.1.1’ # pesquisar IP, suporta CIDR
'192.168.1.0/24' e pesquisa com curinga '192.168.1.*'
- port = ‘80’ # pesquisar porta
- app = ’nginx’ # pesquisar componente
- country = ‘cn’ # pesquisar país
- service = ‘mysql’ # pesquisar serviço
- bug = 'xx' # pesquisar por uma vulnerabilidade existente
- Configuração personalizada de ativos
- Ao personalizar domínios ou IPs relacionados a uma empresa, o w12scan encontrará automaticamente os ativos correspondentes. Quando você navega para esse alvo, há um identificador proeminente lembrando a qual ele pertence.
- Associação automática
- Ao entrar nos detalhes do alvo, se o alvo for um IP, ele associará automaticamente todos os domínios nesse IP e todos os domínios no mesmo segmento C. Se o alvo for um domínio, ele associará automaticamente sites vizinhos, segmento C e subdomínios.
- Gerenciamento de múltiplos nós
- A parte WEB verificará o status de funcionamento dos nós a cada poucos minutos. Você pode ver a quantidade de varreduras dos nós e os logs de varredura.
- Tarefas RESTful
- Fornece uma interface para adicionar tarefas. Você pode adicioná-las na parte WEB ou integrar essa interface em qualquer software.
Parte de varredura (Cliente)
- Verificação de PoC oportuna
- Através da interface da API airbug, chama online os scripts de verificação de PoC mais recentes. O airbug garante a atualização oportuna de vulnerabilidades. Você também pode fazer fork do projeto airbug e adicionar suas próprias regras de PoC.
- Ataques de verificação
- A parte de varredura possui serviços de verificação de vulnerabilidades comuns integrados. Cada vez que uma URL é verificada, esses serviços são executados e os resultados são finalmente exibidos na parte WEB do w12scan.
- Varredura e identificação
- A varredura de portas usa masscan, a identificação de portas usa nmap, a identificação de aplicações web chama wappalyzer e uma versão simplificada do w11scan (identificação de impressão digital)
- Distribuição fácil
- Isso foi considerado no design da arquitetura do programa. A parte de varredura apenas aceita tarefas e os resultados finais interagem apenas com a parte WEB, portanto, a distribuição é muito fácil: basta executar a parte de varredura em outra máquina. É possível fazer distribuição baseada em Docker e integrar facilmente o serviço Celery.
Instalação
Implantação com um clique baseada em Docker
mkdir ~/w12scan-data/db # Este diretório armazena os resultados do w12scan
mkdir ~/w12scan-data/data # Este diretório armazena os resultados do ES
git clone https://github.com/boy-hack/w12scan
cd w12scan
docker-compose up -d
Após aguardar um pouco, acesse http://127.0.0.1:8000
Usuário e senha padrão boyhack:boyhack
Armazenamento de dados
- Você pode modificar
docker-compose.yml, pesquisar ~/w12scan-data/db ou ~/w12scan-data/data para alterar o local de armazenamento
Problemas relacionados
- Para manter a alta disponibilidade, prepare pelo menos um servidor 8G4H para teste (ES consome memória). Se o servidor não atender a esses requisitos, é necessário adicionar
- "ES_JAVA_OPTS=-Xms2048m -Xmx2048m" no Dockerfile para o banco de dados ES para especificar a memória, mas isso não garante alta disponibilidade.
- Ao instalar no Windows, preste atenção ao problema de formato do arquivo
.sh https://github.com/boy-hack/w12scan/issues/12 (agradecimentos a @Hotsunrize).
- P: Como implantar de forma distribuída? R: Esquema de implantação
- P: Após iniciar, a contagem de pesquisa é 0? R: É necessário adicionar alvos de varredura.
- Não pesquise enquanto varre; o Elasticsearch realiza análises, tokenização, etc. ao inserir dados (nesse momento a eficiência é baixa). Se pesquisar durante esse período, pode retornar 503. Recomenda-se pesquisar após a conclusão da varredura. (Posteriormente, será resolvido com migração de dados.)
Links relacionados
Legal
Este programa é usado principalmente para coletar dados de rede para análise e pesquisa. Antes de usar este programa, siga as leis locais relevantes.