Port Scanner entwickeln für Java – TCP, UDP, ICMP [Tutorial]

Du möchtest einen Port Scanner entwickeln?

Dieses Tutorial zeigt Dir, wie ein Portscanner funktioniert, Du diesen programmieren kannst und warum ein Portscan gegen Dein Gerät gefährlich sein kann.

Beginnen wir!

Was ist ein Port Scanner?

Ein Port Scanner ist eine Anwendung, die systematisch alle Ports eines Computers scannt. Der „Scan“ eines Netzwerkports bedeutet, dass die Anwendung eine Anfrage an den Port sendet. Antwortet der Port, dann ist der Port offen, wenn dieser nicht in einer vertretbaren Zeit antwortet, dann ist der Port geschlossen.

Computer Netzwerk Ports erklärt

Ein Port ist vergleichbar mit einer „nummerierten“ USB Büchse an Deinem PC.

Der PC kann mit der Büchse Daten empfangen und senden, wenn ein Kabel angeschlossen ist.

Für eine gelungene Netzwerkkommunikation brauchen wir nicht nur eine IP-Adresse z.B. 196.168.1.2, sondern auch ein Port. Der Port ist eine Zahl zwischen 1 und 66503, die der PC für Verbindungen nutzen kann.

Geschlossener Port / offenere Port

Ein geschlossener Port bedeutet nur, dass der Computer nicht antwortet. Der Service hinter dem „geschlossen“ Port, kann die Nachricht mitbekommen und z. B. abspeichern.

Ein offener Port muss nicht zwangsläufig ungeschützt sein. Weil der Portscanner nie zu 100 % weiß, welches Programm den Port nutzt, erhält dieser eine Fehlermeldung oder eine Form von Statusmeldung. Ein Computer kann verschiedene Anwendungen ausführen, die eine Port an der Netzwerkkarte öffnet. Der Computer wartet auf Anfragen, die an die offenen Ports gerichtet sind.

Port Scanner Arten

Vollständiges Scanning über TCP

Wenn ein Port offen steht, dann kann der Port Scanner zu dem fremden Server eine Verbindung herstellen. Der Scanner versucht mit einem „3-fachen TCP-Handshake“ jeden Port abzutasten. Konnte die Anwendung eine Verbindung erfolgreich herstellen, dann hat der Port Scanner einen offenen Port gefunden.

Halboffenes Scanning über TCP

Beim halboffenen Scanning sendet der Portscanner nur ein SYN-FLag . Beim normalem TCP-Scanning erzeugt der Scanner eine richtige Verbindung.

Ein SYN– Port Scanner sendet „nur“ ein SYN-Paket an den Server und erhält, falls dieser offen ist ein SYN-ACK Paket als Antwort zurück (Bestätigung).

UDP Scanning

UDP (User Datagram Packet) basiert im Gegensatz zu TCP auf einer verbindungslosen Kommunikation. Falls der angefragte Port nicht offen ist, antwortet der Server mit ICMP (Internet Control Message Protocol) – Paket. Das Paket teilt dem Port Scanner mit, dass der Port nicht offen ist.

TCP vs UDP

Dokumente, Bilder, Binary – Transmission Control Protocol

Transmission Control Protocol (TCP) ist ein Austauschprotokoll, welches den 100 % korrekten Empfang ermöglicht. Im Netzwerk können Pakete verloren oder verzögert ankommen. TCP nutzt Du z. B. zum Aufrufen dieses Tutorials, zum E-Mail Empfang oder einem Download eines Programms.

TCP arbeitet verbindungsorientiert. Das Protokoll gehört  zu der Transportschicht des OSI-ISO Modells.

Vorteile der TCP Nutzung sind …

Der große TCP-Header für jedes Paket stellt die Funktionen zu Verfügung, verlangsamt aber „durch die Extra-Bits“ die Übertragungsgeschwindigkeit.

Video- und Audio-Streams – User Datagram Packet

Das UDP ist viel minimalistisch und schlank:

Der Header beinhaltet den Empfänger- und Versender-Port und –adresse. UDP nutzt Du für ein Livestreaming von Videos und Audio über das Internet.

UDP-Verbindungen erlauben den Verlust von Paketen und eine falsche Sortierung der Pakete. Die Zuschauer empfinden das Stoppen eines Live-Streams mit Nachladen unangenehmer (zu geringe Bandbreite – TCP), als wenn eine paar Pixel verloren gehen (Paketverlust – UDP)

Vorab: Scanne nur Dein eigene System und Systeme einer dritten Person, vor der Du eine schriftliche Erlaubnis hast. Scannst Du z. B. einen bekannten Service wie Google, dann sperrt Dich ein Google Admin aus, weil er vermutet, dass Du ein Krimineller bist.

Scanner programmieren

Der Port Scanner testet alle Ports eines Servers aus.

Das kann je nach Programmierung wenige Sekunden bis Minuten dauern. Ein Port ist offen, wenn der Port Scanner sich verbinden kann. Die Verbindung löst der Port Scanner sofort wieder auf, da dieser keine Daten an den Server senden möchte

for port mit 0 bis 65535:
  scannePort(ip, port)

scannePort(ip, port):
   response = network.sendSYN(ip,port)
   if (response != "") return true else false

Für mehr Speed – Threading

Die schrittweise Überprüfung aller Ports kann sehr lange dauern, deshalb benutze ich in diesem Beispiel Multi-Threading (Parallelisierung auf mehreren Prozessoren). Der Scanner kann mit Threads mehrere Ports gleichzeitig scannen:

for 0 bis 10:
    neuerThread(startePortScan(ip,portbereiche))

Verbesserung mit etwas Zufall

Im nächsten Schritt sollten wir noch eine Zufallskomponente einbauen. Die Port Scans erkennen Virenschutz-Programme sofort, wenn der Scanner so arbeitet:

1,2,3,4,  ….

Besser und natürlicher wäre:

234, 3245, 334, 5676, …

Math.random() generiert eine Zufallszahl zwischen 0 und 1 und die Software multiplizieren diese mal die höchste Port-Nummer 65535. Das Ergebnis schreibt unser Scanner in eine Tested-Liste mit dem Ergebnis.

Der Scanner testet den Port nur, wenn dieser nicht in der Liste steht. Außerdem ist es empfehlenswert eine „Schlafzeit“ für duie Threads einzuführen. Der Scan soll nicht dem typsichen Muster folgen (1,2,3,4,…). Der Scanner soll so aussehen, als ob Hunderte von verschiedenen Hosts (mit normalen Nutzern) auf den Server zugreifen wollen

Warum ein Port Scan gegen Dein Gerät gefährlich?

Als Open-Source-Software stellt der Markt einige Lösungen bereit, die fertig konfiguriert sind.

Der erste Schritt eines potenziellen Hacks ist ein Port Scan!

Warum? – Der Port Scan gibt den Hackern darüber Aufschluss, welche Ports auf einem Server offen sind. Typische Port-Nummern verraten, welche Software Du auf Dienen Computer / Server nutzt:

  • 80: HTTP – Ungesichtertes Websurfen
  • 443: HTTPS – Sicheres Websurfen
  • 21: FTP – Dateiübertraung
  • 22: SSH – Sichere Kommandozeile

Schutz gegen Port Scanner auf eigene Systeme

Ein fremder Scan auf Dein System schadet Dir im ersten Atemzug nicht.

Wenn Du aber einen solchen Scan erkennst, kannst Du Maßnahmen ergreifen, um einen Angriff abzuwehren.

  1. Schließe alle ungenutzten Ports (Daran solltest Du selbst immer denken)
  2. Ändere die Standard-Ports von z. B. SSH auf einen anderen zufälligen Port und installiere auf den Standard-Port einen Honeypot, sodass die Hacker verzweifeln.
  3. Halte Deine Software aktuelle (Dienste nach außen z. B. Apache).
  4. Erstelle ein Backup von Deinen Systemen
  5. Nutze eine Verschlüsslung (TSL ,RSA) für die Kommunikation zwischen dem Server und den Clients
  6. Notfalls schalte Systeme komplett ab, wenn Du die Sicherheitslücken nicht schnell schließen kannst:
    Einen Verlust (Dataleak) von Kundendaten ist schlimmer als eine Downtime von mehreren Stunden.
  7. Untersuche selbst programmierte Software auf Sicherheitslücken

Credits

Icons made by Gregor Cresnar from www.flaticon.com is licensed by CC 3.0 BY  – Icons made by dDara from www.flaticon.com is licensed by CC 3.0 BY – Icons made by Icomoon from www.flaticon.com is licensed by CC 3.0 BY -Icons made by Those Icons from www.flaticon.com is licensed by CC 3.0 BY Icons made by Roundicons from www.flaticon.com is licensed by CC 3.0 BY Icons made by Roundicons from www.flaticon.com is licensed by CC 3.0 BY


Danke fürs Lesen! Erhalte weitere Tutorials in meinem kostenlosen Newsletter.
Jeden Monat teile ich mit Dir 4 neue praxisnahe Tutorials.
Trage Deine Mail zum kostenlosen Empfang des Newsletters* ein.




Quellenangabe Bilder: Icons und SVG-Grafiken im Titelbild von Microsoft PowerPoint 2019, frei verfügbar nach EULA
*) Mit dem Abonnement des Newsletters erklären Sie sich mit der Analyse des Newsletters durch individuelle Messung, Speicherung und Analyse von Öffnungsraten und der Klickraten in Profilen zu Zwecken der Gestaltung künftig besserer Newsletter einverstanden. Sie können die Einwilligung in den Empfang des Newsletters und die Messung mit Wirkung für die Zukunft widerrufen. Mehr in der Datenschutzerklärung.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.


Jeden Monat teile ich mit den Mitgliedern
4 neue praxisnahe ausführliche Tutorials (je 1000+ Wörter).


Trage Deine Mail, damit Du
Deine Coding + Hacking Skills erweitern kannst!

Die Website nutzt nur technisch notwendige Cookies.