
Herramienta de huellas digitales de servicios de red de Microsoft
Versión: 1.0
Autor: Laurent Gaffie
Empresa: Secorizon
MSFinger es una herramienta de identificación de red de alto rendimiento diseñada para el reconocimiento de redes internas. Identifica rápidamente servicios de Microsoft, detecta configuraciones de seguridad y resalta posibles vulnerabilidades en los protocolos SMB, LDAP y LDAPS.
Características Clave:
MSFinger está escrito en Python puro. No se requieren dependencias adicionales más allá de Python 3.6+.
cd /path/to/MSFinger
chmod +x MSFinger.py
python3 MSFinger.py -i <target> [options]
| Opción | Descripción | Predeterminado |
|---|---|---|
-i, --ip | IP objetivo, rango CIDR o rango de IP | Requerido* |
-f, --file | Archivo que contiene objetivos (uno por línea) | Requerido* |
-t, --timeout | Tiempo de espera de conexión en segundos | 1.0 |
-w, --workers | Número de trabajadores concurrentes | 100 |
-d, --database | Archivo de base de datos SQLite para resultados | MSFinger.db |
--no-color | Deshabilitar salida coloreada | Deshabilitado |
* Se debe especificar -i o -f
python3 MSFinger.py -i 192.168.1.10
python3 MSFinger.py -i 192.168.1.0/24
python3 MSFinger.py -i 192.168.1.1-50
python3 MSFinger.py -f targets.txt
Ejemplo targets.txt:
192.168.1.0/24
10.0.0.1-100
172.16.5.50
# Comments are supported
192.168.2.0/25
# Escaneo más rápido con tiempo de espera más corto y más trabajadores
python3 MSFinger.py -i 10.0.0.0/16 -t 0.3 -w 200
# Escaneo más confiable con tiempo de espera más largo
python3 MSFinger.py -i 192.168.1.0/24 -t 1.0 -w 50
python3 MSFinger.py -i 192.168.1.0/24 -d pentest_2026.db
python3 MSFinger.py -i 192.168.1.0/24 --no-color > scan_results.txt
Los resultados se muestran en tiempo real con indicadores de seguridad codificados por colores:
[192.168.1.10] SMB: 3.1.1, Signing: required, OS: Windows Server 2022 21H2, Domain: CORP.LOCAL, Boot: 2026-01-01 10:30:15 | SMB1: disabled | Services: RDP, LDAP (signing: required), LDAPS (signing: required, channel binding: required)
Información SMB:
SMB: X.X.X - versión del dialecto SMB (2.0.2, 2.1, 3.0, 3.0.2, 3.1.1)Signing: <status> - firma: requerida/habilitada/deshabilitadaOS: <version> - versión de Windows con número de compilaciónDomain: <name> - nombre del dominio/grupo de trabajo NetBIOSBoot: <time> - hora de arranque del sistema (o Deshabilitado/Desconocido)Estado de SMB1:
SMB1: disabled - SMB1 no soportado (seguro)SMB1: supported, Signing: <status> - SMB1 habilitado (riesgo potencial)Servicios:
RDP - Protocolo de Escritorio Remoto (puerto 3389) abiertoMSSQL - Microsoft SQL Server (puerto 1433) abiertoLDAP (signing: <status>) - LDAP en el puerto 389LDAPS (signing: <status>, channel binding: <status>) - LDAPS en el puerto 636LDAPS (port open, <error>) - Puerto LDAPS respondiendo pero el handshake SSL fallóMSFinger almacena todos los resultados de escaneo en una base de datos SQLite para almacenamiento y análisis persistentes.
hosts| Columna | Tipo | Descripción |
|---|---|---|
id | INTEGER | Clave primaria (auto-incremento) |
ip | TEXT | Dirección IP (única) |
hostname | TEXT | Nombre de host (reservado para uso futuro) |
os_version | TEXT | Versión del sistema operativo |
os_build | INTEGER | Número de compilación del SO |
domain | TEXT | Nombre del dominio/grupo de trabajo |
boot_time | TEXT | Marca de tiempo de arranque del sistema |
smb_dialect | TEXT | Versión del protocolo SMB |
smb_signing | TEXT | Estado de firma SMB |
smb1_supported | INTEGER | SMB1 habilitado (0=no, 1=sí) |
smb1_signing | TEXT | Estado de firma SMB1 |
rdp_open | INTEGER | Puerto RDP abierto (0=no, 1=sí) |
mssql_open | INTEGER | Puerto MSSQL abierto (0=no, 1=sí) |
ldap_signing | TEXT | Estado de firma LDAP |
ldaps_signing | TEXT | Estado de firma LDAPS |
ldaps_channel_binding | TEXT | Estado de enlace de canal LDAPS |
ldaps_error | TEXT | Error de conexión LDAPS (si lo hay) |
scan_time | TIMESTAMP | Marca de tiempo del primer escaneo |
last_seen | TIMESTAMP | Marca de tiempo del escaneo más reciente |
# Ver todos los hosts vulnerables (sin firma SMB)
sqlite3 MSFinger.db "SELECT ip, os_version, smb_signing FROM hosts WHERE smb_signing != 'required'"
# Buscar hosts con firma LDAP deshabilitada
sqlite3 MSFinger.db "SELECT ip, domain, ldap_signing FROM hosts WHERE ldap_signing = 'not_required'"
# Listar todos los hosts de Windows Server 2022
sqlite3 MSFinger.db "SELECT ip, os_version, domain FROM hosts WHERE os_version LIKE '%Server 2022%'"
# Exportar a CSV
sqlite3 -header -csv MSFinger.db "SELECT * FROM hosts" > results.csv
# Contar hosts por SO
sqlite3 MSFinger.db "SELECT os_version, COUNT(*) FROM hosts GROUP BY os_version"
Protocolos Probados:
Información Recopilada:
required - El servidor requiere firma de mensajes (seguro)enabled - El servidor soporta pero no requiere firmadisabled - No soporte de firma (vulnerable)Mapeo de Versiones del SO:
| Rango de Compilación | Sistema Operativo |
|---|---|
| 10240 | Windows 10 1507 |
| 14393 | Windows 10 1607 / Server 2016 |
| 17763 | Windows 10 1809 / Server 2019 |
| 19041-19045 | Windows 10 20H2 - 22H2 |
| 20348 | Windows Server 2022 21H2 |
| 22000+ | Windows 11 |
| 25398 | Windows Server 2025 |
Prueba el enlace anónimo para determinar los requisitos de firma: