
Microsoft Netzwerkdienst-Fingerprinting-Tool
Version: 1.0
Author: Laurent Gaffie
Company: Secorizon
MSFinger ist ein leistungsstarkes Netzwerk-Fingerprinting-Tool, das für die interne Netzwerkerkundung entwickelt wurde. Es identifiziert schnell Microsoft-Dienste, erkennt Sicherheitskonfigurationen und hebt potenzielle Schwachstellen in den Protokollen SMB, LDAP und LDAPS hervor.
Hauptfunktionen:
MSFinger ist in reinem Python geschrieben. Es sind keine zusätzlichen Abhängigkeiten über Python 3.6+ hinaus erforderlich.
cd /path/to/MSFinger
chmod +x MSFinger.py
python3 MSFinger.py -i <target> [options]
* Es muss entweder -i oder -f angegeben werden
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
Beispiel targets.txt:
192.168.1.0/24
10.0.0.1-100
172.16.5.50
# Comments are supported
192.168.2.0/25
# Faster scan with shorter timeout and more workers
python3 MSFinger.py -i 10.0.0.0/16 -t 0.3 -w 200
# More reliable scan with longer timeout
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
Ergebnisse werden in Echtzeit mit farbcodierten Sicherheitsindikatoren angezeigt:
[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)
SMB-Informationen:
SMB: X.X.X - SMB-Dialektversion (2.0.2, 2.1, 3.0, 3.0.2, 3.1.1)Signing: <status> - required/enabled/disabledOS: <version> - Windows-Version mit Build-NummerDomain: <name> - NetBIOS-Domain/ArbeitsgruppennameBoot: <time> - System-Startzeit (oder Disabled/Unknown)SMB1-Status:
SMB1: disabled - SMB1 nicht unterstützt (sicher)SMB1: supported, Signing: <status> - SMB1 aktiviert (potenzielles Risiko)Dienste:
RDP - Remote Desktop Protocol (Port 3389) offenMSSQL - Microsoft SQL Server (Port 1433) offenLDAP (signing: <status>) - LDAP auf Port 389LDAPS (signing: <status>, channel binding: <status>) - LDAPS auf Port 636LDAPS (port open, <error>) - LDAPS-Port antwortet, aber SSL-Handshake fehlgeschlagenMSFinger speichert alle Scan-Ergebnisse in einer SQLite-Datenbank zur dauerhaften Speicherung und Analyse.
hosts# View all vulnerable hosts (no SMB signing)
sqlite3 MSFinger.db "SELECT ip, os_version, smb_signing FROM hosts WHERE smb_signing != 'required'"
# Find hosts with LDAP signing disabled
sqlite3 MSFinger.db "SELECT ip, domain, ldap_signing FROM hosts WHERE ldap_signing = 'not_required'"
# List all Windows Server 2022 hosts
sqlite3 MSFinger.db "SELECT ip, os_version, domain FROM hosts WHERE os_version LIKE '%Server 2022%'"
# Export to CSV
sqlite3 -header -csv MSFinger.db "SELECT * FROM hosts" > results.csv
# Count hosts by OS
sqlite3 MSFinger.db "SELECT os_version, COUNT(*) FROM hosts GROUP BY os_version"
Getestete Protokolle:
Gesammelte Informationen:
required - Server erfordert Nachrichtensignierung (sicher)enabled - Server unterstützt, erfordert aber keine Signierungdisabled - Keine Signierungsunterstützung (anfällig)Betriebssystem-Versionszuordnung:
Testet anonyme Bindung, um Signierungsanforderungen zu ermitteln:
Testet SSL/TLS-Verbindung mit LDAP-Bindung:
Mögliche Ergebnisse:
signing: required, channel binding: required - Maximale Sicherheit (sicher)signing: not_required, channel binding: not_required - Keine Schutzmaßnahmen (anfällig)port open, SSL handshake failed - Port antwortet, aber SSL-Verhandlung fehlgeschlagenport open, Connection error: 104 - Verbindung vom Peer zurückgesetztSMB-Signierung deaktiviert:
LDAP-Signierung nicht erforderlich:
LdapEnforceChannelBinding=2 und LDAPServerIntegrity=2 in der RegistrierungLDAPS ohne Kanalbindung:
SMB-Signierung aktiviert (nicht erforderlich):
SMB1 unterstützt:
SMB-Signierung erforderlich:
LDAP/LDAPS-Signierung erforderlich:
Kanalbindung erzwungen:
Jeder Worker verbraucht minimalen Speicher (~1-2 MB). Passen Sie die Worker basierend auf den Systemressourcen an:
# High-performance scan (requires good CPU/RAM)
python3 MSFinger.py -i 10.0.0.0/8 -t 0.5 -w 500
# Conservative scan (low resource usage)
python3 MSFinger.py -i 192.168.0.0/16 -t 2.0 -w 50
Netzwerkkonnektivität prüfen:
ping <target_ip>
telnet <target_ip> 445
Timeout erhöhen:
python3 MSFinger.py -i <target> -t 3.0
Firewall-Regeln prüfen:
"SSL handshake failed" oder "Connection error: 104":
openssl s_client -connect <ip>:636Wenn Sie von mehreren Prozessen aus scannen:
# Use different database files
python3 MSFinger.py -i 192.168.1.0/24 -d scan1.db &
python3 MSFinger.py -i 192.168.2.0/24 -d scan2.db &
Stellen Sie sicher, dass das Skript ausführbar ist:
chmod +x MSFinger.py
Identifizieren Sie zuerst aktive SMB-Hosts, dann einen Fingerprint erstellen:
nmap -p445 --open -oG - 192.168.1.0/24 | awk '/445\/open/{print $2}' > smb_hosts.txt
python3 MSFinger.py -f smb_hosts.txt
Überwachen Sie Netzwerkänderungen mit cron:
# Add to crontab (every day at 2 AM)
0 2 * * * /usr/bin/python3 /path/to/MSFinger.py -i 192.168.1.0/24 -d /var/scans/daily_scan.db
Abfragen und beheben von PowerShell aus:
# Install SQLite PowerShell module
Install-Module -Name SimplySql
# Query vulnerable hosts
Open-SQLiteConnection -DataSource "MSFinger.db"
$vulnerable = Invoke-SqlQuery -Query "SELECT ip FROM hosts WHERE smb_signing != 'required'"
Close-SqlConnection
# Remediate
foreach ($host in $vulnerable) {
Set-SmbServerConfiguration -ComputerName $host.ip -RequireSecuritySignature $true -Force
}
Author: Laurent Gaffie ([email protected])
License: GNU General Public License v3.0
Dieses Programm ist freie Software: Sie können es unter den Bedingungen der GNU General Public License, wie von der Free Software Foundation veröffentlicht, entweder Version 3 der Lizenz oder (nach Ihrer Wahl) jeder späteren Version, weiterverbreiten und/oder modifizieren.
Dieses Programm wird in der Hoffnung verteilt, dass es nützlich sein wird, aber OHNE JEGLICHE GEWÄHRLEISTUNG; ohne die stillschweigende Gewährleistung der MARKTGÄNGIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. Siehe die GNU General Public License für weitere Details.
| Option | Beschreibung | Standard |
|---|
-i, --ip | Ziel-IP, CIDR-Bereich oder IP-Bereich | Erforderlich* |
-f, --file | Datei mit Zielen (eines pro Zeile) | Erforderlich* |
-t, --timeout | Verbindungs-Timeout in Sekunden | 1.0 |
-w, --workers | Anzahl gleichzeitiger Worker | 100 |
-d, --database | SQLite-Datenbankdatei für Ergebnisse | MSFinger.db |
--no-color | Farbige Ausgabe deaktivieren | Deaktiviert |
| Spalte | Typ | Beschreibung |
|---|
id | INTEGER | Primärschlüssel (automatische Erhöhung) |
ip | TEXT | IP-Adresse (eindeutig) |
hostname | TEXT | Hostname (für zukünftige Verwendung reserviert) |
os_version | TEXT | Betriebssystemversion |
os_build | INTEGER | Build-Nummer des Betriebssystems |
domain | TEXT | Domain/Arbeitsgruppenname |
boot_time | TEXT | System-Startzeitstempel |
smb_dialect | TEXT | SMB-Protokollversion |
smb_signing | TEXT | SMB-Signierungsstatus |
smb1_supported | INTEGER | SMB1 aktiviert (0=nein, 1=ja) |
smb1_signing | TEXT | SMB1-Signierungsstatus |
rdp_open | INTEGER | RDP-Port offen (0=nein, 1=ja) |
mssql_open | INTEGER | MSSQL-Port offen (0=nein, 1=ja) |
ldap_signing | TEXT | LDAP-Signierungsstatus |
ldaps_signing | TEXT | LDAPS-Signierungsstatus |
ldaps_channel_binding | TEXT | LDAPS-Kanalbindungsstatus |
ldaps_error | TEXT | LDAPS-Verbindungsfehler (falls vorhanden) |
scan_time | TIMESTAMP | Zeitstempel des ersten Scans |
last_seen | TIMESTAMP | Zeitstempel des letzten Scans |
| Build-Bereich | Betriebssystem |
|---|
| 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 |
| Netzwerktyp | Empfohlenes Timeout | Worker |
|---|
| Fast internal LAN (1Gbps+) | 0.5s | 200-300 |
| Normales internes Netzwerk | 1.0s (Standard) | 100-150 |
| Langsames/drahtloses Netzwerk | 2.0-3.0s | 50-100 |
| VPN-Verbindung | 3.0-5.0s | 30-50 |