MONOGRÁFICO: Zenmap |
SOFTWARE - General | ||||||||||
Escrito por Elvira Mifsud | ||||||||||
Xoves, 14 Xuño 2012 00:00 | ||||||||||
There are no translations available. La exploración de puertos suele ser utilizada bajo dos puntos de vista diferentes: Como forma de conocer el nivel de seguridad de la configuración de los servicios que se ofrecen. Y... Como una de las primeras etapas que un posible atacante lleva a cabo, dentro del plan de ataque, para investigar o enumerar qué servicios tiene la víctima activados. Existen muchas herramientas para hacer exploración de puertos, pero nosotros utilizaremos las más conocidas en entornos académicos: nmap para la línea de orden y Zenmap en entorno gráfico. Comenzamos con nmap para conocer las diferentes opciones y así poder luego interpretar los comandos generados por Zenmap al hacer la selección de acciones que ofrece la herramienta. Por otro lado, también es posible que en un entorno de administración se disponga únicamente de consola, en cuyo caso es indispensable conocer bien los parámetros utilizados. NmapIntroducciónNmap, cuyo nombre significa mapeador de redes, es software libre y puede redistribuirse y/o modificarse bajo los términos de la Licencia Publica General GNU. La web oficial es http://nmap.org de la que puede bajarse la herramienta. En concreto Ubuntu la incluye en su Centro de Software y en la web hay también versión disponible para Windows y otros sistemas operativos. La versión actual es la 5.6. En http://nmap.org/man/es/ existe un manual oficial que detalla su funcionamiento. Nmap ha sido diseñada para permitir a administradores de sistemas y a usuarios curiosos en general, explorar y realizar auditorías de seguridad de redes para determinar qué servidores se encuentran activos y qué servicios ofrecen. Su funcionamiento se basa en el envío de paquetes IP en formato raw (crudo), es decir paquetes que no han sufrido ningún tipo de modificación, y por lo tanto son originales sea cual sea el protocolo utilizado. ¿Qué permite nmap?
Es compatible con un gran numero de técnicas de escaneo como: UDP, TCP connect(), TCP SYN (half open), ICMP (ping sweep), FIN, ACK sweep, Xmas Tree y Null scan. De todas estás técnicas comentaremos aquellas de las cuales se incluyan ejemplos concretos de uso. La salida que genera nmap es un listado de hosts/redes analizadas, con información específica para cada uno ellos dependiendo de las opciones utilizadas. De ellas la mas importante es la tabla que muestra el número de puertos, el nombre del servicio asociado y su estado. El estado puede ser:
La tabla de puertos también puede informar sobre la versión de la aplicación si se le pide. Y mucha mas información que dependerá de las opciones utilizadas. Además de la tabla de puertos con nmap, se puede obtener información sobre los hosts/redes como son el nombre de DNS según la resolución inversa de la IP, un listado de sistemas operativos posibles, tipos de dispositivo y direcciones MAC. A lo largo de la explicación de los ejemplos de uso se hace referencia a conceptos relacionados con la seguridad. Algunos de ellos se describen a continuación:
Sintaxis de la herramienta En general para obtener ayuda ejecutar:
La red que se utilizará para algunos de los ejemplos será 192.168.0.0/24. En otros se utilizarán IPs de dominios públicos. Tipos de exploración soportadosEjecución simpleEjecutamos nmap sobre una IP para conocer los puertos activos.
Si queremos conocer qué tipo de sistema operativo se está ejecutando en el host explorado añadimos la opción -O. Observar que la orden se ejecuta como root, o también con privilegios (sudo).
Toda esta salida es la huella TCP/IP (TCP/IP fingerprint) que tiene cada Sistema Operativo en particular. Y, como se puede observar, nmap muestra esta información porque no consigue identificar con exactitud qué Sistema Operativo se está ejecutando en el host explorado. Identificar hosts activos en la red: Ping scanSi se quiere conocer los hosts activos en la red, 192.168.0.0/24 utilizamos un Ping Scan. En realidad lo que se envía son peticiones de respuesta ICMP a cada una de las IPs dadas. Si un host contesta significa que está activo. Puede ocurrir que el host destino sea un servidor que tenga bloqueada la recepción de paquetes ICMP, en cuyo caso no es posible explorarlo. Es decir, nmap sólo explora aquellos servidores de los que obtiene respuesta. Ejemplo:
Sondeo básico TCP/UDPLas opciones a utilizar son: -sT / -sU escaneo TCP/UDP connect() Utiliza la llamada de sistema connect() (disponible para cualquier usuario sin privilegios) para establecer una conexión con todos los puertos posibles de la máquina. Si el puerto está a la escucha, connect() tendrá éxito. Sino, el puerto es inalcanzable. Es una exploración muy fácil de detectar ya que proporciona mucha información de la conexión, incluidos mensaje de error. Ejemplos:
NOTA: Observar que en algunas órdenes se ejecuta nmap como usuario y en otras se incluye sudo para obtener privilegios. Esto es así porque no todas las opciones de exploración están permitidas a los usuarios. Realizar Stealth Scans (escaneos sigilosos)Si se quiere no ser detectado por software de detección de sondeos con nmap se envían paquetes a los hosts con ciertos 'flags' TCP activados o desactivados para evitarlo. El uso mas típico es el stealth Xmas Tree Scan (-sX). Es muy útil para conocer que hosts se encuentran activos sin que seamos detectados. Ejemplo: un stealth scan del tipo Xmas Tree, y además queremos conocer qué sistema operativo se está ejecutando en el host destino:
Sondeo TCP SYNTambién se llama 'half open' porque no abre una conexión TCP completa. El procedimiento consiste en abrir una conexión real enviando un paquete SYN y se espera a que llegue una respuesta ACK (puerto escuchando) para enseguida enviar un RST y cortar la conexión. Se llama sondeo silencioso. De esta forma hay menos probabilidades de que este sondeo se haya registrado en las máquinas destino y se necesitan privilegios de root para hacerlo.
Guardar los resultados de la exploraciónPodemos guardar los resultados de una exploración en archivos con varios formatos como txt, XML, etc. Para ello utilizamos la opción -oN indicando a continuación el nombre del archivo. En el ejemplo anterior, podemos hacer el stealth scan del tipo Xmas Tree, intentar conocer el sistema operativo y ahora guardamos los resultados en el archivo resultado.txt:
Comprobamos que se genera un archivo con el mismo contenido mostrado en pantalla. Si lo que queremos es que no salga nada por pantalla, simplemente redirigimos la salida de la orden al archivo: #nmap -sX -O 192.168.0.102 > resultado.txt Ejemplos de utilización de nmapSondeo silencioso a toda una red con detección del sistema operativo
Ejecuta una exploración SYN oculto (-sS) contra cada una de las máquinas activas de las 255 maquinas de la red de clase 'C' 192.168.0.0. Intenta determinar el sistema operativo (-O) usado en cada una de las máquinas activas. Sondeo Xmas Tree al host 74.125.230.216 con detección de ciertos puertos y enmascarando el origen de la exploración
Ejecuta una exploración Xmas Tree (-sX) al host 74.125.230.216 de los puertos 25 (SMTP) y 53 (DNS) sin enviar pings (-P0) y enmascarando el origen de la exploración (-D) detrás de las IPs 1.2.3.4 y 5.6.7.8. La opción -D intenta engañar al host explorado haciéndole creer que los sondeos se están haciendo desde otros hosts que se indican por su IP detrás de -D. La opción -P0 evita que nmap envíe mensajes ICMP (pings) para comprobar si la maquina está activa. Sondeo TCP al puerto 80 de la máquina local , sin envío de pings y que muestre mucha información
Como vemos la exploración vuelca mas información del proceso. Listar servidores con un puerto especifico abierto
Entorno de pruebasNmap pone a disposición de los usuarios un dominio de pruebas llamado scanme.nmap.org. Pero sólo para explorar con nmap, no para hacer otro tipo de pruebas como ataques de denegación de servicio o pruebas con exploits. Hay que tener en cuenta en este caso que, si se lanzan múltiples exploraciones simultáneamente, se puede colapsar el servidor y nmap nos dirá que 'Failed to resolve given hostname/IP: scanme.nmap.org'.
Esta opción sondea todos los puertos TCP reservados en el servidor scanme.nmap.org.
ZenmapZenmap es la interfaz gráfica oficial de nmap, válida tanto para Windows como para Ubuntu y otros sistemas (MAC OS, BSD,...), es gratuita y de código abierto. Proporciona la ventaja de ser mas intuitiva para los usuarios que no conocen nmap y sus posibilidades y por otro lado, proporciona mas opciones de ejecución a los usuarios mas avanzados. Zenmap permite la creación de perfiles de ejecución y de esa forma hacer mas sencilla la repetición de órdenes. También permite guardar los informes obtenidos de la exploración en una base de datos. Nmap (y Zenmap) permite trabajar con scripts (pestaña Scripting) que amplían la funcionalidad de nmap más allá de la exploración. Con estos scripts nmap puede hacer, incluso, análisis de vulnerabilidades. Pero hay que recordar que no es esta la finalidad de nmap. Esta funcionalidad está disponible tanto en GNU/Linux (/usr/share/nmap/scripts) como en Windows (Archivos de Programa\Nmap\scripts). Los scripts están clasificados por categorías: safe, intrusive, malware, discovery, vuln, auth, external, default, y all.La extensión es .nse. El script whois, por ejemplo, permite hacer una consulta a las bases de datos whois para obtener información acerca de una organización, país de origen, nombre de red, etc de los hosts explorados. InstalaciónZenmap está disponible en el repositorio de Ubuntu y la podemos instalar directamente desde Synaptic o desde el Centro de Software de Ubuntu (según versiones de Ubuntu). Una vez instalada está disponible en Aplicaciones > Internet o en el Centro de Software de Ubuntu (Ubuntu 12.04) La ejecución conviene hacerla con privilegios de administrador. En cuyo caso lanzamos la aplicación desde una terminal de la forma:
Utilización de ZenmapEn la interfaz gráfica destacamos las zonas siguientes:
La interfaz de Zenmap tiene el siguiente aspecto: Vemos que la parte inferior está dividida en dos zonas. La zona de la izquierda tiene las pestañas Hosts y Services que muestran los hosts escaneados y los servicios detectados para cada uno de ellos, respectivamente. La zona de la derecha muestra la salida generada por la orden nmap e información relacionada con la exploración realizada agrupada en diferentes pestañas (Nmap Output, Ports/Hosts, Topology, Host Details y Scans). Como ejemplos de utilización podemos reproducir los ejemplos anteriores de la línea de orden. Ejemplo 1. Ejecución simpleSe trata de explorar una IP con el perfil 'Regular scan'. La salida mostrada es: Si en una exploración sencilla queremos detectar siempre el sistema operativo podemos editar el perfil 'Regular scan' (Profile > Edit Selected Profile) y seleccionar la opción que detecta el sistema operativo.Guardamos y a partir de este momento cualquier exploración regular intentará detectar el sistema operativo. Ejemplo 2. Identificar hosts activos en la red:Ping scanUtilizamos el perfil Ping Scan y en la línea de orden comprobamos que escribe:
Si comparamos la orden con la del ejemplo en linea de orden vemos que el perfil estándar Ping Scan añade las opciones -PE y -PA. -PE indica que se hace envío de paquetes ICMP Ping. El protocolo ICMP se utiliza para manejar mensajes de error y de control de la red, e informa al host origen para que evite o corrija algún problema detectado. -PA indica que se hace envío de paquetes ACK Ping a los puertos 21, 23, 80, 3389 por defecto. El paquete ACK indica reconocimiento afirmativo por parte del destino de la conexión. La salida generada con Zenmap en este ejemplo es la siguiente: Ejemplo 3. Sondeo básico TCP/UDPEn este caso seleccionamos el perfil Quick Scan y añadimos la IP a explorar. Editamos el perfil y comprobamos que no está activada la opción -sT (TCP connect scan).La activamos y guardamos los cambios. La salida mostrada es: Donde T4 indica que la exploración es agresiva y -F (pestaña Target) indica que es una exploración rápida. Podemos eliminar estas opciones que Zenmap añade por defecto. Ejemplo 4. Realizar Stealth Scans (escaneos sigilosos)Podemos realizar una exploración no asociada a un perfil. En este caso hay que escribir la orden completa que se quiere ejecutar. En nuestro caso será:
La orden realiza un stealth scan del tipo Xmas Tree, y además intenta conocer el sistema operativo se está ejecutando en el host destino. La salida generada desde Zenmap es: Ejemplo 5. Sondeo TCP SYNEn este caso tampoco hay un perfil adecuado a esta exploración. Escribimos directamente la orden:
La salida generada es la siguiente: Ejemplo 6. Creación del perfil_1 personalizadoVamos a crear un perfil personalizado que llamaremos perfil_1 y que haga lo siguiente:
Para ello entramos en el editor de perfiles (Perfil > Editor de perfiles) y en la ventana que muestra introducimos los parámetros. Asignamos un nombre al nuevo perfil y escribimos una pequeña descripción. Pasamos a la pestaña Scan: Introducimos y/o activamos las opciones de exploración pedidas y pasamos a la pestaña Scripting donde seleccionamos el argumento whodb=nofile: Pasamos a pestaña Target donde podríamos excluir determinadas IP en la exploración e indicamos el rango de puertos. Observar que también se da opción a preparar un archivo con una lista de IPs (una por línea) a explorar. En este caso habrá que indicar el path absoluto del archivo y deberá ser un .txt. Ya introducidos todos los requerimientos guardamos el perfil 'perfil_1' que ya aparecerá en la lista desplegable de perfiles (Profile) y que seleccionaremos para hacer la exploración con él (Scan). La siguiente captura muestra el resultado de la exploración. Observar que al ser dos IPs exploradas en la zona de hosts aparecen dos entradas que podremos seleccionar para disponer de información específica de cada exploración. Podemos obtener información gráfica sobre la topología de la exploración realizada bajo diferentes aspectos: Así como detalles de cada uno de los hosts explorados: Por último decir que la orden nmap generada por Zenmap y que hubiera dado idénticos resultados si se ejecutara en línea de orden, es la siguiente:
ConclusiónTanto nmap como su interfaz gráfica Zenmap son herramientas muy útiles para los administradores de sistemas. Permiten hacer, de forma rápida, intuitiva y sencilla, una auditoría del sistema en el ámbito de su competencia, que es la exploración de puertos. Y no hace falta ser responsable de un gran sistema para verle la utilidad a nmap. Cualquiera de nosotros, al fin y al cabo, somos administradores de nuestro propio sistema y debemos vigilar la integridad, disponibilidad y confidencialidad de nuestros datos. En definitiva, la seguridad. |