Opérations sur les fichiers¶
Commandes pour l'interaction du système de fichiers sur l'hôte cible. Toutes les commandes d'opération de fichiers utilisent directement les API Win32 (pas de génération de cmd.exe) pour une empreinte OPSEC minimale, sauf indication contraire.
Le module fileops de l'implant gère les listes de répertoires, les lectures de fichiers, les copies, les déplacements, les suppressions, les téléchargements et l'énumération des lecteurs via des appels d'API Windows natifs tels que CreateFileW, FindFirstFile, CopyFileW et MoveFileExW.
Référence des commandes¶
| Commande | Syntaxe | Description | Impact de l'OPSEC |
|---|---|---|---|
ls | ls [path] | Lister le contenu du répertoire | Faible |
drives | drives | Liste des lecteurs disponibles | Faible |
mkdir | mkdir <path> | Créer un répertoire | Faible |
cd | cd <directory> | Changer le répertoire de travail | Faible |
pwd | pwd | Imprimer le répertoire de travail | Faible |
upload | upload <local_file> <remote_path> | Télécharger le fichier vers la cible | Moyen |
download | download <file> | Télécharger le fichier depuis la cible | Moyen |
cp | cp <src> <dst> | Copier le fichier | Faible |
mv | mv <src> <dst> | Déplacer/renommer le fichier | Faible |
rm | rm <path> | Supprimer un fichier ou un répertoire | Faible |
cat | cat <file> | Lire le contenu du fichier | Faible |
timestomp | timestomp <target> <reference> | Copier les horodatages entre les fichiers | Faible |
Commandes de répertoire et de lecteur¶
ls¶
Répertoriez le contenu du répertoire en utilisant FindFirstFile / FindNextFile. Renvoie une sortie formatée avec la taille des fichiers et les horodatages de la dernière modification. Aucun processus enfant n'est généré.
Type de tâche : fileops (méthode : ls)
Exemple de résultat :
Directory of C:\Users\Public
01/15/2025 09:32 <DIR> .
01/15/2025 09:32 <DIR> ..
01/15/2025 09:32 <DIR> Documents
12/03/2024 14:18 1048576 update.exe
01/10/2025 08:45 2304 readme.txt
Format de sortie
Chaque entrée affiche l'horodatage de la dernière modification, la taille (ou <DIR> pour les répertoires) et le nom du fichier. Le format correspond à la sortie native ls de Cobalt Strike.
lecteurs¶
Répertoriez les lecteurs logiques disponibles et leurs types à l'aide de GetLogicalDrives et GetDriveTypeW.
Type de tâche : fileops (méthode : drives)
Exemple de résultat :
Types de lecteurs : Fixed, Removable, Network, CD-ROM, RAM Disk, Unknown.
mkdir¶
Créez un répertoire en utilisant CreateDirectory.
Type de tâche : fileops (méthode : mkdir)
cd¶
Changez le répertoire de travail du beacon. Il s'agit d'une opération au niveau du processus utilisant os.Chdir : elle affecte les commandes suivantes qui utilisent des chemins relatifs.
Type de tâche : Au niveau du processus (état du beacon)
mot de passe¶
Imprimez le répertoire de travail actuel du beacon. Utilise os.Getwd au niveau du processus de beacon.
Type de tâche : Au niveau du processus (état du beacon)
Commandes de transfert de fichiers¶
télécharger¶
Téléchargez un fichier depuis la machine de l'opérateur vers l'hôte cible. Le backend lit le fichier, l'encode en base64 et distribue une tâche fileops avec la méthode upload. L'implant décode le contenu et l'écrit en utilisant CreateFileW / WriteFile avec la disposition CREATE_ALWAYS.
Type de tâche : fileops (méthode : upload)
Point de terminaison dédié : POST /api/v1/cockpit/file/upload (formulaire en plusieurs parties)
Téléchargement en morceaux : les fichiers de plus de 512 Ko sont automatiquement divisés en morceaux. Le premier morceau utilise la méthode de téléchargement fileops (crée le fichier) et les morceaux suivants utilisent PowerShell [IO.File]::OpenWrite pour ajouter des données. Une tâche de vérification finale calcule le hachage SHA256 sur la cible pour confirmer l'intégrité.
Accélération du transfert : L'intervalle de veille du beacon est temporairement réduit à 1 seconde pendant les transferts de fichiers pour un débit plus rapide, puis restauré à sa valeur d'origine une fois terminé.
OPSEC
- Écrit un fichier sur le disque de la cible - sous réserve de l'analyse des fichiers AV/EDR
- Les fichiers volumineux génèrent plusieurs allers-retours du canal C2 (visibles dans le trafic réseau)
- Les téléchargements fragmentés utilisent PowerShell pour les opérations d'ajout, ce qui peut déclencher la journalisation des scripts
- MITRE ATT&CK : T1105 (Transfert d'outil d'entrée)
télécharger¶
Téléchargez un fichier de l'hôte cible vers l'opérateur. L'implant lit le fichier en utilisant CreateFileW / ReadFile et renvoie le contenu en base64 sur le canal C2.
Type de tâche : fileops (méthode : download)
Point de terminaison dédié : POST /api/v1/cockpit/file/download
Récupération du contenu téléchargé : Une fois la tâche de téléchargement terminée, récupérez le fichier binaire à partir de :
curl -s "https://stentor.app/api/v1/cockpit/file/content/$TASK_ID" \
-H "Authorization: Bearer $TOKEN" \
-o credentials.txt
Le serveur décode les données base64, vérifie le hachage SHA256, conserve un enregistrement de téléchargement et sert le binaire brut avec Content-Disposition: attachment.
OPSEC
- Les fichiers volumineux génèrent un trafic important sur le canal C2 (l'encodage base64 ajoute environ 33 % de surcharge)
- Les lectures de fichiers via
CreateFileWpeuvent déclencher la télémétrie d'accès aux fichiers EDR - L'accélération du transfert réduit temporairement la veille du beacon à 1 seconde
- MITRE ATT&CK : T1041 (Exfiltration sur canal C2)
Commandes de manipulation de fichiers¶
CP¶
Copiez un fichier en utilisant CopyFileW. La destination est écrasée si elle existe déjà (bFailIfExists = false).
Type de tâche : fileops (méthode : cp)
mv¶
Déplacez ou renommez un fichier en utilisant MoveFileExW avec les indicateurs MOVEFILE_REPLACE_EXISTING | MOVEFILE_COPY_ALLOWED. La destination est écrasée si elle existe déjà.
Type de tâche : fileops (méthode : mv)
rm¶
Supprimer un fichier ou un répertoire. Utilise DeleteFile pour les fichiers et RemoveDirectory pour les répertoires. Les répertoires non vides sont supprimés de manière récursive en utilisant FindFirstFile / FindNextFile pour énumérer et supprimer tout le contenu.
Type de tâche : fileops (méthode : rm)
OPSEC
- Les suppressions de fichiers sont enregistrées par les produits EDR qui surveillent l'activité du système de fichiers.
- La suppression récursive de répertoire génère plusieurs appels
DeleteFile/RemoveDirectory - Les fichiers supprimés peuvent être récupérables à partir du journal NTFS ou des instantanés VSS
Commandes d'inspection de fichiers¶
chat¶
Lisez le contenu du fichier et renvoyez-le sous forme de chaîne. Ouvre le fichier via CreateFileW / ReadFile et renvoie le contenu brut (non codé en base64, contrairement à download).
Type de tâche : fileops (méthode : cat)
chat contre téléchargement
Utilisez cat pour une inspection rapide des petits fichiers texte : le contenu apparaît directement dans la console de beacon. Utilisez download pour les fichiers binaires ou lorsque vous avez besoin que le fichier soit enregistré localement, car il préserve les octets exacts et vérifie l'intégrité via SHA256.
Anti-criminalistique¶
horodatage¶
Copiez les horodatages des fichiers d'un fichier de référence vers un fichier cible à l'aide de SetFileTime. Cela modifie les horodatages de l'attribut $STANDARD_INFORMATION (créé, modifié, consulté) sur la cible pour correspondre au fichier de référence.
Type de tâche : evasion (méthode : timestomp)
Le premier argument est le fichier cible (horodatages à modifier) et le second est le fichier référence (horodatages à partir duquel copier). Après l'exécution, les heures de création, de modification et d'accès du fichier cible correspondent à celles du fichier de référence.
OPSEC
SetFileTime modifie uniquement l'attribut $STANDARD_INFORMATION (SI) dans NTFS. Les horodatages de l'attribut $FILE_NAME (FN) sont conservés par le noyau et ne peuvent pas être modifiés via les API en mode utilisateur. Les outils médico-légaux tels que MFTECmd peuvent détecter le timestomping en comparant les horodatages SI et FN : une inadéquation est un indicateur puissant de falsification.
- **MITRE ATT&CK :** T1070.006 (Suppression de l'indicateur : Timestomp)
- **Détection :** Incompatibilité d'horodatage SI et FN dans l'analyse MFT, entrées de journal NTFS ($UsnJrnl)
API de navigation dans les fichiers¶
Le point de terminaison du navigateur de fichiers dédié fournit des listes de répertoires structurées pour le panneau du navigateur de fichiers de l'interface utilisateur.
Point de terminaison : POST /api/v1/cockpit/file/browse
curl -s -X POST "https://stentor.app/api/v1/cockpit/file/browse" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"beacon_id": "'$BEACON_ID'",
"path": "C:\\"
}'
Cela distribue une tâche collect avec la méthode dirlist au beacon, qui renvoie des données de répertoire structurées pour que l'interface utilisateur les restitue sous forme d'arborescence de fichiers.
Gestion des transferts¶
Transferts actifs¶
Répertoriez tous les transferts de fichiers en cours, éventuellement filtrés par beacon :
curl -s "https://stentor.app/api/v1/cockpit/file/active?beacon_id=$BEACON_ID" \
-H "Authorization: Bearer $TOKEN"
Annuler les téléchargements¶
Annulez les téléchargements en cours correspondant à un modèle générique :
Référence de l'API Win32¶
Toutes les opérations sur les fichiers utilisent les API Win32 directement via le module fileops de l'implant. Aucun processus cmd.exe ou PowerShell n'est généré (à l'exception des opérations d'ajout de téléchargement fragmenté).
| Commande | API Win32 | ATTAQUE À ONGLET&CK |
|---|---|---|
ls | FindFirstFile / FindNextFile | T1083 (Découverte de fichiers et de répertoires) |
drives | GetLogicalDrives / GetDriveTypeW | T1083 (Découverte de fichiers et de répertoires) |
mkdir | CreateDirectory | -- |
cd / pwd | os.Chdir / os.Getwd (Aller sur stdlib) | -- |
upload | CreateFileW / WriteFile | T1105 (Transfert d'outil d'entrée) |
download | CreateFileW / ReadFile | T1041 (Exfiltration sur canal C2) |
cp | CopyFileW | -- |
mv | MoveFileExW | -- |
rm | DeleteFile / RemoveDirectory | T1070.004 (Suppression d'indicateur : suppression de fichier) |
cat | CreateFileW / ReadFile | T1005 (Données du système local) |
timestomp | SetFileTime | T1070.006 (Suppression d'indicateur : Timestomp) |