Newbie CTF 2019: Top Secret
Challenge
He stole the virtual machine file containing the top secret of the enemy country.
However, due to the shortage of USB memory, I dumped only the memory that seemed to be the most important.
What is the secret of an enemy country? (Fake Flag file exists.)
Download: NewbieCTF2019_Top_Secret.zip (1,2GB)
Analyse
- Entpacken der ZIP Datei (Nach dem Entpacken ist die Datei 4 GB groß)
- Die entpackte Datei besitzt die Dateierweiterung “vmem”. Dieser Typ wird von Virtualisierungssoftware wie VMware, Virtualbox usw. verwendet. Dabei handelt es sich um ein Speicherabbild des RAM oder eines physischen Speichers einer virtuellen Maschine.
- Für eine Analyse eines Speicherabbildes kann die Software Volatility Tool verwendet werden.
- Eine Online-Referenz der Befehle steht ebenfalls bereit.
- Das gesuchte Flag besitzt folgendes Format: “KorNewbie{???}”
1. Download Volatility Tool
$git clone https://github.com/volatilityfoundation/volatility
2. Installation
$cd volatility $chmox +x setup.py $./setup.py
Danach steht das Tool systemweit (/usr/bin/volatility) zur Verfügung.
Durchführung
Mit dem Befehl und zwei Parametern können grundsätzliche Informationen angezeigt werden.
volatility -f w7.vmem imageinfo
Parameter | Beschreibung |
---|---|
-f | Nach dem Parameter ist der Dateiname anzugeben (filename). |
imageinfo | Zeigt die Zusammenfassung des zu analysierenden Speicherabbildes an. |
Mit den Informationen wird ersichtlich, dass es sich um ein Windows 7 Speicherabbild handelt. Als nächstes wird untersucht, welche Prozesse zum Zeitpunkt der Erstellung des Speicherabbildes gelaufen sind.
volatility -f w7.vmem --profile=Win7SP0x86 pslist
Parameter | Beschreibung |
---|---|
–profile | Gibt an, um welchen Typ von Speicherabbild es sich handelt. Der Wert kann der vorherigen Ausgabe (Suggested Profile(s)) entnommen werden. |
pslist | Zeigt eine Liste aller Prozesse an. |
Jedem der Prozesse ist Speicher zugewiesen, welcher sich in diesem Abbild befindet. Jedoch ist die Frage, welcher Prozess beinhaltet das gesuchte Lösungswort (Flag)? Interessante Prozesse sind:
- chrome.exe
- mspaint.exe
- SnippingTool.e
- wordpad.exe
- notpad.exe
- cmd.exe
Jetzt gilt es, einem nach dem anderen zu analysieren…
Mit dem folgendem Befehl kann ein Speicherauszug (Teilmenge) aus dem Abbild erstellt werden, der genau einem Prozess entspricht:
volatility -f w7.vmem --profile=Win7SP0x86 memdump -p 3224 --dump-dir=tmp
Der Prozess “notpad.exe” besitzt die Nummer (PID) “3224”. In dem zuvor angelegten Ordner “tmp” wird eine Datei geschrieben, welche nur den Speicherinhalt des Prozesses “notpad.exe” beinhaltet.
Parameter | Beschreibung |
---|---|
memdump | Extrahieren des Speichers eines Prozesses in eine einzelne Datei. |
-p | Gibt die Prozessnummer an. |
–dump-dir | Angabe, in welchem Ordner der Speicherauszug abgelegt werden soll. |
Die erstellte Datei “3224.dmp” befindet sich im Ordner “tmp”. Abschließend kommt das Tool “strings” zum Einsatz.
strings 3224.dmp | grep "KorNewbie"
Es werden alle Textinhalte der Datei “3224.dmp” ausgegeben und an den Befehl “grep” übergeben. Der Befehl “grep” sucht nach dem Text “KorNewbie”.
Bingo! Das wars! :)
Alternative
Der gesamte Prozess kann abgekürzt werden, indem mit “strings” direkt über das gesamte Speicherabbild gesucht wird. Funktioniert in dem Fall aber nur, weil das Flag in Textform vorliegt.
strings w7.vmem | grep -oE "KorNewbie{.*}