Alexander Foken: Goethe hätte gesagt

Beitrag lesen

Moin Moin !

Da steh' ich nun, ich armer Tor, und bin so klug als wie zuvor.

Ich habe so den verdacht, daß da jemand auf den "stealth ist gut"-Mythos hereingefallen ist. Spielen wir's mal durch:

Primitiver Portscan auf opfer1.example.com liefert:
21/tcp ist zu.
23/tcp ist zu.
80/tcp ist offen.
alle anderen TCP-ports sind zu.

Was lernt der Angreifer?
Mit ftp (21/tcp) und telnet (23/tcp) braucht man gar nichts mehr versuchen, da wird schlicht alles abgelehnt. WWW (80/tcp) ist interessant, da gibt es eine reagierende Anwendung. Die kann man in aller Ruhe auf Fehler abklopfen und ggf. zur Sabotage nutzen.

Primitiver Portscan auf abgeschaltet.example.com liefert:
router.provider.tld: No route to host abgeschaltet.example.com.

Was lernt der Angreifer?
Da kommt man gar nicht ran, abgeschaltet.example.com gibt's vielleicht gar nicht mehr. Es hat keinen Sinn, da irgendetwas zu versuchen.

Primitiver Portscan auf stealth.example.com liefert:
21/tcp ist getarnt (stealth)
23/tcp ist getarnt (stealth)
80/tcp ist getarnt (stealth)

Man beachte: Trotz "stealth" ist der Rechner als solcher zu erkennen! Wäre er perfekt getarnt (sprich: abgeschaltet oder abgeklemmt), gäbe es eine "no route to host"-Meldung von einem der zwischengeschalteten Router!

Was lernt der Angreifer?

Da ist ein Rechner, der am Netz hängt, der aber für geschlossene TCP-Ports keine ICMP-Rückmeldungen liefert (nichts anderes bedeutet "stealth") und der erstmal keine offenen Ports hat.

Also müssen hier andere Angriffsmechanismen her. Ein Trojaner wäre ein Weg, ein anderer wäre, Schwächen im IP-Stack des Betriebssystems zu nutzen, um doch Code auf die Maschine zu schummeln und auszuführen. Das Betriebssystem kann nmap z.B. recht gut feststellen, anhand des Verhaltens des IP-Stacks.

Bei TCP gibt es diverse Wege herauszufinden, ob ein Port offen oder geschlossen ist, weil TCP Rückmeldungen vorsieht. Ein TCP-Portscanner kann also sehr genau sagen, was los ist.

UDP hat keine Rückmeldungen, man schickt das UDP-Paket los und hofft, das es ankommt. Die einzige Rückmeldung unterhalb der Anwendungsebene ist ein ICMP-Paket mit einer von zwei Fehlermeldungen: No route to host oder Port geschlossen. Bleiben die Fehlermeldungen aus, muß der Sender davon ausgehen, daß das Paket entweder akzeptiert wurde (Port ist offen) oder verloren gegangen ist. Ein Rechner, der auf UDP-Portscans überhaupt nicht antwortet ("stealth"), erscheint also daher als ein Rechner mit einer Menge offener UDP-Ports. Antwortet der Rechner mit "Port geschlossen", ist die Portscanner-Anzeige korrekt.

Werden nur wenige offene UDP-Ports angezeigt, gibt es zwei Möglichkeiten: Entweder hat der UDP-Portscanner nur diese wenigen gescannt (häufig: 53=DNS, 137-139=Windows, 7,9,11,13,17,19=diverse Test-Ports, 37=time, 67,68=dhcp, 69=tftp, 79=finger, 113=auth/ident) und den Rest eben nicht. Dann ist der Scanner vielleicht auf einen "stealth"-Rechner hereingefallen. Oder aber der Scanner hat wirklich den ganzen Bereich von 0 bis 65535 abgegrast und einige wenige offene Ports gefunden, dann läuft der Rechner definitiv ohne "stealth".

Ein guter Portscan sollte dokumentieren, was und wie gescannt wurde, sonst ist das Ergebnis wertlos.

Jede Menge Know-How rund um Portscans gibt es bei http://www.insecure.org/nmap/nmap_documentation.html.

Alexander

--
Nein, ich beantworte keine Fragen per eMail. Dafür ist das Forum da.
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".