Defcon 20 CTF Prequals 2012 –
Forensics 300

Auch bei dieser Challenge (Forensics 300) wird uns eine Datei zum Download bereit gestellt und es heißt wieder “Get the Key!“. Eine erste Untersuchung der Daten mit dem Werkzeug “file”, um den Dateityp in Erfahrung zu bringen, liefert uns jedoch nur:

rup0rt@lambda:~/f300$ file for300-47106ef450c4d70ae95212b93f11d05d
for300-47106ef450c4d70ae95212b93f11d05d: data

Wenn selbst “file” den Dateityp nicht erkennen kann, muss es sich entweder um ein proprietäres Format oder einen sehr seltenen Dateityp handeln. Uns bleibt hier nichts anderes übrig, als uns die Datei manuell anzusehen.

rup0rt@lambda:~/f300$ xxd for300-47106ef450c4d70ae95212b93f11d05d | head
0000000: 5ea3 a417 0000 0020 0000 0000 7369 676e  ^...... ....sign
0000010: 6174 7572 653d 7772 676e 6430 385f 646c  ature=wrgnd08_dl
0000020: 6f62 5f64 6972 3831 3500 0000 5ea3 a417  ob_dir815...^...
0000030: 0000 0024 0038 e020 70e0 30e2 5e2a ff77  ...$.8. p.0.^*.w
0000040: 7eef 8466 08c3 9b2b 6465 763d 2f64 6576  ~..f...+dev=/dev
0000050: 2f6d 7464 626c 6f63 6b2f 3200 7479 7065  /mtdblock/2.type
0000060: 3d66 6972 6d77 6172 6500 0000 5d00 0000  =firmware...]...
0000070: 02b4 e72d 0000 0000 0000 4e03 fc00 8c66  ...-......N....f
0000080: f858 2fa1 b8d4 a5bf 319b 56ad 7e8f ad62  .X/.....1.V.~..b
0000090: 75bc 8a42 ed6b c347 8461 d9f2 5faf e5df  u..B.k.G.a.._...

Aha! Es handelt sich hier scheinbar um ein Firmware-Image. Vermutlich, da die Zeichenkette enthalten ist, um das eines “DIR-815“-Routers der Firma DLink. Firmware-Images sind meist Sammlungen aus weiteren Daten beziehungsweise Dateien, wie Boot-Images, gepackte Dateisysteme oder Konfigurationsdaten. Um solche Daten innerhalb eines Images ausfindig zu machen, existiert das Werkzeug “binwalk“, das speziell auf die Analyse von Firmwares ausgelegt ist.

rup0rt@lambda:~/f300$ binwalk for300-47106ef450c4d70ae95212b93f11d05d 

DECIMAL         HEX             DESCRIPTION
-------------------------------------------------------------------------------------------------------
108             0x6C            LZMA compressed data, properties: 0x5D, dictionary size: 33554432 bytes, uncompressed size: 3008436 bytes
983148          0xF006C         PackImg Tag, little endian size: 14690560 bytes; big endian size: 2744320 bytes
983180          0xF008C         Squashfs filesystem, little endian, version 4.0, size: 724610815 bytes, 1470 inodes, blocksize: 0 bytes, created: Sat Mar  6 12:29:04 1993

Binwalk findet innerhalb des Firmware-Images also drei Stellen, an denen weitere gepackte Daten vorhanden sind. Am interessantesten ist hier das Dateisystem Squashfs. Dabei handelt es sich um ein gepacktes, auf Performanz ausgelegtes Dateisystem, das nicht beschrieben werden kann und besonders im Bereich eingebetteter Systeme, wie zum Beispiel Routern, zum Einsatz kommt um die Systemdaten darin zu speichern. Ein Blick in dieses Dateisystem könnte sich daher lohnen. Dazu müssen wir es jedoch zunächst aus dem Firmware-Image extrahieren. Hierzu verwende ich das Werkzeug “dd” mit der von binwalk ermittelten Position.

rup0rt@lambda:~/f300$ dd if=for300-47106ef450c4d70ae95212b93f11d05d of=f300.squashfs bs=1 skip=983180
2859008+0 records in
2859008+0 records out
2859008 bytes (2.9 MB) copied, 6.62706 s, 431 kB/s

Anschließend müssen wir nun das Squashfs-Dateisystem entpacken. Dazu liefert Squashfs die “squashfs-tools” mit dem Werkzeug “unsquashfs” aus. Bei dem von uns extrahierten Image ist zu beachten, dass die squashfs-tools in der Version 4 mit Unterstützung für den “Lempel-Ziv-Markow-Algorithmus” (LZMA) benutzt werden müssen. (Die Verwendung einer falschen Version der squashfs-tools weist darauf hin.)

rup0rt@lambda:~/f300$ unsquashfs-lzma f300.squashfs -d squashfs
Parallel unsquashfs: Using 4 processors
1376 inodes (1415 blocks) to write

[===================================================|] 1415/1415 100%
created 1166 files
created 94 directories
created 144 symlinks
created 66 devices
created 0 fifos

Das Entpacken wurde erfolgreich durchgeführt und ein Blick in das Dateisystem der Firmware ist nun möglich.

rup0rt@lambda:~/f300/squashfs$ ls
bin  dev  etc  home  htdocs  lib  mnt  proc  sbin  sys  tmp  usr  var  www

Doch wonach suchen wir jetzt eigentlich? Zugangsdaten zum Router? WLAN-Passwörter? SSH-Logindaten? Da Squashfs, wie erwähnt, kein beschreibares Dateisystem ist, können beziehungsweise sollten solche Konfigurationsdaten hier nicht zu finden sein. Der “Key” muss also von den Erstellern der Challenge anderweitig verankert sein und nach ein paar Minuten Suche im Dateisystem offenbart sich auch der Ort.

rup0rt@lambda:~/f300/squashfs$ ls -R home/
home/:
dlink

home/dlink:
key.txt

rup0rt@lambda:~/f300/squashfs$ cat home/dlink/key.txt
ewe know, the sh33p always preferred Linksys

Die Lösung der Challenge lautet somit “ewe know, the sh33p always preferred Linksys“.

Leave a Reply

Your email address will not be published. Required fields are marked *