# 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="/files/PJLxYlLGY20qRLeV1B4V" 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/>" %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://blog.s1rn3tz.ovh/pentest-mobile/android/bypass/ssl-pinning-bypass.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
