8 nov 2009

Manual Hping

Hping es una excelente herramienta de tipo generador de paquetes TCP, UDP, ICMP, etc. Que nos Permite hacer innumerables cosas, entre ellas, testear firewalls, scanner de puertos (mediante flags), Os Fingerprint, Traceo de rutas, e incluso D.o.Seador, Hping2 es una utilidad principalmente creada para auditar redes, y realmente cumple su cometido y mas jajaja.....

Se me ocurrio hacer este manual para subir un poco el nivel de conocimientos de los usuarios, existe Hping2 para windows y linux, pero prefiero mil veces el de linux (por velocidad y eficiencia), así que este manual estará sobre linux:

para comenzar el comando hping -h nos devuelve la lista de comandos (opciones):

usage: hping host [options]
  -h  --help      show this help
  -v  --version   show version
  -c  --count     packet count
  -i  --interval  wait (uX for X microseconds, for example -i u1000)
      --fast      alias for -i u10000 (10 packets for second)
  -n  --numeric   numeric output
  -q  --quiet     quiet
  -I  --interface interface name (otherwise default routing interface)
  -V  --verbose   verbose mode
  -D  --debug     debugging info
  -z  --bind      bind ctrl+z to ttl           (default to dst port)
  -Z  --unbind    unbind ctrl+z
Mode
  default mode     TCP
  -0  --rawip      RAW IP mode
  -1  --icmp       ICMP mode
  -2  --udp        UDP mode
  -8  --scan       SCAN mode.
                   Example: hping --scan 1-30,70-90 -S www.target.host
  -9  --listen     listen mode
IP
  -a  --spoof      spoof source address
  --rand-dest      random destionation address mode. see the man.
  --rand-source    random source address mode. see the man.
  -t  --ttl        ttl (default 64)
  -N  --id         id (default random)
  -W  --winid      use win* id byte ordering
  -r  --rel        relativize id field          (to estimate host traffic)
  -f  --frag       split packets in more frag.  (may pass weak acl)
  -x  --morefrag   set more fragments flag
  -y  --dontfrag   set dont fragment flag
  -g  --fragoff    set the fragment offset
  -m  --mtu        set virtual mtu, implies --frag if packet size > mtu
  -o  --tos        type of service (default 0x00), try --tos help
  -G  --rroute     includes RECORD_ROUTE option and display the route buffer
  --lsrr           loose source routing and record route
  --ssrr           strict source routing and record route
  -H  --ipproto    set the IP protocol field, only in RAW IP mode
ICMP
  -C  --icmptype   icmp type (default echo request)
  -K  --icmpcode   icmp code (default 0)
      --force-icmp send all icmp types (default send only supported types)
      --icmp-gw    set gateway address for ICMP redirect (default 0.0.0.0)
      --icmp-ts    Alias for --icmp --icmptype 13 (ICMP timestamp)
      --icmp-addr  Alias for --icmp --icmptype 17 (ICMP address subnet mask)
      --icmp-help  display help for others icmp options
UDP/TCP
  -s  --baseport   base source port             (default random)
  -p  --destport   [+][+] destination port(default 0) ctrl+z inc/dec
  -k  --keep       keep still source port
  -w  --win        winsize (default 64)
  -O  --tcpoff     set fake tcp data offset     (instead of tcphdrlen / 4)
  -Q  --seqnum     shows only tcp sequence number
  -b  --badcksum   (try to) send packets with a bad IP checksum
                   many systems will fix the IP checksum sending the packet
                   so you'll get bad UDP/TCP checksum instead.
  -M  --setseq     set TCP sequence number
  -L  --setack     set TCP ack
  -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
  -X  --xmas       set X unused flag (0x40)
  -Y  --ymas       set Y unused flag (0x80)
  --tcpexitcode    use last tcp->th_flags as exit code
  --tcp-timestamp  enable the TCP timestamp option to guess the HZ/uptime
Common
  -d  --data       data size                    (default is 0)
  -E  --file       data from file
  -e  --sign       add 'signature'
  -j  --dump       dump packets in hex
  -J  --print      dump printable characters
  -B  --safe       enable 'safe' protocol
  -u  --end        tell you when --file reached EOF and prevent rewind
  -T  --traceroute traceroute mode              (implies --bind and --ttl 1)
  --tr-stop        Exit when receive the first not ICMP in traceroute mode
  --tr-keep-ttl    Keep the source TTL fixed, useful to monitor just one hop
  --tr-no-rtt       Don't calculate/show RTT information in traceroute mode
ARS packet description (new, unstable)
  --apd-send       Send the packet described with APD (see docs/APD.txt)

Como podrán leer el uso de la herramienta es hping ip_o_host y la/las opciones a utilizar.

Primero que nada explicare que es un flag, aunque los que hayan leeido sobre protocolos no sera ninguna novedad....

Un flag es una especie de comando, que se incluye en paquetes, que especifica acciones, por ejemplo, preguntar si podemos conectar (sincronizar), contestar que esta abierto determinado puerto, comenzar conexion, terminar conexion e incluso enviar datos y especificar la importancia de dichos datos, cave recalcar que dichos flags o banderas.

En TCP todo esta manejado por paquetes, asi que les recomiendo que vean el siguiente video tutorial que encontre en youtube:


Algo Básico pero igual sirve para entender la teoría de como funciona esto....
ahora enumeremos los principales flags (banderas) TCP:

SYN: Le dice al servidor a conectar que intentamos conectar o sincronizar.
ACK: es una cofirmacion de que los datos anteriores llegaron correctamente.
FIN: Le dice al servidor que queremos cerrar una conexion.
Null: un flag de valor nulo (0) o sea que es un paquete al que se le ah eliminado todos los flags, este paquete es enviado con el fin de optener un RST ACK o un SYN ACK.
RST: Significa Reset, o sea que reinicie la conexion por que ubo algun error, que estan filtrados los flags o que esta cerrado el puerto.
PSH: Cuando deseamos enviar una cantidad de información grande dividida en paquetes, éstos se van
situando en un buffer de transmisión FIFO (First In First Out) hasta que el último de ellos está preparado.
Este último paquete tiene activado el flag push e indica que se debe vaciar el buffer y comenzar el envío
de paquetes.
URG: significa urgente y quiere decir que enviamos un paquete con datos urgentes, tambien se pueden usar punteros para enviar datos urgentes con normales.

Espero ando que no se me halla pasado nada, continuamos:

ICMP (Internet Control Message Protocol) es un protocolo bastante simple que está orientado a fines
informativos o de control de errores.

Mensaje ICMP:
0=echo reply
3=destination unreachable
4=source quench
5=redirect
8=echo
11=time exceeded
12=parameter problem
13=timestamp
14=timestamp reply
15=information request
16=information reply
Supongo que se entiende no?...

Continuamos:

Para hacer mas entendible el tema vamos a la práctica:

Para comenzar utilizaremos a hping2 como un scanner de puertos basado en flags, esto es algo avanzado y laborioso pero optenemos exelentes resultados cheesy....

En este ejemplo utilizaré el hping2 el cual es la version mas resiente (o la mas resiente que encontré).
BT ~ # hping2 -c 1 -S -p 80 google.com
HPING google.com (eth0 64.233.187.99): S set, 40 headers + 0 data bytes
len=46 ip=64.233.187.99 ttl=241 id=30495 sport=80 flags=SA seq=0 win=8190 rtt=128.4 ms

Vamos por partes:
-c 1: cuenta los paquetes.
-S: especifica que utilizaremos paquetes con flags SYN.
-p 80: especifica el puerto en este caso 80 (HTTP).
Ahora la respuesta:
ip=64.233.187.99: es la io que resolvio hping2.
ttl=241: Time to Alive.
sport=80: el puerto.
flags=SA: Esto es lo que nos interesa, SA significa que envio un paquete con los flags SYN y ACK, lo cual quiere decir, que nuestro paquete llego correctamente y que el puerto esta abierto cheesy.
Ahora un ejemplo de puerto cerrado:
BT ~ # hping2 -c 1 -S -p 20 192.168.1.254
HPING 192.168.1.254 (eth0 192.168.1.254): S set, 40 headers + 0 data bytes
len=51 ip=192.168.1.254 ttl=255 DF id=55848 sport=20 flags=RA seq=0 win=0 rtt=0.6 ms
--- 192.168.1.254 hping statistic ---
1 packets tramitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 0.6/0.6/0.6 ms
Ahora como podremos darnos cuenta aquí cambio el flag:
flags=RA

En este caso resivimos RST y ACK o sea que el puerto esta cerrado...

Ahora vamos por un puerto filtrado:
En este caso es simple, por que no resiviremos respuesta jajajaja.

Ahora cabe especificar que no solo podemos utilizar el flag SYN para esto, lo cual es muy util, ya que algunas flags, estan filtradas por el firewall, router, o incluso una configuracion del iptables en un entorno linux, por lo cual estan otras opciones:
-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
-X --xmas set X unused flag (0x40)
-Y --ymas set Y unused flag (0x80)

Solo queda probar, así incluso podemos saltar algunas protecciones de firewalls, routers, o configuraciones de seguridad....

Autor: TheraHack / Xianuro / Uxmal

Fuente: http://argeniverso.66ghz.com/

Author & Editor

Ingeniero, me gusta la cyberseguridad, la programación y el blockchain.

2 Notaciones:

  1. Estoy en la realización de un manual de hping, y quizas aporte algo:
    http://netsecure.com.ar/2010/05/20/manual-tutorial-de-hping-con-ejemplos-i/

    ResponderEliminar
  2. 2da parte del tutorial de hping:
    www.netsecure.com.ar/2010/10/20/manual-tutorial-de-hping-con-ejemplos-ii/

    ResponderEliminar

Labels

0-day (12) 1337day (1) 8.8 (2) Adobe Acrobat (1) Android (2) Anonimato (1) Anonymous (9) BackDoor (2) BackTrack (15) badUSB (1) Base64 (1) Black Hat (7) BlackHat (1) Blackploit (30) Brute Force (3) Bug (106) Bypass Password (1) Bypass Redirect (1) C99 Shell (1) Carding (1) CheatSheet (15) Chilean Way (2) Conference (10) Cryptsetup (1) CSRF (1) DDoS (11) DEF CON (3) DEFCON (7) Dev (1) Diapositivas (1) Diseño Web (1) Distro Linux (27) Documental (2) DoS (2) Drupal (1) DuckDuckGo (1) E-zine (18) Ekoparty (1) Escaneo (4) España (1) Exploit (64) Ezine (1) Facebook (1) Fast-Info (44) FBI (1) Ficheros Binarios (1) Firefox (4) Flash (2) Forense (9) Fuerza Bruta (11) Fuga de Datos (1) GhostShell (1) GNU/Linux (4) Google (2) Guía (1) Hack T00LZ (135) Hack Tips (63) Hacked (6) Hacking (19) Hacking Hardware (5) HashCat (1) Herramientas (125) HighSecCON (1) Humor Geek (13) Infografía (1) Ingeniería Social (5) Inj3ct0r (1) Internet Explorer (3) Java (7) JavaScript (2) Kali (3) KitPloit (6) Leaks (22) Linux OS (79) LulzSec (1) Mac OS (10) Magazine (1) Malaware (3) Malaware Tools (12) Malware (1) Man in the Middle (15) Manuales (3) MD5 CRACK (4) Metasploit (57) MSSQL (1) MySQL (6) MySQL CRACK (1) Nmap (6) Nmap NSE (2) Noticias (200) NTLM CRACK (1) Ofuscar (5) OpenSolaris OS (1) OpenSSL (1) ORACLE (1) OWASP (3) Paper (10) PDF (7) PenTest (14) Perl (2) Phearking (13) Phishing (3) PHP (13) phpMyAdmin (1) PoC (1) Premios Bitacoras (1) Presentaciones (11) PRISM (1) Privacidad (2) Programación (12) Programas Linux (41) Programas Windows (41) Pwned (1) Python (5) Ransomware (1) Reconocimiento (5) Ruby (2) s (1) Scripts (7) Seguridad (150) Seguridad Web (139) Seguridad Wireless (19) Sensitive Data Exposure (2) SHA1 CRACK (1) Shellshock (1) Slides (1) Spoofing (1) Spyware (1) SQLi (19) SQLi Tools (7) SQLMap (2) SSH (1) Textos (74) Tips (57) Troyanos y Virus (11) Trucos (7) Trucos Win (7) Turiales (56) Tutoriales (18) Twitter (1) Ubuntu (2) Underc0de (1) UnderDOCS (1) Unlock (1) URL Redirection (1) UXSS (1) vBulletin (1) Video (48) Virtualización (2) Web T00LZ (16) Wifislax (1) Wikileaks (1) WikiRebels (1) Windows OS (65) Wireless Tools (13) XSS (16) Youtube (1)

 
biz.