Cybersécurité et Malwares
Détection, analyse et Treat Inteligence
Éditions Eni
Chapitre 1
Compréhension des malwares
1. Présentation des malwares par familles13
1.1 Introduction13
1.2 Backdoor14
1.3 Ransomware et locker15
1.4 Stealer16
1.5 Miner17
1.6 Banking trojan17
1.7 Rootkit17
2. Scénario d'infection19
2.1 Introduction19
2.2 Scénario 1 : exécution d'une pièce jointe19
2.3 Scénario 2 : clic malencontreux20
2.4 Scénario 3 : ouverture d'un document infecté21
2.5 Scénario 4 : attaques informatiques21
2.6 Scénario 5 : attaques physiques - infection par clé USB22
2.7 Scénario 6 : attaques de type supply chain22
3. Techniques de communication avec le C&C23
3.1 Introduction23
3.2 Mise à jour de la liste des noms de domaine23
3.3 Communication via HTTP/HTTPS/FTP/IRC24
3.4 Communication via un client e-mail24
3.5 Communication via un réseau point à point25
3.6 Communication via des protocoles propriétaires25
3.7 Communication via le protocole DNS25
3.8 Communication passive26
3.9 Fast flux et DGA (Domain Generation Algorithms)26
3.10 Cibles sans accès internet27
4. Mode opératoire en cas d'attaques ciblées persistantes (APT)28
4.1 Introduction28
4.2 Phase 1 : reconnaissance28
4.3 Phase 2 : intrusion29
4.4 Phase 3 : persistance30
4.5 Phase 4 : pivot30
4.6 Phase 5 : exfiltration31
4.7 Traces laissées par l'attaquant31
5. Ressources sur Internet concernant les malwares32
5.1 Introduction32
5.2 Sites permettant des analyses en ligne32
5.3 Sites présentant des analyses techniques34
5.4 Sites permettant de télécharger des samples de malwares36
6. Résumé37
Chapitre 2
Malwares ciblant les systèmes Microsoft Windows
1. Introduction39
2. Collecte d'informations40
2.1 Introduction40
2.2 Collecte et analyse de la base de registre40
2.3 Collecte et analyse des journaux d'événements42
2.4 Collecte et analyse des fichiers exécutés au démarrage43
2.5 Collecte et analyse du système de fichiers45
2.6 Gestion des fichiers bloqués par le système d'exploitation51
2.7 Outil DFIRORC52
3. Image mémoire53
3.1 Présentation53
3.2 Réalisation d'une image mémoire54
3.3 Analyse d'une image mémoire57
3.4 Analyse de l'image mémoire d'un processus64
4. Fonctionnalités des malwares65
4.1 Techniques pour rester persistant65
4.2 Techniques pour se cacher67
4.3 Malware sans fichier71
4.4 Contournement de l'UAC72
5. Création d'un laboratoire d'analyse73
5.1 Introduction73
5.2 VirtualBox74
5.3 Machines virtuelles préconfigurées80
5.4 Viper : l'outil de gestion d'échantillons de malwares80
6. Analyse du vecteur d'infection88
6.1 Informations sur un fichier88
6.1.1 Format d'un fichier88
6.1.2 Chaînes de caractères présentes dans un fichier89
6.2 Analyse dans le cas d'un fichier PDF91
6.2.1 Introduction91
6.2.2 Extraire le code JavaScript92
6.2.3 Désobfusquer du code JavaScript96
6.2.4 Conclusion100
6.3 Analyse dans le cas d'un fichier Adobe Flash100
6.3.1 Introduction100
6.3.2 Extraire et analyser le code ActionScript100
6.4 Analyse dans le cas d'un fichier JAR101
6.4.1 Introduction101
6.4.2 Récupération du code source depuis les classes103
6.5 Analyse dans le cas d'un fichier Microsoft Office104
6.5.1 Introduction104
6.5.2 Outils permettant l'analyse de fichiers Office104
6.5.3 Cas d'un malware utilisant des macros : Dridex105
6.5.4 Cas d'un malware utilisant une vulnérabilité107
6.6 Utilisation de PowerShell109
7. Analyse dans le cas d'un binaire110
7.1 Analyse de binaires développés en Autolt110
7.2 Analyse de binaires développés avec le framework .NET112
7.3 Analyse de scripts Python compilés113
7.4 Analyse de binaires développés en C ou C++114
7.5 Analyse rapide des fonctionnalités d'un binaire114
7.6 Analyse de bootkits UEFI116
8. Format PE117
8.1 Introduction117
8.2 Schéma du format PE117
8.2.1 En-tête MZ-DOS118
8.2.2 Segment DOS118
8.2.3 En-tête PE119
8.2.4 Table des sections122
8.2.5 Table des imports123
8.2.6 Table des exports124
8.2.7 Ressources125
8.3 Outils pour analyser un PE125
8.4 API d'analyse d'un PE128
9. Suivre l'exécution d'un binaire132
9.1 Introduction132
9.2 Activité au niveau de la base de registre132
9.3 Activité au niveau du système de fichiers135
9.4 Activité réseau135
9.5 Activité réseau de type HTTP(S)144
10. Utilisation de Cuckoo Sandbox145
10.1 Introduction145
10.2 Configuration145
10.3 Utilisation147
10.4 Limitations154
10.5 Conclusion156
11. Résumé156
Chapitre 3
Reverse engineering
1. Introduction157
1.1 Présentation157
1.2 Législation158
2. Qu'est-ce qu'un processus Windows ?159
2.1 Introduction159
2.2 Process Environment Block159
2.3 Thread Environment Block161
3. Assembleur x86162
3.1 Registres162
3.2 Instructions et opérations167
3.3 Gestion de la mémoire par la pile174
3.4 Gestion de la mémoire par le tas177
3.5 Optimisation du compilateur177
4. Assembleur x64179
4.1 Registres179
4.2 Paramètres des fonctions179
5. Analyse statique180
5.1 Présentation180
5.2 Ghidra180
5.2.1 Présentation180
5.3 Navigation181
5.3.1 Renommages et commentaires191
5.3.2 Extensions193
5.3.3 Support de Python 3195
5.4 Rizin195
5.4.1 Présentation195
5.4.2 Ligne de commande195
5.4.3 Interface graphique : Cutter197
5.5 Techniques d'analyse201
5.5.1 Commencer une analyse201
5.5.2 Sauts conditionnels203
5.5.3 Boucles204
5.6 API Windows205
5.6.1 Introduction205
5.6.2 API d'accès aux fichiers206
5.6.3 API d'accès à la base de registre209
5.6.4 API de communication réseau215
5.6.5 API de gestion des services220
5.6.6 API des objets COM222
5.6.7 API restart manager223
5.6.8 Exemples de l'utilisation de l'API225
5.6.9 Conclusion234
5.7 Comparaison entre binaires234
5.7.1 Description234
5.7.2 Outils235
5.7.3 Exemple235
5.8 Limites de l'analyse statique241
6. Analyse dynamique242
6.1 Présentation242
6.2 x64dbg242
6.2.1 Présentation242
6.2.2 Contrôle de flux d'exécution247
6.2.3 Points d'arrêt251
6.2.4 Visualisation des valeurs en mémoire254
6.2.5 Copie de la mémoire255
6.3 WinDbg256
6.3.1 Présentation256
6.3.2 Interface257
6.3.3 Commandes de base259
6.3.4 Plug-in264
6.4 Analyse du noyau Windows265
6.4.1 Présentation265
6.4.2 Mise en place de l'environnement265
6.4.3 Protections du noyau Windows266
6.5 Émulation et instrumentation267
6.6 Limites de l'analyse dynamique et conclusion268
Chapitre 4
Techniques d'obfuscation
1. Introduction269
2. Obfuscation des chaînes de caractères271
2.1 Introduction271
2.2 Utilisation de ROT13271
2.3 Utilisation de la fonction XOR avec une clé statique275
2.4 Utilisation de la fonction XOR avec une clé dynamique280
2.5 Utilisation de fonctions cryptographiques283
2.6 Utilisation de fonctions personnalisées290
2.7 Outils permettant de décoder les chaînes de caractères299
2.8 Utilisation de Cyberchef300
2.9 Utilisation de Malduck304
3. Obfuscation de l'utilisation de l'API Windows305
3.1 Introduction305
3.2 Étude du cas Duqu307
3.3 Étude du cas EvilBunny311
4. Packers313
4.1 Introduction313
4.2 Packers utilisant la pile315
4.3 Packers utilisant le tas327
4.4 Encodeur Metasploit334
4.5 Outils pour automatiser l'unpack336
5. Autres techniques337
5.1 Anti-VM337
5.2 Anti-reverse engineering et anti-débogage339
6. Résumé343
Chapitre 5
Malwares ciblant les systèmes Android
1. Introduction345
2. Système d'exploitation Android346
2.1 Historique346
2.2 Architecture347
2.3 Partitions et systèmes de fichiers351
2.4 Sécurité355
2.4.1 Sécurité au niveau système355
2.4.2 Sécurité au niveau Dalvik/ART357
2.4.3 Effet de bord des fonctionnalités de sécurité359
2.5 Application Android359
2.6 Malwares ciblant les téléphones Android364
3. Vecteurs d'infection
3.1 Installation via Google Store366
3.2 Installation via des stores alternatifs367
3.3 Installation manuelle367
3.4 MDM (Mobile Device Management)368
3.5 Accès physique au terminal368
4. Création d'un laboratoire d'analyse369
4.1 Machine virtuelle ou téléphone physique ?369
4.2 Adb (Android Debug Bridge)373
4.3 Accès administrateur (root)375
4.4 Capture réseau379
4.4.1 Capture réseau pure379
4.4.2 Capture HTTP/HTTPS379
5. Analyse statique et décompilation d'une application382
5.1 Analyse d'un fichier APK382
5.2 Code Java et décompilation : Bytecode Viewer385
5.3 Anti-VM388
5.4 Code natif390
5.5 Techniques d'obfuscation393
6. Analyse dynamique397
6.1 Utilisation de Frida397
6.2 Utilisation de gdb pour les binaires natifs399
7. Résumé400
Chapitre 6
Malwares ciblant les systèmes iOS
1. Introduction401
2. Système d'exploitation iOS402
2.1 Historique402
2.2 Architecture402
2.3 Partitions et systèmes de fichiers406
2.4 Sécurité408
2.5 Jailbreak410
2.6 Application iOS411
2.7 Malwares ciblant iOS414
3. Vecteurs d'infection415
3.1 Accès physique au terminal415
3.2 Liens vers un fichier .ipa415
3.3 Stores alternatifs415
3.4 MDM malveillant416
4. Création d'un laboratoire d'analyse416
4.1 Analyse réseau416
4.2 Jailbreak d'un terminal et déploiement d'une application417
5. Analyse statique d'une application420
5.1 Introduction420
5.2 Analyse avec Ghidra420
6. Analyse dynamique428
6.1 Utilisation de Frida428
6.2 Utilisation de lldb430
7. Technique utilisée par les malwares sous iOS431
7.1 Injection de librairies431
7.2 Injection de JavaScript433
7.3 Keylogger sous iOS434
7.4 Terminal jailbreaké et injection de code435
8. Résumé436
Chapitre 7
Analyse de malware et Threat Intelligence
1. Introduction437
2. Indicateurs de compromission (IOC)439
2.1 Empreintes et signatures de fichiers439
2.1.1 Empreintes cryptographiques439
2.1.2 Empreintes par similarité : ssdeep et TLSH441
2.1.3 Empreintes des tables d'imports des exécutables Windows445
2.2 Indicateurs système448
2.2.1 Clés de registre449
2.2.2 Système de fichiers454
2.2.3 Réseau455
2.2.4 Exécutions456
3. Matrice du MITRE, TTPs et Threat Actors457
3.1 Matrice du MITRE457
3.1.1 Présentation457
3.1.2 Exemples d'utilisation de la matrice ATT&CK460
3.2 TTP et Threat Actors462
3.2.1 Définition462
3.2.2 TTP de TA505463
3.2.3 Threat Actor et Intrusion Set464
4. Règles et détections465
4.1 Introduction465
4.2 Suricata465
4.2.1 Suricata465
4.2.2 Exemple de détection467
4.3 YARA470
4.3.1 Présentation470
4.3.2 Syntaxe470
4.3.3 Exemple de détection de webshells472
4.3.4 Exemple de détection de Chinoxy via le module PE472
4.3.5 Python et YARA479
4.3.6 Outils open source utilisant YARA479
5. Sources de données481
5.1 Présentation481
5.2 Scanners481
5.2.1 Définition481
5.2.2 Shodan.io482
5.2.3 Onyphe.io486
5.2.4 Censys.io490
5.3 Passives DNS494
5.3.1 Présentation494
5.3.2 Passive DNS de VirusTotal494
5.3.3 RiskIQ496
5.4 Dépôts de malwares499
5.4.1 Présentation499
5.4.2 VirusTotal499
5.4.3 MalwareBazaar501
5.5 Sources multi-indicateurs507
5.5.1 Présentation507
5.5.2 OTX AlienVault507
5.5.3 RiskIQ511
6. Plateformes de Threat Intelligence515
6.1 Introduction515
6.2 MISP515
6.2.1 Généralités515
6.2.2 Fonctionnalités516
6.3 Yeti522
6.3.1 Présentation522
6.3.2 Fonctionnalités522
7. Résumé528
Index529