Für die folgende Untersuchung wird eine virtuelle Maschine (im Folgenden als VM bezeichnet) mit Kali-Linux Version 2023.1 genutzt. Die in der Untersuchung genutzten Tools sind bereits in Kali-Linux vorinstalliert, weshalb keine zusätzliche Installation notwendig ist. ___ **[15.04.2023 20:15:15 UTC+2]**: Das Image wurde in die VM per Drag & Drop kopiert und auf dem Desktop der VM gespeichert. **[15.04.2023 20:18:53 UTC+2]**: Die Datei wird mit 7-Zip [64] 16.02 entpackt. >$ 7z e image3.zip Folgender Output wird dabei erzeugt: ``` 7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21 p7zip Version 16.02 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,3 CPUs Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz (806EC),ASM) Scanning the drive for archives: 1 file, 5021389400 bytes (4789 MiB) Extracting archive: image3.zip ERRORS: Headers Error -- Path = image3.zip Type = zip ERRORS: Headers Error Physical Size = 5021389400 64-bit = + Archives with Errors: 1 Open Errors: 1 ``` **[15.04.2023 20:29:42 UTC+2]**: Mit fdisk -l wird nun die Partitionstabelle aufgerufen: >$ sudo fdisk -l image.img Der Command generiert folgenden Output: ``` Disk image.img: 20 GiB, 21474836480 bytes, 41943040 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: C9C91594-26B4-4241-A6AC-99ED6689E164 Device Start End Sectors Size Type image.img1 2048 4095 2048 1M BIOS boot image.img2 4096 1054719 1050624 513M EFI System image.img3 1054720 41940991 40886272 19.5G Linux filesystem ``` **[15.04.2023 20:34:02 UTC+2]**: Es wird die Partitionstabelle mit mmls über The Sleuth Kit Version 4.11.1 aufgerufen: >$ mmls -B image.img Dabei wird folgender Output generiert: ``` GUID Partition Table (EFI) Offset Sector: 0 Units are in 512-byte sectors Slot Start End Length Size Description 000: Meta 0000000000 0000000000 0000000001 0512B Safety Table 001: ------- 0000000000 0000002047 0000002048 1024K Unallocated 002: Meta 0000000001 0000000001 0000000001 0512B GPT Header 003: Meta 0000000002 0000000033 0000000032 0016K Partition Table 004: 000 0000002048 0000004095 0000002048 1024K 005: 001 0000004096 0001054719 0001050624 0513M EFI System Partition 006: 002 0001054720 0041940991 0040886272 0019G 007: ------- 0041940992 0041943039 0000002048 1024K Unallocated ``` **[01.05.2023 16:24:03 UTC+2]**: Es wird die größte Partition des Images image.img in die Datei image_dd gedumped. Um den Status-Fortschritt während des Dumpens anzeigen zu lassen, setzen wir den Status auf "progress". Damit der Dump während eines Fehlers nicht angehalten wird, wird conv auf sync,noerror gesetzt. Um nichts von der Ausgabe abzuschneiden, wird zusätzlich notrunc gesetzt. Zudem werden 512 große Byte-Blöcke gedumped, wobei die ersten 1054720 Blöcke geskippt werden, und mit count wird die Anzahl der zu dumpenden Blöcke festgelegt.: >$ dd if=image.img of=image_dd status=progress conv=notrunc,sync,noerror bs=512 skip=1054720 Folgende Ausgabe wird dabei erzeugt: ``` 20905252352 bytes (21 GB, 19 GiB) copied, 502 s, 41.6 MB/s 40886272+0 records in 40886272+0 records out 20933771264 bytes (21 GB, 19 GiB) copied, 502.408 s, 41.7 MB/s ``` **[01.05.2023 16:42:34 UTC+2]**: Die Image-Datei wird mit dem folgenden Command gemountet. >$ sudo mount -t auto image_dd ./mnt/U3-mnt **[01.05.2023 16:52:01 UTC+2]**: Es wird mit folgendem Command in das mnt/U3-mnt Verzeichnis gewechselt: >$ cd mnt/U3-mnt Anschließend wird mit folgendem Command der Inhalt des Ordners angezeigt: >$ ls Folgende Ausgabe wird dabei erzeugt: ``` bin boot cdrom dev etc home lib lib32 lib64 libx32 lost+found media mnt opt proc root run sbin snap srv swapfile sys tmp usr var ``` **[01.05.2023 16:58:36 UTC+2]**: Um an eine Liste aller Login-Daten (und somit aller Benutzer) zu bekommen, muss zunächst mit folgendem Command die etc/passwd-Datei untersucht werden: >$ sudo cat passwd Dabei werden die folgenden Login-Daten ausgegeben: ``` root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/usr/sbin/nologin man:x:6:12:man:/var/cache/man:/usr/sbin/nologin lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin mail:x:8:8:mail:/var/mail:/usr/sbin/nologin news:x:9:9:news:/var/spool/news:/usr/sbin/nologin uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin proxy:x:13:13:proxy:/bin:/usr/sbin/nologin www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin backup:x:34:34:backup:/var/backups:/usr/sbin/nologin list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin systemd-network:x:100:102:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin systemd-resolve:x:101:103:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin systemd-timesync:x:102:104:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin messagebus:x:103:106::/nonexistent:/usr/sbin/nologin syslog:x:104:111::/home/syslog:/usr/sbin/nologin _apt:x:105:65534::/nonexistent:/usr/sbin/nologin tss:x:106:112:TPM software stack,,,:/var/lib/tpm:/bin/false uuidd:x:107:115::/run/uuidd:/usr/sbin/nologin tcpdump:x:108:116::/nonexistent:/usr/sbin/nologin avahi-autoipd:x:109:118:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/usr/sbin/nologin usbmux:x:110:46:usbmux daemon,,,:/var/lib/usbmux:/usr/sbin/nologin rtkit:x:111:119:RealtimeKit,,,:/proc:/usr/sbin/nologin dnsmasq:x:112:65534:dnsmasq,,,:/var/lib/misc:/usr/sbin/nologin kernoops:x:113:65534:Kernel Oops Tracking Daemon,,,:/:/usr/sbin/nologin avahi:x:114:121:Avahi mDNS daemon,,,:/run/avahi-daemon:/usr/sbin/nologin cups-pk-helper:x:115:122:user for cups-pk-helper service,,,:/home/cups-pk-helper:/usr/sbin/nologin whoopsie:x:116:123::/nonexistent:/bin/false sssd:x:117:124:SSSD system user,,,:/var/lib/sss:/usr/sbin/nologin speech-dispatcher:x:118:29:Speech Dispatcher,,,:/run/speech-dispatcher:/bin/false nm-openvpn:x:119:125:NetworkManager OpenVPN,,,:/var/lib/openvpn/chroot:/usr/sbin/nologin saned:x:120:127::/var/lib/saned:/usr/sbin/nologin colord:x:121:128:colord colour management daemon,,,:/var/lib/colord:/usr/sbin/nologin geoclue:x:122:129::/var/lib/geoclue:/usr/sbin/nologin pulse:x:123:130:PulseAudio daemon,,,:/run/pulse:/usr/sbin/nologin gnome-initial-setup:x:124:65534::/run/gnome-initial-setup/:/bin/false hplip:x:125:7:HPLIP system user,,,:/run/hplip:/bin/false gdm:x:126:132:Gnome Display Manager:/var/lib/gdm3:/bin/false dif:x:1000:1000:DIF,,,:/home/dif:/bin/bash systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin ``` Jede Zeile steht für einen Login-Datensatz. Der erste Eintrag einer Zeile entspricht dem Benutzer, der zweite Eintrag gibt an, ob ein verschlüsseltes Passwort in der etc/shadow Datei vorliegt (x -> Passwort liegt vor). **[01.05.2023 17:05:46 UTC+2]**: Es wird nun auch die etc/shadow Datei mit folgendem Command untersucht: >$ sudo cat shadow Dabei entsteht folgende Ausgabe: ``` root:!:19105:0:99999:7::: daemon:*:18912:0:99999:7::: bin:*:18912:0:99999:7::: sys:*:18912:0:99999:7::: sync:*:18912:0:99999:7::: games:*:18912:0:99999:7::: man:*:18912:0:99999:7::: lp:*:18912:0:99999:7::: mail:*:18912:0:99999:7::: news:*:18912:0:99999:7::: uucp:*:18912:0:99999:7::: proxy:*:18912:0:99999:7::: www-data:*:18912:0:99999:7::: backup:*:18912:0:99999:7::: list:*:18912:0:99999:7::: irc:*:18912:0:99999:7::: gnats:*:18912:0:99999:7::: nobody:*:18912:0:99999:7::: systemd-network:*:18912:0:99999:7::: systemd-resolve:*:18912:0:99999:7::: systemd-timesync:*:18912:0:99999:7::: messagebus:*:18912:0:99999:7::: syslog:*:18912:0:99999:7::: _apt:*:18912:0:99999:7::: tss:*:18912:0:99999:7::: uuidd:*:18912:0:99999:7::: tcpdump:*:18912:0:99999:7::: avahi-autoipd:*:18912:0:99999:7::: usbmux:*:18912:0:99999:7::: rtkit:*:18912:0:99999:7::: dnsmasq:*:18912:0:99999:7::: kernoops:*:18912:0:99999:7::: avahi:*:18912:0:99999:7::: cups-pk-helper:*:18912:0:99999:7::: whoopsie:*:18912:0:99999:7::: sssd:*:18912:0:99999:7::: speech-dispatcher:!:18912:0:99999:7::: nm-openvpn:*:18912:0:99999:7::: saned:*:18912:0:99999:7::: colord:*:18912:0:99999:7::: geoclue:*:18912:0:99999:7::: pulse:*:18912:0:99999:7::: gnome-initial-setup:*:18912:0:99999:7::: hplip:*:18912:0:99999:7::: gdm:*:18912:0:99999:7::: dif:$1$Al1JOy/e$nSQ5CgVYrz2WTfoeXQwH11:19105:0:99999:7::: systemd-coredump:!*:19105:::::: ``` Jede Zeile entspricht einem Login-Datensatz. Der erste Eintrag in der Zeile entspricht dem Benutzer und der zweite dem verschlüsselten Passwort. Da nur der Benutzer dif ein verschlüsseltes Passwort hat (* und ! bedeuten, dass die Authentifizierung über einen anderen Weg als über ein Passwort erfolgt. Meistens handelt es sich dabei um Systemprozesse etc), lässt sich daraus erschließen, dass “dif” der Benutzer des Systems ist. **[01.05.2023 17:17:14 UTC+2]**: Um den vorangegangenen Verdacht zu bestätigen, wird das Filesystem nach dem entsprechenden Homeverzeichnis untersucht. Dafür muss zunächst in das mnt/U3-mnt/home Verzeichnis gewechselt werden mit folgendem Command: >$ cd ../home Anschließend wird der Inhalt des Verzeichnis mit folgendem Command geprüft: >$ ls Folgende Ausgabe wird dabei erzeugt: ```dif``` Somit ist bestätigt, dass es sich bei dem Nutzer um den Benutzer “dif” handeln muss. **[01.05.2023 17:20:08 UTC+2]**: Es wird zurück auf den Desktop navigiert mit folgendem Command: >$ cd ~/Desktop **[07.05.2023 13:07:28 UTC+2]**: Eine Liste mit möglichen Passwörtern (Aufbau: \d\d[a-z]+\d\d , Zahlen von 0-4, Kleinbuchstaben d-i, Länge: 7 Zeichen) wird mit crunch erzeugt: >$ crunch 7 7 defghi + 01234 -t %%@@@%% -o passwortliste.txt Dabei wird folgender Output generiert: ``` Crunch will now generate the following amount of data: 1080000 bytes 1 MB 0 GB 0 TB 0 PB Crunch will now generate the following number of lines: 135000 crunch: 100% completed generating output ``` **[07.05.2023 13:08:32 UTC+2]**: Das Passwort wird mit Hilfe des Tools John the Ripper (Version 1.9.) und der vorher erzeugten Wortliste geknackt: >$ sudo john combined_file --wordlist=passwortliste.txt Dabei wird folgender Output generiert: ``` Warning: detected hash type "md5crypt", but the string is also recognized as "md5crypt-long" Use the "--format=md5crypt-long" option to force loading these as that type instead Using default input encoding: UTF-8 Loaded 1 password hash (md5crypt, crypt(3) $1>$ (and variants) [MD5 128/128 SSE2 4x3]) Will run 3 OpenMP threads Press 'q' or Ctrl-C to abort, almost any other key for status 22dif04 (dif) 1g 0:00:00:01 DONE (2023-05-07 07:08) 0.5434g/s 35686p/s 35686c/s 35686C/s 22dhh40..22dih23 Use the "--show" option to display all of the cracked passwords reliably Session completed. ``` Aus dem Output lässt sich ablesen, dass das Passwort des Nutzers dif “22dif04” ist und die Ermittlung des Passworts eine Sekunde gedauert hat. **[07.05.2023 13:17:13 UTC+2]**: Nachdem wir in den Ordner des Benutzers im gemounteten Image gewechselt sind (>$ cd ./mnt/U3-mnt/home/dif), haben wir dort alle Dateien, Ordner sowie Unterordner anzeigen lassen: >$ ls -R Dabei wird folgender Output generiert: ``` Desktop Documents Downloads Music Pictures Public snap Templates Videos ./Desktop: ./Documents: ./Downloads: firefox.tmp ./Downloads/firefox.tmp: tmpaddon ./Music: ./Pictures: schuhschnabel.png schuhschnabel.webp ./Public: ./snap: firefox ./snap/firefox: 631 common current ./snap/firefox/631: ./snap/firefox/common: ./Templates: ./Videos: ``` Anhand der Ausgabe können wir erkennen, dass der Nutzer dif den Browser Firefox heruntergeladen hat und die beiden Bilder im Pictures-Verzeichnis angelegt hat. Die beiden Bilder haben die Dateientypen png und webp, wie wir an der Ausgabe erkennen können. Die Bilder zeigen den afrikanischen Vogel Schuhschnabel.