Introduction & Culture G

Kaddate |

Si vous êtes perdus avec certains éléments de langage, vous avec un lexique ici : ./lexique.md

On a une semaine pour étudier ensemble l'analyse de malware, vous allez voir c'est un sujet très riche. On va commencer par voir ensemble ce que sont les malwares puis vous allez en développer un et l'analyser.

Définition du Malware

Les malwares, c'est un peu ce qu'on appelle en français les virus.

Pour résumer le terme: un malware, c'est n'importe quel programme développé à des fins malveillantes (le terme virus est un abus de langage mais on y reviendra).

Comme on fait de la cybersécurité, on va se poser la question de ce que les différents types de malwares vont impacter sur un SI (condifentiality, integrity, availability).

C'est très difficile de réellement classifier tous les malwares. L'informatique est un système vivant très évolutif et les définitions d'un jour se retrouvent obsolètes le jour d'après. MAIS voici un p'tit listing :

Type Description C I A
Trojans (chevaux de Troie) paraît légitime pour être installé (mé enfét nan t'as capté)
Ransomwares ils viennent retenir en otage des données en échange d'une rançon (disponibilité) x
Spywares ils espionnent l'activité et les données x
Rootkits ils permettent une prise de contrôle à distance sur la machine infectée x x
Worms ils se déploient à travers le réseau x x
Backdoors ils permettent de contourner un système de sécurité de manière durable
Keyloggers ils enregistrent vos frappes de clavier (confidentialité) x

Il existe énormément d'autres catégories et des nouvelles sont créées très régulièremment au fur et à mesure que les malwares et les techniques évoluent. Il n'y a pas de standard pour qualifier les malwares, alors on peut retrouver des catégories qui vont décrire des comportements, mais d'autres vont plutot décrire des mécanismes technique du malwares. En fait, souvent un malware ne correspond pas à un type spécifique mais à plusieurs : vous pouvez les voir comme des tags.

Par exemple, un malware comme WannaCry1 est à la fois un worm, un ransomware, un spyware et un exploiteur de backdoor.

Du coup c'est virus ou malware ?

C'est malware !

Un virus, en biologie, c'est un agent infectieux : il infecte un hôte et cherche à se reproduire en infectant un autre hôte. Les premiers programmes autoréplicatifs n'étaient pas malveillants : ils cherchaient juste à infecter le plus de machines possible pour le fun.

Donc un virus n'est pas un malware, par contre un malware est un virus dès lorsqu'il s'auto réplique

En français on traduit malware vers virus mais c'est une erreur, ce sont bien deux choses différentes en informatique

Who ?

Les malwares sont principalement développés par deux acteurs

Cybercriminalité

D'abord, on a les groupes cybercriminels (la base), qui eux ciblent toute entreprise qui brasse de l'argent. Leur processus est simple : prendre en otage les données d'une entreprise et demander une rançon en échange.

Il s'agit d'un marché TRÈS rentable avec 2 milliards2 de dollars de rançons payées en 2022-2023 (et ça, c'est uniquement les cas publics). Ces groupes sont organisés comme des entreprises avec des pôles SAV (oui oui), des devs de malware et des devs spécialisés dans le phishing. Et on retrouve plusieurs milliers de mutations de ransomwares par an.

Acteurs Étatiques

En second lieu, on a les acteurs étatiques. Ils sont beaucoup plus discrets et cherchent souvent à faire du renseignement ou de l'ingérence.

Ce sont des groupes avec des moyens bien plus conséquents et beaucoup plus pointus. Leurs processus sont faits pour être discrets avant tout, et en cas de problème ils se suppriment des systèmes ainsi que toutes leurs traces. Les cas documentés d'infections par des acteurs étatiques sont beaucoup plus rares et permettent souvent de découvrir des 0-days exploités par les États et démontrent des années d'avance sur les autres types d'acteurs.

How ?

Avant de rentrer vraiment dans la partie Malware, je vais d'abord vous donner un peu de contexte sur la chronologie d'une attaque classique par ransomware d'un cyber gang.

On peut découper une attaque classique en trois grandes étapes :
- Le patient 0 (ou vecteur d'entrée)
- La phase de reconnaissance et de latéralisation
- L'activation de la bombe logique

Le patient 0

C'est la partie la plus riche d'une attaque : Dans la très grande majorité des cas, c'est juste un mail avec une pièce jointe -_-' .
MAIS, dans d'autres cas, ça peut aussi être l'exploitation de vulnérabilités sur des serveurs d'interconnexion exposés type VPN, firewall et autres (Ivanti, Forti, Veeam). ou encore plus simplement, bien que beaucoup plus rare maintenant, ça peut être une intrusion physique, comme une clé USB malveillante branchée par un employé.

Comme vous le voyez, même si la phrase est répandue: la surface d'attaque principale, c'est l'interaction humaine.

Reconnaissance et propagation

Une fois le virus sur une machine, c'est du tout droit. Le but est de rester discret et d'infecter le plus de machines possible, notamment les services critiques type serveurs de backup, serveurs de mailing, Active Directory bien sûr. L'idée est d'avoir la majeure partie des données indispensables à l'entreprise et de les rendre incapables de restaurer les données.

La bombe logique

Une fois la compromission totale du SI, la bombe logique3 peut être activée. Dans le cas des ransomwares courants, c'est l'activation du "cryptolocker": le bout de malware qui va chiffrer les données et les rendre inopérantes.

La bombe logique

La bombe logique d'un malware est la partie qui active le "vrai" code malveillant. Dans le cas d'un ransomware, c'est la partie cryptolocker qui va venir tout chiffrer avant de demander un rançon. Si l'on veut une définition plus technique ce serait ça : "La bombe logique est un composant logiciel (programme, fonction, script...) activée seulement lorsque les bonnes conditions sont remplies et qui vient lancer la vraie finalité visée par le malware".

L'analyse de malware dans tout ça ?

C'est la pratique qui vise à développer une méthodologie permettant l'étude comportementale et systématique des virus. Ça permet d'étudier les virus et de pouvoir s'y adapter, mais aussi de récupérer des informations sur les méthodes des attaquants. L'autre intêret de pouvoir développer des patchs qui sauront inverser les actions des malwares.

Ça peut aussi avoir un intérêt légal : après une compromission, les éléments découverts peuvent servir de preuves juridiques.

Quelles informations on veut récupérer ?
- Des informations sur le groupe qui a développé le virus
- Remonter les serveurs d'attaque auxquels le virus pourrait se connecter
- Créer une base de connaissance de virus (signatures, comportements)
- Découvrir de potentielles vulnérabilités exploitées (0-day)

Dans le reverse engineering, et donc l'analyse de malware, on a deux grands types d'analyses :
- Statique
- Dynamique

Il faut comprendre que ces méthodes d'analyse sont complémentaires et itératives : un bon reverser sait faire les deux.

Analyse statique

Il dit quoi Wikipedia à ce sujet ? En informatique, la notion d’analyse statique de programmes couvre une gamme de méthodes utilisées pour obtenir des informations sur le comportement d'un programme lors de son exécution sans réellement l'exécuter. C'est cette dernière restriction qui distingue l'analyse statique des analyses dynamiques (comme le débogage ou le profiling) qui s'attachent, elles, au suivi de l’exécution du programme.

Ok, c'est pas mal. Effectivement, dans l'analyse statique, on n'exécute pas le programme. On va plutôt le disséquer et tenter de comprendre le code. L'intérêt principal, c'est que c'est une approche stable et sécurisée : si on n'exécute pas le malware, on n'a pas de souci de sécurité et notre système reste maîtrisé.

Pour ça on va faire appel à deux grandes techniques; le désassemblage et la décompilation. Pour ça il existe plusieurs outils, comme objdump, Ghidra, IDA, et bien d'autre.

Les malwares se protègent contre l'analyse statique, ils vont utiliser de l'obfuscation. C'est un domaine de l'informatique qui vise à rendre l'analyse d'un programme plus complexe en ajoutant des étapes inutiles à un programme mais qui ne change pas son comportement pour autant. Les malwares vont utiliser ce que l'on appelle des packers, qui sont des obfuscateurs complexes qui vont cacher le vrai code sous plusieurs couches de chiffrement et autres.

Ok bah c'est mort ducoup nan ? All hail dynamic analysis !

Analyse dynamique

Et du coup, bah l'analyse dynamique, c'est le contraire : c'est quand on lance le programme pour l'étudier...

Ça permet deux trucs cools :
- On peut mettre des sondes sur notre système, lancer le malware et observer tout ce avec quoi il interagit facilement
- On contourne les obfuscations qui empêchent l'analyse statique : une fois que le code s'est "auto-déchiffré", on peut refaire une analyse statique sur ce "nouveau" code


Dans la suite on va rentrer un peu plus dans la technique et travailler sur les fondamentaux du reverse engineering. C'est par là :3

Références

L'article vu en cours : https://www.netskope.com/fr/blog/replay-revisiting-play-ransomware-anti-analysis-techniques