Support TP - Analyse de Logiciels Malveillants

Analyse statique

L’analyse statique de logiciels malveillants est une étape cruciale qui consiste à examiner un fichier malveillant sans l’exécuter, afin de comprendre sa structure et son fonctionnement potentiel. Cette approche permet de recueillir des informations précieuses qui peuvent orienter l’analyse dynamique ultérieure. Voici les principaux aspects de l’analyse statique, détaillés à partir des sources :

Hachage

Principe

Le hachage consiste à générer une empreinte numérique unique d’un fichier, à l’aide d’un algorithme à sens unique. Cela permet d’identifier rapidement un fichier, même si son nom a été modifié. Il existe deux grandes catégories de hachages :

  • Hachages cryptographiques (SHA256, MD5) : Ils sont sensibles à toute modification du fichier ; le moindre changement d’un bit modifie complètement le hachage.
  • Hachages “fuzzy” (ssdeep) : Ils sont conçus pour identifier des fichiers similaires, même s’ils présentent de légères différences. Changer de petites parties d’un fichier ne modifiera pas considérablement le hachage ssdeep.

Outils

On peut utiliser des outils comme Get-FileHash en PowerShell pour obtenir les hachages cryptographiques, et ssdeep pour les hachages “fuzzy”.

Utilité

Le hachage sert non seulement à identifier un fichier mais aussi à rechercher des informations sur celui-ci dans des bases de données en ligne.

Recherche d’informations via des sources OSINT

Principe

Les hachages de fichiers peuvent être utilisés pour rechercher des informations dans des sources de renseignement en source ouverte (OSINT), comme VirusTotal.

Outils

VirusTotal permet de soumettre un hachage et de consulter les analyses effectuées par de nombreux moteurs antivirus. On peut également faire des recherches avec un hachage “fuzzy” avec un compte entreprise.

Utilité

Cela permet d’identifier rapidement si un fichier est connu comme malveillant et de gagner du temps en évitant de réanalyser un échantillon déjà documenté.

Extraction et analyse des chaînes de caractères

Principe

L’extraction des chaînes de caractères ASCII et Unicode d’un exécutable peut révéler des informations précieuses, comme les noms de domaine, les adresses IP ou les chemins de fichiers. Cela permet d’avoir des indices sur le fonctionnement du malware et les serveurs de contrôle qu’il pourrait utiliser.

Outils

L’outil strings de Sysinternals permet d’extraire les chaînes de caractères d’un fichier binaire. Il faut préciser une longueur minimale des chaînes de caractères pour éviter de récupérer des données inutiles.

Utilité

Ces chaînes de caractères peuvent servir d’indicateurs de compromission (IOC) ou fournir des indices sur l’auteur du malware.

Analyse de la structure PE (Portable Executable)

Principe

Les fichiers exécutables Windows suivent un format spécifique, appelé PE. L’analyse de ce format permet de comprendre l’organisation du fichier, ses sections, ses importations de DLL, etc. L’en-tête DOS, l’en-tête PE, l’en-tête optionnel et la table de section sont des éléments importants à étudier.

Outils

On peut utiliser des outils comme CFF Explorer, Ghidra, radare2 ou IDA PRO pour examiner la structure PE d’un fichier. Ces outils permettent d’explorer l’en-tête PE, les sections, les importations de DLL et les appels d’API.

Utilité

Comprendre la structure PE permet d’avoir des détails sur la nature du fichier, la présence ou non d’un packer, les DLLs utilisées, et potentiellement les techniques utilisées par le malware.

Analyse des fichiers packés

Principe

Le packing est une technique d’obfuscation couramment utilisée pour rendre plus difficile l’analyse d’un exécutable en le compressant et/ou en le chiffrant. L’exécutable original est alors inclus dans une section chiffrée ou compressée avec un stub (une fonction) de décompression qui permet de restaurer le fichier avant son exécution.

Outils

  • Detect It Easy permet de visualiser l’entropie des sections d’un fichier, ce qui aide à identifier si le fichier est packé.
  • Manuellement en comparant la taille des section en mémoire et sur disque.

Utilité

Il est important de détecter un fichier packé, car cela signifie que l’analyse statique directe du fichier est limitée. Il est donc nécessaire d’analyser le stub de décompression, ou de dépacker le fichier pour accéder à son code original.

Identification des techniques d’anti-analyse

Principe

Les auteurs de logiciels malveillants cherchent souvent à éviter la détection en mettant en œuvre des techniques d’anti-analyse.

Outils

L’analyse du code dans Ghidra ou ida pro permet d’identifier ces techniques d’anti-analyse.

Utilité

Identifier ces techniques permet d’orienter l’analyse dynamique, en désactivant les parties du code malveillant qui sont utilisées à des fins d’anti-analyse.

L’analyse statique permet de se faire une idée du fonctionnement d’un malware sans l’exécuter, mais elle est souvent complétée par une analyse dynamique, qui consiste à observer le comportement du malware dans un environnement contrôlé. Ces deux types d’analyses sont complémentaires et nécessaires pour une compréhension approfondie d’un logiciel malveillant.

Analyse dynamique

L’analyse dynamique de logiciels malveillants est une étape cruciale qui consiste à exécuter un échantillon de malware dans un environnement contrôlé afin d’observer son comportement et d’identifier ses actions malveillantes. Contrairement à l’analyse statique, qui examine le code sans l’exécuter, l’analyse dynamique permet de voir concrètement comment le malware interagit avec le système et le réseau.

Voici un aperçu détaillé du déroulement et des objectifs de l’analyse dynamique, en citant les outils pertinents, tiré des sources :

Objectifs de l’analyse dynamique

  • Identifier les actions entreprises par le malware sur le système, comme la création de fichiers, les modifications du registre, les communications réseau, etc.
  • Comprendre les techniques d’attaque utilisées par le malware, comme les mécanismes de persistance, les techniques d’évasion, ou encore les méthodes de communication avec un serveur de commande et contrôle (C2).
  • Collecter des indicateurs de compromission (IOCs) tels que des adresses IP, des noms de domaine, des chemins de fichiers, des clés de registre, etc., pour pouvoir détecter et prévenir de futures infections.
  • Valider les conclusions tirées de l’analyse statique en observant le comportement réel du malware.

Déroulement de l’analyse dynamique

  1. Préparation de l’environnement d’analyse :
    • Il est crucial d’utiliser une machine virtuelle (VM) isolée du réseau principal afin d’éviter toute propagation du malware. On utilise souvent des environnements comme la FLARE VM.
    • Il est recommandé de faire un instantané de la VM avant d’exécuter le malware, afin de pouvoir revenir à un état propre après l’analyse.
    • Il est nécessaire d’installer des outils d’analyse sur la VM, tel que la suite Sysinternals, notamment Process Explorer, Process Monitor, et Autoruns. On utilise aussi des outils comme Regshot et des débogueurs comme x32dbg, Ghidra et IDA PRO.
  2. Exécution du malware :
    • Le malware est exécuté dans la VM, et son comportement est surveillé à l’aide d’outils d’analyse.
    • Il peut être nécessaire d’exécuter le malware plusieurs fois, en utilisant différents outils ou en modifiant les paramètres d’analyse, pour obtenir une vue complète de ses actions.
  3. Surveillance du système :
    • Process Explorer permet de visualiser les processus en cours d’exécution sur le système et d’identifier les processus créés par le malware. On peut examiner les DLL injectées par le malware dans les différents processus à l’aide de cet outil en pressant Ctrl+D. Process Explorer permet aussi de voir les détails de chaque processus, comme son utilisation CPU, ses threads, ses connexions réseau, ses permissions, etc.
    • Process Monitor (ProcMon) permet de suivre en temps réel toutes les actions entreprises par le malware sur le système, comme la création de fichiers, les modifications du registre, les accès réseau, etc. Il est possible de filtrer les événements en fonction des processus ou des opérations pour mieux cibler l’analyse.
    • Regshot permet de prendre des instantanés du système avant et après l’exécution du malware, et d’identifier toutes les modifications apportées au registre et au système de fichiers.
    • Autoruns permet de visualiser tous les points de persistance du système (entrées de registre, tâches planifiées, etc.). Il peut aider à identifier les mécanismes de persistance utilisés par le malware.
    • ProcDOT est utilisé pour visualiser les données collectées par ProcMon sous forme de graphiques, ce qui permet de mieux comprendre l’enchaînement des actions du malware.
  4. Surveillance du réseau :
    • On peut utiliser des outils comme Wireshark pour observer le trafic réseau généré par le malware et identifier les serveurs C2 auxquels il se connecte. Des outils comme FakeNet-NG ou ApateDNS permettent de simuler un réseau afin d’éviter que le malware ne se connecte directement à internet.
  5. Analyse des techniques d’évasion :
    • Le malware peut utiliser des techniques d’anti-analyse, comme la détection de certains outils, pour ralentir le processus d’analyse. Il est possible d’analyser le code avec un outil comme Ghidra afin d’identifier ces techniques. On peut aussi utiliser un débogueur comme x32dbg pour contourner les anti-analyses et faire avancer le processus d’analyse.
  6. Désobfuscation des scripts :
    • Si le malware utilise des scripts (VBS, PowerShell), il peut être nécessaire de les désobfusquer afin de comprendre leur fonctionnement. On peut utiliser des outils comme VbsEdit ou PSDecode pour ce faire.
  7. Collecte des IOCs :
    • Il est crucial de collecter les IOCs identifiés pendant l’analyse dynamique, tels que les hachages, les adresses IP, les noms de domaine, les chemins de fichiers, ou encore les clés de registre.

En combinant ces techniques et ces outils, l’analyste peut obtenir une compréhension approfondie du fonctionnement du malware et collecter les informations nécessaires pour prévenir de futures infections. Il est important de noter que l’analyse dynamique est un processus itératif qui peut nécessiter plusieurs cycles d’exécution et d’analyse pour obtenir une vue complète du comportement du malware.