honeypot
Honeypot SSH/HTTP de baixa interação que registra IPs, credenciais e User-Agents.
4 testes · 4 passou · 0 falhou · 0 skip
- test_store_log_and_stats0.00s
- test_parse_http_basic_auth0.00s
- test_honeypot_captures_http_connection0.60s
- test_honeypot_captures_ssh_banner0.60s
Entrypoints (CLI)
honeypot
Módulos e funções principais
honeypot/__init__.py
- —
honeypot/cli.py
main()
honeypot/servers.py
handle_ssh()parse_http_request()handle_http()
honeypot/store.py
- —
Estrutura de arquivos
- LICENSE
- README.md
- honeypot.egg-info/PKG-INFO
- honeypot.egg-info/SOURCES.txt
- honeypot.egg-info/dependency_links.txt
- honeypot.egg-info/entry_points.txt
- honeypot.egg-info/requires.txt
- honeypot.egg-info/top_level.txt
- honeypot/__init__.py
- honeypot/cli.py
- honeypot/servers.py
- honeypot/store.py
- pyproject.toml
- tests/test_honeypot.py
README
# Honeypot SSH/HTTP 🍯
Honeypot de **baixa interação** que simula servidores SSH e HTTP falsos para atrair e **registrar tentativas de ataque** — IP de origem, credenciais testadas, User-Agent, método/caminho HTTP e horário — armazenando tudo em SQLite e gerando estatísticas.
> ⚠️ Ferramenta educacional/defensiva. Um honeypot **nunca** concede acesso real: apenas responde de forma convincente e registra. Rode em ambiente controlado; exponha à internet por sua conta e risco.
## Recursos
- Servidor **SSH falso** com banner realista (OpenSSH) — captura o banner do cliente
- Servidor **HTTP falso** (nginx 401) — captura método, caminho, User-Agent e credenciais Basic Auth
- Registro persistente em **SQLite** (IP, porta, usuário, senha, UA, timestamp UTC)
- **Estatísticas**: top IPs atacantes, usuários e senhas mais tentados
- Multithread, sem dependências externas (stdlib pura)
## Instalação
```bash
git clone https://github.com/Diogo-Damasceno/honeypot.git
cd honeypot
pip install -e .
```
## Uso
```bash
# iniciar (portas altas não exigem root)
honeypot --ssh-port 2222 --http-port 8080
# ver estatísticas do banco
honeypot --stats --db honeypot.db
```
Para escutar nas portas reais 22/80 é preciso privilégio (não recomendado no mesmo host que seu SSH real):
```bash
sudo honeypot --ssh-port 22 --http-port 80
```
### Testar manualmente
```bash
# dispara um evento HTTP
curl -u admin:123456 http://localhost:8080/wp-admin
# dispara um evento SSH (captura o banner)
nc localhost 2222
```
## Testes
```bash
pip install -e '.[dev]'
pytest -q
```
## Arquitetura
```
honeypot/
├── store.py # persistência SQLite + estatísticas
├── servers.py # servidores falsos SSH/HTTP (baixa interação)
└── cli.py # interface de linha de comando
```
## Próximos passos (ideias)
- Enriquecimento com geolocalização de IP (GeoLite2)
- Exportação para o Threat Intelligence Platform (outro projeto do portfólio)
- Dashboard web em tempo real
## Licença
MIT
Como rodar na prática (entrada → saída):
$ honeypot --ports 22,80
[fake-ssh] 198.51.100.7 tentou root:admin [fake-http] 203.0.113.9 scan /wp-admin registros: 2
$ honeypot --stats
IP tentativas credenciais 198.51.100.7 1 root:admin 203.0.113.9 1 (scan)