
Herramienta de fingerprinting activo que identifica 16 stacks TCP/IP embebidos en dispositivos de red mediante técnicas de sondeo ICMP, TCP, HTTP, SSH y FTP para evaluación de vulnerabilidades.
La herramienta project-memoria-detector tiene como objetivo determinar si un dispositivo de red objetivo ejecuta una pila TCP/IP incrustada específica.
Actualmente, la herramienta admite huellas digitales para 16 pilas TCP/IP incrustadas (y sus variaciones):
Varias de las pilas anteriores se encontraron vulnerables durante la investigación de Project Memoria.
El script identifica el uso de las 16 pilas TCP/IP en un dispositivo objetivo mediante los siguientes métodos de huellas digitales activas:
Aunque el script ha sido probado en un entorno de laboratorio, no podemos garantizar que su uso sea seguro en todos los dispositivos posibles. Los paquetes ICMP malformados, por ejemplo, podrían bloquear un dispositivo que ejecute una pila diferente. POR LO TANTO, NO RECOMENDAMOS SU USO DIRECTO EN ENTORNOS EN VIVO CON DISPOSITIVOS DE MISIÓN CRÍTICA (COMO HOSPITALES CON DISPOSITIVOS CONECTADOS A PACIENTES O SISTEMAS DE CONTROL INDUSTRIAL DE SEGURIDAD CRÍTICA). Un enfoque ideal es probar los dispositivos en un entorno de laboratorio o durante una ventana de mantenimiento.
Tenga en cuenta que la herramienta solo se ha probado en un entorno de prueba Linux (cualquier distribución moderna de Linux debería funcionar). Se asume que el entorno de prueba utiliza iptables (https://linux.die.net/man/8/iptables) como firewall básico.
La herramienta requiere una versión reciente de Python 3.x (ver https://www.python.org/, versión >= 3.7.7 es preferible), así como Scapy (ver https://scapy.net/, versión >= 2.4.3 es preferible).
Para instalar Scapy junto con Python y para la solución de problemas general, siga la documentación aquí: https://scapy.readthedocs.io/en/latest/installation.html
Si python ya está instalado en su máquina, para instalar las dependencias requeridas puede usar pip y el archivo requirements.txt proporcionado:
$ pip install -r requirements.txt
Como Scapy requiere privilegios de root para ejecutarse, la herramienta debe ejecutarse con sudo, por ejemplo:
$ sudo python project-memoria-detector.py [options]
Para ver las opciones disponibles para ejecutar el script, ejecútelo con la opción -h:
$ python project-memoria-detector.py -h
En general, el script requiere al menos una dirección IP del dispositivo objetivo (este parámetro se puede especificar explícitamente con -ip_dst)
$ sudo python project-memoria-detector.py 192.168.3.1
El script admite el escaneo de rangos de direcciones IP. Puede especificar una subred para escanear usando la notación CIDR, o proporcionar un archivo .txt con un conjunto de direcciones IP para escanear.
La notación CIDR se puede usar de la siguiente manera (para este ejemplo, se escanearán las direcciones IP desde 192.168.3.1 hasta 192.168.3.254):
$ sudo python project-memoria-detector.py 192.168.3.0/24
También puede usar un archivo .txt para especificar las direcciones IP de interés: cada dirección IP en este archivo debe comenzar en una nueva línea. Por ejemplo, podemos crear un archivo llamado input.txt con el siguiente contenido:
$ cat input.txt
192.168.1.8
192.168.1.9
192.168.3.1
192.168.2.14
Luego podemos ejecutar el script de la siguiente manera:
$ sudo python project-memoria-detector.py --in-file input.txt
El script utiliza valores predeterminados para puertos para identificar diferentes protocolos como SSH (22), FTP (21) y HTTP (80). Para sobrescribir estos valores predeterminados, puede hacerlo configurando las banderas de la siguiente manera:
$ sudo python project-memoria-detector.py -ip_dst 192.168.212.42 --tcp-port 80 --http-port 80 --ssh-port 22 --ftp-port 21 -i eth1
El script mostrará las coincidencias con huellas digitales individuales, así como el grado de certeza entre paréntesis redondos:
$ sudo python project-memoria-detector.py 192.168.6.42
192.168.6.42 is alive
ICMP => uIP/Contiki (High)
TCP => uIP/Contiki (Medium)
HTTP => uIP/Contiki (High)
SSH => Unknown (No match)
FTP => Unknown (No reply)
El grado de certeza de una huella digital particular puede ser High, Medium o Low. No match significa que no hubo coincidencia con ninguna huella conocida, y No reply significa que un puerto/servicio específico no está disponible.
Copyright (C) 2020 Forescout Technologies, Inc.
Licencia del Programa
"El Programa" se refiere a cualquier trabajo protegido por derechos de autor licenciado bajo esta Licencia. Cada licenciatario se dirige como "usted".