hping3
hping3 é uma ferramenta de rede capaz de enviar pacotes ICMP/UDP/TCP
personalizados e exibir respostas de destino como o ping faz com respostas ICMP.
Ele lida com fragmentação e tamanho e corpo de pacotes arbitrários e pode ser
usado para transferir arquivos sob protocolos suportados. Usando hping3,
você pode testar regras de firewall, realizar varredura de portas
(falsificadas), testar o desempenho da rede usando diferentes protocolos, fazer
descoberta de MTU de rotas, executar ações semelhantes ao traceroute em
diferentes protocolos, identificar sistemas operacionais remotos, auditar pilhas
TCP/IP, etc.
Checando Portas
Podemos checar o estado de determinada porta com o hping3, para isso podemos
utilizar o parâmetro --syn.
hping3 --syn -c 1 -p 80 alvo.com
Se o pacote for aceito, o servidor retornará a flag SA (SYN/ACK), porém se
rejeitado, retornará RA (RST/ACK).
Entretanto se o firewall estiver configurado para dropar o pacote enviado pelo
hping3 não será retornado nada.
Regras de Firewall
Temos alguns cenários em que as regras de firewall podem influenciar nas
repostas dos pacotes enviados via hping3, vamos ver cada caso abaixo.
Rejeitar Conexão TCP
Caso o firewall esteja configurado para rejeitar conexão TCP será retornado:
ICMP Port Unreachable from ip=xxx.xxx.xxx.xxx name=UNKNOWN
Exemplo de regra de firewall:
iptables -A INPUT -p tcp --dport 80 -j REJECT
Ignorar (Dropar) Conexão TCP
Caso o Firewall esteja configurado para dropar conexão TCP não será retornado nada.
Exemplo de regra de firewall:
iptables -A INPUT -p tcp --dport 80 -j DROP
Filtrando Conexão TCP
Exemplo de regra de firewall:
iptables -A INPUT -p tcp --dport 80 -j REJECT --reject-with tcp-reset
Nesse caso da regra acima o hping3 vai retornar uma flag RA (RST/ACK), ou seja, irá parecer que a porta está fechada, mas o firewall está filtrando.
Resumo Das Flags
Porta aberta = SYN/ACK (flag[SA])
Porta fechada = RST/ACK (flag[RA])
Porta em drop = Sem resposta
Porta em reject = Destination Port Unreachable
Reject com RST = Responde com RST/ACK (flag[RA])