Generare un certificato CA per BURP Suite e Android Nougat (N) al fine di intercettare il traffico senza problemi dovuti ad eventuali limitazioni di sicurezza (e che funziona anche su iOS!!!)
Se importare il certificato predefinito comporta ancora problemi di utilizzo durante le analisi del traffico dei vari dispositivi Android o iOS, vediamo insieme come poter generare un certificato root CA personale, da utilizzare con BURP Suite e che sia funzionante in Android Nougat (N) e anche su iOS.
Il nostro fine è quello di riuscire ad intercettare correttamente il traffico generato dai dispositivi, senza incorrere in problemi comuni dovuti alle varie limitazioni di sistema (es. validità certificato troppo lunga o avvisi di sicurezza vari).
Generare il Certificato
NB: è fondamentale settare un campo CN, per consentire anche in iOS la validazione manuale del certificato root CA personale.
A causa di un bug noto, qualora nel certificato generato non sia presente l’attributo CN, questo non sarà poi validabile su iphone e simili, in quanto l’interfaccia del sistema operativo che normalmente consente di validare i certificati non lo mostrerà. Definire un attributo CN consente proprio di aggirare il bug in questione.
openssl req -x509 -days 730 -nodes -newkey rsa:2048 -outform der -keyout server.key -out ca.der -extensions v3_ca -subj 'CN=MyCertificate'
Convertire la chiave privata
openssl rsa -in server.key -inform pem -out server.key.der -outform der
openssl pkcs8 -topk8 -in server.key.der -inform der -out server.key.pkcs8.der -outform der -nocrypt
Convertire la chiave pubblica
openssl x509 -inform der -in ca.der -out ca.pem
openssl x509 -inform PEM -subject_hash_old -in ca.pem | head -1
L’output fornito quest’ultimo comando (sequenza alfanumerica) sarà il nome del file che dovremo caricare sul dispositivo Android (con l’aggiunta dell’estensione “.0“), di seguito rappresentato da “nnnnnnnn.0“:
cp ca.pem nnnnnnnn.0
openssl x509 -inform PEM -text -in ca.pem -out /dev/null>> nnnnnnnn.0
Copiare il certificato sul dispositivo Android con adb
adb push nnnnnnnn.0 /data/local/tmp
adb shell
da terminale nel dispositivo:
su
mount -o rw,remount /system
mv /data/local/tmp/nnnnnnnn.0 /system/etc/security/cacerts/
chown root:root /system/etc/security/cacerts/nnnnnnnn.0
chmod 644 /system/etc/security/cacerts/nnnnnnnn.0
reboot
Importare il certificato in BURP Suite
Una volta generato il certificato (e relativa chiave privata), non dobbiamo fare altro che importare il tutto dentro Burp Suite.
Per farlo è sufficiente andare in “Proxy Settings” -> “Import / Export CA Certificate” -> “Import” -> “Certificate and private key in DER format” e da qui selezionare “ca.der” come CA certificate e “server.key.pkcs8.der” come chiave privata.
That’s all!