Thomas J.: UDP / Verständnisproblem

Tach allerseits.

Wie der Titel schon besagt, ich habe ein kleines Problem mit dem UDP-Protokoll.

Ausgangspunkt ist mein Nachbar. Der hat mich am Wochenende um Hilfe gebeten, seinen Computer "abzudichten" - d.h., er ist auf einem guten Weg, ein Sicherheitsbewußtsein zu entwickeln. Dazu hatte ich ihm schon früher einmal einige Möglichkeiten genannt, sein System zu überprüfen (portscan, netstat etc.).

Nun war er darüber, diese checkliste Punkt für Punkt abzuarbeiten und ist dabei auf etwas gestoßen, was ich mir auf die Schnelle auch nicht erklären kann.
Er hat angefangen, auf http://port-scan.de/ verschiedene Tests zu machen (alles ohne Firewall). Der TCP-Test vermeldete ihm, daß alle Ports verschriftsmäßig geschlossen waren.

Der UDP-Test dagegen erkannte 20 offene Ports, angefangen bei 7 über 137 bis hin zu 1900. Ich glaube, der UDP-Test scannt auch nur 20 Ports.
Nun dachte ich immer, daß UDP ohne Rückfragen auskommt. Der Server schickt also seine Datenpakete durch's Netz ohne sich darum zu kümmern, ob die auch ankommen.
Wie kann man auf diese Art eigentlich einen offenen Port erkennen?

Und woher könnten die ganzen offenen Ports kommen (Win 98SE)?
Mein erster Verdacht war, daß der Portscan fehlerhaft war.
Dafür spricht, daß dieser Test derzeit wegen Wartungsarbeiten nicht verfügbar ist. Dagegen spricht, daß ich ihn gestern nachmittag selbst ausprobiert habe und alle Ports geschlossen waren.

Könnte irgendeine "Software" aktiv sein die speziell auf UDP setzt, vielleicht auch nur ein Filesharing-Programm?

Ich würde mich gern mit etwas Fachwissen wappnen, bevor ich mir heute abend das gute Stück aus der Nähe anschaue.

Thomas J.

  1. Sup!

    In der Tat gibt es bei UDP keine Rueckantwort - dieser Scan kann also nur aufgrund von irgendwelchen (ausbleibenden) ICMP-Mitteilungen darauf schliessen, ob ein Port offen oder zu ist.

    Gruesse,

    Bio

    --
    Tötet DJ Ötzi! (Nicht wirklich!)
    1. Tach

      dieser Scan kann also nur aufgrund von irgendwelchen (ausbleibenden) ICMP-Mitteilungen darauf schliessen, ob ein Port offen oder zu ist.

      Hmm ...
      Bei meinem Computer wurden alle 20 Ports als geschlossen identifiziert, während beim Computer von meinem Nachbarn alle offen waren.
      Das heißt, mein Computer müßte auf alle Anfragen ein port unreachable zurückgeschickt haben. Seiner nicht.

      Sehe ich das richtig?

      Thomas J.

      1. Sup!

        Hmm ...
        Bei meinem Computer wurden alle 20 Ports als geschlossen identifiziert, während beim Computer von meinem Nachbarn alle offen waren.
        Das heißt, mein Computer müßte auf alle Anfragen ein port unreachable zurückgeschickt haben. Seiner nicht.

        Das waere eine gute Erklaerung.

        Gruesse,

        Bio

        --
        Tötet DJ Ötzi! (Nicht wirklich!)
        1. Grübel

          Das waere eine gute Erklaerung.

          Hast Du auch eine Erklärung, warum mein Computer (Linux und auch unter Win 98SE) ein ICMP zurückschickt. Der meines Nachbarn (Win 98SE) aber nicht?

          Thomas J.

          1. Sup!

            Hast Du auch eine Erklärung, warum mein Computer (Linux und auch unter Win 98SE) ein ICMP zurückschickt. Der meines Nachbarn (Win 98SE) aber nicht?

            Na klar - er hat das System/die Firewall anders konfiguriert... :-)

            Gruesse,

            Bio

            --
            Tötet DJ Ötzi! (Nicht wirklich!)
            1. Da steh' ich nun, ich armer Tor, und bin so klug als wie zuvor.

              1. 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".
                1. N Abend

                  Ich habe so den verdacht, daß da jemand auf den "stealth ist gut"-Mythos hereingefallen ist.

                  Naja, er hat mir glaubhaft versichert, daß er den Test ohne Firewall durchgeführt hat. Was den Portscan betrifft, so scheint es, daß wirklich nur 20 Ports im Bereich 0 bis 2000 gescannt wurden.

                  Den restlichen Berg an Informationen muß ich erstmal verdauen, der Link sieht auch interessant aus.

                  Schönen Dank erstmal.
                  Thomas J.

                2. N Abend nochmal

                  Also ich versuche mal eine Zusammenfassung. Der TCP-Teil war mir schon klar, das lasse ich weg.

                  UDP kennt nur "keiner da", "Tür zu" bzw. gar keine Antwort.
                  Er machte zuerst einen TCP-Test und bekam als Ergebnis, daß alle Ports geschlossen sind. Ich hatte extra nochmal gefragt, ob da "geschlossen" oder "gefiltert" stand.
                  Danach macht er einen UDP-Test und bekommt eine ganze Latte offener Ports angezeigt.

                  Ergo: das geht gar nicht - es sei denn, der Dödel hat a) zwischendurch seine heißgeliebte Firewall wieder aktiviert oder b) der Portscan war fehlerhaft.
                  Sehe ich das richtig?

                  Naja, ich geh' jetzt rüber und schaue mir das Wunderwerk der Technik mal aus der Nähe an ...

                  Thomas J.