# SSL pinning bypass

## Description

Les applications mobiles utilisent couramment SSL pour protéger les données transmises contre les écoutes clandestines et la falsification lors de la communication avec un serveur. Les implémentations SSL dans les applications font confiance à un serveur qui possède un certificat, qui à son tour est approuvé par le magasin de confiance du système d'exploitation (par défaut). Le système d'exploitation inclut une liste d'autorités de certification dans ce stockage.

Le développeur configure l'épinglage SSL pour refuser tous sauf un ou quelques certificats prédéterminés. Le programme valide le certificat du serveur avec le certificat épinglé chaque fois qu'il se connecte à un ou plusieurs serveurs. La connexion SSL est établie si et seulement si le certificat du serveur et le certificat épinglé correspondent.

<figure><img src="https://3571537825-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FOIXudYEdnnE8JjXBrL0o%2Fuploads%2Fw4l5DLcyllIWNUq4oSce%2Fimage.png?alt=media&#x26;token=e1b547b9-c5b9-4953-baeb-c37a678baa89" alt=""><figcaption><p>Fonctionnement du SSL pinning</p></figcaption></figure>

## Bypass avec Frida

### Télécharger frida-server

{% embed url="<https://github.com/frida/frida/releases>" %}

### Placer frida-server dans le smartphone

avec adb, on va placer l'executable frida-server dans le smartphone dans le dossier /data/local/tmp accessible en lecture et écriture à tous les utilisateurs et lui donner les droits maxiumum pour que frida puisse avoir les pleins contrôles de l'appareil.

```
$ adb push frida-server /data/local/tmp
$ adb shell
$ chmod 777 /data/local/tmp/frida-server
```

### Lancer de frida en arrière-plan

```
$ adb shell /data/local/tmp/frida-server &
```

### Placer le script de ssl pinning bypass dans l'appareil

```
$ adb push script.js /data/local/tmp
```

### Vérifier le bon fonctionnement de frida-server

Via la machine hôte, on va tenter de se connecter à frida-server avec la commande suivante:

```
$ frida-ps -U

résultat attendu
PID    Name
------------------------------
XXX    Process
XXX    Process
...
```

### Lancement du script de ssl pinning bypass

```
$ frida -U -f <com.exemple.targetapp> -l <path/to/script.js> --no-paus
```

{% hint style="info" %}
Vous devriez à la fin de ce process être capable d'intercepter le traffic http de l'application.
{% endhint %}

### Avec Objection

Il est également possible d'utiliser la commande suivante avec objection:

```
$ objection run ssl pinning disable
```

## Articles  / Ressources

{% embed url="<https://medium.com/@vaishalinagori112/9-different-ways-to-bypass-ssl-pinning-in-android-2d8c7f81b837>" %}

{% embed url="<https://codeshare.frida.re/@akabe1/frida-multiple-unpinning/>" %}
