Cours3-Etude de Malware Et Ingenierie Inverseev2

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 15

Université Batna 2 Cours: Cyber Sécurité 2

Faculté des mathématiques et de l'informatique Master 2 ISIDS Année 2022/2023


Département d'informatique

Chapitre 3 : Etude de malware et ingénierie inversée

(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:

 Comment déterminer ce que fait exactement ce malware ?


 Comment se propage-t-il ?
 Comment persiste-t-il sur le système infecté ?
 Quelles données exfiltre-t-il ou modifie-t-il ?
 Le logiciel malveillant présente-t-il des vulnérabilités ou des faiblesses qui peuvent être exploitées
pour le détecter ou le supprimer ?
 Comment pourriez-vous créer des signatures réseaux plus efficaces sur vos outils ?
 Comment sauriez-vous que vous avez bien nettoyé et supprimé la malware et ses dérivés ?

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.

II. Analyse de malware:

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

Nesrine KHERNANE Page 1


Université Batna 2 Cours: Cyber Sécurité 2
Faculté des mathématiques et de l'informatique Master 2 ISIDS Année 2022/2023
Département d'informatique

techniques et méthodologies utilisées pour examiner et comprendre les logiciels malveillants. En


revanche, l'ingénierie inverse est l'une des principales techniques employées dans l'analyse des logiciels
malveillants.

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.

III. Les techniques utilisées pour l'analyse d'un malware:

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.

Nesrine KHERNANE Page 2


Université Batna 2 Cours: Cyber Sécurité 2
Faculté des mathématiques et de l'informatique Master 2 ISIDS Année 2022/2023
Département d'informatique

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.

IV. Les techniques d'une analyse statique basique:

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.

Voici quelques techniques et outils d'analyse statique couramment utilisés en rétro-ingénierie :

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.

Nesrine KHERNANE Page 3


Université Batna 2 Cours: Cyber Sécurité 2
Faculté des mathématiques et de l'informatique Master 2 ISIDS Année 2022/2023
Département d'informatique

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.

2. Le hash d'un programme

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.

Ci-après un exemple en utilisant PowerShell:

Ci-après un exemple de l'outil HashCalc:

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.

Nesrine KHERNANE Page 4


Université Batna 2 Cours: Cyber Sécurité 2
Faculté des mathématiques et de l'informatique Master 2 ISIDS Année 2022/2023
Département d'informatique

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:

ASCII: 0x53 est la représentation Hex de lettre S en majuscule en code ASCII

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).

GDI32.DLL représente la bibliothèque que hello.exe utilise.

153.42.13.64 est une adresse IP qu'un programme malveillant peut utiliser.

"You can use this link safely" est le message affiché.

Exemples d'informations pertinentes à récupérer lors de la recherche de chaînes de caractères (API et


bibliothèques):

Nesrine KHERNANE Page 5


Université Batna 2 Cours: Cyber Sécurité 2
Faculté des mathématiques et de l'informatique Master 2 ISIDS Année 2022/2023
Département d'informatique

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.

Exemples de DLLs et ce qu'elles peuvent dire sur un programme:

Nesrine KHERNANE Page 6


Université Batna 2 Cours: Cyber Sécurité 2
Faculté des mathématiques et de l'informatique Master 2 ISIDS Année 2022/2023
Département d'informatique

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

Nesrine KHERNANE Page 7


Université Batna 2 Cours: Cyber Sécurité 2
Faculté des mathématiques et de l'informatique Master 2 ISIDS Année 2022/2023
Département d'informatique

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.

4. L'obfuscation et le packing de malware

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.

Obfuscation: fait référence à la modification intentionnelle du code ou de la structure du programme


pour le rendre plus difficile à comprendre ou à analyser. L'objectif principal de l'obfuscation est d'entraver
les efforts du RE et de protéger la propriété du code malveillant. Elle consiste à transformer le code tout
en préservant sa fonctionnalité.

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.

Packing: ou l'empaquetage, quant à lui, se concentre principalement sur la compression ou le chiffrement


de l'ensemble du fichier exécutable d'un programme ou d'un logiciel malveillant. L'objectif de
l'empaquetage est de réduire la taille du fichier et de le rendre plus difficile à analyser ou à détecter.
L'empaquetage implique l'utilisation d'outils spécialisés ou de logiciels d'empaquetage pour comprimer

Nesrine KHERNANE Page 8


Université Batna 2 Cours: Cyber Sécurité 2
Faculté des mathématiques et de l'informatique Master 2 ISIDS Année 2022/2023
Département d'informatique

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).

En résumé, si l'obfuscation et l'empaquetage peuvent tous deux impliquer l'utilisation de protocoles de


chiffrement, la principale distinction réside dans leurs objectifs. L'obfuscation se concentre sur la
modification du code ou de la structure du programme pour entraver l'analyse, tandis que l'empaquetage
vise principalement à compresser ou à chiffrer l'ensemble du fichier exécutable pour échapper à la
détection.

5. Portable Executable File Format (PE)

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.

Nesrine KHERNANE Page 9


Université Batna 2 Cours: Cyber Sécurité 2
Faculté des mathématiques et de l'informatique Master 2 ISIDS Année 2022/2023
Département d'informatique

Visualisation du début d'un fichier PE:

L'entête MZ-DOS: permet de reconnaitre si un fichier est lancer depuis MS-DOS

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.

Table des Sections:

 .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.

Nesrine KHERNANE Page 10


Université Batna 2 Cours: Cyber Sécurité 2
Faculté des mathématiques et de l'informatique Master 2 ISIDS Année 2022/2023
Département d'informatique

V. Les techniques d'une analyse dynamique basique:

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.

Pour réussir, plusieurs outils peuvent être utilisés.

1. L'utilisation d'une SandBox:

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:

Nesrine KHERNANE Page 11


Université Batna 2 Cours: Cyber Sécurité 2
Faculté des mathématiques et de l'informatique Master 2 ISIDS Année 2022/2023
Département d'informatique

Cependant, l'analyse dynamique via une SandBox a aussi quelques inconvénients:

 La SandBox exécute le malware sans les options de ligne de commande.


 Si le malware doit attendre un ordre d'un serveur C&C avant de mettre en place un backdoor, ce
dernier ne sera pas visible sur le résultat de la SandBox.
 Si un malware a été programmé pour se lancer qu'après un certain temps (exemple: sleep (72h)),
la SandBox peut changer cette valeur pour la réduire, mais il existe d'autres méthodes
permettant de lancer le malware après un certain temps dont la SandBox ignore.
 Il existe des malwares qui détectent leurs lancements sur une machine virtuelle, dans ce cas le
malware peut même changer son comportement ou même refuser de s'exécuter.

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).

Ci-après la commande vous permettant d'exécuter une DLL:

C:\>rundll32.exe DLLname, Export

 rundll32.exe est inclus dans tous les systèmes d'exploitable Windows.


 DLLname: est le nom de la DLL à lancer.
 Export: est le nom de la fonction.

Exemple: le fichier rip.dll a les deux exports suivants: Install et Uninstall

Notre commande final devient:

C:\>rundll32.exe rip.dll, Install

3. La surveillance avec Procmon

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.

Nesrine KHERNANE Page 12


Université Batna 2 Cours: Cyber Sécurité 2
Faculté des mathématiques et de l'informatique Master 2 ISIDS Année 2022/2023
Département d'informatique

L'utilisation de cet outil vous permet de:


 En examinant les registres vous pouvez dire comment le malware a pu installer son programme
sur le registre.
 En examinant les fichiers système, vous pouvez extraire tous les fichiers que le malware a créé ou
les configurations qu'il utilise.
 En investiguant sur l'activité du processus (.exe) vous pouvez savoir si le malware a créé d'autres
processus.
 En identifiant les connexions réseau vous pouvez extraire les ports sur lesquels le malware
écoute.

4. L'outil Process Explorer:

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:

 Threads: vous permet de voir tous les threads actifs.


 TCP/IP: affiche les connexions actives ou les ports d'écoutes.
 Image: vous affiche le chemin vers l'exécutable sur le disque dur.

Nesrine KHERNANE Page 13


Université Batna 2 Cours: Cyber Sécurité 2
Faculté des mathématiques et de l'informatique Master 2 ISIDS Année 2022/2023
Département d'informatique

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:

Nesrine KHERNANE Page 14


Université Batna 2 Cours: Cyber Sécurité 2
Faculté des mathématiques et de l'informatique Master 2 ISIDS Année 2022/2023
Département d'informatique

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.

Nesrine KHERNANE Page 15

Vous aimerez peut-être aussi