# Burp Suite

## Instalación de certificado CA de usuario en dispositivo Android <a href="#instalacion-de-certificado-ca-de-confianza-de-usuario-en-dispositivo-android" id="instalacion-de-certificado-ca-de-confianza-de-usuario-en-dispositivo-android"></a>

### Instalación desde GUI (automática)

1\) Exportar certificado desde Burp Suite.

* Burp Suite -> Proxy -> Proxy settings -> Proxy listeners -> Import / export CA certificate

![Seleccionar opción "Certificate in DER format"](https://4246376570-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwMoluillTs3tmwBLdFuL%2Fuploads%2FA3zzUMhzDw7jOqwND0st%2Fburp-suite-import-export-ca-certificate.png?alt=media\&token=bd3125d7-33ab-4e26-8232-f5b9df83be1e)

2\) Guardar certificado con nombre `cacert.der`.

![](https://4246376570-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwMoluillTs3tmwBLdFuL%2Fuploads%2FIl6KFEJUrs2xdBESewhe%2Fburp-suite-import-export-ca-certificate-save.png?alt=media\&token=0c686aa8-c478-4f8b-a312-c6b506d40e3a)

3\) Cambiar extensión al certificado exportado de `.der` a `.cer`.

```shell
cd ~/Downloads
mv cacert.der cacert.cer
```

4\) Transferir certificado al dispositivo.

```shell
adb push cacert.cer /sdcard/Download/
```

5\) Instalación de certificado en el dispositivo.

Dispostivos Samsung:

* Ajustes -> Datos biométricos y seguridad -> Otros ajustes de seguridad -> Instalar desde almacenamiento

Dispositivos Xiaomi:

* Configuración -> Contraseñas y seguridad -> Privacidad -> Encriptación y credenciales -> Instalar desde la tarjeta SD

Dispositivos Nexus:

* Settings -> Security -> Install from SD card

Genymotion:

* Setting -> Security -> Encryption & credentials -> Install from SD card

Android Studio:

* Settings -> Security -> Encryption & credentials -> Install a certificate (Install certificates from SD card)

![](https://4246376570-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwMoluillTs3tmwBLdFuL%2Fuploads%2Fxo7yW2n6RNmZomUALvoV%2Finstalacion-certificado-ca-de-confianza-a-nivel-de-usuario.png?alt=media\&token=f52d1862-02c5-4af7-9538-ad18f6256b98)

6\) Reiniciar el dispositivo.

```shell
adb reboot
```

7\) Verificación de instalación del certificado CA de usuario mediante línea de comandos.

```shell
adb shell "su -c ls -la /data/misc/user/0/cacerts-added/"
```

8\) Verificación de certificado CA de usuario desde GUI.

![](https://4246376570-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwMoluillTs3tmwBLdFuL%2Fuploads%2FmdEJ3dwso0smt1ydsFIh%2Fcertificado-ca-de-confianza-a-nivel-de-usuario.png?alt=media\&token=831c7246-b77d-482c-aa20-3b4a473a4dfc)

Dispostivos Samsung:

* Ajustes -> Datos biométricos y seguridad -> Otros ajustes de seguridad -> Ver certificados de seguridad

Dispositivos Xiaomi:

* Configuración -> Contraseñas y seguridad -> Privacidad -> Encriptación y credenciales -> Credenciales de confianza -> Usuario

Dispositivos Nexus:

* Settings -> Security -> Trusted credentials

Genymotion:

* Setting -> Security -> Encryption & credentials -> Trusted credentials

Android Studio:

* Settings -> Security -> Encryption & credentials -> Trusted credentials

### Instalación desde línea de comandos (manual)

1\) Exportar certificado desde Burp Suite.

* Burp Suite -> Proxy -> Proxy settings -> Proxy listeners -> Import / export CA certificate

![Seleccionar opción "Certificate in DER format"](https://4246376570-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwMoluillTs3tmwBLdFuL%2Fuploads%2FA3zzUMhzDw7jOqwND0st%2Fburp-suite-import-export-ca-certificate.png?alt=media\&token=bd3125d7-33ab-4e26-8232-f5b9df83be1e)

2\) Guardar certificado con nombre `cacert.der`.

![](https://4246376570-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwMoluillTs3tmwBLdFuL%2Fuploads%2FIl6KFEJUrs2xdBESewhe%2Fburp-suite-import-export-ca-certificate-save.png?alt=media\&token=0c686aa8-c478-4f8b-a312-c6b506d40e3a)

3\) Convertir certificado exportado de formato DER a formato PEM.

```shell
cd ~/Downloads
openssl x509 -inform DER -in cacert.der -out cacert.pem
```

4\) Obtención de "subject hash old" del certificado en formato PEM.

* Subject hash old = `9a5ba575`

```shell
openssl x509 -inform PEM -subject_hash_old -in cacert.pem | head -1
```

5\) Cambiar nombre de certificado a su "subject hash old" concatenado con ".0", es decir,  `[subject-hash-old].0`.

* Nombre certificado = `cacert.pem`
* Subject hash old = `9a5ba575`
* Nombre final certificado = `9a5ba575.0`

```shell
mv cacert.pem 9a5ba575.0
```

6\) Transferir y configurar certificado en el dispositivo.

```shell
adb push 9a5ba575.0 /sdcard/
adb shell
su
mv /sdcard/9a5ba575.0 /data/misc/user/0/cacerts-added/
chmod 644 /data/misc/user/0/cacerts-added/9a5ba575.0
chgrp everybody /data/misc/user/0/cacerts-added/9a5ba575.0
chown system /data/misc/user/0/cacerts-added/9a5ba575.0
```

7\) Verificación de instalación del certificado CA de usuario mediante línea de comandos.

```shell
adb shell "su -c ls -la /data/misc/user/0/cacerts-added/"
```

8\) Verificación de instalación del certificado CA de usuario desde GUI.

<figure><img src="https://4246376570-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwMoluillTs3tmwBLdFuL%2Fuploads%2FmdEJ3dwso0smt1ydsFIh%2Fcertificado-ca-de-confianza-a-nivel-de-usuario.png?alt=media&#x26;token=831c7246-b77d-482c-aa20-3b4a473a4dfc" alt=""><figcaption></figcaption></figure>

Dispostivos Samsung:

* Ajustes -> Datos biométricos y seguridad -> Otros ajustes de seguridad -> Ver certificados de seguridad

Dispositivos Xiaomi:

* Configuración -> Contraseñas y seguridad -> Privacidad -> Encriptación y credenciales -> Credenciales de confianza -> Usuario

Dispositivos Nexus:

* Settings -> Security -> Trusted credentials

Genymotion:

* Setting -> Security -> Encryption & credentials -> Trusted credentials

Android Studio:

* Settings -> Security -> Encryption & credentials -> Trusted credentials

## Instalación de certificado CA de sistema en dispositivo Android <a href="#instalacion-de-certificado-ca-de-confianza-de-sistema-en-dispositivo-android" id="instalacion-de-certificado-ca-de-confianza-de-sistema-en-dispositivo-android"></a>

1\) Exportar certificado desde Burp Suite.

* Burp Suite -> Proxy -> Proxy settings -> Proxy listeners -> Import / export CA certificate

![Seleccionar opción "Certificate in DER format"](https://4246376570-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwMoluillTs3tmwBLdFuL%2Fuploads%2FA3zzUMhzDw7jOqwND0st%2Fburp-suite-import-export-ca-certificate.png?alt=media\&token=bd3125d7-33ab-4e26-8232-f5b9df83be1e)

2\) Guardar certificado con nombre `cacert.der`.

![](https://4246376570-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwMoluillTs3tmwBLdFuL%2Fuploads%2FIl6KFEJUrs2xdBESewhe%2Fburp-suite-import-export-ca-certificate-save.png?alt=media\&token=0c686aa8-c478-4f8b-a312-c6b506d40e3a)

3\) Convertir certificado exportado de formato DER a formato PEM.

```shell
cd ~/Downloads
openssl x509 -inform DER -in cacert.der -out cacert.pem
```

4\) Obtención de "subject hash old" del certificado en formato PEM.

* Subject hash old = `9a5ba575`

```shell
openssl x509 -inform PEM -subject_hash_old -in cacert.pem | head -1
```

5\) Cambiar nombre de certificado a su "subject hash old" concatenado con ".0", es decir,  `[subject-hash-old].0`.

* Nombre certificado = `cacert.pem`
* Subject hash old = `9a5ba575`
* Nombre final certificado = `9a5ba575.0`

```shell
mv cacert.pem 9a5ba575.0
```

6\) Transferir y configurar certificado en el dispositivo.

Opción 1:

```shell
adb root
adb remount
adb push 9a5ba575.0 /sdcard/
adb shell
mv /sdcard/9a5ba575.0 /system/etc/security/cacerts/
chmod 644 /system/etc/security/cacerts/9a5ba575.0
chgrp root /system/etc/security/cacerts/9a5ba575.0
```

Opción 2:

```shell
adb push 9a5ba575.0 /sdcard/
adb shell
su
mount -o rw,remount /
mv /sdcard/9a5ba575.0 /system/etc/security/cacerts/
chmod 644 /system/etc/security/cacerts/9a5ba575.0
chgrp root /system/etc/security/cacerts/9a5ba575.0
mount -o ro,remount /
```

Opción 3 (directorio `/system` sin permisos de escritura):

```sh
adb push 9a5ba575.0 /sdcard/
adb shell
su
mkdir -p -m 700 /data/local/tmp/ca-copy
mv /sdcard/9a5ba575.0 /data/local/tmp/ca-copy/
cp /system/etc/security/cacerts/* /data/local/tmp/ca-copy/
mount -t tmpfs tmpfs /system/etc/security/cacerts
mv /data/local/tmp/ca-copy/* /system/etc/security/cacerts/
chown root:root /system/etc/security/cacerts/*
chmod 644 /system/etc/security/cacerts/*
chcon u:object_r:system_file:s0 /system/etc/security/cacerts/*
rm -r /data/local/tmp/ca-copy
```

Opción 4 (Android Studio en Windows):

```shell
# Listado de nombres de dispositivos emulados
cd C:\Users\<user>\AppData\Local\Android\Sdk\emulator
.\emulator.exe -list-avds

# Inicio de dispositivo emulado con opción de escritura
.\emulator.exe -avd <emulated-device-name> -writable-system

# Transferencia y configuración de certificado en el dispositivo emulado
.\adb.exe root
.\adb.exe remount
.\adb.exe push 9a5ba575.0 /sdcard/
.\adb.exe shell
mv /sdcard/9a5ba575.0 /system/etc/security/cacerts/
chmod 644 /system/etc/security/cacerts/9a5ba575.0
chgrp root /system/etc/security/cacerts/9a5ba575.0
```

Opción 5 (Android Studio en Windows):

```shell
# Listado de nombres de dispositivos emulados
cd C:\Users\<user>\AppData\Local\Android\Sdk\emulator
.\emulator.exe -list-avds

# Inicio de dispositivo emulado con opción de escritura
.\emulator.exe -avd <emulated-device-name> -writable-system -no-snapshot-load

# Configuración necesaria para evitar que emulador se “congele”
.\adb.exe root
.\adb.exe shell avbctl disable-verification
.\adb.exe reboot

# Transferencia y configuración de certificado en el dispositivo emulado
.\adb.exe root
.\adb.exe remount
.\adb.exe push 9a5ba575.0 /sdcard/
.\adb.exe shell
mv /sdcard/9a5ba575.0 /system/etc/security/cacerts/
chmod 644 /system/etc/security/cacerts/9a5ba575.0
chgrp root /system/etc/security/cacerts/9a5ba575.0
```

{% hint style="info" %}
Recuerda que siempre se deberá iniciar el dispositivo emulado de Android Studio con la opción `-writable-system`.
{% endhint %}

7\) Verificación de instalación del certificado CA de sistema mediante línea de comandos.

```shell
adb shell "su -c ls -la /system/etc/security/cacerts/9a5ba575.0"
```

8\) Verificación de instalación del certificado CA de sistema desde GUI.

![](https://4246376570-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwMoluillTs3tmwBLdFuL%2Fuploads%2FajgCIoqhE6xlifPRHUxL%2Fcertificado-ca-de-confianza-a-nivel-de-sistema.jpg?alt=media\&token=3f287d74-a3a8-4eec-8792-dc4b585c26fc)

Dispostivos Samsung:

* Ajustes -> Datos biométricos y seguridad -> Otros ajustes de seguridad -> Ver certificados de seguridad

Dispositivos Xiaomi:

* Configuración -> Contraseñas y seguridad -> Privacidad -> Encriptación y credenciales -> Credenciales de confianza

Dispositivos Nexus:

* Settings -> Security -> Trusted credentials

Genymotion:

* Setting -> Security -> Encryption & credentials -> Trusted credentials

Android Studio:

* Settings -> Security -> Encryption & credentials -> Trusted credentials
