Unidad II. AUDITORÍA DE INFRAESTRUCTURAS (I)
Unidad II. AUDITORÍA DE INFRAESTRUCTURAS (I)
Unidad II. AUDITORÍA DE INFRAESTRUCTURAS (I)
1. Introducción
2. Reconocimiento
3. Escaneo
4. Recopilación de herramientas utilizadas
5. Bibliografía específica, enlaces de interés y lecturas recomendadas
Test Unidad 2
1.Introducción
La auditoría o Penetration Test de infraestructuras engloba las diferentes fases que se ejecutan sobre los sistemas informáticos de una organización
para identificar las debilidades que pueden desencadenar un riesgo en la integridad, confidencialidad y disponibilidad de sus activos.
Las fases que conforman la auditoría son: reconocimiento activo y pasivo, escaneo, explotación y escalada de privilegios. A lo largo de toda esta
unidad se tratará de introducir al alumno en los aspectos más relevantes de cada una de ellas.
2.Objetivos
El objetivo de este módulo es que el alumno se familiarice con los diferentes tipos de auditorías de seguridad que se pueden llevar a cabo, así como
con las diferentes fases que los componen.
Concretamente, nos centraremos en las fases de reconocimiento y escaneo. En cuanto al reconocimiento, trabajaremos en los diferentes tipos
(activo y pasivo), y en la fase de escaneo veremos el descubrimiento de elementos como hosts, red, servicios, etc.
3.Tipos de auditoría
3.1. Tipos de auditoría
Penetration Tests que se pueden ejecutar sobre la infraestructura de una organización
Pentest externo: el objetivo de este tipo de pruebas es encontrar, de forma remota, debilidades en los equipos de la organización que están
publicados en internet, con el fin de traspasar el perímetro y descubrir debilidades en la DMZ (demilitarized zone) para poder acceder a la
red interna.
Pentest interno: durante este tipo de pruebas, se evalúa la seguridad desde el punto de vista de un insider para así poder determinar hasta
dónde puede elevar privilegios un usuario que cuente inicialmente con un nivel de privilegios bajos.
Red Team: consiste en la simulación de ataques reales, para poner a prueba el nivel de seguridad de la organización y encontrar debilidades
y vulnerabilidades en su estructura.
De acuerdo con la información que conocemos sobre el objetivo cuando comienza la auditoría, podemos clasificarlas en:
Caja negra: el auditor comienza la auditoría conociendo únicamente la identidad de la organización. El objetivo de realizar una auditoría de este
tipo es que simula un ataque externo real.
Caja gris: se dispone de cierta información de la infraestructura, por lo que no se parte de cero.
Caja blanca: se dispone la información de la organización, como por ejemplo mapas de red. Al conocer toda esta información se puede
prescindir de la fase de fingerprinting que se tratará más adelante
3.2. Reconocimiento
3.2.1. Introducción
La fase de reconocimiento es una parte vital para el éxito del hacking ético. En ella debemos recoger toda la información del objetivo de forma activa
y pasiva para estudiarla y encontrar los vectores de ataque.
3.2.2. Teoría
Hoy en día la mayoría de información está en la web, pero no necesaria y únicamente ahí, y es por eso que utilizaremos técnicas de inteligencia de
fuentes abiertas, Open Source Intelligence (OSINT). Además, estas técnicas nos permiten obtener información del objetivo sin enviarle ningún
paquete.
OSINT es la forma de recolección de inteligencia que engloba encontrar, seleccionar y adquirir información de recursos públicos para ser analizada y
producir inteligencia (información relevante).
Es el proceso de recolección de información del objetivo que queremos atacar, usando como medio información de dominio público. Esto incluye
información obtenida en motores de búsqueda como Google, Bing, etc., whois, información publicada de la empresa en concreto, etc.
Esta información obtenida ayuda a obtener una visión general de la organización objetivo que se quiere atacar, donde se pueden exponer diferentes
datos relativos a la misma, como pueden ser servicios publicados, aplicaciones, cuentas de correo electrónico, empleados que trabajan en ella, si
tienen procesos de selección de nuevos empleados activos, etc.
Site: Este operador limitará nuestra búsqueda en Google a un único dominio. Esta búsqueda tan simple nos puede proporcionar
información muy útil, como cuántos subdominios tiene indexados o la presencia de la organización en la web.
inurl: este operador busca webs que tengan el término en alguna parte de la
URL y se puede combinar con varios operadores.
allinurl: admin.php site:.edu
filetype: este operador busca webs que tengan expuestos ficheros con diferentes extensiones (.pdf, .ps, .doc, .xls, .txt, .ppt, .rtf, .asp,
etc.) y se puede combinar con varios operadores.
Allintitle e intitle: restringe la búsqueda únicamente al título de la página web (aquello que está entre las etiquetas).
Esta técnica es muy efectiva de cara a encontrar correos electrónicos, posibles usuarios y empleados de una organización. La recopilación de
este tipo de información es útil a la hora de obtener una lista para poder llevar a cabo ataques client-side, mapeo de usuarios en la organización,
etc.
Una herramienta muy usada para este tipo de tareas es theharvester, disponible en la distribución Kali Linux. Esta herramienta se encarga de
hacer búsquedas de correos electrónicos en diferentes motores de búsqueda.
opciones de the Harvester
2.3.1.3. Enumeración whois
Whois, además de ser una herramienta muy útil para extraer información sobre el dominio de una organización, es un servicio TCP y un tipo de base de
datos. Las bases de datos whois contienen mucha información sobre la organización, dominios que alojan, nombre del servidor, registrador y, en la
mayoría de los casos, información de contacto.
Además de permitir la búsqueda por dominios, permite la búsqueda inversa, esto es proporcionar la dirección IP.
2.3.1.4. Recon-ng
Es un framework de reconocimiento web escrito en Python que cuenta con módulos independientes y diferentes funciones, que proporciona un entorno
bastante completo y que permite englobar todas las pruebas de reconocimiento pasivo que se pueden llevar a cabo.
Mediante la configuración de esta herramienta se pueden llevar a cabo consultas whois, consultas en Google, Bing y otros motores de búsqueda, listar
vulnerabilidades que han sido reportadas en una organización pero que aún no han sido solucionadas, entre otras.
Otras herramientas, disponibles online, muy útiles que nos pueden proporcionar más información son las citadas a continuación:
Ripe
Arin
Shodan
Robtex
Archive.org
Pastebin
Github
FOCA
2.3.2. Reconocimiento activo
La recopilación de información activa puede ser detectada por el objetivo al ser un comportamiento malicioso o sospechoso. Durante esta etapa,
estamos activamente mapeando la infraestructura de red (pensemos en un escaneo de puertos completo nmap -p1-65535), enumerando máquinas o
analizado una vulnerabilidad en un servicio abierto, estamos buscando activamente servidores, archivos y directorios. La mayoría de estas actividades se
realizan durante las fases de "reconocimiento" o "exploración" dentro de las fases del hacking ético.
Los servidores DNS ofrecen una serie de datos que se encuentran disponibles de forma pública sobre organización de servidores como direcciones IP,
nombres de servidores, funcionalidad de estos, etc.
Un servidor DNS normalmente divulgará información de DNS y de servidor de correo para el dominio sobre el que tiene autoridad. Esto es necesario, ya
que las solicitudes públicas de direcciones de correo y de servidores DNS constituyen la experiencia básica de Internet.
Examinando el dominio Microsoft.com, vamos a utilizar el comando host con el parámetro -t para llevar a cabo descubrimiento tanto de servidores DNS
como de servidores de correo: root@kali:~# host -t ns microsoft.com
De forma predeterminada, cada dominio configurado debe proporcionar, al menos, el DNS y los servidores de correo responsables del dominio. Dentro
de esta técnica, existe la posibilidad de automatizar este proceso. Es posible emplear de consultas DNS adicionales para el descubrimiento de hostnames
y direcciones IP que puedan pertenecer a la organización objetivo.
Para comparar las salidas que pueda tener la ejecución de diferentes búsquedas, el resultado de buscar subdominios de la organización analizada es:
Otra técnica que es posible llevar a cabo es aplicar fuerza bruta para obtener los diferentes subdominios que forman parte de la organización. Para ello,
con un script en bash básico es posible ejecutar el comando host que lea un fichero de entrada con diferentes subdominios:
La enumeración de fuerza bruta de DNS realizada anteriormente reveló un conjunto de direcciones IP dispersas. Si el administrador de DNS de
microsoft.com configuró registros PTR para el dominio, podríamos encontrar más nombres de dominio que se perdieron durante la fase de búsqueda
avanzada de fuerza bruta al sondear el rango de estas direcciones encontradas en un bucle.
La transferencia de zona es similar a una base de datos replicada de un servidor DNS. Este proceso incluye la copia del archivo de zona desde un servidor
DNS maestro a un servidor esclavo. El archivo de zona contiene una lista de todos los nombres DNS configurados para esa zona.
La transferencia de zona debería limitarse normalmente a servidores DNS esclavos autorizados. Sin embargo, muchos administradores configuran mal
sus servidores DNS, y como resultado, cualquiera que pregunte por una copia de la zona del servidor DNS recibirá una.
Todos los nombres, direcciones y funcionalidades de los servidores pueden estar expuestos a cualquier usuario.
Una transferencia de zona exitosa no tiene como consecuencia directa una violación de la red. Sin embargo, facilita el proceso.
Se puede emplear la siguiente sintaxis del comando host para realizar una transferencia de zona.
En este caso, los servidores de Microsoft están configurados apropiadamente y no se permite la transferencia de zona.
Un ejemplo de transferencia de zona exitosa puede ser la siguiente, utilizando una organización de prueba.
dnsrecon (https://github.com/darkoperator/dnsrecon): es un script programado en Python que automatiza todo el proceso explicado.
Vamos a realizar esta prueba sobre el dominio de prueba megacorpone.com.
root@kali: ~# dnsrecon -d megacorpone.com -t axfr
dnsenum: Este script funciona de forma similar a dnsrecon. Intenta realizar transferencias de zona en un dominio dado.
Server Message Block, conocido como SMB, es un protocolo de red cuyo objetivo es compartir archivos, impresoras, etc. Entre máquinas pertenecientes
a una misma red de ordenadores.
El historial de seguridad de este protocolo ha sido deficiente durante más de una década, debido a su compleja implementación y a su naturaleza
abierta. Las debilidades de este protocolo van desde la existencia de sesiones nulas de SMB no autenticadas, en Windows 2000 y XP, hasta una gran
cantidad de errores de SMB y vulnerabilidades a lo largo de los años, la más conocida y reciente EternalBlue.
El protocolo SMB ha sido actualizado y mejorado en paralelo con cada lanzamiento del sistema operativo Windows. La evolución de versiones de este
protocolo según el sistema operativo es:
El servicio NetBIOS escucha en los puertos TCP y UDP 139 y 445. Este servicio se puede escanear con nmap y se puede utilizar una sintaxis como la
siguiente:
Una sesión NULL se refiere a una sesión NetBIOS no autenticada entre dos ordenadores. Esta característica permite que los equipos no autenticados
obtengan listas de navegación de otros servidores de Microsoft.
Una sesión nula conlleva que se exponga información sensible (políticas de contraseñas, nombres de usuario, nombres de grupo, nombres de equipos,
ID de usuario y de host) que puede ser utilizada por un atacante para llevar a cabo ataques más sofisticados. Esta característica de Microsoft existía en
SMB1 de forma predeterminada y fue restringida en versiones posteriores.
Una herramienta que nos facilita la enumeración de esta información es enum4linux. Esta herramienta está escrita en Perl y su finalidad es obtener
información de sistemas Windows y Samba. Otras herramientas similares que se pueden usar son smbclient, rpcclient, net y nmblookup.
Por otro lado, nmap dispone de scripts específicos para analizar este servicio, tal como se comentó en el apartado anterior.
root@kali: ~# ls -l /usr/share/nmap/scripts/smb*
2.3.2.4. Enumeración SMTP
El protocolo Simple Mail Transfer Protocol, conocido como SMTP es un protocolo de red utilizado para el intercambio de mensajes de correo electrónico.
Suele asociarse a otros protocolos como POP3 o IMAP, utilizándose SMTP para correo de salida, y los otros para correo entrante.
Algunos servidores de correo suelen estar mal configurados y mediante técnicas de enumeración es posible obtener información sobre el host objetivo.
SMTP suele disponer de comandos como VRFY o EXPN, que sirven para verificar los usuarios existentes en un servidor de correo, lo que más tarde puede
ayudar al atacante.
220 redhat.acme.com ESMTP Sendmail 8.12.8/8.12.8; Wed, 12 Jun 2013 07:47:14 +0300
VRFY root
VRFY idontexist
^C
root@kali:~#
Es un protocolo basado en UDP, que facilita el intercambio de información entre dispositivos de una misma red, un protocolo simple, sin estado y, por lo
tanto, es susceptible a IP spoofing y ataques de repetición. Además, los protocolos SNMP 1, 2 y 2c de uso común no ofrecen cifrado de tráfico, lo que
significa que la información y las credenciales SNMP se pueden interceptar fácilmente a través de una red local. Los protocolos SNMP tradicionales
también tienen esquemas de autenticación débiles y, por lo general, son configurados con el protocolo por defecto public y con community strings
privados.
Management Information Base de SNMP es una base de datos que contiene información relacionada con la administración de la red. Está organizado en
forma de árbol, cuyas ramas representan las diferentes organizaciones o funciones de red. Cada hoja de árbol corresponde a valores de variables
específicas de un endpoint a las que se puede acceder.
Ejemplo de árbol MIB
Parámetros SNMP
Escaneando el protocolo SNMP con nmap
Además de nmap, la herramienta onesixtyone tratará de comprobar si hay community strings disponibles en los hosts objetivo, empleando
fuerza bruta:
Esta herramienta es otra alternativa que es capaz de acceder a la información SNMP. Para poder leer los MIB previamente comentados,
necesitamos conocer el nombre de la comunidad, por lo que lo primero será lanzar un escaneo nmap sobre el activo para averiguarlo:
Hemos averiguado que la comunidad SNMP es “public”. Con esta información procedemos a lanzar la herramienta snmpwalk.
4. Escaneo
4.1 Introducción
Una vez que se ha finalizado la fase de reconocimiento en la que se obtiene una primera visión general de la infraestructura objetivo sigue la fase de
escaneo de la infraestructura, en la cual trataremos de tener una visión más detallada del objetivo.
4.2 Teoría
Tipos de escaneo:
Escaneo o descubrimiento de red: Aunque pueda parecer lo contrario, este tipo de escaneo resulta de vital importancia a la hora de tener una
visión más general del entorno objetivo, direccionamiento IP del mismo y arquitectura de sistemas que lo componen.
Escaneo o descubrimiento de servicios: Una vez que se dispone de una visión general acerca de la infraestructura objetivo, se han de comprobar
los servicios y tecnologías que se están prestando servicio en cada sistema localizado.
Este tipo de escaneo engloba una primera parte de escaneo de puertos, en la que se enumeran todos los puertos TCP o UDP que se encuentran
habilitados en los sistemas objetivo, así como la identificación del servicio pertinente y versión del mismo, que se encuentra operando en el
puerto identificado.
Escaneo o búsqueda de vulnerabilidades:
Dado que, gracias al escaneo de puertos, hemos obtenido los servicios y versiones de los mismos que se encuentran prestando servicio, es fácil
comprobar si una determinada versión de un programa o servicio se encuentra afectado por alguna vulnerabilidad conocida.
Perspectivas de escaneo.
Escaneo interno
se realizarán las pruebas es en algún segmento de la red interna del objetivo.
Dependiendo de la estructura y segmentación de la red interna, podremos obtener distintos resultados, dependiendo del segmento de red en el
que nos encontremos.
También se ha de tener en cuenta que los servicios y tecnologías expuestos en la red interna varían en canto a los expuestos en el perímetro de
red. Por ejemplo, en la red interna podremos encontrarnos con servicios de Directorio Activo que aportan granularidad a los servicios de
autenticación y autorización a los recursos dependiendo de un sistema de usuarios y roles específico, podemos encontrarnos servicios
específicos no expuestos en el perímetro como sistemas de facturación y contabilidad, sistemas de video vigilancia, sistemas de control de las
instalaciones, etc.
Escaneo externo
El posicionamiento que se realiza es desde fuera de la entidad objetivo. De esta manera y en una primera instancia, únicamente se tiene acceso
a escanear el perímetro externo del objetivo; teniendo visibilidad, únicamente, sobre los servicios expuestos en internet. Por ejemplo, servicio
de correo, intranet, servicio web, etc.
Trata de averiguar cómo se encuentra estructurada toda la arquitectura de sistemas por los que está compuesto el objetivo, distinto direccionamiento IP
utilizado, la segmentación aplicada en la red y visibilidad dentro de cada segmento, etc.
Cada entorno objetivo dispondrá de una estructura totalmente distinta y, debido a esta heterogeneidad, se hace indispensable la ejecución de esta fase
que nos permitirá tener una primera visión, más general, del entorno en el que nos encontramos. Esto nos permitirá adaptarnos a él y adaptar los
siguientes escaneos al entorno de las pruebas.
El primer paso a la hora de escanear consiste en descubrir el número de hosts que hay en un determinado rango de red objetivo. Normalmente las
técnicas utilizadas desde una perspectiva de posicionamiento externo pueden utilizarse en un descubrimiento que se realice desde un posicionamiento
interno.
El primer paso a la hora de escanear consiste en descubrir el número de hosts que hay en un determinado rango de red objetivo. Normalmente las
técnicas utilizadas desde una perspectiva de posicionamiento externo pueden utilizarse en un descubrimiento que se realice desde un posicionamiento
interno. Sin embargo, en caso de encontrarnos posicionados en la red interna del objetivo se podrán utilizar una serie de técnicas disponibles
únicamente para este tipo de análisis desde una perspectiva interna.
La técnica más común de descubrimiento consiste en las consultas mediante mensajes ICMP (Internet Control Messaging Protocol). Sin adentrarnos
mucho en la explicación del protocolo, la petición se compone de unos paquetes de tipo petición-respuesta. Mediante este protocolo puede
diagnosticarse el estado, velocidad y calidad de una red determinada. Se encapsula dentro del datagrama IP, con lo cual va asociado a una dirección IP
en concreto.
Utilizaremos herramientas que utilizan este protocolo para realizar consultas de manera directa contra una dirección IP o un rango ellas. Como respuesta
obtendremos un paquete ICMP con un código ICMP con el que se puede determinar si no se puede acceder a la red, si se obtuvo o no respuesta del host
consultado, etc. Para más información del funcionamiento del protocolo ICMP,
Utiliza el protocolo ICMP para consultar el estado de una determinada dirección IP, una limitación de ping consiste en que únicamente se puede
consultar el estado de una dirección IP en cada iteración del comando.
Por el contrario, en el siguiente ejemplo se indica una dirección IP que no se encuentra activa.
hping3 permite mucha más personalización en la confección del paquete ICMP. Además, también soporta la confección de paquetes de capa 4 (TCP y
UDP).
A continuación, se muestra la ejecución de la herramienta hping3 indicando una dirección IP que se encuentra activa.
Por el contrario, en el siguiente ejemplo se indica una dirección IP que no se encuentra activa.
Nmap es la herramienta de escaneo de red más versátil que existe actualmente y por ello, también es la más utilizada. Aunque se encuentra más
orientada al descubrimiento de puertos y servicios, también posee un módulo para realizar consultas ICMP para averiguar equipos activos dentro de un
determinado rango de red.
A diferencia de ping y hping3, puede realizar la consulta sobre un rango concreto de direcciones IP.
Dependiendo del tipo de red objetivo, es posible que el tráfico ICMP se encuentre restringido. En ese caso, aunque se realice una consulta sobre una
dirección IP, aunque el host que se encuentre tras esa dirección IP se encontrase activo, el router filtraría el paquete ICMP y nunca llegaría a su destino y
parecería que el sistema remoto no se encuentra disponible.
En otras ocasiones, en vez de filtrar el protocolo ICMP, el router responde a todos los mensajes como si el host se encontrase disponible. De esta
manera, utilizando únicamente el protocolo ICMP no se podría averiguar si el host se encuentra activo o sin conectividad. La siguiente captura de
pantalla ilustra este comportamiento.
Por ejemplo, desde una perspectiva externa, se podría consultar a un determinado rango de red por los 100 puertos más utilizados. A modo de muestra,
se ha realizado un escaneo al puerto TCP 80 en la red anterior. Como se puede comprobar, solo se identifican los hosts que tienen abierto el puerto TCP
80.
De manera contraria, desde una perspectiva interna, lo más normal es que nos encontrásemos en el segmento de Directorio Activo de una determinada
entidad. Dado que el Directorio Activo utiliza el puerto TCP 445 para establecer la comunicación entre los equipos, se podría realizar un escaneo
únicamente al puerto TCP 445 de un determinado rango de red para determinar los equipos que se encontrasen operativos.
es una interfaz gráfica para utilizar nmap de manera más cómoda y poder ver los resultados de una manera más clara y visual.
Al instalarlo, lleva embebido el motor de nmap, con lo que no hace falta instalar ninguna dependencia adicional. Dispone de unas funciones básicas para
operar “a golpe de ratón”, además, dispone de una pequeña ventana de terminal en la que realizar operaciones directamente en sintaxis de nmap.
interfaz de Zenmap
Descubrimiento de hosts mediante ARP
Esta técnica se basa en el funcionamiento del protocolo ARP (Address Resolution Protocol) que se encarga de tener una asociación entre una
determinada dirección IP (capa 3 del modelo OSI) y la dirección ethernet (capa 2 del modelo OSI) a través de la cual se ha de encaminar la trama
ethernet para llegar a la dirección IP solicitada.
Para ello, envían mensajes broadcast de tipo ARP Discovery en la que se consulta en todo el dominio de broadcast si alguien tiene asignada una dirección
IP en concreto. Si alguno de los equipos tiene asignada la dirección IP solicitada, le responde al equipo que realizó la consulta.
Dado el funcionamiento del protocolo, es una técnica que únicamente suele funcionar desde una perspectiva de escaneo interna. Además, como utiliza
un protocolo distinto a ICMP, aunque los paquetes ICMP se encuentren filtrados en la red, el descubrimiento de equipos activos con esta técnica resulta
satisfactorio.
Permite el descubrimiento de equipos remotos mediante mensajes broadcast de tipo ARP Discovery y permite indicar la interfaz de red desde donde se
quiere realizar el escaneo.
De manera similar a arp-scan, netdiscover permite el descubrimiento de equipos remotos mediante mensajes broadcast de tipo ARP Discovery. La salida
es en modo monitorización; sin embargo, tiene un modo parseable (operador -L) que permite la redirección a un fichero.
De la misma manera, es conveniente poder descubrir el equipamiento de red implicado en la topología de la infraestructura (routers, switches, etc.). De
esta manera, podremos hacernos una idea más fidedigna de la topología y podríamos entender y resolver posibles problemas que puedan surgirnos de
cara a realizar la fase de escaneo u otras fases posteriores, por ejemplo, filtrado de ciertos protocolos o puertos, inspección de paquetes etc .
La herramienta traceroute utiliza el protocolo ICMP para averiguar el enrutamiento que se establece entre dos puntos de la red. De esta manera, si
alguno de los routers implicados no filtra este tipo de mensajes, se obtiene un listado de los routers que intervienen en el establecimiento de la
comunicación.
La herramienta wireshark es una herramienta de monitorización de red que nos permite analizar el tráfico que llega hasta nuestra interfaz en las
distintas capas del modelo OSI.
Dado que bastantes dispositivos de red utilizan protocolos que emiten mensajes en formato broadcast para transmitirse información e incluso la
configuración de la red, podemos analizar el tráfico de este tipo que llega a nuestra interfaz.
Por ejemplo, en la siguiente captura de pantalla se observa un paquete del protocolo CDP (Cisco Discovery Protocol) en el que se observa que el propio
protocolo envía información del modelo del dispositivo (un switch Catalyst 2960), versión del sistema operativo que se encuentra en ejecución, dirección
IP de gestión del switch, las distintas VLAN que existen en la topología, etc.
Descubrimiento de configuración de red con
Wireshark
En este otro paquete multicast (protocolo LLDP) se puede observar que existe un servidor de VoIP Avaya que difunde sus características de
configuración, tipo, modelo, versión del software, dirección IP, etc.
Descubrimiento de configuración de red con Wireshark
También podemos observar otros protocolos de broadcast que nos pueden dar más información sobre el direccionamiento utilizado, en este caso,
interceptamos varios paquetes ARP Discovery en los que se observa el rango de red utilizado en el segmento en el que nos encontramos.
descubrimiento de
configuración de red con
Wireshark
Nmap tiene entre sus muchas cualidades, la capacidad de averiguar el sistema operativo que se está ejecutando por debajo del host objetivo. Los
sistemas operativos tienen diferentes implementaciones en la pila TCP/IP, como por ejemplo que cada uno tiene diferente valor del TTL por defecto.
Nmap se encarga de analizar este tráfico enviado y recibido desde el host objetivo y, de esta manera, es capaz de indicar el sistema operativo que se está
ejecutando.
Esta herramienta incluye un operador -O con el que se fuerza a averiguar la versión del sistema operativo que ejecuta el sistema remoto.
Enumeración de puertos
La enumeración de puertos consiste en averiguar los puertos TCP o UDP que se encuentran operativos en cada sistema identificado. Es necesario tener
en cuenta el impacto que puede tener en la red el tipo de escaneo que se lance.
La manera más efectiva de conocer si un determinado puerto se encuentra habilitado consiste en establecer una comunicación TCP o UDP, dependiendo
del protocolo que se requiera consultar, en cada puerto específico del que queramos tener constancia. Dependiendo de la respuesta devuelta (o en el
caso del protocolo UDP, si no se obtiene respuesta por el sistema al que se le está realizando la consulta) podremos averiguar si el puerto consultado se
encuentra habilitado para realizar una comunicación o no.
En los sucesivos subapartados se indican las técnicas utilizadas para el descubrimiento de puertos. Aunque nos centraremos en el uso de la herramienta
nmap, también se introducirán algún ejemplo de otras herramientas como nc y Zenmap.
Escaneo TCP
Es el tipo por defecto de escaneo en nmap. Intenta una conexión TCP completa (three-way handshake) y si el puerto se encuentra abierto, se
completará la conexión; en caso contrario, el puerto se considera cerrado. Una de las principales desventajas de este tipo de escaneo es que es
fácilmente detectable y, por tanto, los fabricantes de sistemas firewall suelen incorporar mecanismos de defensa para evitar este tipo de
escaneos.
A continuación, se muestran dos ejemplos, uno con netcat y otro con nmap:
Escaneo UDP
Dado que el protocolo UDP es un protocolo que no se encuentra orientado a la conexión, la operativa normal es que el sistema remoto no envíe
ningún tipo de confirmación de recepción de los paquetes.
Debido a las características del protocolo, este tipo de escaneo realiza el envío de una cabecera UDP para cada puerto objetivo. Si se obtiene un
error ICMP que indica que el puerto no es alcanzable (tipo 3, código 3), entonces se marca el puerto como cerrado. Si se recibe cualquier error ICMP
no alcanzable (tipo 3, códigos 1, 2, 9, 10 o 13) se marca el puerto como filtrado. En algunas ocasiones se recibirá una respuesta al paquete UDP, lo
que rueba que el puerto está abierto. Si no se ha recibido ninguna respuesta después de algunas retransmisiones entonces se clasifica el puerto
como abierto|filtrado.
En este tipo de escaneo se envía un paquete SYN al puerto y espera la respuesta del equipo remoto, pero sin llegar a completar la conexión. La
principal ventaja con respecto al escaneo TCP es que es bastante más rápido al no completarse la conexión. Sin embargo, al igual que el escaneo
TCP, es fácilmente detectable y, por tanto, los fabricantes de sistemas firewall suelen incorporar mecanismos de defensa para evitar este tipo de
escaneos.
A esta técnica se la conoce habitualmente como sondeo medio abierto, porque no se llega a abrir una conexión TCP completa. Se envía un
paquete SYN, como si se fuera a abrir una conexión real y después se espera una respuesta. Si se recibe un paquete SYN/ACK esto indica que el
puerto está en escucha (abierto), mientras que si se recibe un RST (reset) indica que no hay nada escuchando en el puerto. Si no se recibe
ninguna respuesta después de realizar algunas retransmisiones, entonces el puerto se marca como filtrado. También se marca el puerto como
filtrado si se recibe un error de tipo ICMP no alcanzable.
En este tipo de escaneo se envía una conexión de tipo TCP con los flags ACK, RST, SYN, URG y PSH activados. En caso de que el puerto se
encuentre cerrado, el sistema remoto envía un paquete RST, en caso de no recibir respuesta, se considerará el puerto como abierto. Como
principal ventaja, evita la detección del escaneo por ciertos IDS; como punto en contra, solo funciona en sistemas que se adecuen a la normativa
RFC 793 (Sistemas UNIX).
Escaneo FIN
Este tipo de escaneos es muy parecido al anterior, se envía un paquete TCP tipo FIN al sistema remoto. Si no se recibe ninguna respuesta, el
puerto se considera cerrado; en caso de que el sistema remoto devuelva un paquete de tipo RST, el puerto se considerará como abierto. Como
principal ventaja, evita la detección del escaneo por ciertos IDS o firewalls.
Este tipo de escaneos es muy parecido al anterior, se envía un paquete TCP sin establecer ningún tipo de flag al sistema remoto. Si no se recibe
ninguna respuesta, el puerto se considera cerrado; en caso de que el sistema remoto devuelva un paquete de tipo RST, el puerto se considerará
como abierto. Como principal ventaja evita la detección del escaneo por ciertos IDS o firewalls.
Como conclusión a este apartado de escaneo de puertos, hay que tener en cuenta varios aspectos a la hora de realizar este tipo de escaneo:
El escaneo de puertos UDP a menudo no es fiable en su totalidad, ya que los firewall y enrutadores pueden filtrar los paquetes ICMP. Esto puede
conducir a falsos positivos en el escaneo y es posible obtener de forma regular resultados donde se muestran todos los puertos UDP abiertos en
el host escaneado.
La mayoría de los escaneos de puertos no analizan todos los puertos disponibles y normalmente tienen una lista preestablecida de "puertos
interesantes" que se analizan. Para poder lanzar escaneos personalizados a los puertos deseados, las herramientas utilizadas para esto cuentan
con diferentes combinaciones de parámetros para ajustar el escaneo a las necesidades.
LEER https://nmap.org/man/es/man-port-scanning-techniques.html
Dado que ya disponemos de los sistemas que se encuentran disponibles en la red, así como los puertos que se encuentran a la escucha en cada uno de
estos sistemas, el siguiente paso consiste en averiguar los servicios que se encuentran disponibles en cada puerto, así como la tecnología o programa
utilizado para prestar este servicio y su versión.
Aunque existen otras herramientas que también pueden realizar, en mayor o menor medida, el descubrimiento de los tipos de servicio y sus versiones,
utilizaremos la herramienta nmap para tal tarea.
Operadores de enumeración de servicios (banner grabbing)
Nmap dispone de varios operadores para intentar averiguar el tipo de servicio que se encuentra habilitado en un puerto concreto y su versión.
El primero de ellos es el operador -sV (de service version), realiza un descubrimiento de servicios en base a las respuestas devueltas por cada
puerto en el equipo remoto.
Por otro lado, existe otro operador más completo -A, que además de realizar un descubrimiento de las versiones del servicio, también realiza
detección del sistema operativo, traceroute a la máquina y lanza unos scripts de recopilación de información más específicos por cada puerto
abierto.
Además de los operadores mencionados anteriormente, nmap dispone de una serie de scripts para poder realizar otro tipo de consultas sobre el
objetivo. Estos scripts se encuentran separados por categorías, existe una categoría llamada “version” que realiza ciertas tareas adicionales de
descubrimiento, pero únicamente sobre ciertos servicios. A continuación, se muestra la manera de invocar todos los scripts asociados a la categoría
“version”.
La herramienta nmap dispone de una serie de opciones que nos ayudan a personalizar los escaneos realizados. A continuación, se muestran las opciones
imprescindibles para ser capaz de sacarle más partido a la herramienta.
o Notación CIDR: nmap puede tomar como entrada uno o varios rangos de direcciones IP en notación CIDR.
nmap 192.168.1.0/24
nmap 192.168.1.0/24, 172.16.0.0/16
o Consulta sobre un nombre de host: en caso de indicar un nombre de host para escanear, nmap resolverá la dirección IP asociada y
realizará el escaneo sobre dicha IP.
nmap www.microsoft.com
nmap www.microsoft.com, mail.microsoft.com
Por otro lado, la especificación de los puertos para escanear, también es bastante configurable, lo que nos ofrece las siguientes opciones:
o Consulta por un rango de puertos concretos: permite especificar un grupo de puertos consecutivos.
nmap 192.168.1.1 -p 1-1024
nmap 192.168.1.1 -p 0-65535
o Consulta por puertos no consecutivos: por otro lado, también se pueden especificar los puertos concretos a los que queremos que se
consulten.
o Consultar los 100 puertos más conocidos: otra opción consiste en indicarle a nmap que realice un escaneo sobre un número
determinado de los puertos más comunes, es un listado estadístico mantenido por nmap.
Otra de las opciones que nos ofrece nmap es utilizar como entrada un listado de direcciones IP objetivo que se encuentren en un fichero de hosts.
nmap -iL host_445-up.txt -p 445 -sS -sV
Por otro lado, también permite exportar el resultado del escaneo en varios formatos distintos.
Formato estándar: exporta la salida nmap con el mismo formato que la salida estándar a un fichero con extensión. nmap.
nmap 192.168.1.1 -oN resultado
Formato Grep: exporta la salida del comando nmap a un fichero en el que cada línea contiene la información del host remoto escaneado y el
resultado del escaneo, se dividen los distintos resultados mediante caracteres de tipo “;”, “/”, “:”, etc. De esta manera, se puede filtrar y recoger
solo la información que nos interesa mediante las herramientas cut y grep. Genera un fichero con extensión .gnmap.
nmap 192.168.1.1 -oG resultado
Formato XML: exporta la salida del comando nmap en formato xml, este fichero puede servir para alimentar otra serie de herramientas útiles
para la siguiente fase de escaneo, como la herramienta nessus.
nmap 192.168.1.1 -oX resultado
Exportar todos los formatos: Nmap dispone de una opción para exportar el resultado del escaneo en los tres formatos anteriormente descritos,
de esta manera genera 3 ficheros con las extensiones .nmap, .gnmap y .xml.
nmap 192.168.1.1 -oA resultado
Velocidad de escaneo
Otro de los puntos que hay que tener en cuenta es que la herramienta nmap permite ajustar la velocidad de escaneo en 6 niveles distintos.
Dependiendo de la topología de la red, nos puede interesar realizar un escaneo más rápido (por ejemplo, si tenemos que escanear un gran número de
sistemas remotos). De manera totalmente opuesta, si detectamos que los objetivos disponen de algún tipo de mecanismo de detección contra ataques,
podemos realizar un escaneo más lento para evadir este tipo de protecciones.
-T0: muy lento, utilizado para la evasión de mecanismos de detección como IDS. Pueden tener un retardo de hasta 15 segundos en cada intento
de conexión.
-T1: más lento de lo normal, puede tardar hasta 5 segundos en realizar cada conexión. Utilizado para evadir mecanismos de protección.
-T2: lento, puede tardar hasta 10 veces lo que tardaría un escaneo normal.
-T3: normal, empieza a realizar conexiones en paralelo.
-T4: rápido, realiza conexiones cada 10 milisegundos.
-T5: extremadamente rápido, realiza conexiones cada 5 milisegundos.
En la siguiente ruta se puede consultar la documentación de todos los scripts por defecto de nmap https://nmap.org/nsedoc/
Para consultar el listado de scripts disponibles, junto con una pequeña descripción de ellos, podemos consultar la ayuda de los scripts indicando que se
quiere obtener información de todos
nmap –script-help all
Los scripts. nse normalmente responden a un determinado protocolo, http, Netbios, etc. De esta manera, si el puerto que se encuentra abierto no
dispone de ese servicio o protocolo, el script no se ejecutará.
Para invocar el lanzamiento de un determinado script se realiza con la opción - script seguido del nombre del script. Dado que los scripts que
consultan sobre un mismo protocolo o servicio tienen una nomenclatura inicial común, también se pueden indicar los scripts qe se van a ejecutar
mediante expresiones regulares.
nmap 192.168.15.205 --script "smb-enum-users.nse"
nmap 192.168.15.205 --script "smb-*"
También es posible indicar a nmap que ejecute todos los scripts por defecto en los puertos del host remoto que localice como abiertos.
nmap 192.168.15.205 -p 1-65535 -sC
nmap 192.168.15.205 -p 1-65535 --script default
Además, estos scripts se encuentran divididos en diferentes categorías, pudiendo estar un script asociado a varias categorías. Las categorías de scripts
disponibles en nmap son las siguientes:
auth: intenta evadir el sistema de autenticación o utilizar credenciales conocidas en el sistema remoto.
broadcast: se utiliza, principalmente, para descubrir nuevos hosts en la red.
brute: intenta averiguar contraseñas en los equipos remotos de una gran variedad de protocolos como http, SNMP, IAX, MySQL, VNC, etc.
default: scripts que se ejecutan por defecto cuando se utilizan los operadores -sC y -A.
discovery: intenta descubrir más información a cerca de los hosts remotos a través de protocolos como SNMP, servicios de directorio, etc.
dos: realiza pruebas de Denegación de Servicio contra los equipos remotos.
exploit: realiza ciertas pruebas en las que se intenta ejecutar algún exploit.
fuzzer: intenta ejecutar técnicas de fuzzing sobre los protocolos de red.
intrusive: en esta categoría, se catalogan los scripts que pueden causar algún tipo de daño al sistema remoto, como el consumo de una gran
cantidad de procesamiento.
malware: comprueba si el host remoto tiene signos de haberse producido una infección por malware.
safe: scripts que se consideran seguros y que no tienen ningún impacto negativo contra el sistema remoto.
version: intenta adivinar la versión de los servicios o protocolos del equipo remoto
vul: comprueba si el sistema remoto se encuentra afectado por alguna vulnerabilidad conocida\
De esta manera, es posible indicar a nmap que ejecute todos los scripts de una determinada categoría en el sistema remoto
También es posible indicar que se lancen los scripts de un determinado protocolo y que se encuentren asignados a una o varias categorías. Para ello, se
utilizan expresiones regulares y los operadores and, or y not
En el siguiente ejemplo se indica a nmap que ejecute todos los scripts asociados al protocolo SMB que pertenezcan a la categoría vuln, discovery o
versión.
nmap 192.168.15.205 --script "(vuln or discovery or version) and smb-*"
En este otro ejemplo, se ejecutan todos los scripts asociados al protocolo SMB que se encuentren catalogados con las categorías vuln y safe.
nmap 192.168.15.205 --script "smb-* and (vuln and safe)"
De la misma manera, el siguiente ejemplo ejecuta todos los scripts asociados al protocolo SMB que no se encuentren catalogados como intrusivos.
nmap 192.168.15.205 --script "smb-* and not intrusive"
También es posible indicar que se lancen los scripts de un determinado protocolo y que se encuentren asignados a una o varias categorías. Para ello, se
utilizan expresiones regulares y los operadores and, or y not
En el siguiente ejemplo se indica a nmap que ejecute todos los scripts asociados al protocolo SMB que pertenezcan a la categoría vuln, discovery o
versión.
nmap 192.168.15.205 --script "(vuln or discovery or version) and smb-*"
En este otro ejemplo, se ejecutan todos los scripts asociados al protocolo SMB que se encuentren catalogados con las categorías vuln y safe.
nmap 192.168.15.205 --script "smb-* and (vuln and safe)"
De la misma manera, el siguiente ejemplo ejecuta todos los scripts asociados al protocolo SMB que no se encuentren catalogados como intrusivos.
nmap 192.168.15.205 --script "smb-* and not intrusive"
También es posible consultar la ayuda de un determinado script, grupo de scripts o categorías mediante el operador --script-help. A continuación, se
muestran varios ejemplos.
nmap --script-help smb-check-vulns
nmap --script-help "smb-*"
nmap --script-help intrusive
nmap --script-help discovery
Existen ciertos scripts que permiten la introducción de argumentos para personalizar la configuración del script que se va a ejecutar. Normalmente esta
información no se muestra en la ayuda del script. De esta manera, para conocer los argumentos que se le pueden indicar a un determinado script
podremos acudir a la documentación oficial https://nmap.org/nsedoc/ o ver el código fuente del script .nse
A continuación, se muestra cómo se indica el argumento “unsafe” con valor “1” para configurar la ejecución del script “smb-check-vulns”
nmap 192.168.15.205 -p 135-139,445 -sT -sU --script smb-check-vulns unsafe=1
Búsqueda de vulnerabilidades
Recordamos que, como resultado de la enumeración de servicios y versión, se obtiene información de los distintos servicios que operan en cada sistema
identificado, además del tipo y versión de estos, así como el puerto específico en el que prestan servicio.
Este último tipo de escaneo se centra en localizar posibles vulnerabilidades conocidas que se asocian a una determinada versión y tipo de servicio.
Para ello, es posible consultar recursos de información de manera online que introduciremos más adelante en este apartado o bien, hacer uso de
escáneres más específicos que se encuentran diseñados para asociar y, en algunos casos comprobar, si una determinada versión de un tipo de servicio o
software se encuentra afectado por una vulnerabilidad en concreto.
Leer: https://blogs.sans.org/pen-testing/files/2013/10/NmapCheatSheetv1.1.pdf
Nmap también puede utilizar la potencia de sus scripts nse para actuar a modo de pequeño escáner de vulnerabilidades. Para ello podemos
hacer uso de los scripts incluidos en la categoría vuln, los cuales identifican en el sistema remoto ciertas vulnerabilidades conocidas basándose
en el tipo y versión del protocolo o servicio que se encuentre detrás de ellos.
Cabe destacar que la mayoría de estos scripts no comprueban la existencia de la vulnerabilidad, de modo que conviene comprobar si la
vulnerabilidad realmente existe o, por lo contrario, es un falso positivo.
nmap 192.168.15.205 --script vuln
De la misma manera, existe un proyecto llamado vulscan que consta de un script nse que comprueba en una base de datos local que contiene
vulnerabilidades de varias fuentes públicas (exploit-db, security focus, cve, etc.).
En caso de que la versión del protocolo o servicio se vea afectada por alguna vulnerabilidad conocida que se encuentre registrada en la base de
datos, el script nos lo indicará. Únicamente realiza la búsqueda y saca coincidencias, pero no comprueba si realmente el equipo remoto se
encuentra afectado.
Para instalarlo se ha de clonar el proyecto de github en la carpeta de scripts de nmap. Una vez copiados los ficheros, se puede invocar la
ejecución del mismo como si de otro script se tratase.
nmap -sV --script=vulscan/vulscan.nse www.microsoft.com
Nessus
Nessus, con bastante diferencia, es la aplicación de escaneo de vulnerabilidades más conocida y utilizada. Actualmente existen dos versiones:
Nessus Home: válido únicamente para entorno personal, no se pueden escanear más de 16 hosts a la vez, no dispone de soporte de la
herramienta ni acceso a los módulos de compliance.
Nessus Professional: válido en entornos profesionales, no dispone de limitaciones de escaneo, integra varios tipos de análisis de “Compliance”
como PCI. Además, incluye soporte de la herramienta.
Para poder analizar los equipos remotos, es necesario configurar un escáner. Para ello, se selecciona el tipo de escaneo, se indican los hosts
remotos, redes o dominios que se van a escanear, también admite que se le indique un fichero con un listado de hosts objetivo.
escaneo de vulnerabilidades con Nessus
Una vez finalizado el escaneo, podremos acceder a las vulnerabilidades localizadas de manera global.
O acceder a las vulnerabilidades de cada equipo remoto.
Opcionalmente, los
resultados del
escaneo pueden
ser exportados
como informes en
varios formatos,
como CSV, PDF, XML y HTML. Los resultados también pueden guardarse en una base de conocimiento para referencia en futuros escaneos de
vulnerabilidades.
Escáneres más específicos (sslscan, qualys, acunetix, NIKTO, JOOMSCAN, CMSCAN, etc.)
Existen herramientas más específicas que cubren la fase de escaneo sobre ciertos servicios o protocolos en concreto.
Escáneres de protocolos.
Escáneres de aplicaciones o frameworks.
Escáneres de vulnerabilidades web.
Escáneres de protocolos
Son escáneres enfocados en localizar vulnerabilidades según la versión o tipología de protocolos. En esta categoría podría englobarse herramientas
cómo sslscan o testssl, que buscan vulnerabilidades conocidas en el tipo de protocolo TLS o SSL utilizado para proteger las comunicaciones.
En esta sección podemos encontrarnos programas como JoomScan, wpscan, droopscan, etc.
escaneo de aplicaciones con WPScan
cve.csv
securityfocus.csv
securitytracker.csv
expliotdb.csv
openvas.csv
Por otro lado, existe una herramienta en modo consola, disponible para sistemas Linux, que realiza búsquedas de exploits disponibles en una copia local
de la base de datos mantenida por exploit-db. Además, también te indica dónde se encuentra la copia local del exploit para poder utilizarlo para
comprometer el equipo remoto.
búsqueda de vulnerabilidades
con Linux
4. Recopilación de herramientas utilizadas
Shodan Nessus
Bing SSLscan
Whois Qualys SSL
Google WPScan
theHarvester Qualys web-app
Recon-ng Acunetix
Ripe CVE
Arin Securityfocus
Robtex Securitytracker
Archive.org Expliot-db
Pastebin Openvas
Github Searchsploit
FOCA 0day
Nmap Metasploit
ZenMap Medusa
Dnsenum Ncrack
Enum4linux Hydra
Arp-scan Patator
Wireshark Mimikatz
Netcat Pth-toolkit
Vulscan Jhon the Ripper
Hashcat