miércoles, 27 de mayo de 2009

Nmap (2)

Opciones Generales

No se requiere ninguna pero algunas de ellas pueden resultar de gran utilidad.


-p0 No intenta hacer ping a un servidor antes de escanearlo. Esto permite el escaneo de redes que no permiten que pasen peticiones (o respuestas)de ecos ICMP a traves de su firewall. microsoft.com es un ejemplo de una red de este tipo, y, por lo tanto, deberia usarse siempre -p0 o -PT80 al escanear microsoft.com.

-PT Usa el ping TCP para determinar que servidores estan activos. En vez de enviar paquetes de peticion de ecos ICMP y esperar una respuesta, se lanzan paquetes TCP ACK a traves de la red de destino (o a una sola maquina) y luego se espera a que lleguen las respuestas. Los servidores activos responden con un RST. Esta opcion mantiene la eficiencia de escanear unicamente aquellos servidores que se encuentran activos y la combina con la posibilidad de escanear redes/servidores que bloquean los paquetes ping. Para los usuarios no root se usa connect(). Para establecer el puerto de destino de los paquetes de prueba use -PT <numero de puerto). El puerto por defecto es el 80, dado que normalmente este puerto no es un puerto filtrado.

-PS Esta opcion usa paquetes SYN (peticion de conexion) en vez de los paquetes ACK para usuarios root. Los servidores activos deberian responder con un RST (o, en raras ocasiones, un SYN|ACK).

-PI Esta opcion usa un paquete ping (peticion de eco ICMP) verdadero. Encuentra servidores que estan activos y tambien busca direcciones de broadcast dirigidas a subredes en una red. Se trata de direcciones IP alcanzables desde el exterior que envian los paquetes IP entrantes a una subred de servidores. Estas direcciones deberian eliminarse, si se encontrase alguna, dado que suponen un riesgo elevado ante numerosos ataques de denegacion de servicio (el mas corriente es Smurf).

-PB Este es el tipo de ping por defecto. Usa los barridos ACK ( -PT ) e ICMP ( -PI ) en paralelo. De este modo se pueden alcanzar firewalls que filtren uno de los dos (pero no ambos).

-O Esta opcion activa la deteccion remota del sistema operativo por medio de la huella TCP/IP. En otras alabras, usa un punado de tecnicas para detectar sutilezas en la pila de red subyacente del sistema operativo de los servidores que se escanean. Usa esta informacion para crear una 'huella' que luego compara con una base de datos de huellas de sistemas operativos conocidas (el archivo nmap-os-fingerprints) para decidir que tipo de sistema se esta escaneando.

-I Esta opcion activa el escaneo TCP de identificacion contraria. Tal y como comenta Dave Goldsmith en un correo Bugtrat de 1996, el protocolo ident (rfc 1413) permite la revelacion del nombre del usuario propietario de cualquier proceso conectado via TCP, incluso aunque ese proceso no haya iniciado la conexion. De este modo se puede, por ejemplo, conectar con el puerto http y luego usar identd para descubrir si el servidor esta ejecutandose como root. Esto solo se puede hacer con una conexion TCP completa con el puerto de destino (o sea, la opcion de escaneo -sT). Cuando se usa -I, se consulta al identd del servidor remoto sobre cada uno de los puertos abiertos encontrados en el sistema. Por supuesto, esto no funcionara si el servidor en cuestion no esta ejecutando identd.

-f Esta opcion hace que el escaneo solicitado de tipo SYN, FIN, XMAS, o NULL use pequenos paquetes IP fragmentados. La idea consiste en dividir la cabecera TCP en varios paquetes para ponerselo mas dificil a los filtros de paquetes, sistemas de deteccion de intrusion y otras inconveniencias por el estilo que tratan de saber lo uno esta haciendo. iTenga cuidado con esto! Algunos programas tienen problemas a la hora de manejar estos paquetes tan pequenos. Mi sniffer favorito produjo un error de segmentacion inmediatamente despues de recibir el primer fragmento de 36 bytes. ¡Despues de este viene uno de 24 bytes! Mientras que este metodo no podra con filtros de paquetes y firewalls que ponen en cola todos los fragmentos IP (como en el caso de la opcion CONFIG_IP_ALWAYS_DEFRAG en la configuracion del kernel de Linux), tambien es verdad que algunas redes no pueden permitirse el efecto negativo que esta opcion causa sobre su rendimiento y por lo tanto la dejan desactivada.
Notese que no he coseguido que esta opcion funcione con todos los sistemas. Funciona bien con mis sistemas Linux, FreeBSD y OpenBSD y algunas personas han informado de exitos con otras variantes *NIX.

-v Modo de informacion ampliada. Esta opcion resulta muy recomendable y proporciona gran cantidad de informacion sobre lo que esta sucediendo. Puede usarla dos veces para un efecto mayor. iUse -d un par veces si lo que quiere es volverse loco haciendo scroll en su pantalla!

-h Esta opcion tan practica muestra una pantalla de referencia rapida sobre las opciones de uso de nmap. Quizas haya notado que esta pagina de manual no es precisamente una "referencia rapida" :)

-o <nombre_de_archivo_de_registro>
Esta opcion guarda los resultados de sus escaneos en forma humanamente inteligible en el archivo especificado como argumento.

-m <nombre_de_archivo_de_registro>
Esta opcion guarda los resultados de sus escaneos en un formato comprensible para una maquina en el archivo especificado como argumento.

-i <nombre_de_archivo_de_entrada>
Lee especificaciones de servidores o redes de destino a partir del archivo especificado en vez de hacerlo de la linea de comandos. El archivo debe contener una lista de expresiones de servidores o redes separadas por espacios, tabuladores o nuevas lineas. Use un guion (-) como nombre_ de_archivo_de_entrada si desea que nmap tome las expresiones de servidores de stdin. Vease la seccion Especificacion de Objetivo para mas informacion sobre expresiones con las que poder completar este archivo.

-p <rango de puertos>
Esta opcion determina los puertos que se quieren especificar. Por ejemplo, '-p 23' probara solo el puerto 23 del servidor(es) objetivo. '-p 20-30,139,60000-' escanea los puertos del 20 al 30, el puerto 139 y todos los puertos por encima de 60000. Por defecto se escanean todos los puertos entre el 1 y el 1024 asi como los que figuran en el archivo /etc/services.

-F Modo de escaneo rapido.
Implica que solo se desean escanear aquellos puertos que figuran en /etc/services. Obviamente esto resulta mucho mas rapido que escanear cada uno de los 65535 puertos de un servidor.

-D <senuelo1 [,senuelo2][,ME],...>
Especifica que se desea efectuar un escaneo con senuelos, el cual hace que el servidor escaneado piense que la red destino del escaneo esta siendo escaneada tambien por el servidor(es) especificados como senuelos. Asi, sus IDs pueden informar de entre 5 y 10 escaneos procedentes de direcciones IP unicas, pero no sabran que direccion IP les estaba escaneando realmente y cuales eran senuelos inocentes.
Separe cada servidor senuelo con comas, y puede usar opcionalmente 'ME' como senuelo que representa la posicion que quiere que ocupe su direccion IP. Si coloca 'ME' en la sexta posicion o superior, es muy poco probable que algunos escaneres de puertos comunes (como el excelente scanlogd de Solar Designer) lleguen incluso a mostrar su direccion IP. Si no se usa 'ME', nmap le colocara a usted en una posicion aleatoria. Notese que aquellos servidores usados como senuelos
deben escontrarse activos, o, de lo contrar o podria provocar un desbordamiento (flood) SYN en su objetivo. Por otra parte, resultara bastante facil saber que servidor esta escaneando si unicamente hay uno activo en la red.
Notese tambien que algunos (estupidos) "detectores de escaneres de puertos" opondran una firewall o bien denegaran el rutaje a aquellos servidores que intenten escanear sus puertos. De este modo se podria provocar inadvertidamente que la maquina que se esta intentando escanear perdiese contacto con los servidores usados como senuelos. Esto podria causarles a los servidores escaneados verdaderos problemas si los servidores senuelo fuesen, por ejemplo, su gateway a internet o incluso "localhost".
Deberia usarse esta opcion con extremo cuidado. La verdadera moraleja de este asunto es que un detector de escaneos de puertos que aparenten tener intenciones poco amistosas no deberia llevar a cabo accion alguna contra la maquina que aparentemente le esta escaneando. iPodria no ser mas que un senuelo! Los senuelos se usan tanto en el escaneo ping inicial (usando ICMP, SYN, ACK, o lo que sea) como en la fase de escaneo de puertos propiamente dicha. Tambien se usan los senuelos en la fase de deteccion remota del sistema operativo ( -O ).
Vale la pena destacar que el uso de demasiados senuelos puede ralentizar el proceso de escaneo y, potencialmente, hacer que sea menos exacto. Por otra parte, algunos ISPs filtraran los paquetes manipulados y los desecharan, aunque muchos (actualmente la mayoria) no ponen restricciones a este tipo de paquetes.

-S <Direccion_IP>
En determinadas circunstancias, es posible que nmap no sea capaz de determinar su (de usted) direccion IP de origen ( nmap se lo hara saber si este es el caso). En este caso, use -S con su direccion IP (del interfaz a traves del cual desea enviar los paquetes).
Otro posible uso de esta opcion es el de manipular el escaneo para hacer creer a los servidores de
destino que alguien mas les esta escaneando.
¡Imaginese a una compania escaneada repetidamente por una compania rival! Esta no es la funcion para la que se ha disenado esta opcion (ni su proposito principal). Simplemente pienso que revela una posibilidad que la gente deberia tener en cuenta antes de acusar a los demas de escanear sus puertos. La opcion -e sera necesaria en general para este tipo de uso.

-e <interfaz>
Le dice a nmap que interfaz ha de usar para enviar y recibir paquetes. El programa deberia detectar esto por si mismo, pero le informara si no es asi.

-g <numero_de_puerto>
Establece el numero de puerto de origen a usar en los escaneos. Muchas instalaciones de firewalls y filtros de paquetes inocentes hacen una excepcion en sus reglas para permitir que las atraviesen y establezcan una conexion paquetes DNS (53) o FTPDATA (20). Evidentemente esto contraviene completamente las ventajas en materia de seguridad que comporta una firewall dado que los intrusos pueden enmascararse como DNS o FTP con una simple modificacion de su puerto de origen. Por supuesto, deberia probarse primero con el puerto 53 para un escaneo UDP y los escaneos TCP deberian probar el 20 antes del 53.
Notese que el uso de esta opcion penaliza levemente el rendimiento del escaneo, porque a veces se almacena informacion util en el numero de puerto de origen.

-M <max sockets>
Establece el numero maximo de sockets que se usaran en paralelo para un escaneo TCP connect() (escaneo por defecto). Resulta util a la hora de ralentizar ligeramente el proceso de escaneo con el fin de evitar que la maquina de destino se cuelgue. Otra manera de hacerlo es usar -sS, que normalmente les resulta mas facil de asumir a las maquinas de destino. Especificacion de Objetivo Cualquier cosa que no es una opcion (o el argumento de una opcion) en namp se trata como una especificacion de servidor de destino. El caso mas simple consiste en especificar servidores aislados o direcciones IP en la linea de comandos. Si pretende escanear una subred de direcciones IP, entonces se puede anadir '/mask' a la direccion IP o al nombre del servidor. mask debe estar entre 0 (escanea toda Internet) y 32 (escanea unicamente el servidor especificado). Use /24 para escanear una direccion de clase 'C' y /16 para la clase 'B'. Nmap dispone tambien de una notacion mucho mas potente que permite la especificacion de direcciones IP usando listas/rangos para cada elemento.
De este modo, se puede escanear la red de clase 'B' completa 128.210.*.* especificando '128.210.*.*' o '128.210.0-255.0-255' o incluso notacion de mascara: '128.210.0.0/16'. Todas ellas son equivalentes. Si se usan asteriscos ('*'), ha de tenerse en cuenta que la mayoria de los shells requieren que se salga de ellos con caracteres / o que se les proteja con comillas.
Otra posibilidad interesante consiste en dividir Internet en el otro sentido. En vez de escanear todos los servidores en una clase 'B', se puede escanear '*.*.5.6-7' para escanear todas las direcciones IP terminadas en .5.6 o .5.7 Escoja sus propios numeros.

No hay comentarios: