Observação: as imagens do Docker serão lançadas nas próximas semanas.
Spidex é um scanner de reconhecimento contínuo, que dá prioridade à comprovação da exposição da rede. Ele realiza varredura em larga escala orientada a portas e coleta informações de todos os dispositivos conectados à Internet.
O mecanismo é responsável por analisar massivamente os endereços IP recebidos como argumentos. Recolhe informações públicas sobre cada alvo, tais como: portos abertos, localização geográfica, tecnologias web e banners.
Também armazena um relatório para cada ciclo de varredura, contendo: Tempo de execução, dispositivos encontrados e data de início/término.
A implementação de threads e filas aumenta o desempenho durante a varredura. Desta forma, as solicitações são enviadas em paralelo e o tempo de execução de cada ciclo é significativamente reduzido. Atualmente tem um limite de 450/500 threads.
options:
-h, --help show this help message and exit
-r RANGE, --range RANGE
Start IPv4 address
-t THREADS, --threads THREADS
Number of threads [Default: 50]
-f, FILE, --file File path with IPv4 ranges
-ti TIMEOUT, --timeout TIMEOUT
Socket timeout [Default: 0.5]
-p, --top-ports Scan only 20 most used ports
-a, --all-ports Scan 1000 most used ports
-c CUSTOM [CUSTOM ...], --custom-ports CUSTOM [CUSTOM ...]
Scan custom ports directly from terminal
-l, --logs Add a log file, useful in debugging
Digitalize apenas um único intervalo de endereços IPv4 com as portas mais usadas por padrão:
python3 engine.py -r 192.168.0.0,192.168.0.255 -t 150 --top-ports
Digitalize a partir de um arquivo de texto com vários intervalos de endereços IPv4 e tempo limite de soquete de segundos:
python3 engine.py -m ranges.csv -t 200 -ti 5 --all-ports
Digitalizar com CIDR, portas personalizadas e opção de logs:
python3 engine.py -r 192.168.0.0/255 -t 350 -C 80 21 22 --logs
Consiste em uma aplicação Flask, que permite armazenar e realizar qualquer operação nos resultados enviados pelo mecanismo de busca. Utiliza MongoDB como banco de dados, é ideal porque os dados não são estruturados.
Método | Rota | Descrição |
---|---|---|
PUBLICAR | API/enviar/dispositivo | Enviar resultado único |
PEGAR | API/dispositivos | Obtenha todos os resultados |
PEGAR | API/dispositivo/ip | Obtenha um resultado único por endereço IP |
EXCLUIR | api/excluir/dispositivo/ip | Excluir um |
PUBLICAR | API/enviar/relatório | Enviar verificação de relatório |
PEGAR | API/relatórios | Obtenha todos os relatórios |
A implantação de ambos os componentes é realizada com Docker, para facilitar a instalação e evitar contaminar o ambiente com dependências. Você pode baixar as imagens do DockerHub.
Para uma implantação básica, defina as variáveis de ambiente para cada imagem, nos arquivos Docker Compose
MONGO_INITDB_ROOT_USERNAME: USERNAME
MONGO_INITDB_ROOT_PASSWORD: PASSWORD
DB_SERVER_NAME: MONGODB_SERVER
DB_USERNAME: MONGODB_USER
DB_PASSWORD: MONGODB_PASSWORD
SERVER_ADDRESS: API_SERVER
A integração do Elasticsearch e do Kibana permite ter uma interface gráfica para visualizar e manipular dados de forma eficiente.
Atualmente o projeto não possui como inserir dados automaticamente. Mas você pode usar ferramentas como: Mongo-to-elastic-dump e gerar alguns gráficos interessantes em sua máquina local após completar o ciclo de varredura.
Se você tiver ideias ou recursos futuros, sinta-se à vontade para participar para continuar tornando este projeto excelente.
Este projeto é feito apenas para fins educacionais e de testes éticos. O uso deste software para atacar alvos sem consentimento mútuo prévio é ilegal. É responsabilidade do usuário final obedecer a todas as leis locais, estaduais e federais aplicáveis. Os desenvolvedores não assumem nenhuma responsabilidade e não são responsáveis por qualquer uso indevido ou dano causado por este programa.
Apache 2.0