Home Hacking y Seguridad Escaneos Tecnicas de escaneo

Ultimos Mensajes del Foro

Manual Aleatorio

El mundo del hacker

Documento en el que se analiza a los hackers y su comportamiento.

Leer más...

Webs Amigas

Tecnicas de escaneo Imprimir E-mail
Hacking y Seguridad - Escaneos
Escrito por hd   

Todos los días se puede ver gente en cualquier parte de Internet con la misma pregunta de siempre... ¿Como me inicio en el mundo del hack? ¿Como comienzo?, ¿Que debo leer? , antes que nada cabe aclarar de una vez que no soy hacker ni mucho menos, simplemente algo curioso. Y más de alguno ha leido que hay que bajarse un programa llamado 'scaneador de puertos' con el que te dice los "servicios", que está corriendo el host que nos interesa, así que lo primero... 



Texto Completo:
=[Tecnicas de Escaneo]=

-[hd <
 Esta dirección electrónica esta protegida contra spam bots. Necesita activar JavaScript para visualizarla
 >]-

=[Introduccin]=

 Todos los das se puede ver gente en cualquier parte de Internet con
la misma pregunta de siempre... Como me inicio en el mundo del hack?
Como comienzo?, Que debo leer? , antes que nada cabe aclarar de una
vez que no soy hacker ni mucho menos, simplemente algo curioso. Y ms
de alguno ha leido que hay que bajarse un programa llamado 'scaneador
de puertos' con el que te dice los "servicios", que est corriendo el
host que nos interesa, as que lo primero que hacen es ir en busca de
un programita de estos que nos de esa informacin tan valiosa...

 Bueno, algo as le pas a el amigo de un amigo, pero en la actualidad
hay herramientas tan 'sofisticadas' ante esas 'amenazas', ya cualquier
administrador decente cuenta en su red con un IDS, y si lo ponemos a
punto, pues es una magnifica herramienta para detectar este tipo de a-
taques a nuestros servidores. As que, el punto era que no debemos de
usar los scaneadores de puertos?, no, solo explicar un poco ms a fon-
do algunos mtodos de escaneo ms discretos y que podamos pasar un poco
ms desapercibidos.

 Dividir el txt en dos secciones, en la primera mostrar algunos tipos
de escaneos para ver si un puerto est abierto o no. La segunda parte
tratar un par de opciones para saber si un host existe o no en internet
pero esta vez solo con tcp y no ICMP como estamos acostumbrados.

Nota: supongo que para este punto tienes una leve idea de lo que es el
      tcp/ip, cierto?


 [Extracto de Flags en tcp/ip]

Nota: este pequeo extracto salio del texto escrito por Guybrush para
      RazaMexicana...

<++>
...
- FLAGS : Hay seis banderas de 1 bit:

  1. URG : Se establece en 1 si esta en uso el apuntador urgente.
           El apuntador urgente  sirve para indicar un  desplazamiento en
           bytes a  partir  del numero actual  de secuencia  en el que se
           encuentran datos urgentes. Este recurso sustituye los mensajes
           de interrupcion.

  2. ACK : Se establece en 1 para indicar que el numero de acuse de recibo
           es valido.  Si el ACK es 0, el segmento no contiene un acuse de
           recibo,por lo que se ignora el campo de numero de acuse de recibo.

  3. PSH : Indica datos empujados  (con PUSH).  Por este medio se solicita
           atentamente al receptor entregar los datos a la aplicacion a su
           llegada y no  ponerlos  en el  buffer  hasta la recepcion de un
           buffer completo.

  4. RST : Se usa para restablecer una conexion que se ha confundido debido
           a una caida de host u otra razon; tambien sirve para rechazar un
           segmento no valido o un intento de abrir una conexion.

  5. SYN : Se usa para restablecer conexiones.  La solicitud de conexiones
           tiene SYN = 1  y  ACK = 0 para indicar que el campo de acuse de
           recibo incorporado no esta en uso.  La respuesta de conexion si
           lleva un reconocimiento, por lo que tiene SYN = 1 y ACK = 1.

  6. FIN : Se usa para liberar una conexion;  especifica  que el transmisor
           no tiene mas datos que transmitir.  Sin embargo, tras cerrar una
           conexion, un proceso puede continuar recibiendo datos
           indefinidamente.
...
<-->


---------------
>PRIMERA PARTE.
===============




----------------------
=[Secin TCP tpica]=
----------------------

 Cuando queremos comenzar una conexin comn y corriente deacuerdo al
protocolo se usa de la siguiente manera:

*Nuestro host manda un paquete tcp, con los flags SYN en 1 (o prendido
como quieran llamarle), y el ACK en 0 y esperamos una respuesta.

*Si el puerto al que queremos alcanzar est en LISTEN (escucha) el host
puede aceptar o rechazar la conexin, aqu hay dos caminos:

 A) Acepta: el host nos responde con un paquete con los flags SYN y ACK
            prendidos, nosotros al final mandamos su ACK.
  
 B) Niega: el host nos responde con un paquete con los flags RST y ACK
           prendidos.

 As que como podemos ver, se hace una conexin completa con este medio
por lo que los IDS nos agarran al hacer demasiadas conexiones que duran
tan poco tiempo, e intentar muchas otras.

 Ahora ya sabes un poco como trabaja un scaneador de puertos tradicional
si logra conectar con el puerto, nos lo informa. Pero esto hoy en da es
logueado al 100% y no queremos embarrar nuestra IP en montones de archi-
vos de logs, cierto?

 Ahora pasaremos a ver otras tecnicas de escaneo donde no presisamos co-
menzar una secin tcp tradicional para conocer el estado del puerto, en
estos casos siguiente no se habre una conexin completa, por decirlo de
alguna manera.

NOTA: Para los logs estaremos en una shell linux, usando hping, ya que
      este nos proporciona las estadsticas de envo, cosa que algunas
      herramientas bajo windows no dan, o al menos las que he probado.

 [Log]

 Probaremos toda la teora que veamos en pequeos registros, a continu-
acin el primero de ellos mostrando una secin tcp tpica.
 No veo la necesidad de esconder las IP, ya que la ma es dnamica y es
la primera vez que me saca de los rangos "comunes", as que no hay mucho
problema.

CASO A: El puerto est abierto

   [root@bsdmex crypkey]# hping -S -p 80 200.64.170.73 
   HPING 200.64.170.73 (ppp0 200.64.170.73): S set, 40 headers + 0 data bytes
   len=44 ip=200.64.170.73 flags=SA DF seq=150 ttl=119 id=7017 win=8760 rtt=153.4 ms
   len=44 ip=200.64.170.73 flags=SA DF seq=166 ttl=119 id=7025 win=8760 rtt=177.0 ms
   len=44 ip=200.64.170.73 flags=SA DF seq=217 ttl=119 id=7026 win=8760 rtt=196.7 ms
   len=44 ip=200.64.170.73 flags=SA DF seq=219 ttl=119 id=7030 win=8760 rtt=238.4 ms

* Como podemos ver mi PC responde con las flags Syn y Ack prendidas (flags=SA)
 lo que nos indica el estado de disponibilidad de nuestro puerto.

CASO B: El puerto est cerrado

   [root@bsdmex crypkey]# hping -S -p 80 200.64.170.73 
   HPING 200.64.170.73 (ppp0 200.64.170.73): S set, 40 headers + 0 data bytes
   len=40 ip=200.64.170.73 flags=RA seq=125 ttl=119 id=7007 win=0 rtt=254.8 ms
   len=40 ip=200.64.170.73 flags=RA seq=127 ttl=119 id=7009 win=0 rtt=254.8 ms
   len=40 ip=200.64.170.73 flags=RA seq=130 ttl=119 id=7013 win=0 rtt=254.8 ms
   len=40 ip=200.64.170.73 flags=RA seq=135 ttl=119 id=7015 win=0 rtt=254.8 ms

* Esta vez mi PC responde con los flags Rst y Ack prendidos (flags=RA).

 Ahora que ya tenemos bien fundamentada la teora podemos pasar con ms tecni-
cas.

NoTA: Gracias a crypkey por rolar shell para loguear este apartado.




------------
=[DumbScan]=
------------

 [Historia]

 Aparecio por primera vez segn tengo entendido en un post de BUGTRAQ el
18 de Diciembre de 1998. Se le llam de este modo gracias a que es necesario
contar con un host 'silencioso', al que embarraremos en los logs del host
que queremos scanear (si es que alcanza a logear...).

 Su 'descubridor' por as decirlo fue 'antirez'.

 [Teora]

 Primero que nada necesitamos contar con un host que practicamente no ten-
ga NADA de trafico en internet, hay varios, he visto redes enteras llenas,
de instalaciones de IIS con las opciones por default, y sin pagina de index
esos nos sirven muy bien para los terminos que necesitamos.
 Pensaba escribir los rangos de Ip donde se pueden encontrar pero mejor no
me meto en problemas, o a ti te gustara que un grupo de gente sin vida
social practicamente tome tus servidores de juguete?, verdad que no?

 Bueno, ahora si comenzemos con la teora:

 Nombraremos a los host en este orden:

 A> Ser nuestra maquina
 B> Ser el host que queremos escanear
 c> Ser el host sin trafico, de aqu viene el nombre de 'dumb'

 Nosotros comenzamos midiendo el trafico que genera el host C, con hping se
puede (Originalmente era con la opcin '-r', en la versin < 1, hoy en da
estn por sacar la versin 3...). Al parecer solo se cambio en hping1 ya que
en el MAN de hping2 podemos ver de nuevo:

-r --rel 
Display id increments instead of id. See the HPING2-HOWTO for more information.
Increments aren't computed as id[N]-id[N-1] but using packet loss compensation.
See relid.c for more information. 

 Ya que estamos seguros de que el host C no tiene trafico (mirando en el campo
'id' generalmente se tendr un 1). Ahora procedemos a envar un paquete al host
B con la direccin de origen spoofeada para que paresca que el host C la mand).

 Miramos de nuevo el estado del host C y...

 * Si los campos de 'id' siguen en el nmero constante del pricipio, el puer-
   to en B est cerrado.

 * Si los campos de 'id' estn alterados ligeramente, que el nmero constante
   de 'id' del principio, se haya alterado en algunas unidades, bueno, el chiste
   es que el puerto en B se encuentra abierto, ya que al recibir el SYN B para
   iniciar la conexin le manda un paquete a C con SYN|ACk prendidos, y como
   este no sabe que es lo que pas cierra la conexin con un RST, de ah que
   veamos que C est generando trfico.

 * Nota de revisin, ahora que me fijo bien, esto se podra clasificar como
   scan Half Open :D, lo veremos ms adelante.

 NOTA: Recomiendo usar como host 'dumb' (C) una maquina con windows, porque?
       porque los nmeros id, son ms predecibles (estables) que una maquina
       con linux por ejemplo. Los numeros de secuenciacin suman +1 cada vez.

 [Herramientas]

  - Windows
    Puedes usar el VScan, usando el parametro '-idle'

  - Linux
    Para linux recomiendo usar el Idlescan
 
 [Ejemplo]

  vscan -idle 1.2.3.1 1.2.3.4 -p 21 23 -zombie 11.11.11.11 1337

  * Aqu se escanear:
    - Desde la IP 1.2.3.1 hasta 1.2.3.4 (1.2.3.1, 1.2.3.2, 1.2.3.3, 1.2.3.4)
    - Desde el puerto 21 (ftp) hasta el 23 (telnet) (21, 22, 23)
    - Cabe destacar que el puerto en 11.11.11.11 (1337 te suena?), debe estar
      abierto para hacer las comprobaciones necesarias.




-------------
=[Half Open]=
-------------


 Este tipo de scan es tambin denominado SYN scan, y es muy parecido a
la funcin CONNECT, solo que a ltimo momento decidimos no hacer la co-
nexin, que chingados es eso?, ahora lo explico...

 Nuestro host manda un paquete tcp a el objetivo con la bandera SYN encen-
dida...

 a) Si el puerto est cerrado, el objetivo nos responde con un RST.

 b) SI El Puerto est abierto, el objetivo nos responde con un SYN|ACK e
   inmediatamente debemos responder con un RST, cerrando la conexin.

 La Ventaja pRincipal de este tipo de escaneo es que se reduce potenci-
almente los riesgos de que puedas ser detectado, pero en fn, no es 100%
seguro, ya que hay algunas herramientas que ya lo loguean como son:

 -Synlogger
 -Courtney

 [Pro's]
 - Es un scaneo ms rpido, evita algunas barreras y IDS

 [Contra's]
 - Es necesario tanto en Linux como en windows tener mximos privilegios
  para usar los raw sockets.

 [Log]

 Usaremos el tn afamado Nmap

 [root@localhost root]# nmap -sS -p135 -P0 -vv 200.64.170.182

 Starting nmap V. 2.54BETA31 ( www.insecure.org/nmap/ )
 Host dup-200-64-170-182.prodigy.net.mx (200.64.170.182) appears to be up ... good.
 Initiating SYN Stealth Scan against dup-200-64-170-182.prodigy.net.mx (200.64.170.182)
 The SYN Stealth Scan took 36 seconds to scan 1 ports.
 Interesting ports on dup-200-64-170-182.prodigy.net.mx (200.64.170.182):
 Port       State       Service
 135/tcp    filtered    loc-srv


 Nmap run completed -- 1 IP address (1 host up) scanned in 37 seconds

 NOTA: Cabe aclarar que 200.64.170.182 es una PC con w2k sp4, conexin a
       internet con dial up. (Si, es ma ;), este tipo de scan nos da el
       resultado ms presiso del puerto, ya que, es cierto que tengo el
       puerto 135 filtrado por firewall.

 NOTA2: Si tu PC es de uso personal te recomiendo que desactives los ser-
        vicios de DCOM, ya que por ah ya hay algunos xploits que te dan
        una shell inversa segn v.




--------------
=[Xmass tree]=
--------------


 Este tipo de scan es de los ms nuevos, quis de los ms extraos ya que
se utiliza una combinacin de flags que en condiciones normales no se usa-
ra deacuerdo al protocolo RFC 793.

 Se comienza mandando un paquete tcp con las banderas de FIN, URG y PSH y
se logra saber el estado del puerto si:

 a) Si el puerto est cerrado, el objetivo nos responde con un RST.

    [root@localhost root]# ./hping 64.70.145.95 -FUP -c 4 -p 81
    HPING 64.70.145.95 (eth0 64.70.145.95): 40 data bytes
    60 bytes from 64.70.145.95: flags=RA seq=0 ttl=238 win=0 time=108.1 ms
    60 bytes from 64.70.145.95: flags=RA seq=1 ttl=238 win=0 time=107.9 ms

    --- 64.70.145.95 hping statistic ---
    4 packets tramitted, 2 packets received, 50% packet loss

 b) Si el puerto est abierto, el objetivo no regresa nada.

    [root@localhost root]# ./hping 64.70.145.95 -FUP -c 4 -p 80
    HPING 64.70.145.95 (eth0 64.70.145.95): 40 data bytes

    --- 64.70.145.95 hping statistic ---
    4 packets tramitted, 0 packets received, 100% packet loss

 * En nmap bastara con correrlo as:
   nmap -sX -p(rangode-puerto) IP

 Esta tecnica no funciona en los sistemas de Microsoft, CISCO, IRIX, HP/UX,
y BSDI.




-------------
=[Null Scan]=
-------------


 Este tipo de scan requiere que mandemos un paquete tcp sin ninguna flag en
uso, por eso se le llama 'Null scan' ya que precticamente mandamos un paque-
te vacio, cabe aclarar que en los sistemas Windows no funciona este tipo de
procedimiento. Logramos saber el estado del puerto cuando:

 a) Si el puerto est abierto, el objetivo no responde a el paquete.

   [root@localhost root]# ./hping2 64.70.145.95 -c 4 -p 81
   HPING 64.70.145.95 (eth0 64.70.145.95): 40 data bytes
   60 bytes from 64.70.145.95: flags=RA seq=0 ttl=238 win=0 time=109.5 ms

   --- 64.70.145.95 hping statistic ---
   4 packets tramitted, 1 packets received, 75% packet loss

 b) Si el puerto est cerrado, el objetivo nos responde con un RST.

   [root@localhost root]# ./hping2 64.70.145.95 -c 4 -p 80
   HPING 64.70.145.95 (eth0 64.70.145.95): 40 data bytes

   --- 64.70.145.95 hping statistic ---
   4 packets tramitted, 0 packets received, 100% packet loss

 Esta tecnica no funciona en los sistemas de Microsoft, CISCO, IRIX, HP/UX,
,BSDI y MVS.

 NOTA: para usar esta tecnica hay que modificar el hping.c...

        if (tcp_th_flags == 0)                   /*tcp flags ain't set */
                tcp_th_flags |= TH_FIN;

       si no le dimos ninguna flag en el parametro, nos pone el FIN como
       default, as que solo comentemos la lnea y rulear su hping.

 * En nmap basta con correrlo as:
   nmap -sN -p(rangode-puerto) IP




------------
=[FIN Scan]=
------------


 Este tipo de scan manda un paquete "vacio" completamente a el host, como
prueba.

 Esta tecnica no funciona en los sistemas de Microsoft, CISCO, IRIX, HP/UX,
y BSDI y MVS.

 * En nmap basta con correrlo as:
   nmap -sF -p(rangode-puerto) IP




---------------
>SEGUNDA PARTE.
===============

 Aqu comienzan las opciones al ICMP comn y corriente al que estamos acostum-
brados, ya que muchos administradores estn comenzando a filtrar estos paquetes
reduciendo el trafico innecesario a sus redes, y evitando ciertos tipos de ata-
ques con este protocolo.

 As que es hora de buscar opciones a nuestro clasico ping. Aunque siempre es
ms practico agotar su uso, y ya luego buscar otras opciones :p




------------
=[ACK Scan]=
------------

 El ACK Scan, nos puede servir de dos cosas:

 1) Comprobar la existencia de un firewall.

 En el ACK Scan, mandamos un paquete con la bandera de ACK prendida, cuando el
filtro (la ente que est capturando el trafico), revisa que no hemos comenzado
una secin tpica de tcp (primero va el SYN recuerdalo...), entonces:

 a) Si el servidor nos responde con un RST, el puerto se puede clasificar como
   'no filtrado'.

 b) Si el servidor no nos responde, podemos considerar el puerto como filtrado.

 Es bueno utilizar esta tecnica para saber si nuestro objetivo deja de ser el
host corriente con el que ests acostumbrado a tratar, ya que este cuenta con
un firewall en la mayora de los casos, digo la mayora ya que no solo los fi-
rewall hacen eso).

 2) Comprobar la existencia del host en Internet.

 Igual que en el anterior mandamos el paquete con la flag prendida, entonces:

 a) Si se nos responde con un RST el servidor existe.

 b) Si no se nos responde, o nos llega el mensaje de "host unreachable" entonces
    el servidor no existe.

 * En nmap basta con correrlo as:
   nmap -PT IP




----------------
=[Inverse Scan]=
----------------


 Esta tecnica es parecida al la anterior, solo que en esta se utiliza la flag
RST, y esperamos respuesta, en caso de:

 a) No recibir nada, el host probablemente exista.

 b) Recibimos el mensaje de "ICMP host unreachable", esto quiere decir que el
    host no existe.
 
 Lo especialmente bueno de esta tecnica es que ninguno (de los IDS que yo he
visto) loguean los paquetes RST con la configuracin por default.




-------------
=[Despedida]=
-------------

 Pues como podemos ver hay varias maneras de tratar de ocultar nuestros "actos"
y supongo que no son las nicas tecnicas que hay, solo es cuestin de conocer el
protocolo y adaptarlo a nuestras necesidades.

 Y podemos ver que al final con un simple escaneo, pues se nos pueden pasar por
inadvertidos puertos "sensibles" de nuestra victima, as que, aqu tienen un poco
ms de informacin que pueden utilizar para que su exploracin sea presisa y un
poco ms segura.

 Gracias a todos aquellos que me rolaron una shell para guardar los logs, ya que
los sockets que se necesitan para hacer este tipo de cosas (Raw Sockets) necesitan
mximos privilegios, as que no mucha gente est dispuesta a darme root en su box
as noms: Toloache, Crypkey, ST38410A y Spiderlinux.

Un Saludo a:

- Adriana...

- Mi equipo hakim.ws, hkm, taer y Freetv donde quiera que est.

- Raza Mexicana, gracias a que alguna vez un nio curioso vio cierta ezine de ca-
  sualidad en Inet, le dio por conocer este mundo. Gracias.

- KuKulKan, wireless, dr_fdisk^, vision, zacr, MaRieLvA, Yield, Fatal, Xytras, DeadSector,
  0x90, beck, Daemon, dex, Neuro, rwx-rx, b1n, NaPa, a_d_mIRC, Espeis y de nuevo a
  toloache gracias por todo!...
  (si quieres ver tu nick aqui 
 Esta dirección electrónica esta protegida contra spam bots. Necesita activar JavaScript para visualizarla
  XD)

- G7W (Ro,Bi,Su,Is,Ed,Ch & Da) ja!

 Alguna queja, sujerencia, etc, etc, etc, escribe a: 
 Esta dirección electrónica esta protegida contra spam bots. Necesita activar JavaScript para visualizarla
 

 Nos vemos.




------------------------------
=[Referencias, Links & Stuff]=
------------------------------

- El acrnimo "IDS" viene del ingles Intrusion Detection Systems, traduscamolo como
  sistema de deteccin de intrusiones, sirve para informar y loguear cualquier acti-
  vidad que se le proporcione en el respectivo archivo de configuracin del programa.

- Entiendase por'id', como el campo de ID de la IP en el output de hping.

- Intrusion Detection FAQ
  Version 1.80 - Updated June 12, 2003
  http://www.sans.org/resources/idfaq/

- Texto original acerca del "dumb scan"
  http://www.kyuzz.org/antirez/papers/dumbscan.html

- "The hping Idle Host Scan"
  Erik J. Kamerling
  http://www.giac.org/practical/gsec/Erik_Kamerling_GSEC.pdf

- "Port Scanning without the SYN flag"
  Uriel Maimon
  Phrack #49 articulo 15
  http://www.phrack.org/phrack/49/P49-15

- Idlescan-v0.1
  Linux
  http://www.securityfocus.com/tools/679

- Hping
  Salvatore Sanfilippo <
 Esta dirección electrónica esta protegida contra spam bots. Necesita activar JavaScript para visualizarla
 >
  Linux
  http://packetstormsecurity.nl/UNIX/scanners/hping.c

- Hping2
  Salvatore Sanfilippo <
 Esta dirección electrónica esta protegida contra spam bots. Necesita activar JavaScript para visualizarla
 >
  Linux
  http://www.hping.org

- Hping3
  Salvatore Sanfilippo <
 Esta dirección electrónica esta protegida contra spam bots. Necesita activar JavaScript para visualizarla
 >
  Estado actual de desarrollo de Hping3, que prometen que sea una herramienta un poco
  ms superior a hping2, con una salida ms 'leible', y al parecer se le van a poder
  agregar scripts, esas son algunas de sus caracteristcas finales.
  http://www.kyuzz.org/antirez/hping3.html

- Nmap
  Fyodor <
 Esta dirección electrónica esta protegida contra spam bots. Necesita activar JavaScript para visualizarla
 >
  Linux, Windows, FreeBSD, OpenBSD, Solaris, IRIX, Mac OS X, HP-UX, NetBSD, Sun OS, Amiga.
  http://www.insecure.org/nmap/

- Man del Nmap
  http://www.insecure.org/nmap/data/nmap_manpage-es.html

- Una pequea gua acerca del uso de Nmap
  http://www.plazalinux.com/nmap-intro-guide.php

- VScan
  viv3kr <
 Esta dirección electrónica esta protegida contra spam bots. Necesita activar JavaScript para visualizarla
 >
  Windows 2000 y Windows Xp
  http://www.securityfocus.org/tools/3124 

- Sendtcp.c
  messer <
 Esta dirección electrónica esta protegida contra spam bots. Necesita activar JavaScript para visualizarla
 >
  http://packetstorm.linuxsecurity.com/Win/sendtcp.c

- SynLog
  Thamer AL-Herbish <
 Esta dirección electrónica esta protegida contra spam bots. Necesita activar JavaScript para visualizarla
 >
  http://www.cis.udel.edu/~zhi/www.docshow.net/warcher/synlog-0.4.tar.gz

- Courtney
  University of California
  Requiere Perl v.5, libpcap, y tcpdump.
  ftp://coast.cs.purdue.edu/pub/tools/unix/logutils/courtney/