Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
mitmengine — Ein MITM (monster-in-the-middle) Erkennungstool. Wird verwendet, um MALCOLM zu erstellen: | Kitploit
Tools/GitHubGitHub/cloudflare/mitmengine
DefensivwerkzeugeNetzwerksicherheitBedrohungsanalyseIncident ResponseArchived
GitHubcloudflare/mitmengine

mitmengine

Ein MITM (monster-in-the-middle) Erkennungstool. Wird verwendet, um MALCOLM zu erstellen:

Repository anzeigen
81368vor 2 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Webseite

MITMEngine

Build Status

HINWEIS ZUR EINSTELLUNG: Diese Software wird nicht mehr gewartet.

Ziel dieses Projekts ist es, eine genaue Erkennung von HTTPS-Abfangen und robustes TLS-Fingerprinting zu ermöglichen. Dieses Projekt basiert auf The Security Impact of HTTPS Interception und begann als Portierung der Verarbeitungsskripte und Fingerabdrücke nach Go.

Weitere Hintergrundinformationen zu MITMEngine finden Sie in diesem Cloudflare-Blogbeitrag. Schnelllinks:

  • Signaturen und Fingerabdrücke: Kerndefinitionen
  • MITM-Erkennungsmethodik
  • API
  • Beispielnutzung
  • Erstellung und Tests
  • So können Sie beitragen
  • mergeDB-Dienstprogramm

Anforderungen

  • Go
  • Wireshark 3.0.0 (überprüfen mit wireshark -v)

Dokumentation

Ausführliche Dokumentation befindet sich im Code (Paket zuerst nach $(GOPATH)/src/github.com/cloudflare/mitmengine kopieren).

root@kitploit:~
godoc -http=:6060

http://localhost:6060/pkg/github.com/cloudflare/mitmengine

Signaturen und Fingerabdrücke

In diesem Projekt bilden Fingerabdrücke konkrete Instanziierungen eines Objekts ab, während Signaturen mehrere Objekte repräsentieren können. Diese Konvention wird verwendet, da ein Fingerabdruck normalerweise eine inhärente Eigenschaft eines Objekts ist, während eine Signatur gewählt werden kann. Analog dazu hätte eine tatsächliche Client-Anfrage, die von einem Server gesehen wird, einen Fingerabdruck, während die Software, die die Anfrage generiert, ihre eigene Signatur wählen kann (z. B. durch die Auswahl der unterstützten Cipher Suites).

Client-Anfrage

Ein Client-Anfrage-Fingerabdruck wird aus einer Client-Anfrage an einen Server abgeleitet und enthält sowohl TLS- als auch HTTP-Merkmale. Eine Client-Anfrage-Signatur repräsentiert alle möglichen Fingerabdrücke, die eine Software generieren kann. Ziel ist es, jede Signatur so spezifisch zu machen, dass sie eine Software eindeutig identifizieren kann.

User Agent

Eine User-Agent-Signatur repräsentiert eine Menge von User Agents, die von einem Browser generiert werden. Eine User-Agent-Signatur für einen Browser erlaubt einen Bereich von Browserversionen und kann den Betriebssystemnamen, die Betriebssystemplattform, die Betriebssystemversionsspanne und den Gerätetyp für detailliertere Signaturen angeben.

Browser

Eine Browser-Signatur enthält sowohl eine User-Agent-Signatur als auch eine Client-Anfrage-Signatur. Dies ermöglicht es einer Signatur, alle möglichen Fingerabdrücke darzustellen, die beispielsweise von Chrome 31-38 unter Windows 10 generiert werden.

MITM

Eine MITM-Signatur enthält eine Client-Anfrage-Signatur sowie zusätzliche Details zur MITM-Software, einschließlich einer Sicherheitsbewertung, die durch Faktoren außerhalb der Client-Anfrage beeinflusst werden kann, wie z. B. ob die Software Zertifikate validiert.

MITM-Erkennungsmethodik

Wir betrachten eine HTTPS-Verbindung als abgefangen, wenn eine Diskrepanz zwischen der erwarteten Client-Anfrage-Signatur (die dem durch den User Agent identifizierten Browser entspricht) und dem tatsächlichen Client-Anfrage-Fingerabdruck der Anfrage besteht.

Falschpositive

Wenn eine Signatur für eine bestimmte Clientsoftware ungenau oder veraltet ist, kann es vorkommen, dass die Signatur fälschlicherweise eine Verbindung als abgefangen einstuft.

Falschnegative

Wenn ein Proxy die Anfrage des Clients sehr genau nachahmt, wird möglicherweise keine Diskrepanz erkannt. Wenn die Browser-Signaturen zu breit gefasst sind, gelingt die Erkennung von Abfangen ebenfalls nicht.

Produktionsfingerabdrücke

Die Referenz-Fingerabdrücke für Browser und MITM-Software, die in MALCOLM verwendet werden, befinden sich in reference_fingerprints/mitmengine/. Dieser Satz von Fingerabdrücken ist eine Kombination aus den TLS-Client-Hello-pcaps in reference_fingerprints/pcaps/ sowie den Top-500-User-Agent-/TLS-Client-Hello-Paaren, die im Netzwerk von Cloudflare beobachtet und mit einer hohen Vertrauenswürdigkeit bewertet wurden (d. h. Verkehr, der menschlichen und freundlichen Bot-Aktivitäten entspricht).

Idealerweise müssten wir uns nicht auf Referenzfingerabdrücke stützen, die aus Cloudflares Netzwerk stammen; stattdessen hätten wir einen umfassenden Satz von pcaps, um unseren Satz von Referenz-TLS-Client-Hellos aufzubauen. Interessiert daran, uns beim Aufbau unseres Datensatzes zu helfen? Erfahren Sie, wie Sie beitragen können!

API

Zunächst muss ein Benutzer eine mitmengine.Config-Struktur erstellen, um sie an mitmengine.NewProcessor zu übergeben. Eine mitmengine.Config-Struktur kann Dateinamen von Dateien angeben, die Browser-Fingerabdrücke, MITM-Fingerabdrücke und MITM-Header enthalten. Alternativ kann sie auch eine Konfigurationsdatei zum Lesen der zuvor genannten Dateien aus einer anderen Quelle angeben; derzeit unterstützt MITMEngine das Lesen dieser Dateien aus Amazon S3-kompatiblen Datenbanken (einschließlich Amazon S3 und Ceph). Zusätzliche Dateileser für Datenbanken (die wir „Loader“ nennen) können im Paket loaders definiert werden, und solange neue Loader das Loader-Interface implementieren, sollten sie ohne weitere Anpassungen mit dem Rest von MITMEngine funktionieren.

Der vorgesehene Einstiegspunkt in das MITMEngine-Paket ist die Funktion Processor.Check, die einen User Agent und einen Client-Anfrage-Fingerabdruck entgegennimmt und einen MITM-Erkennungsbericht zurückgibt. Zukünftig werden weitere API-Funktionen hinzugefügt, um beispielsweise das Hinzufügen neuer Signaturen zu einem laufenden Prozess zu ermöglichen.

Beispielnutzung

Ein Beispiel für die Nutzung der API finden Sie unten. Eine vollständigere Anwendung ist unter cmd/demo/main.go verfügbar und kann durch Ausführen von make bin/demo erstellt werden.

root@kitploit:~
rawUa := "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36"
requestFingerprintString := "303:dada,1301,1302,1303,c02b,c02f,c02c,c030,cca9,cca8,c013,c014,9c,9d,2f,35,a:aaaa,0,17,ff01,a,b,23,10,5,d,12,33,2d,2b,1b,dada,15:9a9a,1d,17,18:0::"
uaFingerprintString := "1:72.0.3626:2:3:10.14.3:1:"
requestFingerprint, _ := fp.NewRequestFingerprint(requestFingerprintString)
uaFingerprint, _ := fp.NewUAFingerprint(uaFingerprintString)
report := mitmProcessor.Check(uaFingerprint, rawUa, requestFingerprint)

Der TLS-requestFingerprintString hat das folgende Format:

root@kitploit:~
<tls_version>:<cipher_suites>:<extension_names>:<curves>:<ec_point_fmts>:<http_headers>:<quirks>

Der uaFingerprint hat das folgende Format:

root@kitploit:~
# <browser_name>:<browser_version>:<os_platform>:<os_name>:<os_version>:<device_type>:<quirks>

Ein Beispiel zum Parsen von User Agents in das Format für uaFingerprint finden Sie in der Datei cmd/demo/main.go.

Erstellung und Tests

Um MITMEngine zu verwenden, denken Sie daran, die Abhängigkeiten einzubinden. Sie sollten vor dem Ausführen von Tests für MITMEngine wahrscheinlich Vendoring oder gomod-Logik ausführen.

Zum Testen führen Sie make test aus, und zur Ansicht der Codeabdeckung führen Sie make cover aus.

So können Sie beitragen

Da Browser- und MITM-Fingerabdrücke schnell veralten, sind wir aktiv auf der Suche nach neuen Beispielen zur Aktualisierung des Fingerabdruck-Repositoriums.

Durch das Beitragen eines Fingerabdruck-Beispiels (das „Sample“) gewähren Sie (in eigenem Namen oder im Namen der Organisation, die Sie vertreten oder von der Sie gesponsert werden (falls vorhanden)) Cloudflare, Inc. und seinen Tochtergesellschaften und verbundenen Unternehmen eine unbefristete, unwiderrufliche, nicht exklusive, gebührenfreie, weltweite Lizenz unter allen geistigen Eigentumsrechten an dem Sample, um: (1) das Sample zu kopieren, zu veröffentlichen, anzuzeigen und zu verbreiten; und (2) abgeleitete Werke zu erstellen, die auf dem Sample basieren oder Teil davon sind.

Um Fingerabdruck-Beispiele beizutragen, befolgen Sie bitte diese Schritte:

Generieren eines Fingerabdruck-Beispiels

(getestet unter macOS Mojave 10.14.3)

Server-RSA-Zertifikat und Schlüsselpaar erstellen:

root@kitploit:~
openssl req -new -x509 -sha256 -out server.crt -nodes -keyout server.pem -subj /CN=localhost

Server auf Port 4433 starten:

root@kitploit:~
openssl s_server -www -cipher AES256-SHA -key server.pem -cert server.crt

TShark-Aufzeichnung zur Entschlüsselung von HTTP-Headern starten (TShark >= 3.0.0):

root@kitploit:~
tshark -i loopback -o tls.keys_list:"127.0.0.1,4433,http,server.pem" -Tjson -e http.request.line -Y http > header.json

TShark-Aufzeichnung des TLS-Client-Hello starten:

root@kitploit:~
tshark -i loopback -f "tcp port 4433" -w handshake.pcap

https://localhost:4433 vom gewünschten TLS-Client aus aufrufen. Beispiel:

root@kitploit:~
echo -e "GET /test HTTP/1.1\r\nHost:example.com\r\n\r\n" | openssl s_client -connect localhost:4433

Einen Pull-Request einreichen

  • Erzeugen Sie ein Fingerabdruck-Beispiel (header.json, handshake.pcap) wie oben beschrieben und legen Sie es im Verzeichnis reference_fingerprints/pcaps/<desc> ab, wobei <desc> ein eindeutiger und beschreibender Name ist.

  • Fügen Sie eine Zeile zu reference_fingerprints/fingerprint_metadata.jsonl mit den folgenden Feldern hinzu. Anerkannte Optionen für die Felder os, device, platform und browser sind die im Paket uasurfer definierten. Anerkannte Optionen für mitm_fingerprint.type sind unten aufgeführt. Beispiele finden Sie in reference_fingerprints/fingerprint_metadata.jsonl; unbekannte Felder können leer gelassen oder weggelassen werden.

Andere PRs und Feature-Requests sind willkommen!

mergeDB-Dienstprogramm

mergeDB (in cmd/mergedb) ist ein Dienstprogramm zum Zusammenführen ähnlicher TLS-ClientHello-Fingerabdrücke über mehrere nahe beieinander liegende Versionen von Browsern oder MITM-Software hinweg. Verwenden Sie mergeDB, um große Listen von User-Agent-/ClientHello-Fingerabdrücken zu konsolidieren:

root@kitploit:~
go run cmd/mergedb/main.go

Standardmäßig führt mergeDB die Fingerabdrücke im Verzeichnis reference_fingerprints/mitmengine aus.

Tool herunterladen

{ "desc": "<eindeutiger und beschreibender Name für das Sample>", "comment": "<zusätzliche Informationen zum Sample>", "handshake_pcap": "", "header_json": "<(optional) Pfad zur Datei mit der Client-HTTP-Anfrage>", "ua_fingerprint": {"raw_ua": "", "os": "<WindowsPhone|Windows|MacOSX|iOS|Android|...>", "os_version": "..", "device": "<Windows|Mac|Linux|...>", "platform": "<Computer|Tablet|Phone|...>", "browser": "<Chrome|IE|Safari|Firefox|...>", "browser_version": ".."}, "mitm_fingerprint": { "name": "", "type": "<Antivirus|FakeBrowser|Malware|Parental|Proxy>" }}

  • Reichen Sie einen Pull-Request mit den obigen Änderungen ein.