
Asset-Erkennungs- und Identifizierungswerkzeuge Schnelle Identifizierung von Web-Fingerabdrücken, Lokalisierung von Asset-Typen. Unterstützt das Red Team bei der schnellen Lokalisierung von Zielasset-Informationen und das Blue Team bei der Erkennung vermuteter Schwachstellen.
[中文 Readme]
Dismap positioniert sich als Asset- Erkennungs- und Identifikationstool. Es kann schnell Protokolle und Fingerabdruckinformationen wie Web/TCP/UDP identifizieren, Asset-Typen lokalisieren und ist für interne und externe Netzwerke geeignet. Es unterstützt Red-Team-Mitarbeiter dabei, potenzielle Risiko-Asset-Informationen schnell zu lokalisieren, und hilft Blue-Team-Mitarbeitern, vermutete gefährdete Assets zu erkennen.
Dismap verfügt über eine vollständige Fingerabdruck-Regelbasis, die derzeit TCP/UDP/TLS-Protokoll-Fingerabdrücke und 4500+ Web-Fingerabdruck-Regeln umfasst, die Favicon, Body, Header usw. identifizieren können. Die Einführung in die Regelbasis befindet sich unter RuleLab
Scanergebnisse können direkt an vulmap(>=0.8) zur Schwachstellenscans gesendet werden. In Version 0.3 wurde das Textresultat geändert, das JSON-Dateiergebnis wurde hinzugefügt, und vulmap wird die Verknüpfung in >= 1.0 unterstützen.
Dismap ist eine Binärdatei für Linux, macOS und Windows. Gehe zu Release, um die entsprechende Version herunterzuladen und auszuführen:
# Linux or MacOS
zhzyker@debian:~$ chmod +x dismap-0.3-linux-amd64
zhzyker@debian:~$ ./dismap-0.3-linux-amd64 -h
# Windows
C:\Users\zhzyker\Desktop> dismap-0.3-windows-amd64.exe -h
-f, --file string Ziel aus der angegebenen Datei für die Batch-Erkennung parsen
-h, --help Hilfe anzeigen
-i, --ip string Netzwerksegment [z.B. -i 192.168.1.0/24 oder -i 192.168.1.1-10]
-j, --json string Scanergebnis im JSON-Format [z.B. -j r.json]
-l, --level int Log-Level angeben (0:Fatal 1:Error 2:Info 3:Warning 4:Debug 5:Verbose) (Standard 3)
-m, --mode string Protokoll angeben [z.B. -m mysql/-m http]
--nc Keine Zeichenfarben ausgeben
--np ICMP/PING nicht verwenden, um aktive Hosts zu erkennen
-o, --output string Scanergebnisse in der angegebenen Datei speichern (Standard "output.txt")
-p, --port string Benutzerdefinierte Scan-Ports [z.B. -p 80,443 oder -p 1-65535]
--proxy string Proxy-Scan verwenden, unterstützt HTTP/SOCKS5-Protokoll [z.B. --proxy socks5://127.0.0.1:1080]
-t, --thread int Anzahl der gleichzeitigen Threads (Standard 500)
--timeout int Antwort-Timeout in Sekunden, Standard ist 5 Sekunden (Standard 5)
--type string Typ angeben [z.B. --type tcp/--type udp]
-u, --uri string Eine Ziel-URI angeben [z.B. -u https://example.com]
zhzyker@debian:~$ ./dismap -i 192.168.1.1/24
zhzyker@debian:~$ ./dismap -i 192.168.1.1/24 -o result.txt -j result.json
zhzyker@debian:~$ ./dismap -i 192.168.1.1/24 --np --timeout 10
zhzyker@debian:~$ ./dismap -i 192.168.1.1/24 -t 1000
zhzyker@debian:~$ ./dismap -u https://github.com/zhzyker/dismap
zhzyker@debian:~$ ./dismap -u mysql://192.168.1.1:3306
zhzyker@debian:~$ ./dismap -i 192.168.1.1/24 -p 1-65535
Die gesamte Regelbasis ist ein Struct in rule.go Ungefähres Format:
Rule:
Name: name /* Definiert den Regelnamen */
Type: header|body|ico /* Unterstützte Erkennungstypen, header, body, ico können beliebig logisch kombiniert werden, ico fordert favicon.ico separat an und berechnet MD5 */
Mode: and|or /* Typ-Logik */
Rule
InBody: str /* Gibt an, ob ein bestimmter str im Antwortbody vorhanden ist */
InHeader: str /* Gibt an, ob ein bestimmter str im Antwort-Header vorhanden ist */
InIcoMd5: str_md5 /* MD5 von favicon.ico */
Http:
ReqMethod: GET|POST /* Benutzerdefinierte Anforderungsmethode, derzeit GET und POST unterstützt */
ReqPath: str /* Benutzerdefinierter Web-Pfad */
ReqHeader: []str /* Benutzerdefinierter Http-Anforderungs-Header */
ReqBody: str /* Benutzerdefinierter Body der POST-Anforderung */
Beispiel1:
Ob das Zeichen <flink-root></flink-root> im Antwortbody vorhanden ist
{"Apahce Flink", "body", "", InStr{"(<flink-root></flink-root>)", "", ""}, ReqHttp{"", "", nil, ""}},
Beispiel2:
Den Anforderungspfad /myportal/control/main anpassen und bestimmen, ob Header-Zeichen und Body-Zeichen im Ergebnis der angepassten Anforderung vorhanden sind
Es zeigt sich, dass alle reguläre Ausdrücke unterstützen.
{"Apache OFBiz", "body|header", "or", InStr{"(Apache OFBiz|apache.ofbiz)", "(Set-Cookie: OFBiz.Visitor=(.*))", ""}, ReqHttp{"GET", "/myportal/control/main", nil, ""}},
Die logische Beziehung von Header, Body, ICO kann beliebig kombiniert werden, darf aber nicht wiederholt kombiniert werden:
Kann: "body|header|ico", "or" oder "body|header|ico", "or|and" oder "body|ico", "and"
Nicht möglich: "body|body", "or"
Wiederholte Kombination ist nicht erlaubt, um durch Typ angegeben zu werden, kann aber durch InBody erreicht werden, um das Zeichen zu bestimmen: "body", "", InStr{"(str1|str2)"}