Pular para o conteúdo principal

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
informação

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])