12 KiB
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.