285 lines
12 KiB
Markdown
285 lines
12 KiB
Markdown
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.
|
|
|
|
|
|
|