Category Archives: Writeups

RuCTF 2012 Quals –
Discern utility

RuCTF 2012 - Discern utility - task description

Die Aufgabenstellung (Discern utility) spricht von einer aufgefundenen Datei und verlangt von uns festzustellen, was der deren Inhalt beschreibt. Bei dem Dokument selbst handelt es sich nur um eine Textdatei, deren Inhalt mit 73 Zeilen recht überschaubar ist. Ein erster Blick in die Daten zeigt uns:

brk(0)                                  = 0x2335000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f9bfad31000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=117316, ...}) = 0

Hierbei handelt es sich um “System Calls” (Syscalls), das heißt, rudimentäre Systemfunktionen, die im Kernel verankert sind und aus denen die Funktionalität aller komplexen Programme aufgebaut wird. Welche Syscalls ein Programm verwendet, lässt sich mit dem Werkeug “strace” herausfinden. Und genau dieses Werkzeug wurde auch hier verwendet um die Aufgabe dieser Challenge zu stellen.

Um die Aufgabe zu lösen müssen wir also herausfinden, welches Werkzeug die uns zur Verfügung gestellte strace-Ausgabe liefert. Sehen wir uns dazu die gesamte Textdatei an und versuchen, Merkmale des aufgerufenen Programmes zu identifizieren. Folgende Syscalls sollten hierbei auffallen:
Continue reading

CodeGate 2012 Quals –
forensics #3

CodeGate CTF 2012 - Forensics #3 - task description

In dieser Challenge (forensics #3) geht es darum, eine schadhafte URL ausfindig zu machen, die für die Infizierung des Zielsystem verantwortlich ist. Gemäß der Aufgabenstellung wurde die URL nach dem 9. Februar 2012 aufgerufen und die Spuren des Aufrufs möglicherweise nach der Infizierung gelöscht.

Das Entpacken der Datei liefert uns wieder ein Benutzerverzeichnis eines Windows-Systems. Es handelt sich erneut um die Daten, des uns bereits bekannten Benutzers “proneer”. Diesmal ist jedoch nicht das komplette “Users”-Verzeichnis enthalten, sondern nur die “Cookies”-Datei des Google Chrome Browsers.

rup0rt@lambda:~/forensic3$ file Cookies
Cookies: SQLite 3.x database

Eine erste Analyse der Datei zeigt uns, dass Google Chrome seine Cookies anscheinend in einer SQLite-Datenbank hinterlegt. Um diese Datei zu betrachten zu können und die darin enthaltenen Cookies auszulesen, verwenden wir das Werkzeug sqlitebrowser und erhalten eine Übersicht der insgesamt 109 gespeicherten Cookies.
Continue reading

CodeGate 2012 Quals –
forensics #2

CodeGate CTF 2012 - Forensics #2 - task description

In dieser Challenge (forensics #2) scheint es das Ziel zu sein, den Versuch eines SQL-Injection-Angriffes ausfindig zu machen. Als einzigen Hinweis erhalten wir die Information, dass der Browser beim Ausführen der SQL-Injection abgestürzt ist.

Beim Entpacken der Dateien stellen wir direkt fest, dass es sich (wieder) um das Benutzerverzeichnis eines Windows-Systems handelt. Wiederum sind es die Daten des Benutzers “proneer” (vermutlich war es sogar das selbe Archiv, wie in der Forensic #1 – Challenge).

Wonach suchen wir nun am cleversten in den Benutzerdaten? Wir wissen, dass der Browser beim SQL-Angriff abgestürzt ist und wir wissen auch – und kennen das vermutlich aus eigener Erfahrung -, dass Browser beim Schließen die letzten Sitzungen speichern und beim erneuten Öffnen dem Benutzer wieder anbieten. Unser Ziel ist es also, zuerst den verwendeten Browser zu identifizieren und in einem zweiten Schritt zu versuchen, die Aktionen der letzten Sitzung zu rekonstruieren.

rup0rt@lambda:~/forensic2/Users/proneer/AppData/Local$ ls
010 Editor           History                Temp
Adobe                IconCache.db           Temporary Internet Files
Apple                Microsoft              VirtualStore
Application Data     Microsoft_Corporation  VMware
GDIPFONTCACHEV1.DAT  Microsoft Help
Google               Mozilla
rup0rt@lambda:~/forensic2/Users/proneer/AppData/Local$ ls Google/
Chrome  CrashReports  Google Talk
rup0rt@lambda:~/forensic2/Users/proneer/AppData/Local$ ls Mozilla/
Firefox
rup0rt@lambda:~/forensic2/Users/proneer/AppData/Local$ ls Microsoft
Assistance    Feeds Cache           Office        Windows Mail
CoreCon       Internet Explorer     VisualStudio  Windows Media
Credentials   Media Player          VSA           Windows Sidebar
Event Viewer  Microsoft SQL Server  VSTAHost
Feeds         MSDN                  Windows

Ein Blick in die lokalen Anwendungsdaten zeigt uns, dass zumindest für die drei gängigsten Browser (Chrome, Firefox und Internet Explorer) Verzeichnisse existieren. Um herauszufinden, welcher zuletzt verwendet wurde, sehen wir uns die Zeitstempel der Sitzungsdateien an.
Continue reading

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.
Continue reading

CodeGate 2012 Quals – misc #4

Für die Aufgabe 4 der Kategorie “misc” gibt es keine Beschreibung oder Hinweise darauf, was als Lösung erwartet wird, sondern nur einen Link zu einer ZIP-Datei. Das Ziel der Challenge gilt es also selbst heraus zu finden.

Nachdem die Datei entpackt ist, stellt sich der Inhalt zunächst als Webseite dar. Anhand der Bezeichnung “codegate_homepage” kann hier schon vermutet werden, um was es sich wahrscheinlich handeln wird.

rup0rt@lambda:~/codegate_site$ ls -a *
codegate_homepage.htm

codegate_homepage_files:
.                 e_menu_2.gif         e_sub_top_img_2.jpg
..                e_menu_3.gif         inc_left.htm
codegate.css      e_menu_4.gif         inc_right.htm
codegate.js       e_menu_5.gif         main_bg_1.gif
copy_logo.gif     e_menu_6.gif         main_bg_2.gif
e_6.jpg           e_menu_7.gif         Thumbs.db
e_inc_bottom.htm  e_menu_8.gif         top_img.jpg
e_inc_sub_2.htm   e_sub_title_2_2.gif
e_menu_1.gif      e_sub_title_b.gif

Als erstes öffnen wir also die “codegate_homepage.htm” im Browser und verschaffen uns einen Überblick über den Inhalt.

CodeGate CTF 2012 - misc #4 - website

Bei der Webseite scheint es sich um die normale CodeGate-Homepage zu handeln. Auf den ersten Blick erscheint nichts auffällig. Außer dieser Seite scheinen auch keine weiteren Inhalte zu existieren, da die Links weiterhin auf die orginale Webseite im Internet und nicht auf lokale Dateien verweisen.
Continue reading

CodeGate 2012 Quals – misc #3

CodeGate CTF 2012 - misc #3 - task description

In dieser Aufgabe (misc #3) sollen wir nun also irgendein “Geheimnis” finden. Das Geheimnis scheint in einer Datei zu stehen und als Antwort dieser Challenge wird ein Passwort erwartet. Um uns einen Überblick zu verschaffen, öffnen wir zunächst das pcap-file mit Wireshark.

CodeGate CTF 2012 - misc #3 - wireshark protocol hierarchy

Ein Blick in die Protokoll-Statistik zeigt, dass es sich nur um HTTP-Verkehr (und die dazugehörigen TCP-Verbindungen) handelt. Also stellen wir zum Sichten des Datenverkehrs den Wireshark-Filter auf “http”.
Continue reading

CodeGate 2012 Quals – misc #1

CodeGate CTF 2012 - misc #1 - task description

Die Aufgabenstellung (misc #1) ist mal wieder recht unklar. Das 35mb-Zipfile zu durchsuchen würde jedenfalls in echte Arbeit ausarten. Also sehen wir uns zuerst den Text der Aufgabenstellung an und versuchen diesen zu dechiffrieren.

“Az hrb eix mcc gyam mcxgixec rokaxioaqh hrb mrqpck gyam lbamgarx oatygqh Erxtoigbqigarx Gidc hrbg gasc gr koaxd erzzcc zro i jyaqc Kr hrb ocqh rx Ockubqq ro Yrg man? Gyc ixmjco am dccqihrbgm”

Was sofort auffällt ist:
– es sind Satzzeichen vorhanden
– teilweise beginnen die “Wörter” mit Großbuchstaben
– einige Zeichenketten wiederholen sich (z.B. “hrb”)

Es liegt also nahe, dass es sich um einen Caesar-Chiffre handelt. Das testen wir an den ersten Wörtern kurz durch:

rup0rt@lambda:~$ for i in {1..25}; do caesar $i < first.plain; done
Ba isc fjy ndd hzbn
Cb jtd gkz oee iaco
Dc kue hla pff jbdp
Ed lvf imb qgg kceq
Fe mwg jnc rhh ldfr
Gf nxh kod sii megs
Hg oyi lpe tjj nfht
Ih pzj mqf ukk ogiu
Ji qak nrg vll phjv
Kj rbl osh wmm qikw
Lk scm pti xnn rjlx
Ml tdn quj yoo skmy
Nm ueo rvk zpp tlnz
On vfp swl aqq umoa
Po wgq txm brr vnpb
Qp xhr uyn css woqc
Rq yis vzo dtt xprd
Sr zjt wap euu yqse
Ts aku xbq fvv zrtf
Ut blv ycr gww asug
Vu cmw zds hxx btvh
Wv dnx aet iyy cuwi
Xw eoy bfu jzz dvxj
Yx fpz cgv kaa ewyk
Zy gqa dhw lbb fxzl

Ein normales Verschieben der Buchstaben führt also in keinem der 25 Möglichkeiten zu einem sinnvollen Ergebnis. Auch wenn der Text sehr kurz ist, führen wir zunächst eine Analyse der Buchstaben-Häufigkeiten durch.
Continue reading