1. CAUQUIL ROMAIN MCS 22.5
VINCENT GONTIER Module REVERSE ENGINEERING
RAPPORT D’ANALYSE
BINAIRE SUDOKU
Nous avons reçu une sollicitation pour donner suite à l’infection d’une machine Linux.
En effet, un utilisateur aurait téléchargé un jeu de sudoku pour son bash sur Internet, mais
ce dernier ne fonctionne pas.
De plus, depuis qu’il a été installé, le fichier /root/target.txt est apparemment chiffré
puisqu’illisible.
L’historique des commandes effectuées par l’utilisateur nous a été fourni (cf capture
d’écran ci-dessous).
Ce livrable constitue un rapport d’analyse. Il permettra d’établir les différents
éléments de fonctionnement du binaire concerné par ce document. De plus, il nous
permettra de qualifier si cet exécutable est responsable de la perte du fichier
/root/target.txt.
L’objet de l’analyse est le fichier fournit suivant : sudoku
Type de Hash Valeur
md5 a2faef17899e9bae189f152160e39e3e
sha512 4f5ba9f4a7bc2e6ea542cd5df71956dab9255682b
2993b69a11684f532b432e35406647cab8546b0be
268e8e95c1b913b183c5c00bd1b968a87151b7528
d4f1b
IPSSI 1
2. CAUQUIL ROMAIN MCS 22.5
VINCENT GONTIER Module REVERSE ENGINEERING
Le présent document sera découpé en quatre parties :
- Analyse
Dans cette partie, nous présenterons le schéma de fonctionnement du binaire, les
mesures de persistance mises en place, les mesures d’obfuscation mises en place pour
complexifier le code source du binaire. Enfin, nous apporterons une conclusion sur sa
nature, son niveau de menace ainsi que sa portée d’attaque.
- Recouvrement
Cette partie abordera la présentation d’une solution permettant de retrouver l’usage
des fichiers. Le code source sera présenté en annexe de ce document, ainsi qu’un guide
d’utilisation.
- Recommandations
Nous apporterons ensuite quelques suggestions de bonnes pratiques à appliquer afin
que ce type d’incident ne se reproduise pas.
- Réecriture
Enfin, nous proposerons quelques améliorations au malware afin d’en étudier la
structure et les modes de fonctionnement possibles.
IPSSI 2
3. CAUQUIL ROMAIN MCS 22.5
VINCENT GONTIER Module REVERSE ENGINEERING
RESUME
Le binaire a été qualifié comme étant dangereux (7/10) :
1. sudoku => Trojan
- Mise en place d’un service Linux sudokd
2. sudokd => Ransomware
- Chiffrement de toutes les données de l’arborescence /home
- Chiffrement de toutes les données de l’arborescence /root
Artefact de compromission :
- Présence du service sudokd
- Echange avec l’adresse IP 51.38.48.162
A ce jour, il est possible de déchiffrer les données perdues en récupérant les clés sur le serveur des
attaquants. Si le serveur en question devient sécurisé, les données ne seront plus recouvrables.
Taux de recouvrement actuel : 100%
IPSSI 3
4. CAUQUIL ROMAIN MCS 22.5
VINCENT GONTIER Module REVERSE ENGINEERING
ANALYSE
a. Analyse du binaire (sudoku)
- Obfuscation : Le binaire est strippé et compilé statiquement.
- Le binaire a besoin d’être lancé en tant que root pour être fonctionnel.
- Obfuscation : Les commandes qui seront exécutées par la suite sont chiffrées par un décalage
simple (différent pour chaque commande).
IPSSI 4
5. CAUQUIL ROMAIN MCS 22.5
VINCENT GONTIER Module REVERSE ENGINEERING
- Persistance : Les commandes exécutées déploient un service Linux
A ce stade, il n’est pas encore possible de qualifier si le binaire est malveillant, celui-ci ne fait que
déployer un service.
Cependant, les mesures d’obfuscation (compilation spécifique et chiffrement des commandes) peut
laisser penser que le développeur de cette solution a essayé de cacher des éléments ce qui est
suspect.
Il est à noter que ce genre de techniques est également utilisé pour protéger le savoir faire et le code
source pour des programmes tout à fait légitimes. L’analyse du binaire opéré par le service fournira
plus de détails.
Le serveur avec lequel le binaire travaille est accessible à l’adresse suivante => 51.38.48.162
b. Analyse de la payload (sudokd)
La payload est récupérée par le binaire sudoku à l’url suivante :
http://51.38.48.162/binary. Il s’agit de la charge utile du service
installé.
IPSSI 5
6. CAUQUIL ROMAIN MCS 22.5
VINCENT GONTIER Module REVERSE ENGINEERING
- Obfuscation : Le binaire est strippé et compilé statiquement.
- Obfuscation : La commande qui sera exécutée par la suite est chiffrée par un XOR basique.
Le binaire procède à la génération d’une clé de chiffrement (64 caractères).
Le listing des données utilisateur ne prend en considération que les fichiers « réguliers ».
IPSSI 6
7. CAUQUIL ROMAIN MCS 22.5
VINCENT GONTIER Module REVERSE ENGINEERING
Le chiffrement utilisé est un XOR
La commande qui sera lancée est chiffrée
Le binaire communique avec une page web en php pour procéder à l’upload de la clé :
http://51.38.48.162/key.php
c. Conclusion
Le fichier sudoku est un fichier compilé (ELF) rédigé en langage C. Il ne sera
donc exécutable en l’état que sur un système Linux.
Il s’agit très clairement d’un malware puisque lors de son exécution, il va
chiffrer un ensemble précis de fichiers.
Son niveau de menace reste assez faible puisqu’il faut impérativement que
l’utilisateur qui le lance soit root lors de l’exécution. De plus, sa portée est
limitée étant donné qu’il ne chiffre pas les sous répertoires des dossiers ciblés.
IPSSI 7
8. CAUQUIL ROMAIN MCS 22.5
VINCENT GONTIER Module REVERSE ENGINEERING
RECOUVREMENT
a. Extraction de la clé en RAM
La clé est stockée dans une variable déclarée statiquement. Elle est donc
présente dans le stack du processus pendant toute la durée de fonctionnement
du programme.
Nous avons remarqué que le programme termine par une boucle semblable à
un while(1) vide, ce qui implique que celui-ci ne termine jamais.
On trouve le PID du processus en cours d’exécution.
On récupère la plage d’adresse allouée pour le stack du programme
On s’accroche au programme et on dump cet espace
On cherche ensuite dans cet espace mémoire les chaines de caractères imprimables de plus
de 30 caractères
On retrouve alors notre clé de chiffrement => MRYE3)9HKDPWB>?4-B,.J/.D_(>]=K
IPSSI 8
9. CAUQUIL ROMAIN MCS 22.5
VINCENT GONTIER Module REVERSE ENGINEERING
b. Attaque du serveur
ATTENTION : Toute intrusion ou tentative d’intrusion sur un système informatique est
interdite sans l’accord explicite de son propriétaire (que nous avons obtenu, s’agissant
d’un lab).
Le serveur utilisé par les attaquants présentent des failles permettant de retrouver les clés.
Suite à un nmap, nous avons statué qu’il n’y avait que deux services accessibles depuis
l’extérieur => SSH et le serveur HTTP utilisé.
Le serveur SSH est à jour et n’autorise que les connexions pas clés, nous nous sommes donc
intéressé plus en détails au service web.
A commencer par un gobuster :
L’outil nous indique la présence d’un certain nombre de choses. Un seul fichier n’est pas déjà
connu au travers du schéma de fonctionnement du binaire => le fichier keys.
Ce fichier semble contenir des clés de chiffrement. Nous avons lancé le malware sur une
machine témoin et la clé récupérée en RAM apparaît bien à la fin du fichier.
IPSSI 9
10. CAUQUIL ROMAIN MCS 22.5
VINCENT GONTIER Module REVERSE ENGINEERING
c. Code de recouvrement
Une fois la clé récupérée, il ne reste plus qu’à produire le code source qui va nous permettre
de déchiffrer le tout.
Le code source est fournit en annexe dans l’archive. Celui-ci prend en arguments
uniquement la clé à utiliser. Il va ensuite lister les fichiers ciblés et procéder au
déchiffrement caractère par caractère.
IPSSI 10
11. CAUQUIL ROMAIN MCS 22.5
VINCENT GONTIER Module REVERSE ENGINEERING
RECOMMANDATIONS
Nous avons établi une liste non exhaustive de bonnes pratiques à appliquer afin que
ce type d’évènement ne se reproduise pas.
1/ Ne pas travailler en tant qu’utilisateur root. Pour rappel, l’utilisateur root dispose
des droits administrateurs sur la machine. Il est nécessaire de splitter les privilèges.
2/ Avant d’exécuter un programme, s’assurer de sa légitimité. Si un doute persiste, il
est préférable de ne pas l’exécuter. Il existe des outils d’analyse simples (virustotal, …)
permettant de qualifier rapidement la nature globale d’un programme.
3/ Un stagiaire ne devrait pas avoir de droits d’administration sur des serveurs
sensibles de l’entreprise et ne devrait encore moins chercher à jouer dessus.
4/ Suite à une attaque de ce type, la machine ne doit surtout par être éteinte car des
informations précieuses résident en RAM. Elle doit cependant être coupé du réseau pour
éviter la propagation du malware.
IPSSI 11
12. CAUQUIL ROMAIN MCS 22.5
VINCENT GONTIER Module REVERSE ENGINEERING
CHANGEMENT DE CAMP
Dans une approche RedTeam, il nous a été demandé de créer une nouvelle version du
malware plus évoluée afin d’étudier les possibilités des hackers.
Le malware produit fonctionne alors de la manière suivante :
- Listing récursif de l’ensemble des fichiers dans l’arborescence /root et /home
- Récupération de l’uuid du processeur
- Génération d’une clé plus longue (256 octets)
- Chiffrement XOR complexifié en utilisant la clé générée de chaque fichiers
- Upload de la clé sur un serveur
- Flush complet de la mémoire du processus
Afin de pallier certaines problématiques et facilité l’obfuscation de notre code, nous avons
procédé à un upload dans un socket brut en C qui envoie l’identifiant du processeur de la
machine attaquée et de la clé de chiffrement utilisée.
Plutôt que de recevoir des clés sans réellement savoir d’ou elles viennent, nous avons donc
une information d’identification unique de la machine (que l’utilisateur fournira lors du
paiement pour récupérer la clé de chiffrement).
Le code source, la méthode de compilation ainsi qu’un exemple sont fournis en annexe dans
l’archive.
IPSSI 12