alphaspirit - Fotolia

So erhöhen Sie mit UDP-Port-Scans die Sicherheit

UDP-Port-Scans sind nicht so stabil wie Scans des TCP-Ports. Dieser Artikel zeigt, wie Sie diese Technik als Tool für Sicherheits-Scans nutzen können.

Mit UDP-Port-Scans (User Datagram Protocol) lassen sich UDP-basierte Anwendungen auf einem Zielsystem erkennen. Damit stellen sie eine Schlüsselkomponente jedes Audits für Netzwerksicherheit dar. Während das Konzept dem des TCP-Port-Scans ähnelt, unterscheiden sich die Techniken des UDP-Port-Scans vom TCP-Pendant. Dieser Artikel erklärt Techniken für das UDP-Port-Scanning und wie diese sich mit dem Sicherheits-Tool Nmap implementieren lassen.

Während die meisten populären Internetdienste auf TCP laufen, einem zuverlässigen, verbindungsorientierten Protokoll, gibt es immer noch eine Reihe wichtiger Services, die über das UDP arbeiten. UDP ist ein unzuverlässiges, Datagram-orientiertes Protokoll. Einige dieser Services, zum Beispiel der Domain Name Server (DNS), sind für die gesamte Internetinfrastruktur sehr wichtig.

Da UDP-Port-Scannen als Sicherheits-Scan-Tool weniger verständlich und weniger zuverlässig zu sein scheint als das TCP-Pendant, wird es bei Sicherheits-Audits oft ignoriert. Wir untersuchen daher die zugrundeliegenden Details, Techniken und Einschränkungen des UDP-Port-Scans, damit Netzwerk- und Sicherheits-Administratoren diese Überlegungen beim Durchführen von Sicherheitsaudits nutzen können.

Grundlagen des Port-Scannens

Die Grundidee hinter jeder Port-Scan-Technik besteht darin, ein Paket oder einen Trigger an einen Port eines Zielsystems zu schicken. Abhängig von seinem aktuellen Status erzeugt der entsprechende Port eine spezifische Antwort. Daher lässt sich der Zustand des Ports leicht bestimmen. Im Allgemeinen kann ein Transport-Port einen von drei folgenden Zuständen einnehmen: offen, geschlossen oder gefiltert.

Ein Port gilt als offen, wenn eine Anwendung eingehende Kommunikations-Anfragen an diesen Port akzeptiert, um einen bestimmten Service zu erbringen. Bei TCP heißt das, dass eine Anwendung eingehende TCP-Verbindungen akzeptiert. Bei UDP bedeutet dies, dass es eine Anwendung gibt, die eingehende UDP-Pakete akzeptiert oder verarbeitet.

Ein Port gilt als geschlossen, wenn es keine Anwendung gibt, die eingehende Kommunikationsanforderungen dieses Ports annimmt. Als Gefiltert wird ein Port bezeichnet, wenn ein Paketfilter Teile von Datenpaketen blockiert, die an einen Port geschickt werden. Das heißt beim Zielsystem kommen keine an diesen Port gesendeten Kommunikationsanfragen an. Je nach Systemkonfiguration kann das Filtergerät die entsprechenden Pakete unbemerkt blockieren oder innerhalb des Internet Control Message Protocols (ICMP) eine Fehlermeldung an den Absender schicken.

Rund um gefilterte Ports gib es zwei Überlegungen. Erstens: Wenn ein Probepaket keine Antwort erhält, ist es nicht wirklich möglich zu erkennen, ob der Port tatsächlich gefiltert ist oder ob das Probepaket oder die zugehörige Antwort unbemerkt blockiert wurden, etwa als Ergebnis einer Netzwerküberlastung. Zweitens: Um zu bestimmen, ob ein Port gefiltert ist, muss man typischerweise etwas länger warten als bei der Bestimmung der offenen oder geschlossenen Zustände. Das heißt, wenn es keine positive Antwort zum Zustand eines Ports gibt, muss genügend Zeit verstreichen, um sicherzustellen, dass das Zielsystem keine Antwort empfängt.

UDP-Port-Scan versus TCP-Port-Scan – ein Vergleich

Wie in unserem früheren Artikel über TCP-Port-Scan-Techniken erwähnt, können die einfachsten TCP-Port-Scan-Techniken ‑ nämlich SYN und connect () ‑ den Zustand eines Ziel-TCP-Portes einfach bestimmen: Das Probepaket (ein SYN-Paket) wird ein SYN/ACK (Bestätigungs)-Paket auslösen, wenn der Port offen ist; ein Reset-Paket, wenn der Port geschlossen ist und keine Antwort, wenn der Port gefiltert ist.

Diese Antworten werden durch die Regeln für die TCP-Paketverarbeitung gesteuert und sind völlig unabhängig vom Typ oder der Art der Anwendungen, die auf diesen TCP-Ports laufen. Das hat wichtige Konsequenzen: Der Zustand eines Ports kann auch bestimmt werden, ohne die Applikationen zu kennen, die auf dem Ziel-Port laufen. So kann ein Penetrationstester oder ein Angreifer die Liste der offenen TCP-Ports einfach bestimmen, indem er einfache SYN-Pakete an jeden Ziel-Port schickt (SYN-Scanning). Falls notwendig, kann er anschließend auch die Anwendung herausfinden, die einen derartigen Port einsetzt. So kann er beispielsweise über Banner-Grabbing herausfinden, welche Anwendung auf einem nicht-standardisierten Port läuft.

Beim UDP-Port-Scan sind die Regeln für die Paketverarbeitung im Wesentlichen wie folgt gestaltet: Wenn ein UDP-Paket für einen Port empfangen wird, auf dem es keine hörende Anwendung gibt, löst das ICMP die Meldung Port nicht erreichbar aus. In den anderen Fällen ist die entsprechende Applikation für die Reaktion auf das eingehende UDP-Paket zuständig. Typischerweise reagieren Anwendungen nur auf eingehende Anforderungen, die sie verstehen ‑ zum Beispiel eingehende Pakete, die sie analysieren können. Das heißt: Um die Antwort eines offenen UDP-Ports auslösen zu können, muss ein Sicherheits-Scan-Tool ein UDP-Paket mit gültigen Anwendungsnutzdaten erstellen, die die Applikation auf dem Ziel-Port versteht. Daher gibt es nur dann eine explizite Bestätigung, dass ein Port geöffnet ist, wenn das Tool Standard-UDP-Ports von Anwendungen scannt, für die das Scan-Tool gültige Anwendungs-Anforderungen erstellen kann.

Auf der anderen Seite lösen auch Probepakete oder Anwendungsanforderungen, die an geschlossene Ports gesendet werden, typischerweise ICMP-Fehlermeldungen wie Port nicht erreichbar aus. Allerdings sind Blockaden von ICMP-Fehlermeldungen weitgehend auf das öffentliche Internet beschränkt, auch wegen teilweiser Probleme mit der Bandbreite. Daher sind sie sehr unzuverlässig. Wenn schließlich eine andere ICMP-Fehlermeldung als Port nicht erreichbar oder gar keine Antwort auf ein UDP-Probepaket empfangen wird, befindet sich der entsprechende Port im Zustand Gefiltert.

Als Ergebnis der obigen Überlegungen implementiert ein Port-Sicherheits-Scan-Tool wie zum Beispiel Nmap das Scannen des UDP-Ports, indem es ‑ wenn möglich ‑ anwendungsspezifische Anforderungen an den entsprechenden Port schickt und so eine positive Antwort erhält, wenn der Port offen ist. Allerdings greifen diese Werkzeuge auf einfache oder generische UDP-Pakete zurück, wenn sie UDP-Ports scannen, für die keine anwendungsspezifische Anforderung oder Nutzdaten verfügbar sind ‑ entweder weil der entsprechende Port kein zugehöriges Anwendungsprotokoll hat oder es im Scan-Tool nicht implementiert ist. Da sowohl die Probepakete als auch die möglicherweise ausgelösten Antworten verworfen werden können, schicken Port-Scan-Tools im Regelfall Probepakete erneut, wenn keine Antwort empfangen wird. Die Ergebnisse der UDP-basierten Port-Scans sind dennoch im Vergleich zu ihren TCP-Pendants viel unzuverlässiger.

UDP-Port-Scan in Nmap

Nmap ist sicherlich der bekannteste UDP-Port-Scanner. In Nmap werden UDP-Port-Scans mit der Option -sU aktiviert und die zu scannenden Ports oder Portbereiche mit der Option -p spezifiziert. Beispielsweise scannt der folgende Befehl den UDP-Portbereich 1-1023 am Knotenpunkt 192.168.1.1:

nmap -sU -p 1-1023 192.168.1.1

Anstatt einen festen Portbereich zu scannen, kann Nmap auf Anforderung auch die N häufigsten Ports mit Hilfe der Option --top-ports scannen, wie in Abbildung 1 gezeigt.

 Scannen der Top-Ports mit Nmap.
Abbildung 1: Scannen der Top-Ports mit Nmap.

Wie bereits erwähnt, verbessert der Einsatz von anwendungsspezifischen Nutzdaten die Zuverlässigkeit von UDP-Port-Scans als Sicherheits-Scan-Tool. Die Datei Nmap-Payloads enthält anwendungsspezifische Nutzdaten für mehr als 30 UDP-Ports, die standardmäßig beim Scannen solcher Ports verwendet werden. Die oben genannte Datei kann bei Bedarf lokal bearbeitet und ergänzt werden.

Es gibt viele Optionen, die den Kompromiss zwischen Zuverlässigkeit und Geschwindigkeit bei einem Port-Scan beeinflussen. Zum Beispiel erlaubt -min-rtt-timeout dem Benutzer, die maximale Zeitspanne in Sekunden festzulegen, in der Nmap auf eine Antwort auf ein Probepaket wartet, es sei denn, ms ist an den spezifischen Wert angehängt. Darüber hinaus ermöglicht --max-Retries dem Benutzer, die maximale Anzahl von zusätzlichen Sendungen von Probepaketen festzulegen, wenn keine Antwort empfangen wird. Anwender sollten daher die Bedienungsanleitung von Nmap genau durchlesen, wenn sie UDP-Scans mit weiteren Maßnahmen optimieren wollen.

Folgen Sie SearchNetworking.de auch auf Twitter, Google+, Xing und Facebook!

Nächste Schritte

Penetrationstests müssen den Datenschutz wahren

Kostenloses E-Handbook: Security Scanner Nmap optimal einsetzen

Kostenloses E-Handbook: Ratgeber Penetrationstests

Kostenloses E-Handbook: Besser arbeiten mit Wireshark

Erfahren Sie mehr über Netzwerksicherheit