Cowrie
Honeypot de média interatividade para SSH e Telnet — captura força bruta, shell falso e malware baixado. Da arquitetura interna à análise de logs e integração com SIEM.
Nesta página
1. Contexto e arquitetura
O Cowrie é um honeypot de média interatividade que emula um servidor SSH/Telnet completo. Ele fornece um shell falso, um sistema de arquivos fictício e aceita credenciais configuráveis, permitindo que o atacante "entre" e execute comandos — mas tudo é registrado sem que haja um sistema real por trás.
Arquitetura interna:
- Módulo SSH/Telnet — implementa o protocolo e negocia sessão com o cliente.
- Motor de shell falso — interpreta comandos e simula respostas.
- Sistema de arquivos virtual —
fs.pickle, um mini-filesystem em memória. - Registro de eventos — logs em JSON, gravando cada comando, login e download.
- Módulo de download — intercepta
wget/curle salva o arquivo baixado.
2. Instalação
apt update
apt install git python3-venv python3-dev libssl-dev libffi-dev build-essential -y
adduser --disabled-password cowrie
su - cowrie
git clone http://github.com/cowrie/cowrie
cd cowrie
python3 -m venv cowrie-env
source cowrie-env/bin/activate
pip install --upgrade pip
pip install -r requirements.txt
3. Configuração básica
cp etc/cowrie.cfg.dist etc/cowrie.cfg
# Trechos relevantes:
[ssh]
enabled = true
listen_endpoints = tcp:2222:interface=0.0.0.0
version = SSH-2.0-OpenSSH_8.4p1
[telnet]
enabled = true
listen_endpoints = tcp:2223:interface=0.0.0.0
[honeypot]
hostname = srv-app-03
log_path = var/log/cowrie
bin/cowrie start
bin/cowrie status
tail -f var/log/cowrie/cowrie.log
4. Redirecionar porta 22
Para que o Cowrie escute na porta 22 (como um SSH real), redirecione com iptables e mova o SSH administrativo para outra porta:
# SSH real para porta 2200
# /etc/ssh/sshd_config -> Port 2200
iptables -t nat -A PREROUTING -p tcp --dport 22 -j REDIRECT --to-port 2222
iptables -t nat -A PREROUTING -p tcp --dport 23 -j REDIRECT --to-port 2223
⚠️ Nunca esqueça de mudar o SSH real de porta antes — senão você redireciona seu próprio acesso administrativo para o honeypot.
5. Sistema de arquivos falso e credenciais
Credenciais aceitas em etc/userdb.txt. O * como senha significa aceitar qualquer senha para o usuário:
root:x:*
admin:x:admin123
Aceitar qualquer senha para "root" é decisão deliberada comum — maximiza a captura de sessões pós-login.
6. Análise de logs com exemplos
# Log estruturado em JSON
tail -f var/log/cowrie/cowrie.json | jq .
# Comandos digitados em uma sessão
grep "cowrie.command.input" var/log/cowrie/cowrie.json | jq '.input'
# IPs de origem mais frequentes
grep "login.success\|login.failed" var/log/cowrie/cowrie.json | jq -r '.src_ip' | sort | uniq -c | sort -rn | head
# Malware baixado
ls var/lib/cowrie/downloads/
Padrões a monitorar: rajadas de tentativas de login (varredura), sequências de comandos típicas de botnets (ex.: wget → chmod +x → execução), e dicionários de credenciais conhecidos de campanhas.
7. Integração com SIEM
Cowrie suporta saída para Splunk, ElasticSearch, Graylog e syslog. Configure [output_syslog] ou [output_json] para enviar eventos ao seu SIEM. A integração permite correlação com outros logs e automação de resposta.
8. Monitoramento e métricas
- Número de tentativas de login — alerta se houver pico.
- Comandos únicos — detectar novas técnicas de ataque.
- Malware capturado — volume e tipo.
- Tempo médio de sessão — indica engajamento do atacante.
9. Segurança da implantação
- Rodar como usuário não-privilegiado dedicado.
- Isolar em VM/container separado.
- Egress filtering — bloquear saída para internet, exceto o necessário.
- Atualizar o Cowrie regularmente para corrigir vulnerabilidades da própria ferramenta.
10. Dimensionamento e performance
O Cowrie é leve — uma única instância pode lidar com centenas de conexões simultâneas em um VPS com 2 vCPUs e 4 GB de RAM. O principal gargalo é o log (JSON cresce rápido); configure rotação e retenção adequadas.
11. Comparação com outros honeypots SSH
| Ferramenta | Interatividade | Foco |
|---|---|---|
| Cowrie | Média | SSH/Telnet, shell falso, captura de malware |
| Kippo | Média | Antigo, predecessor do Cowrie (descontinuado) |
| SSH-Honeypot | Baixa | Apenas registrar tentativas de login |
12. Troubleshooting
Verificar dependências Python no log. Versão de biblioteca desalinhada é a causa mais comum após atualização do SO.
Confirmar redirecionamento de portas e acessibilidade externa.
Customizar banner e filesystem para parecer mais realista.
13. Glossário
14. Referências
- Documentação oficial Cowrie (cowrie.readthedocs.io).
- Repositório oficial (GitHub).
- Páginas relacionadas: Honeypot, Dionaea.
Conteúdo técnico independente. Nenhum trecho é cópia literal de fonte de terceiro.