Skip to content

Setting Up BurpSuite as a Trusted Root CA in Genymotion Emulator

Recently I wanted to test an Android application and had to use an Android Emulator. While Android Studio’s emulator works fine, I had difficulties making it run because you can either have it rooted without Google Play Services or with Google Play Services but not rooted.

Export Burp Certificate

By default Burp Suite exports the certificate in .DER format, which needs to be converted into .PEM format, with openssl. To export the certificate navigate to: Settings -> Tools -> Proxy and on the Proxy listeners section select import / export CA certificate. Save the file to a location of your choice. In my case I saved it as burp.der on my Desktop folder.

Export Burp Certificate

Convert the Certificate

I was following this article, and what Android needs is the subject_hash_old as a filename for the certificate, in pem format with 0 as extension. So firstly, the extension needs to be converted to using openssl.

$ openssl x509 -inform DER -in burp.der -out burp.pem
$ openssl x509 -inform PEM -subject_hash_old -in burp.der -in burp.pem

After the file is converted, the subject_hash_old value is presented on top of the certificate. In my case it was 9a5ba575, so I renamed the certificate like suggested.

$ mv burp.pem 9a5ba575.0

Transfer the Certificate to Genymotion

The certificate needs to be transferred to the device’s sdcard, using adb or any other way (HTTP download). By default adb should run as root on Genymotion, but in case you get a permission error, start by running adb root. In case you already have root permissions an error will be displayed: adbd is already running as root

$ adb push 9a5ba575.0 /sdcard/
a5ba575.0: 1 file pushed, 0 skipped. 6.3 MB/s (1326 bytes in 0.000s)

The file needs to be transferred to the /system/etc/security/cacerts/ where the Root Certificates are stored. When I tried to move the certificate to the directory, I was getting an error like shown below:

# mv /sdcard/9a5ba575.0 /system/etc/security/cacerts/
mv: /system/etc/security/cacerts//9a5ba575.0: Read-only file system

In this case I had to remount the root file system and then I was able to move it. After just give it the correct permissions as required 644.

# mount -o rw,remount /
# mv /sdcard/9a5ba575.0 /system/etc/security/cacerts/
# chmod 644 /system/etc/security/cacerts/9a5ba575.0

Finally, reboot the device and the certificate will be inside the Root Certificates. To confirm, open on your Android device the Settings menu and search for Trusted Credentials. You will see the PortSwiggers certificate in your Root Certificate directory.

Certificate installed as System

Was this post helpful?