Informationssicherheit, 9. Übung


Aufgabe 1, 5 Punkte, Gruppe

Startet eine Container-Instanz der Challenge nmap und stellt eine
SSH-Verbindung zu dieser Instanz her. Ermittelt mit nmap, welche Server auf Eurem
Container erreichbar sind. Untersucht dazu jeweils localhost sowie
die zum Interface eth0 gehörige IP-Adresse (192…). Wie habt Ihr
die IP-Adresse herausgefunden?

Findet heraus, wo Ihr die ermittelten Informationen eintragen könnt,
um die Flag zu ergattern. Tipp: einen SSH-Tunnel erstellt Ihr mittels
ssh -L <lokaler Port>:localhost:<zielport> isec@ctf.informatik.uni-bremen.de -p <ssh-port>.

Verwendet nmap zunächst ohne weitere Optionen auf den
IP-Adressen. Welche Informationen erhaltet Ihr dadurch? Nutzt dann
sinnvoll die Optionen -sV, -sU, -O und -p. Wie arbeiten diese
intern ungefähr? Welche Optionen sind vielleicht außerdem nötig, um
Informationen zu gewinnen? Welche zusätzlichen Erkenntnisse gewinnt
Ihr, wenn Ihr -p 5000-6500 angebt? Gebt mindestens eine von Euch
verwendete Quelle an.

Worauf müsst Ihr achten, wenn Ihr sicherstellen wollt, dass Eure
Untersuchungen mit nmap das Zielsystem nicht beeinträchtigen? Welche
Bedeutung haben in diesem Zusammenhang die nmap script categories?

Dokumentiert Euer Vorgehen. Achtet insbesondere darauf, Screenshots
der nmap-Aufrufe beizufügen, auf denen die von Euch ermittelten
Informationen zu sehen sind. Fügt außerdem einen Screenshot der
ergatterten Flag und der von Euch dazu eingetragenen Daten bei.

Tipp: Dokumentation zu nmap gibt es bei nmap.org.


Abgabe

bis 2025-01-09 23:59 UTC, digital in Stud.IP als zip-Archiv mit einer
Markdown-Datei, einem gerenderten PDF dieser Markdown-Datei und allen
Dateien, die die Markdown-Datei zum Rendern braucht. Als Dateinamen
verwendet Ihr isec24_ueb09_grpYY.(md|pdf|zip) (Das YY mit Eurer
Gruppennummer ersetzen). Dabei bitte in der Datei alle
Gruppenmitglieder namentlich nennen. Ebenso die Nummer Eurer Gruppe in
Stud.IP.

Bitte steckt die Energie ins Denken und Schreiben, nicht in eine
wunderschöne Formatierung — lesbar darf es allerdings sein. Die
Lösungswege sollten nachvollziehbar sein.

Wenn Ihr Euch irgendwelcher Quellen bedient (Anleitungen, Howtos,
andere Gruppe, etc.), gebt diese bitte an (Quellen aus dem Netz bitte
gleich als URI).

Carsten Bormann, Karsten Sohr, Stefanie Gerdes, Jan-Frederik
Rieckers, Finn Ewers, Andreas Benischke ·
isec@tzi.org
, WS 2024/25

flag{28f59bad-1c6d-4ca0-9741-9e97dc1e45de}

Isec Abgabe 09

Ergattern des ersten Teil der Flag

Verwendet man nmap ohne weitere Optionen, bekommt man…

  1. Zunächst haben wir uns über ssh mithilfe des Befehls
    ssh -p 21463 isec@ctf.informatik.uni-bremen.de mit dem Server verbunden.

  2. Nachdem wir eine Verbindung erstellt haben, haben wir den Befehl nmap --iflist genutzt, um momentan laufende Interfaces und Routen anzeigen zu lassen (siehe https://nmap.org/book/man-output.html). Somit konnten wir die IP-Adresse zu unserem Container ermitteln, indem wir die zu eth0 zugehörige Adresse 192.168.2.5 betrachten.

![img](./img/Pasted image 20250107154605.jpg)

  1. Danach konnten wir mit dem Befehl sudo nmap 192.168.2.5, der keine weiteren Optionen beinhaltet alle offenen Porte betrachten, die in unserem Container zu dem Zeitpunkt liefen. Zu erkennen ist auch, dass news auf dem offenen Port 144 läuft und tram auf Port 4567.

![img](./img/Pasted image 20250107154551.jpg)

  1. Mithilfe des Befehls
    ssh -L 2000:localhost:144 isec@ctf.informatik.uni-bremen.de -p 21463 haben wir einen SSH-Tunnel zu unserem Container erstellt. Wir haben den erst dem Port 144 ausgewählt. Wir haben unseren lokalen Port als 2000 frei gewählt.

  2. Wenn man localhost:2000 im Browser öffnet sieht man das man einen Fehler bekommt.

![img](./img/Pasted image 20250107155318.jpg)

  1. Doch wenn man den anderen Port mit ssh -L 2000:localhost:4567 isec@ctf.informatik.uni-bremen.de -p 21463 ausprobiert. Können wir die Aufgabenstellung mit den auszufüllenen Feldern sehen.

![img](./img/Pasted image 20250107155451.jpg)

  1. Nun haben wir probiert die namen der Software, Ports und Protokolle für die erste Flag herauszufinden.

Dafür haben wir alle sinnvolle Kombinationen der als Tip gegebenen Flags probiert:
- sudo nmap 192.168.2.5
- sudo nmap -sU 192.168.2.5
- sudo nmap -p5000-6500 192.168.2.5
- sudo nmap -sU -p5000-6500 192.168.2.5
- sudo nmap -sV 192.168.2.5
- sudo nmap -sV -sU 192.168.2.5
- sudo nmap -sV -p5000-6500 192.168.2.5
- sudo nmap -sV -sU -p5000-6500 192.168.2.5

Hier Sceenshots des outputs.

![img](./img/Pasted image 20250107154551.jpg)

![img](./img/Pasted image 20250107160842.jpg)

![img](./img/Pasted image 20250107163449.jpg)

![img](./img/Pasted image 20250107163532.jpg)

![img](./img/Pasted image 20250107161228.jpg)

![img](./img/Pasted image 20250107163649.jpg)

![img](./img/Pasted image 20250107163838.jpg)

![img](./img/Pasted image 20250107163629.jpg)

Das Ergebnis der Ausführung des Befehls liefert eine Ansichten des Ports, Portstatus, Service und der Version der laufenden Anwendung.

Die Flags haben folgende auswirkungen:

  • -sU führt einen UDP-Scan aus.
  • -p5000-6500 erweitert das Scannen auf einen “Range” von Ports, die von 5000-6500 liegt. Ohne diese Option werden die Ports kleiner als 5000 gescannt, weshalb das Angeben des Portrange neue Angaben ausgibt.
  • -sV mit dieser Flag probiert nmap weitere Informationen über die Version des Programs heraus zu finden.
    Dabei fällt auf das sich teilweise der Servicename ändert, wenn man die Flag nutzt.
    Das liegt daran das manche ports standart mäßig immer von dem gleichen Programm genutzt werden.
    z.B. 22 ist der standart port für ssh.
    Somit zeigt nmap ohne -sV den Namen des Standart programms an, auch wenn vielleicht etwas ganz anderes läuft.
  1. Den Port und Protokoll aller öffentlichen Programme heraus zu finden war trivial.
    Doch beim Namen hatten wir einige Schwierigkeiten, bis uns klar wurde das der gesuchte Name mit -sV im Versions Feld steht.

  2. So konnten wir die erste Flag ergattern.

![img](./img/Pasted image 20250107171813.jpg)

Ergattern des zweiten Teil der Flag

Analog zu der Untersuchung des Ports 4567 führen wir die gleichen Untersuchungen beim Localhost durch.

  • sudo nmap -sV localhost

  • sudo nmap -sV -p5000-6500 localhost

  • sudo nmap -sU localhost

  • sudo nmap -sU -p5000-6500 localhost

![img](./img/Pasted image 20250107171939.jpg)

![img](./img/Pasted image 20250107172302.jpg)

![img](./img/Pasted image 20250107172624.jpg)

![img](./img/Pasted image 20250107172333.jpg)

Und haben so die zweiten teil der Flag bekommen.

![img](./img/Pasted image 20250107172729.jpg)

nmap-Optionen Funktionsweises

-sV

1. SERVICE/VERSION DETECTION:  
	-sV: Probe open ports to determine service/version info  

Die Option -sV befindet sich in dem Kontext “Dienst-/Versionserkennung”. Hierbei sollen offene Ports für die Ermittlung von Dienst-/Versionsinformationen geprüft werden.

-sU

2. SCAN TECHNIQUES:  
	-sU: UDP Scan  

Die Option -sU befindet sich in dem Kontext “Scan-Techniken”. Hierbei soll ein UDP-Scan durchgeführt werden. Dabei wird bei einem UDP-Scan ein UDP-Paket an jeden Zielport gesendet. Das UPD-Paket kann leer sein oder eine protokollspezifische Nutzlast enthalten.

-O

3. OS DETECTION:  
	-O: Enable OS detection  

Die Option -O befindet sich in dem Kontext Betriebssystemerkennung. Hierbei soll die Betriebssystemerkennung aktiviert werden.
Diese Option haben wir für die Aufgabe nicht benötigt.

-p

4. PORT SPECIFICATION AND SCAN ORDER:  
	-p <port ranges>: Only scan specified ports  

Die Option -p befindet sich in dem Kontext Port-Spezifikation und Scan-Reihenfolge. Hierbei sollen durch die zugehörige Zahlen angegebenen Ports gescannt werden.

Quellen:


Zusätzlich nötige Optionen

Neben den vorgegebenen Optionen bei der Untersuchung haben wir lediglich die Option --iflist genutzt, um die IP-Adresse herauszufinden.


Zusätzliche Erkenntnisse bei der Angabe von -p 5000-6500

Nmap scannt ohne weitere Angabe von Optionen standardmäßig die 1000 meist verwendeten Ports des Zielhosts.
Da das Portnummerfeld 16 Bit Größe besitzt, können Port-Nummern hiernach (theoretisch) den Wert 65.535 erreichen. Daher werden nicht alle Ports gescannt, sofern nicht anders angegeben.
Mit -p 5000-6500 werden alle Ports von 5000-6500 gescannt und so werden auch die Ports in dem Bereich gefunden die nicht unter die 1000 meist verwendeten Ports fallen.

Quelle:


Maßnahmen, damit Untersuchungen mithilfe von nmap das Zielsystem nicht beeinträchtigen

- Beschreibung aus der Nmap Dokumentation (https://nmap.org/book/legal-issues.html):

  1. ,,Can Port Scanning Crash the Target Computer/Networks?”

  2. ,,Reports of systems being crashed by Nmap are rare, but they do happen. Many of these systems were probably unstable in the first place and Nmap either pushed them over the top or they crashed at the same time as an Nmap scan by pure coincidence. In other cases, poorly written applications, TCP/IP stacks, and even operating systems have been demonstrated to crash reproducibly given a certain Nmap command. These are usually older legacy devices, as newer equipment is rarely released with these problems.”

Durch Nmap verursachte Systemabstürze seien selten vorgefallen, dennoch kann dies u.A. durch vornherein instabile Systeme oder schlecht implementierten Anwendungen, vorkommen. (https://nmap.org/book/legal-issues.html)

Es werden verschiedene Methoden zur Minimierung des Risikos von “Systemabstürzen” vorgestellt.
Zum Beispiel gibt es verschiedene (generelle) ,,Timing-Modi” oder Timing-Vorlagen von T0 bis T5 (https://nmap.org/book/performance-timing-templates.html), welche die Chance verringern, ein System zu schaden, im Gegenzug könnten diese aber auch den Scan verlangsamen.

Auswahl von spezifischen Timing- und Leistungoptionen (https://nmap.org/book/man-performance.html) sei ebenfalls möglich. Generell sei der Ansatz der Lastminimierung (in solchen Fällen) potenziell sinnvoll.


Bedeutung von nmap script categories

Die Dokumentation von nmap (https://nmap.org/book/nse-usage.html) stellt verschiedene Nmap Skript-Kategorien vor, mit welchen Skripte kategorisiert werden könnten.

  1. dos:
    Solche “dos”-Skripte könnten einen “Denial-of-Service” auslösen. Dabei wird eine große Menge an Anfragen an einen Server gesendet, sodass dieser besagte Menge nicht mehr händeln kann und schließlich den Dienst verweigert. Instabile Dienste könnten abstürzen.

  2. fuzzer:
    Diese “fuzzer”-Skripte sind so konzipiert, dass sie durch Sendung unerwarteter oder zufälliger Datenfelder in jedem gesendeteten Paket an die Serversoftware, den Server zum Abstürzen bringen.

  3. intrusive:
    Solche “aufdringlichen” Skripte könnten teilweise (generell) ein hohes Risiko haben, dass sie das Zielsystem zum Abstürzen bringen. Dazu verbrauchen sie eine große Menge an Resssourcen auf dem Zielhost.

Quelle: