Hemos estado observando en nuestros laboratorios el uso de la herramienta Nmap. A partir de este análisis se puede comprender un poco su funcionamiento al momento de realizar un escaneo de puertos a través de la utilización de algunos de sus modificadores.
Primero localizamos el archivo /usr/local/share/nmap/nmap-service-probe, en donde se encuentra el fingerprint de cada banner (mensaje) con su particular descripción.
Nmap verifica los banners contra esta base de datos. Analicemos la siguiente línea:
match adabas-d m|^Adabas D Remote Control Server Version ([d.]+) Date [d-]+ (key is [0-9a-f]+)rnOK> | p/Adabas D database remote control/ v/$1/
La expresión, que utiliza una sintaxis similar a la de Perl, hace uso del token match para definir una búsqueda. Luego viene la definición del nombre del servicio, adabas-d (es lo que nos permite ver por ejemplo que se trata de un puerto 21, FTP, de un servicio) y después la parte más importante; una expresión regular definida entre dos pipes “|” contra la que se va a verificar el banner del servicio. En caso de que exista una coincidencia en la comparación, se utiliza “p” para hacer una descripción del servicio y el nombre del demonio que corre. A su vez, “v” brinda la versión correspondiente.
Dado que esta sintaxis soporta backreferences entonces se utiliza “$1” para extraer información de los paréntesis de la expresión regular. En este caso, ese “$1” es el primer paréntesis luego de la palabra Version, es decir, hace referencia a “d”. Un eventual “$2” utilizaría el backreference para llamar al siguiente valor, que en la expresión regular corresponde a la fecha.
Ahora, veremos una prueba simulando tener un pequeño servidor FTP:
Para eso dejamos el puerto 80, por ejemplo, a la escucha e imprimimos un mensaje cuando se establezca la conexión. Utilizando unix2dos se puede obtener el “rn”, en caso contrario un salto de línea solo seria “n”. Además, haremos el duplicado del banner del FileZilla.
Ejecutamos el nmap para realizar un escaneo al supuesto servidor FTP. Utilizando el modificador “-sV” nos aparece la versión de los servicios que se están utilizando. Como pueden ver en rojo aparece la identificación del host y en amarillo el sistema operativo que utiliza. Dado que ese servicio corre bajo Windows, el nmap asume que está bajo esa plataforma. Del otro lado, sin embargo, hay una versión de Debian.
Esto muestra que se podrían manipular los banners que utilizan los servicios para realizar una “ofuscación” de los mismos frente a un eventual análisis de nmap, ya que esta herramienta puede ser útil para auditorías de seguridad. Por lo tanto, esta medida podría ser un complemento interesante a tener en cuenta al momento de lidiar con los servicios del sistema, de modo que el análisis por parte del atacante tenga que ser aún más detallado para poder identificar los componentes que integran la infraestructura de la red.
Javier Aguinaga - Analista de Malware
Raphael Labaca Castro - Especialista en Awareness & Research