Cours3-Etude de Malware Et Ingenierie Inverseev2
Cours3-Etude de Malware Et Ingenierie Inverseev2
Cours3-Etude de Malware Et Ingenierie Inverseev2
(Reverse Engineering)
I. Préambule :
Un employé de l'entreprise dans laquelle vous travailler vous contacte pour vous dire que sa machine a
été infectée. Vous faites une analyse forensic sur la machine infectée et vous détectez un malware de
type Trojan sur la machine. Vous nettoyez la machine avec un antivirus et vous créez une règle IDS pour
vous assurer qu'aucune autre machine n'a été infectée. Vous mettez également la machine infectée sous
surveillance.
Quelques jours après vous voyez dans les logs sur le SIEM que la machine communique avec des IPs
malveillantes et qu'elle envoie des données vers ces IPs. Vous faites une recherche sur d'autres machines
du réseau et vous vous apercevez que d'autres machines ont le même comportement que la machine
infectée.
Vous vous rendez compte que votre antivirus n'apporte pas la protection souhaitée et que votre règle IDS
a échoué dans la détection du malware.
Votre hiérarchie vous appelle pour comprendre ce qui se passe et vous vous posez les questions
suivantes:
Pour répondre à toutes ces questions vous devez passer par une analyse de malware, on parle du
Reverse Engineering (RE).
Dans ce chapitre, nous n'allons pas se concentrer sur comment trouver un malware (analyse forensic)
mais sur comment analyser ce dernier une fois qu'il a été trouvé.
Nous allons nous concentrer sur l'analyse malware détecté sur des machines Windows comme dans le
chapitre précédent.
L'analyse des logiciels malveillants et l'ingénierie inverse sont étroitement liées, mais ne sont pas
exactement identiques. L'analyse des logiciels malveillants est un terme plus large qui englobe diverses
L'analyse des logiciels malveillants consiste à étudier le comportement, les caractéristiques et les
fonctionnalités des logiciels malveillants afin d'identifier leur objectif, leurs capacités et leur impact
potentiel. Elle vise à découvrir le fonctionnement interne des logiciels malveillants, à comprendre leurs
vecteurs d'infection, leurs protocoles de communication, leurs mécanismes de livraison des charges
utiles, leurs techniques d'évasion et leurs techniques de cryptage ou d'obscurcissement. L'analyse permet
de développer des signatures de détection efficaces, d'élaborer des stratégies d'atténuation et
d'améliorer l'ensemble des défenses de cybersécurité. Cela implique la création de signatures basées-
machine (host-based) et basées-réseau (network-based).
l'ingénierie inverse joue un rôle crucial dans l'analyse des logiciels malveillants. Elle implique l'examen
systématique et détaillé du code, de la structure, des capacités, des techniques employées et du
comportement du logiciel malveillant afin de comprendre sa fonctionnalité et sa conception. Les
techniques d'ingénierie inverse, telles que le désassemblage, le débogage et l'analyse du code, sont
utilisées pour déconstruire le logiciel malveillant et extraire des informations précieuses, telles que sa
logique, ses algorithmes et ses mécanismes de communication.
Il s'agit d'une technique cruciale pour lutter contre les menaces de logiciels malveillants sophistiqués et
en constante évolution.
Il est important de noter que l'ingénierie inverse peut avoir des utilisations légitimes et illégitimes. Les
utilisations légitimes comprennent la maintenance des logiciels, l'interopérabilité et l'analyse de la
sécurité. Les utilisations illégitimes, telles que le piratage ou la modification non autorisée de logiciels,
sont généralement considérées comme contraires à l'éthique.
L'ingénierie inverse ne se limite pas à l'analyse des logiciels malveillants. Elle peut être utilisée pour
analyser n'importe quel logiciel ou système, y compris les logiciels légitimes, afin de comprendre son
fonctionnement interne ou d'y apporter des modifications, de comprendre les protocoles propriétaires,
d'analyser les vulnérabilités des logiciels, de tester l'interopérabilité ou de créer des solutions de
remplacement compatibles.
Dans l'ensemble, l'ingénierie inverse est une technique puissante qui nous permet d'explorer, de
comprendre et d'exploiter les systèmes existants, contribuant ainsi à l'innovation, à la sécurité et aux
progrès technologiques.
Le plus souvent, quand vous êtes amené à faire du RE, vous allez le faire sur un fichier exécutable (.exe).
ce fichier est non lisible humainement parlant. Vous serez donc dans l'obligation de passer par plusieurs
outils. Chaque outil utilisé pour l'analyse du malware vous permet d'extraire quelques informations sur le
malware, et c'est l'utilisation de l'ensemble des outils qui va vous permettre de comprendre le processus
d'un malware.
Nous avons deux approches pour l'analyse de malware: l'analyse statique et l'analyse dynamique.
1. L'analyse statique:
C'est une technique utilisée pour analyser un fichier sans l'exécuter, cette analyse permet généralement
de déterminer si un fichier exécutable est malicieux ou pas. Elle consiste à charger le fichier exécutable
dans un désassembleur et d'analyser ces instructions afin de découvrir ce que le programme fait.
Cette technique nécessite des pré-requis sur le désassemblage, comment est construit un code et
quelques concepts sur le système d'exploitation.
2. L'analyse Dynamique:
C'est une technique utilisée pour analyser un fichier en l'exécutant, afin d'observer son comportement sur
la machine et de créer des règles de sécurité efficaces. Il s'agit de surveiller l'interaction du logiciel
malveillant avec le système, ses communications réseau, les modifications de fichiers, les changements de
registre, la manipulation de processus, les dommages potentiels qu'il peut causer et d'autres activités.
Cette technique utilise un débogueur (debugger) pour examiner le programme.
Avec cette technique il faut préparer un environnement sûr avant l'exécution du fichier exécutable pour
éviter l'infection de votre machine.
Les deux techniques sont utilisées lors d'un reverse engineering afin d'avoir une analyse complète du
fichier exécutable suspects.
Les techniques d'analyse statique sont employées pour obtenir des informations sur la fonctionnalité, le
comportement et les vulnérabilités potentielles du logiciel analysé. durant l'ingénierie inverse, l'analyse
statique peut être effectuée sur l'exécutable binaire, le code source ou les représentations intermédiaires
d'un programme. Cette analyse permet de comprendre la logique du programme, d'identifier les failles de
sécurité potentielles et de découvrir des fonctionnalités cachées.
Dans cette partie du cours, nous examinerons les informations pertinentes que nous pouvons obtenir
d'un programme sans l'exécuter.
1. L'anti-virus:
La première étape de l'analyse des logiciels malveillants consiste à faire analyser le programme par
plusieurs antivirus afin d'identifier les menaces connues et les comportements suspects. Cela permet de
déterminer rapidement si le code analysé est déjà connu et donc d'économiser du temps et des efforts
pour une analyse plus approfondie.
Cependant, les antivirus se basent sur une base de données de logiciels malveillants connus, sur le
comportement du logiciel malveillant ou sur le filtrage par motifs (pattern-matching: présence d'une
chaîne de caractère spécifique à un type de malware). Les attaquants modifient souvent leur code, ce qui
change la signature du logiciel malveillant et permet de contourner les antivirus.
Pour les détections basées sur le comportement et le filtrage par motif (dites détection heuristique), ces
derniers sont plus efficaces pour la détection des malwares non connus. Cependant, ils peuvent être
outrepassés par un nouveau malware.
Un des sites les plus utilisés pour le scan d'un programme sur plusieurs AVs est VirusTotal.
Un hash est considéré comme l'empreinte digitale d'un fichier, et chaque fichier a son propre hash
unique.
Un hash peut être calculé en utilisant plusieurs outils, tels que md5deep, hashCalc, en ligne de
commande, etc.
Le hachage peut être utilisé comme un IoC et partagé avec d'autres analystes pour identifier les logiciels
malveillants. La recherche de ce hash sur l'internet permet de savoir s'il a déjà été identifié et s'il s'agit
d'une variante d'une famille de logiciels malveillants connue. Il est également utilisé pour blacklister les
fichiers malveillants connus (sur la base de leur hash), ce qui permet une détection et une prévention
proactives des menaces connues.
3. La recherche de Strings
Un string est une chaîne de caractère dans un programme, et un programme contient des Strings s'il
affiche un message, s'il se connecte à internet (IPs, URL ou domaine) ou s'il copie, déplace ou crée un
fichier dans un répertoire spécifique.
Cependant, les Strings sont stockés soit en ASCII soit en Unicode format. Pour l'ASCII on utilise 1 byte pour
chaque caractère et pour le Unicode format on utilise 2 bytes. Les deux codages (ASCII et Unicode)
terminent la chaîne de caractère par un NULL.
Exemple:
Unicode Format: 0x44 et 0x00 est la représentation Hex de lettre D en majuscule en Unicode format
Parfois l'exécution de la recherche des Strings via un logiciel peut vous donner des résultats sans aucune
signification. Dans ce cas, c'est l'analyste qui devrait filtrer et extraire les informations valide.
Exemple:
Dans cet exemple on peut voir que les chaînes de caractères KN12, ky@, $L!, ML+ n'ont aucune
signification et peuvent être ignorées.
Pour les deux chaînes de caractères GetLayout et SetLayout sont des fonctionnalités Windows et peuvent
être considérées comme deux informations significatives (pour information, la convention de nommage
des fonctions Windows commence toujours avec une lettre majuscule et le deuxième mot aussi).
Les APIs sont des interfaces normalisées qui permettent à différentes applications de communiquer,
tandis que les bibliothèques sont des collections de codes précompilés qui fournissent des fonctionnalités
réutilisables pour étendre les capacités d'un logiciel. Les APIs facilitent la communication et l'interaction,
tandis que les bibliothèques fournissent des fonctionnalités spécifiques à utiliser dans un programme.
Les attaquants utilisent souvent diverses bibliothèques pour faciliter leurs activités malveillantes. Voici
quelques exemples de bibliothèques couramment utilisées par les pirates informatique:
Bibliothèques API Windows: Les attaquants utilisent diverses bibliothèques Windows API pour
interagir avec le système d'exploitation et effectuer des actions malveillantes. Ces bibliothèques
comprennent kernel32.dll, advapi32.dll, user32.dll et ws2_32.dll. Elles fournissent des fonctions
pour la manipulation des fichiers, l'accès au registre, la gestion des processus, la communication
réseau, etc.
OpenSSL: OpenSSL est une bibliothèque open-source largement utilisée pour les communications
sécurisées. Les attaquants peuvent utiliser OpenSSL pour mettre en œuvre le cryptage, le
décryptage ou la communication réseau sécurisée dans leurs logiciels malveillants. Il fournit des
fonctions pour les opérations cryptographiques telles que les protocoles RSA, AES et SSL/TLS.
libcurl: libcurl est une bibliothèque populaire pour le transfert de données dans divers protocoles,
notamment HTTP, FTP, SMTP, etc. Les attaquants peuvent utiliser libcurl pour établir des
connexions réseau, télécharger des fichiers ou interagir avec des services web. Il fournit une API
facile à utiliser pour les requêtes HTTP et prend en charge des fonctionnalités telles que
l'authentification, les cookies et le protocole SSL.
libpcap: libpcap est une bibliothèque permettant de capturer et de traiter le trafic réseau. Les
attaquants peuvent utiliser libpcap pour renifler des paquets réseau, effectuer une
reconnaissance du réseau ou analyser la communication réseau au sein de leurs logiciels
malveillants. Elle fournit des fonctions de capture, de filtrage et d'analyse des paquets.
SQLite: SQLite est une bibliothèque de base de données légère et intégrée. Les attaquants
peuvent utiliser SQLite pour stocker et gérer des données au sein de leurs logiciels malveillants,
telles que des paramètres de configuration, des informations sur les serveurs de commande et de
contrôle (C2) ou des données volées. SQLite fournit une solution de base de données efficace et
facile à utiliser.
Crypto++: Crypto++ est une bibliothèque C++ bien connue pour les opérations cryptographiques.
Les attaquants peuvent utiliser Crypto++ pour mettre en œuvre des algorithmes de chiffrement,
de déchiffrement ou de hachage dans leurs logiciels malveillants. Elle fournit un large éventail de
fonctions et d'algorithmes cryptographiques, ce qui la rend adaptée à divers objectifs
malveillants.
Ce ne sont là que quelques exemples de bibliothèques que les attaquants peuvent utiliser dans leur
code malveillant. En identifiant la présence de ces bibliothèques dans le code du logiciel malveillant,
les analystes peuvent obtenir des informations sur les capacités, les méthodes de cryptage, les
communications réseau et les mécanismes de stockage des données utilisés par le logiciel
malveillant.
En outre, les attaquants utilisent souvent diverses API (interfaces de programmation d'applications)
pour interagir avec le système d'exploitation ou effectuer des activités malveillantes. Voici quelques
exemples d'API couramment utilisées par les pirates :
API Winsock: L'API Windows Sockets (Winsock) est utilisée pour la communication réseau. Les
attaquants peuvent utiliser les fonctions de l'API Winsock, telles que socket(), connect() ou
send(), pour établir des connexions réseau, envoyer/recevoir des données ou mener des
communications de commande et de contrôle (C2).
API du registre Windows : L'API Windows Registry permet de manipuler la base de données du
registre du système. Les attaquants peuvent utiliser des fonctions telles que RegOpenKeyEx(),
RegSetValueEx() ou RegDeleteKey() pour modifier les entrées du registre, notamment en créant
des mécanismes de persistance, en modifiant les paramètres du système ou en masquant leur
présence.
API Windows Management Instrumentation (WMI) : L'API WMI fournit une interface puissante
pour gérer les composants du système et recueillir des informations. Les attaquants peuvent
utiliser les fonctions WMI, telles que les méthodes ExecQuery() ou Create(), pour exécuter des
scripts malveillants, effectuer une reconnaissance ou exécuter des commandes à distance sur des
systèmes compromis.
API Windows pour la manipulation des processus : Les attaquants utilisent souvent des fonctions
de l'API Windows telles que CreateProcess(), OpenProcess() ou InjectLibrary() pour créer ou
manipuler des processus. Ces fonctions permettent des activités telles que l'injection de
processus, l'exécution de code ou l'élévation de privilèges.
API de cryptographie : Les attaquants peuvent utiliser des API de cryptographie, telles que
CryptEncrypt() ou CryptDecrypt(), pour crypter ou décrypter des données lors de l'exfiltration de
données ou pour obscurcir leurs canaux de communication.
API Windows pour la manipulation de fichiers : Les attaquants peuvent utiliser des fonctions de
l'API Windows telles que CreateFile(), ReadFile() ou WriteFile() pour manipuler des fichiers sur le
système compromis. Ces fonctions permettent des activités telles que le cryptage de fichiers, le
vol de données ou la modification du système de fichiers.
Ce ne sont là que quelques exemples des nombreuses APIs que les attaquants peuvent exploiter à
des fins malveillantes. En comprenant les API couramment utilisées par les attaquants, les analystes
peuvent identifier les appels d'API suspects dans le code du logiciel malveillant et obtenir des
informations sur le type d'activités que le logiciel malveillant est capable d'effectuer.
Les attaquants peuvent dissimuler leur code malveillant par l'obfuscation ou l'empaquetage (packing),
voire en combinant les deux techniques.
Les programmes légitimes contiennent souvent de nombreuses chaînes de caractères lisibles, ce qui n'est
pas le cas des programmes obfusqués ou empaquetés. Ces derniers utilisent souvent les fonctions
LoadLibrary et GetProcAddress pour accéder à d'autres fonctionnalités dans n'importe quelle
bibliothèque du système.
En ce qui concerne la différence entre l'obfuscation et le packing d'un code malveillant, il est important de
comprendre que les protocoles de chiffrement peuvent être utilisés dans les deux techniques, mais qu'ils
servent des objectifs différents dans chaque approche.
Les protocoles de chiffrement peuvent être utilisés dans le cadre des techniques d'obfuscation pour
chiffrer certaines sections du code, ce qui rend difficile pour les analystes de comprendre la logique ou
l'objectif de ces sections chiffrées. Toutefois, le chiffrement n'est qu'une des nombreuses méthodes
d'obfuscation qui peuvent être employées. Parmi les autres techniques d'obscurcissement, citons le
changement de nom des variables, l'ajout de code ou de complexité inutile, la réorganisation des blocs de
code, etc.
S'il n'utilise pas de cryptage, le code obscurci ne nécessite aucune étape de décompression ou de
décryptage avant d'être exécuté. Les techniques d'obfuscation appliquées au code visent à le rendre plus
difficile à comprendre ou à analyser, mais elles ne modifient pas le format de l'exécutable et ne
nécessitent pas de décompactage au moment de l'exécution. Le code obscurci est toujours directement
exécutable et le processus d'exécution reste le même que pour n'importe quel autre code.
Exemple d'outils permettant la désobfuscation : de4dot, JEB Decompiler (pour les applications Android),
IDA Pro.
ou crypter le fichier exécutable, ce qui donne une version empaquetée ou comprimée qui rend l'analyse
ou l'ingénierie inversée plus difficile.
Des protocoles de chiffrement peuvent être utilisés au cours du processus d'empaquetage pour chiffrer
l'ensemble du fichier empaqueté, ce qui rend plus difficile l'identification/détection du code malveillant
ou l'analyse de son contenu par les outils de sécurité.
Le fichier compressé doit être décompressé et/ou décrypté en mémoire. Ce processus de décompactage,
également appelé décompactage d'exécution, se produit dynamiquement pendant l'exécution et est
généralement effectué par une routine de décompactage intégrée dans le code emballé ou par un stub de
décompactage séparé qui accompagne le fichier empaqueté. Une fois décompressé, le code est exécuté
dans sa forme originale.
Un exemple d'outil permettant à la fois le processus d'empaquetage et de dépaquetage est UPX, qui peut
être téléchargé à partir de http:// upx.sourceforge.net/ (installez toujours la dernière version).
Le programmeur écrit son code source et ensuite le passe dans un compilateur qui va créer le code
exécutable (le code machine). Durant la phase de conversion "code source/code machine" le compilateur
crée un conteneur qu'on appelle un fichier PE qui est le format de fichier utilisé par Windows pour les
extensions .exe, .dll, .cpl, .src, .sys, .ocx, .drv, .efi, .fon.
Le format d'un fichier peut révéler beaucoup d'informations sur les fonctionnalités d'un programme. Le
format portable exécutable (PE) est utilisé par les exécutables, les code objet et les DLLs Windows.
Le PE contient les informations nécessaires pour le système d'exploitation pour qu'il lance l'exécution
d'un programme. Le PE a une entête qui contient des informations très pertinentes sur le code, le type
d'application, les librairies et l'espace mémoire nécessaires pour l'exécution du programme. Il existe
plusieurs parseur de fichier PE permettant de récupérer ces informations, exemple de parseur de fichier
PE: pestudio, PEviewer.
Les bibliothèques utilisées et les fonctions appelées sont souvent les parties les plus importantes d'un
programme, et leur identification est particulièrement importante, car elle nous permet de deviner ce
que fait le programme. Par exemple, si un programme importe la fonction URLDownloadToFile(), on peut
supposer qu'il se connecte à Internet pour télécharger un contenu qu'il stocke ensuite dans un fichier
local.
La plupart des fichiers contenant du code exécutable et chargés par Windows sont au format PE.
Segment DOS: lance un message d'erreur si le format PE du fichier n'est pas reconnu
L'entête PE: est un ensemble de structure permettant d'extraire des information sur le fichier en
question, la version du système d'exploitation visé par ce fichier, etc.
.text (code): c'est les instructions du programme que le processeur va exécuter (ce que le .exe
demande de faire). c'est la seule partie qui contient du code.
.data (Données): contient les variables initialisées auxquelles accède le programme.
o Dans certain cas, on peut aussi trouver d'autres sections comme ".rdata", ."idata" ou
".edata" qui contiennent les informations import et/ou export et peut aussi contenir des
données en lecture seule (read-only data).
.rsrc (Ressources): les ressources utilisées par le fichier .exe (exemple: son, icones, strings, menus,
images, etc). Souvent les Strings sont stockés dans la section .rsrc pour le support multilanguage.
L'analyse dynamique est une analyse qui s'effectue pendant et après l'exécution du malware et donc elle
parvient après une analyse statique.
Pour information, l'analyse statique peut être limitée quand nous tombons sur un programme obfusqué
ou packed dont nous n'arrivons pas à réussir la désobfuscation ou l'unpack. Dans ce cas, l'analyse
dynamique permet non seulement de surveiller le malware lors de son exécution mais aussi d'examiner le
système après l'exécution.
Cependant, l'analyse dynamique peut engendrer un risque de sécurité pour votre machine et votre
réseau, raison à laquelle il faut bien préparer votre environnement avant d'entamer cette phase.
Une SandBox est un environnement isolé et sûr permettant de tester des programmes suspects sans
mettre en risque votre machine.
Il existe plusieurs SandBox open-source en ligne permettant l'analyse des programmes suspects, tels que:
Joe SandBox, Hybrid analysis, Norman SandBox, GFI SandBox, ThreatExpert, etc.
Il existe aussi des SandBox payantes utilisées généralement en entreprise, exemple : Cuckoo SandBox.
La plupart des SandBox fonctionnent de la même façon et le rapport final généré par les SandBox contient
plusieurs informations pertinentes comme l'activité réseau du malware, les fichiers
créés/supprimés/modifiés, le rapport du VirusTotal, les IoCs, etc.
Exemple d'une classification d'un malware après exécution sur la Joe SandBox:
2. L'exécution du malware
La majorité des malwares que vous allez rencontrer sont soit des fichiers exécutables soit des DLLs.
L'exécution d'un fichier exécutable est facile: soit vous double cliquez sur le fichier soit vous le lancez sur
un terminal. Par contre, ce n'est pas évident de lancer l'exécution des DLLs (Windows ne sait pas
comment les exécuter).
Procmon est un outil de surveillance avancée pour les systèmes d'exploitation Windows permettant de
surveiller des registres, des fichiers système, le réseau, les processus et les activités des threads. Ce
dernier a également une fonctionnalité de filtrage permettant de faciliter la recherche des informations
ciblées (exemple: RegSetValue, CreateFile, WriteFile, ou d'autres actions/appels suspects).
Cependant, cet outil consomme beaucoup de mémoire car il enregistre tous les événements sur votre
machine même en utilisant l'option de filtrage.
Même si cet outil permet de récupérer beaucoup d'informations, il ne peut pas tout capturer (exemple:
SetWindowsHookEx) et ne fonctionne pas efficacement pour la collecte des logs d'activité réseau.
Dans l'exemple ci-dessous, sur la ligne sélectionnée en noir, nous pouvons voir que l'exécutable
mm32.exe a créer un fichier mw2mmgr.txt (avec le chemin du fichier) et que l'opération a été effectuée
avec succès.
L'outil Process Explorer de Microsoft est un outil puissant qui devrait être lancé au moment de
l'analyse dynamique, il permet de surveiller les processus en cours d'exécution sur un système et les
affiche avec les relations père/fils.
Dans l'exemple ci-dessous, on peut voir que le processus services.exe et un processus fils du
processus winlogon.exe.
Lors de l'analyse dynamique il faut surveiller les nouveaux processus et les processus qui changent. En
double cliquant sur un processus une fenêtre s'ouvre (exemple ci dessous). Sur cette fenêtre nous
pouvons extraire des informations pertinentes. Par exemple:
Le bouton Verify vous permet de vérifier la signature du fichier. En prenant l'exemple ci dessus,
svchost.exe est un processus Windows. Cependant, un attaquant pourrait remplacer un processus
légitime sur le disque par son propre code malveillant. En vérifiant la signature avec "Process Explorer"
vous pouvez être sûr que le programme utilisé est légitime si la signature est valide.
Cependant, les attaquants peuvent utiliser une autre méthode pour vous tromper même si vous utilisez le
bouton Verify de "Process Explorer". Cette méthode qui s'appelle "remplacement de processus" (Process
replacement) consiste à exécuter un processus sur le système et à écraser son espace mémoire avec un
exécutable malveillant lui permettant d'avoir les mêmes privilèges que le processus légitime qu'il
remplace et d'être exécuté comme un processus légitime.
Une solution pour reconnaître un remplacement de processus est d'utiliser la Tab Strings sur l'outil
"Process Explorer" afin de comparer les strings du processus en mémoire et son image en disque. Si la
différence est énorme, cela signifie que ce n'est pas le même programme qui s'exécute. Exemple:
Cet outil peut être utilisé pour l'analyse des fichiers malveillants (.pdf, .docs, etc) en lançant d'abord
"Process Explorer" ensuite le fichier suspect. Si le fichier suspect lance d'autres processus vous pouvez le
voir sur l'outil et déterminer son emplacement.
5. L'utilisation de Wireshark:
Wireshark est un outil open source permettant d'écouter le réseau (Sniffing). Il est utilisé pour son
efficacité de capturer les paquets et l'analyse de chaque paquet individuellement.
Cet outil peut aussi être utilisé par les attaquant pour renifler des mots de passe, voler des informations
sensibles et écouter les discussions en ligne dans sur un réseau local.
Wireshark peut vous aider à comprendre comment les logiciels malveillants communiquent sur le réseau
en reniflant les paquets pendant qu'ils communiquent. Pour utiliser Wireshark à cette fin, connectez-vous
à Internet, puis lancez la capture de paquets de Wireshark et exécutez le logiciel malveillant.
VI. Conclusion:
A noter que différents outils et approches sont disponibles pour différents travaux. Il n'y a pas d'approche
unique. Chaque situation est différente, et les divers outils et techniques que vous apprendrez auront des
fonctionnalités similaires et parfois superposées. Si vous n'avez pas de chance avec un outil, essayez-en
un autre. Si vous êtes bloqué, ne vous attardez pas trop longtemps sur un problème, passez à autre chose.
Essayez d'analyser le logiciel malveillant sous un angle différent ou adoptez simplement une autre
approche.
Enfin, n'oubliez pas que l'analyse des logiciels malveillants est comme un jeu. Au fur et à mesure que de
nouvelles techniques d'analyse des logiciels malveillants sont développées, les attaquants répondent par
de nouvelles techniques pour déjouer l'analyse. Pour réussir en tant qu'analyste de logiciels malveillants,
vous devez être capable de reconnaître, de comprendre et de déjouer ces techniques, et de réagir aux
changements dans l'analyse des logiciels malveillants.
Dans ce chapitre nous avons pu voir l'analyse statique basique et l'analyse Dynamique basique. Pour aller
plus loin, il existe d'autres méthodes et outils plus avancés. Dans ce cas, on parle de l'analyse statique
avancée et l'analyse dynamique avancée.