Implications médico-légales et détection

Logiciels malveillants sans fichiers et techniques d’injection de mémoire

Cette catégorie représente certaines des techniques d’évasion les plus avancées, où du code malveillant s’exécute principalement ou entièrement dans la mémoire volatile (RAM) du système, souvent sans écrire de fichiers exécutables traditionnels sur le disque dur. Cela rend la détection difficile pour les scanners basés sur des fichiers standards. Ces techniques consistent fréquemment à injecter du code dans des processus légitimes pour dissimuler leur présence et exploiter la confiance existante.

Techniques courantes d’injection sans fichier/mémoire :

  • Injection réfléchissante de DLL : Charger une DLL malveillante directement depuis la mémoire dans un processus cible, contourner les mécanismes de chargement standards de Windows et la nécessité du fichier DLL sur disque au moment de l’injection.

  • Creusement du procédé : Créer un processus légitime en état suspendu, remplacer son code en mémoire par un code malveillant, puis le reprendre, faire fonctionner le code malveillant sous le couvert du processus légitime.

  • Injection de codage shell : Injection de code machine brut (shellcode) directement dans la mémoire d’un processus cible et déclenchement de son exécution via diverses méthodes (par exemple, détournement de thread).CreateRemoteThread

  • Chargement de l’assembleur .NET en mémoire : Utiliser des fonctionnalités d’exécution .NET légitimes (souvent via PowerShell ou chargeurs) pour charger et exécuter des assemblages .NET malveillants directement depuis la mémoire.

Détection des techniques d’injection sans fichier (Focus sur l’analyse de la mémoire)

Puisque ces techniques résident principalement en mémoire, la détection nécessite d’analyser l’état volatil du système, en se concentrant fortement sur la mémoire des processus et les artefacts associés.

  1. Analyse du live dump du noyau (meilleure méthode globale) :

    • Justification: L’analyse d’un Kernel Live Dump est sans doute l’approche la plus robuste et complète pour détecter les artefacts liés aux processus d’exécution ou d’injection sans fichiers. Même si la charge utile malveillante fonctionne entièrement en mémoire en mode utilisateur, les commandes, scripts ou processus de chargement utilisés pour initier l’injection ou l’exécution sans fichier laissent souvent des traces persistantes dans les tampons mémoire du noyau capturés dans le dump. Ces traces peuvent survivre plus longtemps que les artefacts mémoire de processus en mode utilisateur, surtout si le processus initial du chargeur se termine rapidement.

    • Procédure: Créez un Kernel Live Dump en utilisant des outils comme System Informer ou Gestionnaire des tâches. Notez l’emplacement du fichier sauvegardé (par exemple, )..dmp %LOCALAPPDATA%\Microsoft\Windows\TaskManager\LiveKernelDumps\

    • Analyse avec : Utilisez (d’Eric Zimmerman Tools) pour extraire et filtrer les chaînes du fichier de vidage. Une commande axée sur la recherche d’indicateurs de vecteurs d’exécution sans fichiers basés sur des scripts courants (souvent utilisés comme chargeurs pour l’injection de mémoire) est :bstringsbstrings.exe

      Copier

      bstrings.exe -f "C:\Path\To\Your\LiveKernelDump.DMP" --lr "(?i)(?:\b(?:powershell|cmd|wscript|cscript)\b|iwr|iex|invoke|encodedcommand|decoded|base64|github|pastebin|\.exe|\.bat|\.vbs)" -o ".\FilelessExecutionEvidence.txt"

      (Cette commande recherche dans le dump du noyau (insensible à la casse) des interpréteurs de script courants, des commandes PowerShell souvent utilisées pour télécharger/exécuter du code (, , ), des indicateurs de charges utiles encodées (, , ), des sites d’hébergement de charges utiles courantes (, ), et des extensions courantes d’exécutables/scripts pouvant apparaître dans les commandes de lancement trouvées dans le dump. Les résultats sont enregistrés dans .)iwr iex invoke encodedcommand decode dbase64 github pastebin FilelessExecutionEvidence.txt

    • Interprétation des résultats : Examinez minutieusement le fichier de sortie pour détecter des lignes de commande suspectes, des fragments de script, des blocs Base64 (décodez cela séparément), des URLs ou des chemins liés à l’initiation de l’activité ou de l’injection sans fichiers. Trouver la commande utilisée pour télécharger et exécuter un script PowerShell directement en mémoire, ou sur la ligne de commande d’un exécutable chargeur, fournit des preuves solides.

    • Outil à paraître : Reconnaissant la puissance et l’utilité de cette approche, l’outil RedLotus Kernel Live Dump est en développement (et pourrait être publié prochainement, si ce n’est pas déjà disponible). Cet outil vise à automatiser et à accélérer considérablement le processus d’analyse des Kernel Live Dumps, spécifiquement pour détecter les traces de contournement comme l’exécution de scripts sans fichier et les initiateurs d’injection mémoire, fournissant des résultats en quelques secondes plutôt que de nécessiter un filtrage manuel et une interprétation manuels étendus des chaînes.

  2. Analyse du journal d’événements (utilisant Hayabusa) :

    • Bien que les journaux d’événements enregistrent principalement l’activité basée sur disque, certains journaux, surtout si une journalisation améliorée comme la journalisation PowerShell Script Block Logging (IDs d’événements 4103/4104) est activée, peuvent capturer les commandes ou blocs de script utilisés pour initier l’exécution ou l’injection sans fichiers.

    • Outil : Hayabusa est un analyseur efficace du journal d’événements qui utilise les règles Sigma pour la chasse aux menaces. Il peut traiter rapidement de nombreux fichiers..evtx

    • Analyse: Exécutez Hayabusa avec les journaux d’événements du système (). Examinez le rapport généré ou la sortie CSV, en filtrant spécifiquement les règles liées à l’exécution suspecte de PowerShell, à l’activité WMI ou à d’autres techniques Living-off-the-Land. Recherchez des mots-clés souvent associés à la récupération ou à l’exécution de charges utiles à distance/encodées, tels que : , , , , , , . Trouver des commandes utilisant ces mots-clés, en particulier les plus complexes ou obscurcis, mérite un examen approfondi.C:\Windows\System32\winevt\Logs iwr iex invoke-expression invoke-webrequest encodedcommand encode decoded github pastebin -nop -w hidden

  3. Balayage de la règle YARA (mémoire) :

    • Mécanisme: Utilisez des règles YARA spécifiquement conçues pour détecter les signatures de shellcode connu, des stubs de chargeurs réfléchissants, des exécutables compacts en mémoire, des modules de triche spécifiques connus pour être injectés, ou des artefacts courants d’évasion mémoire.

    • Outils:

      • Cadre de volatilité : Le plugin permet de scanner un vidage mémoire complet (, , ) en utilisant les règles YARA fournies.yarascan .mem .vmem .raw

      • Vélociraptor : La fonction VQL permet de scanner la mémoire des processus en cours d’exécution directement selon les règles YARA sans nécessiter un vidage complet.yara() accessor='process'

    • Efficacité: Cela dépend beaucoup de la qualité et de la spécificité des règles YARA utilisées. De bonnes règles peuvent donner de bons coups, mais des règles génériques peuvent donner des faux positifs.

  4. Inspection de la mémoire de processus (System Informer/Process Hacker) :

    • Mécanisme: Examiner directement l’espace mémoire des processus en cours d’exécution soupçonnés d’héberger du code injecté (par exemple, le processus du jeu, ).explorer.exe

    • À surveiller :

      • Régions de mémoire suspectes : Identifiez les régions marquées comme (non soutenues par un fichier sur disque) qui ont des permissions (ou similaires). Analysez le contenu de ces régions (par exemple, en utilisant le visualiseur hexadécimal ou la recherche par chaînes). La présence d’en-têtes PE (MZ...) ou de code exécutable dans ces régions est un indicateur fort d’injection.Private Execute PAGE_EXECUTE_READWRITE

      • Modules chargés anormaux : Vérifiez la liste « Modules » pour détecter des DLL non signés, des DLL à des emplacements inattendus, ou plusieurs instances de DLL du système central chargées à des adresses de base inhabituelles. (Note : L’injection réfléchissante pourrait masquer des modules de cette liste).

      • Recherche de chaînes : Recherchez des chaînes spécifiques connues pour être associées à la méthode de triche, chargeur ou injection dans la mémoire du processus.

  5. Cadre de volatilité (analyse de vidage de mémoire) :

    • Mécanisme: Analysez un vidage complet de mémoire acquis à l’aide d’outils comme FTK Imager, DumpIt ou Magnet RAM Capture.

    • Plugins clés :

      • malfind: Le plugin principal pour trouver le code injecté. Il recherche spécifiquement des régions mémoire présentant des caractéristiques typiques des injections (par exemple, mémoire privée exécutable, en-têtes PE).

      • ldrmodules: Peut parfois identifier des DLL cachées aux techniques d’énumération standard.

      • pstree/pslist: Utile pour comprendre les relations entre processus et identifier les processus hôtes potentiels pour injection ou anomalies liées au creusement.

      • memdump: Permet d’extraire des régions mémoire spécifiques identifiées comme suspectes par ou une autre analyse pour un examen hors ligne plus approfondi (par exemple, rétro-ingénierie).malfind

      • vadinfo: Fournit des informations détaillées sur les descripteurs d’adresse virtuelle, aidant à comprendre les permissions et types de régions mémoire.

La détection des malwares sans fichiers et l’injection de mémoire nécessite un virage vers l’analyse de l’état volatile du système. Bien que l’analyse Kernel Live Dump offre de larges capacités de détection pour la phase d’initiation, la combiner à une inspection ciblée de la mémoire des processus, à l’analyse avancée d’outils (Volatility/YARA) et à potentiellement révélation de journaux d’événements constitue la stratégie la plus complète contre ces techniques d’évasion avancées.

Mis à jour