Description
memory, volatility, hard
James Vadoak is a blind soldier who has enrolled in the Rebel Alliance (his eyes were taken by Darth Vader). During a mission to compromise the Death Star, he managed to hack one of the central computers. He also left a message addressed to the Empire in a virtual machine which was on the computer. Unfortunately he did not have the time to save the file containing the message.
A VMware Fusion snapshot and memory files are being given to you. As a digital forensics analyst of the Empire your goal is to find the message left by James Vadoak in this VM.
Important note : the flag is the part of the message between the symbols. ”THCon23{}” is not written in the message.
Example: THCon23{secretmessage}
Author : Hugo Courtadon (Hugo Courtadon#6552)
Prise d’informations
On commence donc cette épreuve avec deux fichiers VMWare, comme indiqué dans l’énoncé :
- Death_Star.vmem
- Death_Star.vmsn
Le fichier “vmsn” et le dossier “_MACOSX” ne sont pas utiles pour cette épreuve.
VMWare n’utilise pas de format de fichier particulier pour la RAM (à l’instar de VirtualBox…). Il est donc possible de l’utiliser directement avec Volatility3 (le 2 aussi, mais nous sommes en 2023, il faut évoluer avec son temps).
|
|
On sait qu’il faut trouver une note qui n’a pas eu le temps d’être enregistrée, donc en regardant les process :
|
|
Le process “notepad.exe” parait être un bon candidat (toute façon, y a rien d’autres dans ce dump :))
Notepad.exe ? Piece of cake
Si on retourne un peu lors de la préhistoire, il existe 2 plugins volatility2 peut connus qui permettent de récupérer ce qui a été saisi dans “notepad.exe” en mémoire :
- editbox
- notepad
|
|
(Pour utiliser volatility2, j’ai un docker : https://gitlab.com/makimitz/infosec-docker/-/tree/master/forensic/volatility (c’est pas maintenu, ça ne le sera, pas s’il y a des bugs, tant pis :D))
Donc à ce stade du challenge, nous avons :
- On sait que c’est dans le “notepad.exe”
- On sait que c’est pas forcément quelque chose de printable ou un bug lors de l’acquisition (sinon les plugins auraient fonctionnés)
Maintenant il faut répondre à ces questions :
- Le format de l’encoding -> Savoir quoi chercher dans le dump
- Où -> Eviter de se taper toute la mémoire de notepad.exe
Guessing
Le moment le plus fun du challenge était donc celui ci : guess et lire entre les lignes de l’énoncé :D
L’énoncé nous dit : “James Vadoak is a blind soldier […] He also left a message”
Comment donc un aveugle peut laisser un message sur un ordinateur ? Et oui, en braille.
N’étant pas un expert du braille et encore moins de sa représentation en mémoire, un coup de google Fu (wikipedia quoi), nous donne la solution : https://en.wikipedia.org/wiki/Braille_Patterns
On remarque que le braille est sous forme d’unicode et qu’il y le pattern “0x28 0x?? 0x28 0x??” etc. On a répondu à la première question sur le format à chercher.
Yara + VADTree
Pour chercher un pattern en mémoire, il est possible de s’amuser avec hexdump, strings et grep, mais n’étant pas spécialement masochiste, je préfère utiliser “yarascan”.
|
|
Au final on obtient environ 2 offsets correspondant à notre recherche dans le process de notepad.exe :
- 0xd6eab
- 0xdc47b
Le portage des plugins volatility2 vers le 3 n’étant pas terminé, on refaire un petit “time travel” pour utiliser vadtree et la fonctionnalité graphviz :
|
|
Ca a donc cette tête là :
Le fichier est téléchargeable ici : graph.dot
On voit pas grand chose sur le graph, mais on s’en fiche parce qu’on a déjà des offsets à trouver. On voit donc que nos marqueurs ont match avec un bout de mémoire dans la heap (rouge dans vadtree c’est la heap) :
Avec cette information, nous venons de répondre à notre “où”.
Extraction et décodage
Maintenant, qu’on sait où et quoi chercher, c’est tout de suite plus simple :
|
|
Il ne reste plus qu’à retrouver nos petits :
|
|
C’est pas vraiment aligné pareil, mais on a bien un pattern. Un peu de bash fu pour ré encoder tout ça et normalement il sera possible d’en tirer quelque chose :
⠇⠈⠛⠀⠊⠎⠀⠀⠱⠍⠊⡻⠊⠋⠊⠝⠙⠽⠕⠥⠗⠇⠁⠉⠅⠕⠋⠎⠏⠑⠑⠙⠙⠊⠎⠞⠥⠗⠃⠊⠝⠛⡽
Un tour sur le meilleur site pour les challenges stégo guess : https://www.dcode.fr/alphabet-braille
Flag
THCon23{IFINDYOURLACKOFSPEEDDISTURBING}
Pour conclure sur cette épreuve, la méthode d’analyse est intéressante, être obligé d’aller fouiller dans les VAD, faire un peu de Yara etc. Je pense que c’est un bon challenge pour prendre en main les outils d’analyse mémoire et mettre en place une méthodologie pertinente. Le bémol se situe sur le use case étudié lors de cette épreuve, il aurait été plus intéressant de le faire sous forme de réelles investigations, avec des malwares etc.
En tout cas GG à toute l’orga de la THcon, c’était très sympa :) A l’année prochaine \o/