CodeGate 2012 Quals –
forensics #1

CodeGate CTF 2012 - Forensics #1 - task description

Das Ziel dieser Challenge (forensics #1) ist es also, eine Datei, sowie deren Größe zu finden, die vom System gestohlen wurde. Die Aufgabenstellung liefert uns die Dateien des angegriffenen Benutzers sowie die Information, dass es sich bei der gesuchten Datei um ein Excel-Dokument mit Finanzdaten handelt und auf dieses vermutlich nach 14.00 Uhr (UTC+9), also während des Diebstahls zuletzt zugegriffen wurde.

Wir entpacken also als erstes die mitgelieferte 7zip-Datei und verschaffen uns einen Überblick über deren Inhalt. Bereits beim Extrahieren fällt auf, dass es sich hauptsächlich um das Benutzerverzeichnis eines Windows-Systems handelt und hier insbesondere um den Benutzer “proneer”.

rup0rt@lambda:~/forensic1$ ls Users/
All Users  Default  Default User  desktop.ini  proneer  Public

rup0rt@lambda:~/forensic1$ ls Users/proneer/
AppData           Music             Pictures
Application Data  My Documents      PrintHood
Contacts          NetHood           Recent
Cookies           NTUSER.DAT        Saved Games
Desktop           NTUSER.DAT{6cced2f1-6e01-11de-8bed-001e0bcd1824}.TM.blf                                      
Documents         NTUSER.DAT{6cced2f1-6e01-11de-8bed-001e0bcd1824}.TMContainer00000000000000000001.regtrans-ms 
Downloads         NTUSER.DAT{6cced2f1-6e01-11de-8bed-001e0bcd1824}.TMContainer00000000000000000002.regtrans-ms 
Favorites         ntuser.dat.LOG1   Searches                                                                           
Links             ntuser.dat.LOG2   SendTo                                                                   
Local Settings    ntuser.ini        Start Menu
Templates         Videos

So, nun wissen wir entweder wo Office zuletzt verwendete Dokumente ablegt oder wir müssen das Dateisystem per Hand durchsuchen. Zuerst versuche ich mit dem Werkzeug “find” alle Excel-Dateien aufzulisten, was jedoch kein Ergebnis liefert. Also durchsuche ich im “grep” den Inhalt aller Dateien nach Hinweisen auf Excel-Dokumente.

rup0rt@lambda:~/forensic1$ find Users/ -type f -iname "*.xls*"
rup0rt@lambda:~/forensic1$

rup0rt@lambda:~/forensic1/Users/proneer/AppData$ grep -r -i "xls" .
Binary file ./Local/Microsoft/Office/Groove/User/Resources14.xsslog matches
Binary file ./Local/Microsoft/Windows Mail/Stationery/Psychedelic.jpg matches
Binary file ./Local/Microsoft/Windows/UsrClass.dat matches
Binary file ./Local/Microsoft/Windows/History/History.IE5/MSHist012012021220120213/index.dat matches
Binary file ./Local/Microsoft/Windows/History/History.IE5/index.dat matches
Binary file ./Local/Microsoft/Windows/UsrClass.dat.LOG1 matches
./Local/Microsoft/Windows/Temporary Internet Files/Low/Content.IE5/HY0NNWK9/s_code[1].js://s.linkDownloadFileTypes="exe,zip,wav,mp3,mov,mp$
./Local/Microsoft/Windows/Temporary Internet Files/Low/Content.IE5/HY0NNWK9/min[1].js:this.domain="statse.webtrendslive.com";this.timezone$
./Local/Microsoft/Windows/Temporary Internet Files/Low/Content.IE5/HY0NNWK9/22481-11231[1].js:if(typeof YWA==="undefined"){YWA={};YWA.init$
./Local/Microsoft/Windows/Temporary Internet Files/Low/Content.IE5/FLUIHND7/webpagethumbnail[1].js:google.nyc.c.j_MlU2T4uPJoLAiQefwYCWAg_3$
./Local/Microsoft/Windows/Temporary Internet Files/Low/Content.IE5/FLUIHND7/welcome-upgrade2[1].htm:WolLoggingVars._isEnabled=true;try{var$
./Local/Microsoft/Windows/Temporary Internet Files/Low/Content.IE5/FLUIHND7/usercard[1]:jsonp_loadUserData1({"26cc52b5f07b4d8f81ca09bb368f$
./Local/Microsoft/Windows/Temporary Internet Files/Low/Content.IE5/FLUIHND7/2569210a296af7a76a1f0a41cafcfd42-4797f790eaf0aee5be80d629d76b8$
Binary file ./Local/Microsoft/Windows/Temporary Internet Files/Low/Content.IE5/FLUIHND7/p-download-xsh4_6[1].gif matches
./Local/Microsoft/Windows/Temporary Internet Files/Low/Content.IE5/F34UZ8CJ/webpagethumbnail[1].js:google.nyc.c.j_MlU2T4uPJoLAiQefwYCWAg_3$
./Local/Microsoft/Windows/Temporary Internet Files/Low/Content.IE5/2MB6XCV4/s_code_h[1].js:s.trackExternalLinks=true;s.trackInlineStats=tr$
Binary file ./Local/Microsoft/Windows/Temporary Internet Files/Low/Content.IE5/2MB6XCV4/jadsoftware155_300[1].jpg matches
./Local/Microsoft/Windows/Temporary Internet Files/Low/Content.IE5/2MB6XCV4/s_code[1].js:s.linkDownloadFileTypes="zip,wav,mp3,mov,mpg,avi,$
Binary file ./Local/Microsoft/Windows/Temporary Internet Files/Low/Content.IE5/2MB6XCV4/index_main[1].jpg matches
Binary file ./Local/Microsoft/Windows/Temporary Internet Files/Low/Content.IE5/2MB6XCV4/420bfb59-352c-4b7f-a15f-46d97c517d7b_gm[1].jpg mat$
./Local/Microsoft/Windows/Temporary Internet Files/Low/Content.IE5/2MB6XCV4/search[1].htm:<script>parent.window.google.td && parent.window$
./Local/Microsoft/Windows/Temporary Internet Files/Low/Content.IE5/2MB6XCV4/welcome[1].htm:WolLoggingVars._isEnabled=true;try{var s=Wol.Lo$
Binary file ./Local/Microsoft/Windows/Explorer/thumbcache_256.db matches
Binary file ./Local/Google/Google Talk/themes/system/common/images/document.png matches
Binary file ./Local/Google/Google Talk/avatars/2cbbf6912e58ae598e733e3a1d1afa21dffaf6b6.online.avatar matches
Binary file ./Local/Google/Chrome/User Data/Default/Cache/f_00004b matches
Binary file ./Local/Google/Chrome/User Data/Default/Cache/f_0000dd matches
Binary file ./Local/Mozilla/Firefox/Profiles/075lfxbt.default/Cache/_CACHE_003_ matches
Binary file ./Local/Mozilla/Firefox/Profiles/075lfxbt.default/Cache/B/BA/B4A3Ed01 matches
Binary file ./Roaming/Microsoft/Office/Recent/Carving????.LNK matches
Binary file ./Roaming/Microsoft/Office/Recent/[Top-Secret]_2011_Financial_deals.LNK matches
Binary file ./Roaming/Microsoft/Windows/Recent/AutomaticDestinations/9839aec31243a928.automaticDestinations-ms matches
Binary file ./Roaming/Microsoft/Windows/Recent/AutomaticDestinations/1b4dd67f29cb1962.automaticDestinations-ms matches

Beim Überfliegen der Ergebnisse fällt recht schnell die Datei “[Top-Secret]_2011_
Financial_deals.LNK” ins Auge – nicht nur, weil sie als “Streng Geheim” markiert ist, sondern auch, da wir aus der Aufgabenstellung wissen, dass Finanzdaten gestohlen wurden. Höchst wahrscheinlich ist diese Windows-Verknüpfung also ein Hinweis auf die von uns gesuchte Datei! Sehen wir uns also den Inhalt mit “strings” – auf Grund des binären Inhaltes – mal etwas genauer an…

rup0rt@lambda:~/.../$ strings \[Top-Secret\]_2011_Financial_deals.LNK
/C:\
INSIGHT
ACCOUN~1
L@c-
CONFID~1
,L@c-*
':5"
_TOP-S~1.XLS
C:\INSIGHT\Accounting\Confidential\[Top-Secret]_2011_Financial_deals.xlsx
win-in5aeg6ushu

Aha! Da haben wir also schon den ersten Teil, der für den Abschluss der Challenge erforderlichen Antwort – den Dateinamen “C:\INSIGHT\Accounting\Confidential\[Top-Secret]_2011_Financial_deals.xlsx”. Fehlt nur noch die Größe der Datei!

Leider wurde uns das Verzeichnis “C:\INSIGHT” bei dieser Challenge jedoch nicht bereit gestellt – wär ja auch zu einfach sonst. Die Frage lautet also, wie bekommen wir die Größe einer Datei heraus, auf die wir nicht zugreifen können und von der wir nur eine Verknüpfung besitzen?

Vielleicht haben wir ja Glück und Windows speichert in der Verknüpfung selbst die Größe der gelinkten Datei. Die Suche bei Google führt mich über Wikipedia zum Microsoft-Technet, das uns Informationen über das binäre Dateiformat der Link-Dateien zur Verfügung stellt! Aus dem PDF (Seite 10) entnehme ich…

CodeGate CTF 2012 - Forensics #1 - link file type

…, dass in den Windows-Verknüpfungen auch irgendwo die Größe des gelinkten Ziels gespeichert wird! Nun müssen wir diese Information nur noch auslesen. Klar, wir könnten jetzt den Header reversen und uns ein Skript schreiben um die korrekte Position zu finden. Aber wir sind faul und ich habe die Hoffnung, schnell ein Programm finden zu können, das uns diese Information ausliefert.

Und genau so ist es! Der Windows File Analyzer tut genau das, was er soll. Er bietet die Möglichkeit einen Shortcut zu analysieren und uns so die Informationen die im Link-Header enthalten sind zu liefern. Das Öffnen der Verknüpfung mit dem Windows File Analyzer liefert:

CodeGate CTF 2012 - Forensics #1 - Windows file analyzer

Die Dateigröße können wir hier aus der sechsten Spalte ablesen und erhalten 9296 Bytes. Hier können wir auch nochmal den Hinweis auf der Aufgabenstellung -die Zugriffszeit- verifizieren. In Spalte fünf lautet die letzte Zugriffszeit auf den 12.02.2012 um 06:39:49 Uhr (UTC+1, da deutsche Zeit). Diese Uhrzeit entspricht 14:39:49 (UTC+9), also genau die Zeit des Diebstahls.

Nachdem wir nun alle Daten beisammen haben, gilt es nur noch diese in die zum Abschluss der Challenge erforderliche Form zu bringen. Da “strlwr(md5(full_path|size))” verlangt wird, wenden wir folgende Befehlszeile an, um das Ergebnis zu erhalten.

rup0rt@lambda:~$ echo -n 'C:\INSIGHT\Accounting\Confidential\[Top-Secret]_2011_Financial_deals.xlsx|9296' | md5sum | tr '[:upper:]' '[:lower:]'
d3403b2653dbc16bbe1cfce53a417ab1  -

Die Antwort lautet also “d3403b2653dbc16bbe1cfce53a417ab1“.

Leave a Reply

Your email address will not be published.