Parlando del certificate pinning abbiamo menzionato mitmproxy, un programma interattivo da console che consente di intercettare, analizzare, modificare e riprodurre flussi di traffico.
mitmproxy è scritto in Python quindi può essere installato tramite il tool pip su Windows e Linux, mentre su Mac OS X la soluzione più semplice è sicuramente quella di scaricare i binari precompilati.
Al primo avvio mitmproxy genera una CA che dovrà essere installata sul device di cui vogliamo intercettare il certificato. Una volta configurato il dispositivo per accedere alla rete tramite il proxy esposto da mitmproy, che di default è in ascolto sulla porta 8080, sarà sufficiente collegarsi dal device, tramite un browser web, alla pagina mitm.it e seguire le istruzioni.
Installato il certificato è possibile visualizzare il traffico in console generato dai device connessi. Infatti mitmproxy genera un certificato per ogni dominio il cui traffico passa per il proxy firmandolo con la CA installata precedentemente sul device, che sarà quindi ritenuta affidabile dal client. Attenzione, le applicazioni che implementano il certificate pinning non accetteranno la CA, quindi per consentire a queste di continuare a funzionare bisognerà usare la funzionalità per ignorare il traffico verso gli opportuni domini.
Questo è il funzionamento di base del programma, dalla console si può gestire il traffico, analizzarlo, modificarlo a runtime, impostare filtri, personalizzare i certificati per particolari domini. Ad esempio se vogliamo tracciare il traffico di una nostra applicazione che implementa il certificate pinning, magari per debug, avendo anche la chiave privata del certificato, è possibile, con l'opzione --certs
usare solo per quel particolare dominio il certificato corretto. Per fortuna che il nostro certificato è al sicuro!
È possibile anche avviare mitmproxy come proxy trasparente, in questo caso non sarà richiesta alcuna modifica lato client, anche se sarà necessaria qualche configurazione in più sulla rete. La modalità di funzionamento come reverse proxy, invece, può risultare utilissima per effettuare debug di un proprio servizio web consentendo l'analisi del traffico in real-time.
La documentazione di mitproxy è sintetica e ben strutturata e sicuramente completa. Le possibilità di estensione del programma pressoché infinite, bisogna solo lasciar spazio alla fantasia e si possono mettere in campo soluzioni davvero interessanti.
Via Mitmproxy