martes, 26 de mayo de 2009

Nmap (1)

Nmap es una herramienta de exploracion de red y escaner de seguridad.

$ nmap [Tipos(s)de escaneo] [Opciones] <servidor o red>

DESCRIPCION

Nmap ha sido disenado para permitir a administradores de sistemas y gente curiosa en general el escaneo de grandes redes para determinar que servidores se encuentran activos y que servicios ofrecen. nmap es compatible con un gran numero de tecnicas de escaneo como: UDP, TCP connect(), TCP SYN (half open), ftp proxy (bounce attack), Reverseident, ICMP (ping sweep), FIN, ACK sweep, Xmas Tree, SYN sweep, and Null scan. nmap proporciona tambien caracteristicas avanzadas como la deteccion remota del sistema operativo por medio de huellas TCP/IP , escaneo tipo stealth (oculto), retraso dinamico y calculos de retransmision, escaneo paralelo, deteccion de servidores inactivos por medio de pings paralelos, escaneo con senuelos, deteccion de filtrado de puertos, escaneo por fragmentacion y especificacion flexible de destino y puerto.

Se han hecho grandes esfuerzos encaminados a proporcionar un rendimiento decente para usuarios normales (no root). Por desgracia, muchos de los interfaces criticos del kernel (tales como los raw sockets) requieren privilegios de root. Deberia ejecutarse nmap como root siempre que sea posible.

OPCIONES

En general, pueden combinarse aquellas opciones que tengan sentido en conjunto. Algunas de ellas son especificas para ciertos modos de escaneo. nmap trata de detectar y advertir al usuario sobre el uso de combinaciones de opciones sicoticas o no permitidas.

Tambien puede ejecutar el comando $ nmap -h para una pagina de referencia rapida con un listado de todas las opciones.


Tipos de Escaneo

-sT Escaneo TCP connect(): Es la forma mas basica de escaneo TCP. La llamada de sistema connect() proporcionada por nuestro sistema operativo se usa para establecer una conexion con todos los puertos interesantes de la maquina. Si el puerto esta a la escucha, connect() tendra exito, de otro modo, el puerto resulta inalcanzable. Una ventaja importante de esta tecnica es que no resulta necesario tener privilegios especiales. Cualquier usuario en la mayoria de los sistemas UNIX tiene permiso para usar esta llamada.
Este tipo de escaneo resulta facilmente detectable dado que los registros del servidor de destino
muestran un monton de conexiones y mensajes de error para aquellos servicios que accept() (aceptan) la conexion para luego cerrarla inmediatamente.

-sS Escaneo TCP SYN: A menudo se denomina a esta tecnica escaneo "half open" (medio abierto), porque no se abre una conexion TCP completa. Se envia un paquete SYN, como si se fuese a abrir una conexion real y se espera que llegue una respuesta. Un SYN|ACK indica que el puerto esta a la escucha. Un RST es indicativo de que el puerto no esta a la escucha. Si se recibe un SYN|ACK, se envia un RST inmediatamente para cortar la conexion (en realidad es el kernel de nuestro sistema operativo el que hace esto por nosotros). La ventaja principal de esta tecnica de escaneo es que sera registrada por muchos menos servidores que la anterior. Por desgracia se necesitan privilegios de root para construir estos paquetes SYN modificados.

-sF -sX -sN Modos Stealth FIN, Xmas Tree o Nul scan: A veces ni siquiera el escaneo SYN resulta lo suficientemente clandestino. Algunas firewalls y filtros de paquetes vigilan el envio de paquetes SYN a puertos restringidos, y programas disponibles como Synlogger y Courtney detectan este tipo de escaneo. Estos tipos de escaneo avanzado, sin embargo, pueden cruzar estas barreras sin ser detectados.
La idea es que se requiere que los puertos cerrados respondan a nuestro paquete de prueba con un RST, mientras que los puertos abiertos deben ignorar los paquetes en cuestion (vease RFC 794 pp 64). El escaneo FIN utiliza un paquete FIN vacio (sorpresa) como prueba, mientras que el escaneo Xmas tree activa las flags FIN, URG y PUSH. El escaneo NULL desactiva todas las flags. Por desgracia Microsoft (como de costumbre) decidio ignorar el estandar completamente y hacer las cosas a su manera. Debido a esto, este tipo de escaneo no funcionara con sistemas basados en Windows95/NT. En el lado positivo, esta es una buena manera de distinguir entre las dos plataformas. Si el escaneo encuentra puertos cerrados, probablemente se trate de una maquina UNIX, mientras que todos los puertos abiertos es indicativo de Windows. Excepcionalmente, Cisco, BSDI, HP/UX, MVS, y IRIX tambien envian RSTs en vez de desechar el paquete.

-sP Escaneo ping: A veces unicamente se necesita saber que servidores en una red se encuentran activos. Nmap puede hacer esto enviando peticiones de respuesta ICMP a cada direccion IP de la red que se especifica. Aquellos servidores que responden se encuentran activos. Desafortunadamente, algunos sitios web como microsoft.com bloquean este tipo de paquetes. Nmap puede enviar tambien un paquete TCP ack al puerto 80 (por defecto). Si se obtiene por respuesta un RST, esa maquina esta activa. Una tercera tecnica implica el envio de un paquete SYN y la espera de de un RST o un SYN/ACK. Para usuarios no root se usa un metodo connect().
Por defecto (para usuarios no root), nmap usa las tecnicas ICMP y ACK en paralelo. Se puede cambiar la opcion -p descrita mas adelante.
Notese que el envio de pings se realiza por defecto de todas maneras y que solamente se escanean aquellos servidores de los que se obtiene respuesta. Use esta opcion solamente en el caso de que desee un ping sweep (barrido ping) sin hacer ningun tipo de escaneo de puertos.

-sU Escaneo Udp: Este metodo se usa para saber que puertos UDP (Protocolo de Datagrama de Usuario, RFC 768) estan abiertos en un servidor. La tecnica consiste en enviar paquetes UCP de 0 bytes a cada puerto de la maquina objetivo. Si se recibe un mensaje ICMP de puerto no alcanzable, entonces el puerto esta cerrado. De lo contrario, asumimos que esta abierto.
Alguna gente piensa que el escaneo UDP no tiene sentido. Normalmente les recuerdo el reciente agujero Solaris rcpbind. Puede encontrarse a rcpbind escondido en un puerto UDP no documentado en algun lugar por encima del 32770. Por lo tanto, no importa que el 111 este bloqueado por la firewall. Pero, cquien puede decir en cual de los mas de 30000 puertos altos se encuentra a la escucha el programa? iCon un escaner UDP se puede! Tenemos tambien el programa de puerta trasera cDc Back Orifice que se oculta en un puerto UDP configurable en las maquinas Windows, por no mencionar los muchos servicios frecuentemente vulnerables que usan UDP como snmp, tftp, NFS, etc.
Por desgracia, el escaneo UDP resulta a veces tremendamente lento debido a que la mayoria de los servidores implementan una sugerencia recogida en el RFC 1812 (seccion 4.3.2.8) acerca de la limitacion de la frecuencia de mensajes de error ICMP. Por ejemplo, el kernel de Linux (en /ipv4/icmp.h) limita la generacion de mensajes de destino inalcanzable a 80 cada cuatro segundos, con una penalizacion de 1/4 de segundo si se rebasa dicha cantidad.
Solaris tiene unos limites mucho mas estrictos (mas o menos 2 mensajes por segundo) y por lo tanto lleva mas tiempo hacerle un escaneo. nmap detecta este limite de frecuencia y se ralentiza en consecuencia, en vez de desbordar la red con paquetes inutiles que la maquina destino ignorara. Como de costumbre, Microsoft ignoro esta sugerencia del RFC y no parece que haya previsto ningun tipo de limite de frecuencia para las maquinas Windows. Debido a esto resulta posible escanear los 65K puertos de una maquina Windows muy rapidamente.

iWoop! -b <ftp relay host> Ataque de rebote FTP: Una caracteristica "interesante" del protocolo FTP (FRC 959) es la posibilidad de realizar conexiones ftp tipo "proxy". En otras palabras, me resultaria posible conectarme desde malvado.com al servidor ftp de destino.com y pedirle a ese servidor que enviase un archivo a CUALQUIER PARTE de Internet! Aun asi, esto podria haber funcionado bien en 1985 cuando se escribio el RFC, pero en la Internet actual, no podemos permitir que la gente vaya por ahi asaltando servidores ftp y pidiendoles que escupan sus datos a puntos arbitrarios de Internet. Tal y como escribio *Hobbit* en 1985, este defecto del protocolo "puede usarse para enviar mensajes de correo y noticias cuyo rastro sera virtualmente imposible de seguir, machacar servidores en varios sitios web, llenar discos, tratar de saltarse firewalls y , en general, resultar molesto y dificil de detectar al mismo tiempo." Nosotros explotaremos este defecto para (sorpresa, sorpresa) escanear puertos TCP desde un servidor ftp "proxy". De este modo nos podriamos conectar a un servidor ftp tras una firewall, y luego escanear aquellos puertos que con mas probabilidad se encuentren bloqueados (el 139 es uno bueno). Si el servidor ftp permite la lectura y escritura en algun directorio (como por ejemplo /incoming), se pueden enviar datos arbitrarios a puertos que se encuentren abiertos (aunque nmap no realiza esta funcion por si mismo).
El argumento que se pasa a la opcion 'b' es el host que se pretende usar como proxy, en notacion URL estandar. El formato es: nombre_de_usuario:password@servidor:puerto. Todo excepto servidor es opcional. Para determinar que servidores son vulnerables a este ataque, vease mi articulo en Phrack 51. Se encuentra disponible una version actualizada en la URL de nmap (http://www.insecure.org/nmap).

No hay comentarios: