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“.