Honeypot para captura de dados de intrusão.
- Banco de dados sqlite3.
- Armazenamento de IP, porta, mensagens, data e horário de acesso.
- Consultas em SQL.
- Suporte a COUNT (contagem de registros).
- Bloqueio por IPs de origem através de comandos SQL.
- Bloqueio de Portas através de comandos SQL.
Modo de usar:
usage: honeypot.py [-h] [-i IPADDR] [-p PORTS [PORTS ...]] [-q QUERY] [-e] [-v]
-h, --help show this help message and exit
-i IPADDR, --ipaddr IPADDR (IP address server)
-p PORTS [PORTS ...], --ports PORTS [PORTS ...] (List of ports to open)
-q QUERY, --query QUERY (SQL query for search in logs)
-e, --examples (Examples of SQL query)
-v, --version (show program's version number and exit)
Nome do banco de dados: logs.db
Nome das tabelas: logs, info, ports
Colunas na tabela logs:
- log_id (integer) - Log ID
- ip_orig (string) - Origin IP
- port_orig (string) - Origin Port
- ip_dst (string) - Destination IP
- port_dst (string) - Destination Port
- created (datetime) - format: %Y-%m-%d %H:%M:%S
- banned (boolean) - false = 0 | true = 1
Colunas na tabela info:
- info_id (integer) - Info ID
- msg (string) - Message from client
- log_fk (integer) - Logs foreign key
Colunas na tabela ports:
- port_id (integer) - Port ID
- port (integer) - Port number
- blocked (boolean) - false = 0 | true = 1
Mostrar ajuda:
$ python3 honeypot.py -hAntes de executar o Honeypot verifique o IP da máquina local.
Usando o comando ifconfig no Linux e obtendo o IP da interface de rede (eth0, eth1, enp4s0):
$ sudo ifconfigExemplo de execução do Honeypot ouvindo as portas 2222, 3333 e 5555:
$ python3 honeypot.py -i 192.168.1.6 -p 2222 3333 5555Conectando ao Honeypot com netcat na porta 2222:
$ nc -v 192.168.1.6 2222Listando todos os registros da tabela logs:
-q "SELECT * FROM logs;"Listando todos os registros da tabela ports:
-q "SELECT * FROM ports;"Listando os cinco últimos registros de um determinado IP ordenado por ordem de criação:
-q "SELECT * FROM logs WHERE ip_orig='192.168.1.132' ORDER BY created DESC LIMIT 5;"Selecionando IP e porta de destino cujas portas estejam entre 22 e 80:
-q "SELECT ip_orig, port_dst FROM logs WHERE port_orig BETWEEN 2200 AND 2500;"Selecionando IP e porta de destino que tenham sido registrados entre duas datas específicas:
-q "SELECT ip_orig, port_dst FROM logs WHERE created BETWEEN '2019-10-01 12:00:00' AND '2019-10-05 12:00:00';"Selecionando IP de origem e mensagens pela ID de um registro:
-q "SELECT ip_orig, msg FROM logs INNER JOIN info WHERE log_id=1 AND log_id=log_fk;"Bloqueando a conexão a um IP de origem:
-q "UPDATE logs SET banned=1 WHERE ip_orig='192.168.120.132';"Bloqueando uma porta de destino específica no servidor:
-q "INSERT INTO ports (port, blocked) VALUES (3500, 1);"Desbloqueando uma porta de destino específica no servidor:
-q "UPDATE ports SET blocked=0 WHERE port=3500;"Bloqueando uma lista de portas no servidor:
-q "INSERT INTO ports (port, blocked) VALUES (2000, 1), (3000, 1), (4000, 1), (5000, 1);"Desbloqueando uma lista de portas no servidor:
-q "UPDATE ports SET blocked=0 WHERE port IN (2000, 3000, 4000, 5000);"

