Attaque sur la supply chain logicielle

Hong J.,Okou A.,SAUVAGE N.

← Attaque sur la supply chain logicielle · La confiance empoisonnée / Malware.vsix / Les empreintes système / KeePass.exe

Les empreintes système

À partir d’un dump système, identifier des altérations d'un binaire et les mécanismes d’attaque associés.

La recherche précédente n’ayant pas permis de confirmer la présence d’une charge malveillante, l’entreprise a pu fournir un dump des événements système capturés lors de l’un des builds suspects.

Votre objectif est d’analyser ces événements afin d’identifier toute trace de modification du binaire final et de comprendre les mécanismes potentiellement mis en œuvre par l’attaquant.

Cote 47 pts

Indices

Pour analyser le dump vous pouvez utiliser Process Monitor
En se renseignant sur cet outil, on apprend qu’il sert à fusionner deux DLL. On peut donc en déduire que l’attaquant l’a utilisé pour injecter un code malveillant dans la DLL originale.
En nous fondant sur le nom « KeePassILPatcher », on peut désormais supposer que cet exécutable a modifié le binaire KeePass.exe issu d’une compilation légitime pour altérer les instructions IL et y injecter un hook vers du code malveillant.

Faire son rapport

Attention, on parle uniquement des fichiers téléchargés au moment du build !
On souhaite la ligne de commande complète.

Guide de l’exercice 3

texte alternatif

Tout d’abord, nous allons utiliser Process Monitor pour cet exercice.

Capture d’écran de Process Monitor

Ensuite, nous filtrons pour ne conserver que les processus liés à l’instance de VS Code.

Filtre sur l’instance VS Code


Lancement du build

  1. Quels sont les noms des différents fichiers téléchargé lors du lancement du build ?

    Attention : on parle ici uniquement des fichiers téléchargés au moment du lancement du build.
    Sur la capture suivante, on voit que les premiers fichiers créés ont été téléchargés vers 20:58.

Fichiers téléchargés

La solution attendue était donc:
KeePassLib.dll.enc,Mono.Cecil.dll.enc,TrlUtil.exe.enc,Util.exe.enc


Fichier camouflé 1

  1. Quel est le nom de l'exécutable d'origine du fichier Util.exe
    Chacun des quatre fichiers porte un nom qui ne correspond pas à son rôle. Il s’agit maintenant de rechercher dans les logs le véritable nom de Util.exe.

Recherche du nom réel d’Util.exe

La solution attendue était donc.
ILRepack2.0.43.0


Fichier camouflé 2

  1. Quel est le nom de l'exécutable d'origine du fichier TrlUtil.exe ?

On procède de la même manière pour trouver le véritable nom de TrlUtil.exe.

Recherche du nom réel


Première commande utilisée

  1. Quelle est la première commande utilisé par un des exécutables téléchargés ?
    On remarque dans les logs que la première commande exécutée par Util.exe est :

Util.exe

Le flag attendu est donc.
C:\Users\V\AppData\Local\Temp\hp-nI5fQ4\Util.exe /out:c:\Users\V\Desktop\KeePass\KeePass\Build\KeePass\Release\KeePassLib.dll c:\Users\V\Desktop\KeePass\KeePass\Build\KeePass\Release\KeePassLib.dll C:\Users\V\AppData\Local\Temp\hp-nI5fQ4\KeePassLib.dll

En se renseignant sur cet outil, on apprend qu’il sert à fusionner deux DLL.
On peut donc en conclure que l’attaquant l’a utilisé pour injecter du code malveillant dans la DLL originale.


Seconde commande utilisée avec un autre des exécutables téléchargés

  1. Quelle est la deuxième commande utilisé par un des exécutables téléchargés ?
    Deuxième commande

Le flag attendu est donc:
C:\Users\V\AppData\Local\Temp\hp-nI5fQ4\TrlUtil.exe c:\Users\V\Desktop\KeePass\KeePass\Build\KeePass\Release\KeePass.exe c:\Users\V\Desktop\KeePass\KeePass\Build\KeePass\Release\KeePassLib.dll c:\Users\V\Desktop\KeePass\KeePass\Build\KeePass\Release\KeePass.exe.

On peut désormais supposer, d’après le nom KeePassILPatcher, que cet exécutable a modifié le binaire KeePass.exe produit par un build légitime, puis a altéré les instructions IL pour y injecter un hook vers du code malveillant.
La prochaine étape de l’enquête sera l’analyse de l’exécutable final, mais une dernière tâche a été appliquée pour compliquer l’analyse du binaire : donnez la commande utilisée pour cette action.


Tâche complexe appliquée au binaire

  1. Quelle est la commande qui confère une protection supplémentaire au binaire ?*
    protection et confusion

Le flag attendu est donc.
c:\Users\V\Desktop\KeePass\KeePass\Tools\Confuser.CLI.exe -n c:\Users\V\Desktop\KeePass\KeePass\KeePass\KeePass.crproj -o c:\Users\V\Desktop\KeePass\KeePass\Build\KeePass\Release