Fase de escaneo (Fingerprinting)
La fase de escaneo se realiza después de realizar la fase de reconocimiento.
En ella tratamos de obtener más información sobre el propósito de los activos incluidos en el alcance de las pruebas.
Se averigua los distintos componentes de la infraestructura, el rol que desempeña cada activo, el número de servicios y versiones de los mismos que se encuentran prestando servicio en cada activo.
Además, también se realiza un análisis de las posibles vulnerabilidades existentes en el sistema tomando como referencia las versiones de los servicios que el activo sustenta así como la versión del Sistema Operativo.
De esta manera podremos localizar “Vulnerabilidades públicas” que afecten a las versiones localizadas en los activos de la auditoría.
- Escaneo de red: Este tipo de escaneos están destinados a obtener mayor información sobre la red objetivo, direccionamiento IP y la arquitectura utilizada para sustentar toda la infraestructura objetivo.
- Wireshark / tcpdump
Aunque la mayor parte de la comunicación que veremos con estas herramientas será con origen o destino el equipo del auditor, también veremos numeroso tráfico broadcast (dirigido a todos los equipos de la red) que nos puede brindar información interesante como si existen otras subredes, si existen distintas VLAN dentro de la infraestructura, etc.
En ningún caso se realiza ningún tipo de comunicación por parte del auditor. Simplemente se limita a observar el tráfico que se transmite por la red. De esta manera se suele considerar esta técnica como una técnica “pasiva”.
- netdiscover
La herramienta net discover permite el descubrimiento de equipos remotos mediante mensajes broadcast de tipo ARP Discovery (como los vistos en wireshark). Esta herramienta recopila información de las direcciones IP observadas mediante la monitorización del tráfico ARP de tipo broadcast y te indica las direcciones IP observadas.
Dado el funcionamiento del protocolo, es una técnica que únicamente suele funcionar desde una perspectiva de escaneo interna.
$ netdiscover -i eth0
- arp-scan
Permite el descubrimiento de equipos remotos mediante mensajes broadcast de tipo ARP discovery, permite indicar la interfaz de red desde dónde se quiere realizar el escaneo.
Las consultas de tipo “ARP Discovery”, consiste realizar una petición de consulta ARP, 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.
$ arp-scan red_a_escanear
- nmap como escáner de red
La herramienta nmap puede ser utilizada en los tres tipos de categorías de escaneo (Escaneo de red, escaneo de servicios y escaneo de vulnerabilidades), en este caso particular veremos su uso como escáner de red.
Podemos utilizar nmap para poder realizar escaneos de una red objetivo, con la finalidad de comprobar los equipos activos en la red y la dirección IP que tienen asignada.
De esta manera, es necesario conocer el direccionamiento de red sobre el que queremos realizar la consulta (netdiscover o wireshark pueden ayudarnos a obtener esta información).
Además, nmap soporta el uso de dos protocolos para realizar las tareas de escaneo y descubrimiento, el protocolo ARP y el protocolo ICMP.
Para indicar que nmap realice un escaneo de red haciendo uso del protocolo ARP se ha de utilizar el operador -PR.
$ nmap -PR 192.168.0.*
Por otro lado, también es posible realizar un escaneo utilizando el protocolo ICMP con el operador -sP de nmap.
$ nmap -sP 192.168.0.*
- Escaneo de servicios: Esta otra tipología de escaneo, tiene como objetivo obtener información sobre los servicios específicos, versiones y tecnología de los mismos que se encuentran habilitados en cada activo que se encuentre dentro del alcance de las pruebas.
Una vez tenemos recopiladas las direcciones IP de los host que se encuentran en el alcance de las pruebas, el siguiente paso es poder comprobar los servicios que se encuentra prestando cada equipo, el puerto TCP o UDP en el que se encuentra activo cada servicio así como la versión de los mismos.
A continuación, se introducen varias herramientas de escaneo de servicios así como su uso básico y que tipo de información son capaces de obtener.
- nc (netcat)
También conocido como netcat, nc es una herramienta de red que permite, a través de intérprete de comandos y con una sintaxis sencilla, abrir puertos TCP/UDP en un HOST (quedando netcat a la escucha), asociar una shell a un puerto en concreto (para conectarse por ejemplo a MS-DOS o al intérprete bash de Linux remotamente) y forzar conexiones UDP/TCP (útil por ejemplo para realizar rastreos de puertos o realizar transferencias de archivos bit a bit entre dos equipos). Posteriormente fue portada a Windows y Mac OS X entre otras plataformas.
Para poder realizar la conexión simplemente habrá que indicar la dirección IP y el puerto al que se ha de conectar.
$ nc dirección_ip puerto
Una vez realizada la conexión, si queremos que el servidor devuelva el banner del servicio habrá que transmitir datos con la conexión establecida.
En caso de no especificar ninguna opción la comunicación se establecerá mediante el protocolo de transporte TCP. En caso de querer realizar la comunicación sobre un puerto UDP, habrá que especificar el operador -u.
$ nc -u dirección_ip puerto
También se puede indicar un rango de puertos sobre los que realizar la conexión y nc intentará la conexión a cada puerto mostrando los puertos que se encuentran accesibles.
$ nc -zv dirección_ip pto_inicial – pto_final
- nmap
En este caso se introducirá su uso para el escaneo de servicios. El objetivo es localizar los puertos que se encuentren abiertos en el sistema remoto, ya sea mediante el protocolo TCP o el protocolo UDP, y averiguar el servicio que se encuentra publicado en cada puerto, el software utilizado para proporcionar dicho servicio y su versión.
Para realizar esta tarea se consulta a cada puerto (TCP o UDP) de un determinado rango para comprobar si el puerto se encuentra cerrado, o por el contrario está abierto y con un determinado servicio publicado.
Dado que en la red auditada pueden existir protecciones a nivel de red (como los firewalls) que protegen dichos servicios, se pueden utilizar varias técnicas de escaneo distintas que localizan si un puerto se encuentra abierto. Por ejemplo, en el protocolo TCP se puede abusar del mecanismo “three way handshake” necesario para establecer la comunicación.
$ nmap -Pn [IP/rango] –p [puerto/rango] -sT
Además de averiguar si un puerto determinado se encuentra abierto en el sistema remoto, también es necesario conocer el servicio concreto que se encuentra activo en ese puerto, así como el software utilizado y la versión del mismo (Por ejemplo Microsoft IIS como servidor web). De esta manera podremos tener una visión más exhaustiva de los servicios que operan en cada sistema remoto y hacernos una idea de la función de dicho equipo en la infraestructura. Por otro lado, conocer el tipo y versión del software nos ayuda a localizar vulnerabilidades en el sistema remoto que se produzcan en la versión concreta del software utilizado.
Para poder localizar el tipo y versión del software de un determinado servicio se utiliza la técnica de “banner grabbing”. Esta técnica se basa en observar la información devuelta por cada aplicación remota al establecer una comunicación activa. La mayoría de servicios en su configuración predeterminada muestran, como mínimo, el tipo y la versión del software en ejecución. Para poder ejecutar esta técnica a través de la herramienta nmap se ha de realizar un escaneo TCP (Full scan o Stealth scan) o UDP y añadir el operador -sV (Service Version) para que nmap solicite el banner del servicio, lo compruebe en su base de datos y nos diga el software utilizado y su versión exacta (en ocasiones versión aproximada)
El comando de nmap utilizado para realizar la técnica es el siguiente:
$ nmap [IP/rango] –p [puerto/rango] -sV
Por otro lado, 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, limitados a ciertos servicios.
El comando de nmap utilizado para invocar todos los scripts englobados en la categoría versión es el siguiente:
$ nmap [IP/rango] –p [puerto/rango] --script “version”
Otro operador alternativo a –sV y más completo, es el operador -A, que además de realizar un descubrimiento de las versiones del servicio, también realiza detección del Sistema Operativo realiza un traceroute a la máquina y lanza scripts de recopilación de información más específicos por cada puerto abierto.
El comando de nmap utilizado para realizar la técnica es el siguiente:
$ nmap [IP/rango] –p [puerto/rango] -A
Dado que en la red auditada pueden existir protecciones a nivel de red (como los firewalls) que protejan dichos servicios, se pueden utilizar varias técnicas de escaneo distintas que localizan si un puerto se encuentra abierto. Por ejemplo, en el protocolo TCP se puede abusar del mecanismo “three way handshake” necesario para establecer la comunicación.
A continuación, se enumeran las distintas técnicas disponibles para el escaneo de puertos utilizando la herramienta nmap.
- Se recibe SYN/ACK: El puerto se encuentra abierto.
- Se recibe RST: El puerto se encuentra cerrado.
El comando de nmap utilizado para realizar la técnica es el siguiente:
$ nmap –sT [IP/rango] –p [puerto/rango]
- Se recibe SYN/ACK: El puerto se encuentra abierto.
- Se recibe RST: El puerto se encuentra cerrado.
- Sin respuesta o error ICMP no alcanzable: El puerto se encuentra filtrado.
El comando de nmap utilizado para realizar la técnica es el siguiente:
$ nmap –sS [IP/rango] –p [puerto/rango]
- Se recibe RST: El puerto se encuentra abierto.
- Sin respuesta: El puerto se encuentra cerrado.
El comando de nmap utilizado para realizar la técnica es el siguiente:
$ nmap –sF [IP/rango] –p [puerto/rango]
Por contrapartida, esta técnica sólo funciona en sistemas remotos UNIX. Dependiendo de la respuesta recibida por el puerto remoto determinamos si se encuentra abierto o cerrado:
- Se recibe RST: El puerto se encuentra cerrado.
- Sin respuesta: El puerto se encuentra abierto.
El comando de nmap utilizado para realizar la técnica es el siguiente:
$ nmap –sX [IP/rango] –p [puerto/rango]
- Se recibe RST: El puerto se encuentra abierto.
- Sin respuesta: El puerto se encuentra cerrado.
El comando de nmap utilizado para realizar la técnica es el siguiente:
$ nmap –sN [IP/rango] –p [puerto/rango]
- Se recibe Error ICMP no alcanzable (tipo 3 código 3): El puerto se encuentra cerrado.
- Se recibe Error ICMP (tipo 3 código 1, 2, 9, 10 o 13): El puerto se encuentra filtrado.
- Sin respuesta: El puerto se encuentra abierto o filtrado.
- Escaneo de vulnerabilidades: Una vez se han realizado los otros dos tipos de escaneos, y se tiene más información de sobre la infraestructura y los servicios que sustenta, se comprueba si existe algún tipo de vulnerabilidad en base al tipo de servicio y la versión del mismo. También se buscan posibles vulnerabilidades que pudieran estar presentes debido a defectos en el diseño o en la configuración aplicada.
Después de haber localizado los servicios expuestos en los sistemas remotos, el software y la versión exacta de los mismos, es posible hacer una búsqueda para localizar posibles vulnerabilidades que se encontrasen presentes en esas versiones concretas.
Además del uso de otras técnicas y herramientas, se puede utilizar la herramienta nmap para realizar un escaneo de vulnerabilidades. Para realizar esta tarea, nmap se apoya en los scripts de la categoría "vuln" que disponga.
$ nmap 192.168.1.1 –sV --script vuln
Una vez instalado se invoca como un script de nmap
$ nmap 192.168.1.1 –sV --script vulscan/vulscan.nse
- Escaneo manual: El auditor se apoya en ciertas herramientas que le facilitan la tarea de escaneo, puede utilizar herramientas específicas para cada tipo de escaneo, e incluso combinar varias para obtener resultados más precisos.
- Escaneo automático: El auditor delega las labores de escaneo a herramientas automáticas que serán las encargadas de adaptar sus pruebas al tipo de escaneo a realizar y a la infraestructura objetivo. Son muy utilizados en alcances muy extensos en los que prima tener una “foto rápida” de la infraestructura, pero se recomienda complementarlos con escaneos manuales para tener unos resultados más elaborados y acordes con la realidad.
- Common Vulnerabilities and Exposures (CVE): Portal del organismo Mitre que recopila todas las vulnerabilidades comunicadas y que son vulnerabilidades catalogadas como públicas. No incluye exploits ni pruebas de concepto a vulnerabilidades.
- vulners: Portal parecido al anterior, pero en este caso de una organización privada, se recopilan vulnerabilidades conocidas pero no se ofrece el exploit ni la prueba de concepto que explota la vulnerabilidad. Se puede acceder de manera gratuita a la consulta de vulnerabilidades.
- exploit-db: Mantenida por otra organización privada, gestiona una base de datos con vulnerabilidades y sus correspondientes exploits, o pruebas de concepto, para aprovecharse de la vulnerabilidad en el sistema remoto.
- testssl: Herramienta utilizada para localizar vulnerabilidades conocidas en los protocolos SSL o TLS, la implementación de los mismos, vulnerabilidades relacionadas con el certificado utilizado o los algoritmos criptográficos utilizados.
- CMSMap: Escáner “open source” desarrollado en Python que localiza vulnerabilidades en los CMS (sistema de gestión de contenidos) más populares como son Wordpress, Joomla, Drupal y Moodle.
- JoomScan: Escáner “open source” desarrollado en perl y perteneciente al proyecto OWASP. Localiza vulnerabilidades de versión y defectos en la configuración de portales basados en el framework Joomla.
- Wpscan: Escáner “open source” desarrollado en Ruby. Localiza vulnerabilidades de versión y defectos en la configuración de portales basados en el framework WordPress.
- Nessus: Es la aplicación de escaneo de vulnerabilidades más conocida y utilizada. Esta herramienta realiza los tres tipos de escaneos (escaneo de red, escaneo de servicios/versiones y escaneo de vulnerabilidades). Además los realiza de una manera totalmente desatendida, el auditor únicamente ha de configurar los objetivos de las pruebas y las pruebas que se realizarán. Existen dos versiones de la herramienta:
- Nessus Home: Válido únicamente para entorno personal, no se pueden escanear más de 16 host a la vez, no dispone de soporte de la herramienta ni acceso a los módulos de compliance.
- Nessus Profesional: 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.
- OpenVAS/GVM: Es un scanner de vulnerabilidades de seguridad parecido a nessus, también realiza los tres tipos de escaneo de manera desatendida. El auditor únicamente ha de configurar los objetivos y las pruebas a realizar. A diferencia de nessus es una herramienta “opensource” sin ningún tipo de limitación. Por contrapartida, dado que los plugins que realizan la comprobación de las vulnerabilidades son mantenidos por la comunidad, el resultado de las pruebas suele ser menos efectivo. A partir de 2017 el framework de OpenVAS pasa a denominarse Greenbone Vulnerability Management (GVM). Con este cambio Greenbone pasa a disponer también de productos de pago como appliances o posibilidad de utilizar el escáner en cloud.
- TTL 64: Generalmente indica sistemas basados en Linux, macOS, FreeBSD o Android.
- TTL 128: Es el valor estándar para sistemas Windows (como Windows 10 u 11).
- TTL 255: Común en dispositivos de red como Routers Cisco, switches o sistemas Solaris/AIX.