Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
mitmengine — Uno strumento di rilevamento MITM (monster-in-the-middle). Utilizzato per costruire MALCOLM: | Kitploit
Strumenti/GitHubGitHub/cloudflare/mitmengine
Strumenti DifensiviSicurezza di ReteThreat IntelligenceRisposta agli IncidentiArchived
GitHubcloudflare/mitmengine

mitmengine

Uno strumento di rilevamento MITM (monster-in-the-middle). Utilizzato per costruire MALCOLM:

Vedi Repository
813682 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Sito web

MITMEngine

Build Status

AVVISO DI DEPRECAZIONE: Questo software non è più mantenuto.

L'obiettivo di questo progetto è consentire un rilevamento accurato dell'intercettazione HTTPS e un robusto fingerprinting TLS. Questo progetto si basa su The Security Impact of HTTPS Interception ed è nato come porting in Go dei loro script di elaborazione e impronte digitali.

Maggiori informazioni su MITMEngine sono disponibili in questo post sul blog di Cloudflare. Collegamenti rapidi:

  • Firme e Impronte Digitali: Definizioni Principali
  • Metodologia di Rilevamento MITM
  • API
  • Esempio di Utilizzo
  • Build e Test
  • Come Contribuire
  • Utilità mergeDB

Requisiti

  • Go
  • Wireshark 3.0.0 (wireshark -v per verificare)

Documentazione

La documentazione dettagliata si trova nel codice (copiare il pacchetto in $(GOPATH)/src/github.com/cloudflare/mitmengine prima).

root@kitploit:~
godoc -http=:6060

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

Firme e Impronte Digitali

In questo progetto, le impronte digitali corrispondono a istanze concrete di un oggetto, mentre le firme possono rappresentare più oggetti. Usiamo questa convenzione perché un'impronta digitale è solitamente una proprietà intrinseca di un oggetto, mentre una firma può essere scelta. Allo stesso modo, una richiesta client reale vista da un server avrebbe un'impronta digitale, mentre il software che genera la richiesta può scegliere la propria firma (ad esempio, scegliendo quali suite di cifratura supporta).

Richiesta Client

Un'impronta digitale di una richiesta client è derivata da una richiesta client a un server e contiene caratteristiche sia TLS che HTTP. Una firma di richiesta client rappresenta tutte le possibili impronte digitali che un software può generare. L'obiettivo è rendere ogni firma sufficientemente specifica da identificare univocamente un software.

User Agent

Una firma User Agent rappresenta un insieme di User Agent generati da un browser. Una firma User Agent per un browser consente un intervallo di versioni del browser e permette di specificare il nome del sistema operativo, la piattaforma del sistema operativo, l'intervallo di versioni del sistema operativo e il tipo di dispositivo per creare firme più granulari.

Browser

Una firma browser contiene sia una firma User Agent sia una firma di richiesta client. Ciò consente a una firma di rappresentare tutte le possibili impronte digitali generate, ad esempio, da Chrome 31-38 su Windows 10.

MITM

Una firma MITM contiene una firma di richiesta client insieme a dettagli aggiuntivi sul software MITM, inclusi un grado di sicurezza che può essere influenzato da fattori esterni alla richiesta client, come se il software convalida o meno i certificati.

Metodologia di Rilevamento MITM

Consideriamo una connessione HTTPS intercettata quando c'è una discrepanza tra la firma di richiesta client attesa corrispondente al browser identificato dallo User Agent e l'impronta digitale effettiva della richiesta client.

Falsi positivi

Se una firma è imprecisa o obsoleta per un determinato software client, è possibile che la firma segnali erroneamente una connessione come intercettata.

Falsi negativi

Se un proxy imita fedelmente la richiesta del client, potremmo non rilevare una discrepanza. Se le firme del browser sono eccessivamente ampie, non riusciremo nemmeno a rilevare l'intercettazione.

Impronte digitali di produzione

Le impronte digitali di riferimento dei browser e del software MITM utilizzate in MALCOLM si trovano in reference_fingerprints/mitmengine/. Questo set di impronte digitali è una combinazione di ciò che viene estratto dai pcaps TLS Client Hello in reference_fingerprints/pcaps/, nonché delle prime 500 coppie User Agent + TLS Client Hello osservate sulla rete di Cloudflare e etichettate con un alto indice di affidabilità (ovvero traffico corrispondente ad attività umana e bot amichevoli).

Idealmente, non dovremmo fare affidamento sulle impronte digitali di riferimento campionate dalla rete di Cloudflare; invece, avremmo un set completo di pcaps per costruire il nostro set di riferimenti di TLS Client Hello. Ti interessa aiutarci a espandere il nostro set di dati? Vedi come puoi contribuire!

API

Innanzitutto, un utente deve creare una struct mitmengine.Config da passare a mitmengine.NewProcessor. Una struct mitmengine.Config può specificare i nomi dei file contenenti le impronte digitali del browser, le impronte digitali MITM e le intestazioni MITM. In alternativa, può anche specificare un file di configurazione per leggere i file menzionati in precedenza da qualsiasi altra fonte; al momento, MITMEngine supporta la lettura di questi file da database compatibili con il client Amazon S3 (inclusi Amazon S3 e Ceph). Ulteriori lettori di file per database (che chiamiamo "loader") possono essere definiti nel pacchetto loaders e, fintanto che i nuovi loader implementano l'interfaccia Loader, dovrebbero funzionare con il resto di MITMEngine senza ulteriori modifiche.

Il punto di ingresso previsto per il pacchetto MITMEngine è attraverso la funzione Processor.Check, che accetta uno User Agent e un'impronta digitale di richiesta client e restituisce un report di rilevamento mitm. Ulteriori funzioni API verranno aggiunte in futuro per consentire, ad esempio, l'aggiunta di nuove firme a un processo in esecuzione.

Esempio di Utilizzo

Di seguito è riportato un esempio di utilizzo dell'API. Un'applicazione più completa è disponibile in cmd/demo/main.go e può essere compilata eseguendo make bin/demo.

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)

La requestFingerprintString TLS ha il seguente formato:

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

La uaFingerprint ha il seguente formato:

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

Un esempio di come analizzare gli User Agent nel formato per uaFingerprint si trova nel file cmd/demo/main.go.

Build e Test

Per utilizzare MITMEngine, ricordati di importare le sue dipendenze. Probabilmente vorrai eseguire la logica di vendoring o gomod prima di eseguire i test su MITMEngine.

Per testare, esegui make test e per vedere la copertura del codice, esegui make cover.

Come Contribuire

Poiché le impronte digitali dei browser e dei mitm diventano rapidamente obsolete, stiamo cercando attivamente di aggiornare il repository di impronte digitali con nuovi campioni.

Contribuendo con un campione di impronta digitale (il "Campione"), tu (per tuo conto o per conto dell'organizzazione che rappresenti o da cui sei sponsorizzato (se del caso)) concedi a Cloudflare, Inc. e alle sue filiali e affiliate una licenza perpetua, irrevocabile, non esclusiva, esente da royalty, mondiale e valida su tutti i diritti di proprietà intellettuale nel Campione, per: (1) copiare, pubblicare, visualizzare e distribuire il Campione; e (2) preparare opere derivate basate sul Campione o che ne facciano parte."

Per contribuire con campioni di impronte digitali, segui questi passaggi:

Genera un campione di impronta digitale

(testato su macOS Mojave 10.14.3)

Crea una coppia di certificato e chiave RSA del server:

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

Avvia il server sulla porta 4433:

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

Avvia la cattura TShark per decrittografare le intestazioni HTTP (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

Avvia la cattura TShark del TLS Client Hello:

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

Visita https://localhost:4433 dal client TLS che desideri fingerprintare. Per esempio,

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

Invia una pull request

  • Genera un campione di impronta digitale (header.json, handshake.pcap) come descritto sopra e posizionalo nella directory reference_fingerprints/pcaps/<desc>, dove <desc> è un nome univoco e descrittivo.

  • Aggiungi una riga a reference_fingerprints/fingerprint_metadata.jsonl con i campi seguenti. Le opzioni riconosciute per i campi os, device, platform e browser sono quelle definite nel pacchetto uasurfer. Le opzioni riconosciute per mitm_fingerprint.type sono elencate di seguito. Vedi reference_fingerprints/fingerprint_metadata.jsonl per esempi; eventuali campi sconosciuti possono essere lasciati vuoti o omessi.

    { "desc": "", "comment": "", "handshake_pcap": "", "header_json": "<(opzionale) percorso del file contenente la richiesta HTTP del client>", "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>" }}

Sono benvenuti anche altre PR e richieste di funzionalità!

Utilità mergeDB

mergeDB (in cmd/mergedb) è un'utilità per unire impronte digitali simili di TLS ClientHello tra più versioni vicine di browser o software MITM. Usa mergeDB per consolidare grandi elenchi di impronte digitali di User Agent / Client Hello:

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

Per impostazione predefinita, mergeDB verrà eseguito sulle impronte digitali nella directory reference_fingerprints/mitmengine.

Scarica lo strumento
  • Invia una pull request con le modifiche di cui sopra.