Red de conocimiento informático - Conocimiento sistemático - Herramienta de detección de vulnerabilidad de versión

Herramienta de detección de vulnerabilidad de versión

Nmap es una herramienta muy útil para el escaneo de redes y la detección de hosts. Nmap no se limita solo a recopilar información y enumeraciones, sino que también puede usarse como detector de vulnerabilidades o escáner de seguridad. Se puede aplicar a winodws, linux, mac y otros sistemas operativos

Nmap es una herramienta de utilidad muy poderosa que se puede utilizar para: detectar hosts que viven en la red (descubrimiento de host) detectar puertos abiertos en el host (Descubrimiento o enumeración de puertos) Detección de software y versión del puerto correspondiente (Descubrimiento de servicios) Detección de sistema operativo, dirección de hardware y versión de software Detección de vulnerabilidades (script Nmap) Nmap es una herramienta muy común y tiene interfaz de línea de comandos y gráfica interfaz de usuario. Incluyo el siguiente contenido: Introducción a parámetros importantes en los escaneos de Nmap Detección del sistema operativo Tutorial de uso de Nmap Nmap utiliza diferentes tecnologías para realizar escaneos, que incluyen: escaneo TCP connect(), escaneo de identificación inversa TCP, escaneo de rebote FTP, etc. Todos estos tipos de escaneo tienen sus propias ventajas y desventajas, que discutiremos a continuación. El uso de Nmap depende del host de destino, ya que existe una diferencia entre un escaneo simple (básico) y un escaneo previo. Necesitamos utilizar algunas técnicas avanzadas para evitar firewalls y sistemas de detección/prevención de intrusiones para obtener resultados correctos. A continuación se muestran algunos comandos básicos y ejemplos de su uso: Para escanear un único host, el comando es el siguiente:

El código es el siguiente:

#nmap nxadmin.com#nmap 192.168.1.2

Escanea toda la subred, el comando es el siguiente:

El código es el siguiente:

#nmap 192.168.1.1/24

Escanee múltiples objetivos. El comando es el siguiente:

El código es el siguiente:

#nmap 192.168.1.2 192.168.1.5

Escanee objetivos dentro de un rango de la siguiente manera:

El código es el siguiente:

#nmap 192.168.1.1-100 (escanee todos los hosts con direcciones IP 192.168.1.1-192.168.1.100)

Si tiene una lista de direcciones IP, guárdela como un archivo txt en el mismo directorio que namp. Escanee todos los hosts en este txt. El código es el siguiente:

#nmap -iL target.txt

Si desea ver una lista de todos los hosts que analizó, utilice el siguiente comando:

El código es el siguiente:

#nmap -sL 192.168.1.1/24

Escanear todos los hosts de subred excepto una determinada IP, comando:

El código es el siguiente:

#nmap192.168.1.1/24-exclude192.168.1.1

Escanee el comando del host de subred excepto la IP en un archivo determinado

El código es el siguiente:

#nmap192.168.1.1/24 -excludefilexxx.txt (Los archivos en xxx.txt se excluirán del host escaneado)

Escanear puertos 80, 21 y 23 en un host específico, el comando es el siguiente

El código es el siguiente:

#nmap-p80, 21, 23192.168.1.1

De lo anterior hemos comprendido los conocimientos básicos de Nmap, analicemos en profundidad la tecnología de escaneo de Nmap

Tcp SYN Scan (sS) Este es un método de escaneo básico. Se llama semiabierto. escanear porque esta tecnología permite a Nmap obtener información sobre el host remoto sin realizar un protocolo de enlace completo.

Nmap envía un paquete SYN al host remoto, pero no genera ninguna sesión. Por lo tanto, no se genera ningún registro en el host de destino porque no se forma ninguna sesión. Esta es la ventaja del escaneo SYN. ​​Si el tipo de escaneo no se especifica en el comando Nmap, el valor predeterminado es Tcp SYN, pero requiere permisos de root/administrador.

El código es el siguiente:

#nmap - sS 192.168.1.1

Tcp connect() scan(sT) Si no se selecciona el escaneo SYN, el escaneo TCP connect() es el modo de escaneo predeterminado. Diferente de Tcp SYN. escaneo, el escaneo Tcp connect() debe completarse tres veces y requiere llamar a la tecnología de escaneo connect() del sistema solo es adecuada para encontrar puertos TCP y UDP.

El código es. de la siguiente manera:

#nmap -sT 192.168.1.1

Escaneo Udp (sU) Como sugiere el nombre, esta tecnología de escaneo se utiliza para encontrar el puerto UDP abierto por el host de destino. No es necesario enviar ningún paquete SYN porque esta tecnología está dirigida a puertos UDP. El escaneo UDP envía paquetes UDP al host de destino y espera una respuesta. Si se devuelve un mensaje de error ICMP inalcanzable, el puerto se cierra. Si se recibe una respuesta correcta y adecuada, el puerto está abierto.

El código es el siguiente:

#nmap -sU 192.168.1.1

FINscan(sF)

A veces el escaneo TcpSYN no es el mejor modo de escaneo debido a la El firewall existe. El host de destino a veces puede tener sistemas IDS e IPS, y el firewall bloqueará el paquete SYN.

Enviar un paquete con el indicador FIN configurado no requiere completar el protocolo de enlace TCP.

El código es el siguiente:

lt;a href="mailto:root@bt:~# nmap- sF192.168.1.8"gt;root@bt:~#nmap-sF192.168.1.8lt;/agt;lt;/pgt;lt;pgt;Iniciando Nmap5.51at2012-07-0819:21PKTNmapscanreportfor192.168.1.8Hostisup( 0.000026slatency ).Notshown: 999closedportsPORTSTATESERVICE111/tcpopen|filteredrpcbind

El escaneo FIN no creará registros en el host de destino (una de las ventajas del escaneo FIN es diferente, el escaneo FIN envía el paquete). solo contiene el identificador FIN, el escaneo NULL no envía ningún byte en el paquete y el escaneo XMAS envía el paquete con el identificador FIN, PSH y URG.

PINGScan(sP)

El escaneo PING es diferente de otros métodos de escaneo porque solo se usa para averiguar si el host existe en la red. No se usa para saber si el puerto está abierto si el usuario no lo necesita. tiene permiso ROOT, se realizará el escaneo PING. Se utilizará la llamada connect().

El código es el siguiente:

#nmap-sP192.168.1.1

Detección de versión (sV)

La detección de versión se utiliza para escanear la versión del software que se ejecuta en el host y el puerto de destino. Se diferencia de otras tecnologías de escaneo en que no se utiliza para escanear los puertos abiertos. en el host de destino, pero necesita obtener información de los puertos abiertos para determinar la versión del software. Antes de usar el escaneo de detección de versiones, debe usar TCPSYN para escanear qué puertos están abiertos.

El código es el siguiente. siguiente:

#nmap-sV192.168.1.1

Idlescan(sL)

Idlescan es una tecnología de escaneo avanzada que no utiliza su IP de host real. para enviar paquetes de datos, pero utiliza otro host en la red de destino para enviar paquetes de datos.

El código es el siguiente:

#nmap-sL192.168.1.6192.168.1.1

Idlescan es una tecnología de escaneo anónimo ideal que envía 192.168 al host a través de 192.168.1.6 en la red de destino. 1.1 Envía datos para obtener el puerto abierto de 192.168.1.1

Otras tecnologías de escaneo. son necesarios, como FTPbounce (rebote de FTP), fragmentationscan (escaneo de fragmentación), IPprotocolscan (escaneo de protocolo IP), como se mencionó anteriormente. Son los métodos de escaneo más importantes.

Detección del sistema operativo de Nmap (O)

Una de las características más importantes de Nmap es su capacidad para detectar sistemas operativos y software de forma remota. La técnica de detección de sistema operativo de Nmap es muy útil en pruebas de penetración para comprender el sistema operativo y el software del host remoto a través de la información. obtenido, se pueden conocer las vulnerabilidades conocidas. Nmap cuenta con una base de datos llamada nmap-OS-DB, que contiene información de más de 2600 sistemas operativos. Nmap envía paquetes TCP y UDP a la máquina de destino y luego compara los resultados con la base de datos.

El código es el siguiente:

IniciandoSYNStealthScanat10:21Scanninglocalhost(127.0.0.1)[1000ports]Descubridoopenport111/tcpon127.0.0.1CompletedSYNStealthScanat10:21,0.08selapsed(1000totalports)IniciandoOSdetection(try# 1) Againstlocalhost (127.0.0.1) Reintentar la detección del sistema operativo (intento #2) Againstlocalhost(127.0.0.1)

El ejemplo anterior muestra claramente que Nmap primero descubre el puerto abierto y luego envía el paquete para descubrir el sistema operativo remoto. . El parámetro de detección del sistema operativo es O (O mayúscula)

Tecnología de huellas digitales del sistema operativo de Nmap:

Tipo de dispositivo (enrutador, grupo de trabajo, etc.) sistema operativo en ejecución (sistema operativo en ejecución) Detalles (nombre y versión del sistema operativo) Distancia de red (distancia de salto entre el objetivo y el atacante)

Si el host remoto tiene un firewall, un sistema IDS e IPS, puede usar el comando -PN para asegurarse de que no haga ping al control remoto. host, porque a veces los firewalls bloquearán las solicitudes de ping. El comando -PN le dice a Nmapping que no haga ping al host remoto.

El código es el siguiente:

#nmap-O-PN192.168.1.1/24

El comando anterior le dice al host emisor que el host remoto está activo en la red, por lo que no es necesario enviar una solicitud de ping. El uso del parámetro -PN puede omitir el comando PING, pero no afecta el descubrimiento del sistema host.

La base de La detección del sistema operativo de Nmap es que hay puertos abiertos y cerrados. Si OSscan no puede detectar al menos un puerto abierto o cerrado, devolverá el siguiente error:

El código es el siguiente:

Advertencia: los resultados de OSScan pueden no ser confiables porque no pudimos encontrar al menos 1 puerto abierto y 1 cerrado

Los resultados de OSScan no son confiables, porque no se encontró al menos un puerto abierto o cerrado

Esta situación es muy insatisfactoria. Debería ser que el host remoto haya tomado precauciones. contra la detección del sistema operativo. Si Nmap no puede detectar el tipo de sistema operativo remoto, entonces no es necesario utilizar la detección -osscan_limit.

Es difícil detectar con precisión el sistema operativo remoto a través de Nmap. Debe utilizar la opción de función de adivinación de Nmap: osscan-guess adivina el tipo de sistema operativo coincidente más cercano al objetivo.

El código es el siguiente:

#nmap-O--osscan-guess192.168.1.1

La siguiente es una descripción del tipo de escaneo

- Escaneo sTTCPconnect(): Este es el método de escaneo TCP más básico. connect() es una llamada al sistema proporcionada por el sistema operativo para abrir una conexión. Si hay un programa escuchando en el puerto de destino, connect() regresará exitosamente; de ​​lo contrario, el puerto será inalcanzable. La mayor ventaja de esta tecnología es que no necesita privilegios de root. Cualquier usuario de UNIX es libre de utilizar esta llamada al sistema. Este tipo de análisis es fácilmente detectable y registra una gran cantidad de solicitudes de conexión y mensajes de error en los registros del host de destino.

-sSTCP Synchronous Scan (TCPSYN): Debido a que no es necesario abrir una conexión TCP por completo, esta tecnología suele denominarse escaneo medio abierto (medio abierto). Puede enviar un paquete de sincronización TCP (SYN) y esperar una respuesta.

Si la otra parte devuelve un paquete SYN|ACK (respuesta), significa que el puerto de destino está escuchando; si se devuelve un paquete RST, significa que el puerto de destino no tiene un programa de escucha; recibido, el host de origen enviará inmediatamente un paquete de datos RST (reset)) que se desconecta del host de destino, lo que en realidad lo realiza automáticamente el kernel de nuestro sistema operativo. Lo bueno de esta técnica es que muy pocos sistemas la registran en el registro del sistema. Sin embargo, necesita privilegios de root para personalizar los paquetes SYN.

-sF-sX-sN Escaneo de paquetes FIN secreto, XmasTree, modo de escaneo nulo: se usa cuando ni siquiera se puede determinar el escaneo SYN. Algunos firewalls y software de filtrado de paquetes pueden monitorear los paquetes SYN enviados a puertos restringidos, y algunos programas como synlogger y Courtney pueden detectar esos escaneos. Estos métodos de escaneo avanzados pueden escapar de estas interferencias. La base teórica para estos métodos de escaneo es que los puertos cerrados deben responder a los paquetes RST de sus paquetes de sonda, mientras que los puertos abiertos deben ignorar los paquetes problemáticos (consulte la página 64 de RFC793). El escaneo FIN utiliza paquetes FIN expuestos para la detección, mientras que el escaneo del árbol de Navidad activa los indicadores FIN, URG y PUSH de los paquetes. Desafortunadamente, Microsoft decidió ignorar el estándar por completo y empezar desde cero. Por lo tanto, este método de escaneo no es válido para Windows95/NT. Sin embargo, desde otra perspectiva, este método se puede utilizar para distinguir entre dos plataformas diferentes. Si puede encontrar puertos abiertos utilizando este método de escaneo, puede estar seguro de que el objetivo no está ejecutando Windows. Si el escaneo con -sF, -sX o -sN muestra que todos los puertos están cerrados, pero el escaneo con SYN muestra que hay puertos abiertos, puede estar seguro de que el host de destino probablemente esté ejecutando un sistema Windows. Este método no es muy útil ahora porque nmap tiene capacidades integradas de detección del sistema operativo. Hay varios otros sistemas que utilizan el mismo método de procesamiento que Windows, incluidos Cisco, BSDI, HP/UX, MYS e IRIX. Todos estos sistemas envían paquetes de reinicio desde puertos abiertos cuando los paquetes deben descartarse.

-sPping scan: A veces sólo quieres saber qué hosts se están ejecutando en la red en ese momento. nmap realiza esta tarea enviando paquetes de solicitud ICM Echo a cada dirección IP dentro de la red que especifique. Responderá si el host se está ejecutando. Desafortunadamente, algunos sitios como microsoft.com bloquean los paquetes de solicitud de ICM Pecho. Sin embargo, nmap también puede enviar paquetes TCPack al puerto 80 de forma predeterminada. Si recibe un paquete RST, significa que el host se está ejecutando. La tercera técnica utilizada por nmap es enviar un paquete SYN y luego esperar un paquete RST o SYN/ACK. Para usuarios no root, nmap utiliza el método connect(). De forma predeterminada (usuario root), nmap utiliza tecnología ICMP y ACK en paralelo. Tenga en cuenta que nmap realizará un escaneo de ping en cualquier caso, y los escaneos posteriores solo se realizarán si el host de destino se está ejecutando. Sólo usaría esta opción si sólo desea saber si el host de destino se está ejecutando y no desea realizar otros análisis.

-Escaneo sUUDP: si desea saber qué servicios UDP (Protocolo de datagramas de usuario, RFC768) se proporcionan en un determinado host, puede utilizar este método de escaneo. nmap primero envía un paquete UDP de 0 bytes a cada puerto del host de destino. Si recibimos un mensaje ICMP que indica que el puerto es inalcanzable, el puerto está cerrado; de lo contrario, asumimos que está abierto. Algunas personas pueden pensar que el escaneo UDP no tiene sentido. Sin embargo, a menudo pienso en el reciente fallo de solarisrpcbind. rpcbind está oculto en un puerto UDP no revelado; este número de puerto es mayor que 32770. Por lo tanto, es importante incluso si el firewall bloquea el puerto 111 (el número de puerto conocido de Portmap).

Pero, ¿puedes saber qué programa está escuchando en un puerto mayor que 30000? ¡Utiliza el escaneo UDP! La puerta trasera cDcBackOrifice está oculta en un puerto UDP configurable en el host de Windows. Independientemente de algunos fallos de seguridad comunes, algunos servicios como snmp, tftp y NFS utilizan el protocolo UDP. Desafortunadamente, el escaneo UDP a veces es muy lento porque la mayoría de los hosts limitan la proporción de mensajes de error ICMP (recomendado en RFC1812). Por ejemplo, en el kernel de Linux (en el archivo net/ipv4/icmp.h), hay un límite de 80 mensajes CMP de destino cada 4 segundos. Si se excede esta proporción, se aplicará una penalización de 1/4 de segundo. Solaris es más restrictivo y sólo permite alrededor de 2 mensajes ICMP inalcanzables por segundo, lo que hace que el análisis sea más lento. nmap detectará este límite proporcionalmente y reducirá la velocidad de envío en lugar de enviar una gran cantidad de paquetes inútiles que el host de destino descartará. Sin embargo, Microsoft ignora esta sugerencia del RFC1812 y no impone ninguna restricción a esta relación. De esta manera podemos escanear rápidamente todos los puertos de 65K en un host que ejecuta Win95/NT.

Escaneo -sAACK: este método de escaneo avanzado se usa comúnmente para penetrar conjuntos de reglas de firewall. Normalmente, esto ayuda a determinar si un firewall es completamente funcional o es un simple filtro de paquetes que simplemente bloquea los paquetes SYN entrantes. Este escaneo envía un paquete ACK (usando un número de secuencia/respuesta aleatorio) a un puerto específico. Si se devuelve un paquete RST, el puerto se marca como sin filtrar. Si no se devuelve nada o se devuelve un mensaje ICMP inalcanzable, el puerto se clasifica como filtrado. Tenga en cuenta que nmap generalmente no genera puertos sin filtrar, por lo que no todos los puertos probados generalmente se muestran en la salida. Obviamente, este método de escaneo no puede encontrar puertos abiertos.

-Escaneo SW de ventanas deslizantes: esta técnica de escaneo avanzada es muy similar al escaneo ACK, excepto que a veces puede detectar puertos abiertos porque el tamaño de la ventana deslizante es irregular y algunas operaciones El sistema puede informar su tamaño. Estos sistemas incluyen al menos: algunas versiones de AIX, Amiga, BeOS, BSDI, Cray, Tru64UNIX, DG/UX, OpenVMS, DigitalUNIX, OpenBSD, OpenStep, QNX, Rhapsody, SunOS4.x, Ultrix, VAX, VXWORKS. Una lista completa está disponible en la documentación de la lista de correo 3 de nmap-hackers.

-escaneo sRRPC. Este método se utiliza junto con otros métodos diferentes de escaneo de puertos de nmap. Seleccione todos los puertos abiertos y envíeles el comando NULL del programa SunRPC para determinar si son puertos RPC y, de ser así, qué software y número de versión son. Para que pueda obtener información sobre el firewall. El escaneo de señuelos aún no se puede utilizar junto con el escaneo RPC.

-bAtaque de rebote FTP: El protocolo FTP (RFC959) tiene una característica interesante, admite conexiones FTP proxy. Es decir, puedo conectarme al servidor FTP target.com desde evil.com y puedo pedirle a este servidor FTP que me envíe archivos desde cualquier lugar de Internet. En 1985, cuando se completó el RFC959, esta característica funcionaría bien. Sin embargo, en la Internet actual, no podemos permitir que la gente se apodere del servidor FTP y permita que envíe datos a cualquier nodo de Internet. Como escribió Hobbit en un artículo de 1995, el protocolo "puede usarse para entregar correo electrónico y noticias prácticamente inalcanzables, obtener acceso a servidores de varios sitios, llenar discos duros, eludir firewalls y otras actividades de acoso. Y es muy difícil de rastrear". .

Podemos utilizar esta función para escanear puertos TCP en un servidor FTP proxy. Por lo tanto, debe conectarse a un servidor FTP detrás del firewall y luego realizar un escaneo de puertos. Si hay un directorio legible y grabable en este servidor FTP, también puede enviar datos arbitrarios al puerto de destino (pero nmap no puede hacerlo por usted). El argumento pasado a la opción de función -b es el servidor FTP que desea que actúe como proxy. El formato de sintaxis es: -nombre de usuario:contraseña@servidor:puerto. Excepto el servidor, todo lo demás es opcional. Si desea saber qué servidores tienen este defecto, puede consultar mi artículo sobre Phrack51. También puede obtener la última versión de este artículo en el sitio de nmap.

Opciones comunes No son obligatorias, pero son útiles.

-P0 no necesita hacer ping al host antes de escanear. Algunos firewalls de red no permiten el paso de solicitudes de ICM Echo. Utilice esta opción para escanear estas redes. Microsoft.com es un ejemplo, por lo que siempre debe utilizar la opción -P0 o -PT80 al escanear este sitio.

- Antes del escaneo PT, utilice TCPping para determinar qué hosts se están ejecutando. En lugar de enviar un paquete de solicitud ICM Echo y esperar una respuesta, nmap lo hace enviando un paquete TCPACK a la red de destino (o a un único host) y esperando una respuesta. Si el host se está ejecutando, se devolverá un paquete RST. Esta opción solo funciona si la red/host de destino bloquea los paquetes de ping pero aún le permite escanearlos. Para usuarios que no son root, utilizamos la llamada al sistema connect() para implementar esta funcionalidad. Utilice -PT para configurar el puerto de destino. El número de puerto predeterminado es 80 porque este puerto normalmente no se filtra.

-PS Para los usuarios root, esta opción hace que nmap use paquetes SYN en lugar de paquetes ACK para escanear el host de destino. Si el host se está ejecutando, devuelva un paquete RST (o un paquete SYN/ACK).

-PI establece esta opción para permitir que nmap use un ping real (solicitud ICMPecho) para escanear si el host de destino se está ejecutando. El uso de esta opción permite a nmap descubrir hosts en ejecución y nmap también observará su dirección de transmisión de subred directa. Una dirección de transmisión de subred directa es una dirección IP accesible externamente que convierte un paquete externo en un paquete de transmisión IP entrante y lo envía a una subred de computadora. Estos paquetes de difusión IP deben eliminarse porque pueden provocar ataques de denegación de servicio (como smurf).