Penetration Testing (nmap Frage)

Hallo allerseits,

im Rahmen eines Seminars (Security), teste ich gerade meine verschiedenen System ( Linux, Mac, Windows ), um mich besser in die Materie hinein versetzen zu können, da der Workshop schon sehr Theorie lastig ist.

Windows (7), wie auch andere (nicht so detailliert konfigurierte Linux-System) … konnte man gewisse Mängel finden.

Auf meinem Gentoo-System, welches bis ins Detail konfiguriert, unter allen Aspekten der Sicherheit (jedoch kein Hardened Gentoo), mit selbst geschriebenen iptables-rules, bin ich eigentlich davon ausgegangen, keine Lücken zu finden (2 Exploits, welche aber nicht ausführbar waren) -> gut.

Dennoch habe ich eine Frage zu einem nmap Ergebnis. Nmap gab folgendes aus:
…closed Port nfs
…closed Port dhpcd
…closed Port sshd

Alle Services laufen nicht (wer Gentoo kennt weiss, Gentoo macht nichts wenn es nicht explizit angeordnet wurde), einen Tag zuvor habe ich alle Systeme laufen gehabt (PXE-Boot anderer Rechner), wie kann es sein das nmap (trotz eines reboots), diese Services erkennt, welche gar nicht aktiv sind (kein Eintrag in den runlevels).

Also wie funktioniert das, wie liest nmap das heraus? Das ist mir noch nicht so wirklich klar.

Gruß XXD

Hallo,

nmap geht (im normalen Modus) eine Liste bekannter Ports durch. Durch /etc/services lassen sich Ports zu Diensten (und umgekehrt) zuordnen.

nmap hat natürlich keine Ahnung, was auf deinem System lief. Es versucht eine Verbindung zu den einzelnen Diensten (auf deren Standard-Ports) aufzubauen und meldet dann Erfolg oder Misserfolg.

Gruß,
Steve

Hallo Steve,

nmap geht (im normalen Modus) eine Liste bekannter Ports
durch. Durch /etc/services lassen sich Ports zu Diensten (und
umgekehrt) zuordnen.

Nur am Rande: nmap benutzt nicht /etc/services , da nicht jedes Linux diese Datei besitzt (z.B Gentoo), sondern nmap benutzt die interne Datenbank nmap-services.

nmap hat natürlich keine Ahnung, was auf deinem System lief.
Es versucht eine Verbindung zu den einzelnen Diensten (auf
deren Standard-Ports) aufzubauen und meldet dann Erfolg oder
Misserfolg.

Das ist schon klar :smile:, es ging auch nicht um die 65000+ closed Ports aus denen keine Info gezogen werden konnte, sondern nmap gab explizit 3 Ports als closed aus, welche wirklich als Dienst bei mir installiert sind, wodurch ein Angreifer die Erkenntnis hatte, dass diese zwar geschlossen sind, aber irgendwann mal offen waren (was eine wichtige Info ist, die es zu vermeiden gilt).

Also woher wusste das nun nmap -> Lösung: auf Grund der Reaktion meiner Firewall, dies war zwar mein erster Gedanke, aber dann dachte ich, wenn es so wäre, dann müsste nmap noch mehr Services erkannt haben wie tftpd oder httpd usw. und kam zum meiner Frage hier im Forum, vielleicht gäbe es ja noch einen anderen Grund.

Jedoch liegt es wirklich an meiner Firewall, welche ich jetzt noch genauer untersuchen sowie neu einstellen muss.

Gruß XXD

Mißverständnis

Jedoch liegt es wirklich an meiner Firewall, welche ich jetzt
noch genauer untersuchen sowie neu einstellen muss.

Ich glaub’, du sitzt da einer Mystifikation auf. Dass nmap ‚closed‘ anzeigt, bedeutet nichts weiter, als dass auf diesem Port derzeit kein Dienst läuft. Diese Information lässt nicht den geringsten Schluss darüber zu, ob irgendwann mal ein Dienst auf diesem Port gelauscht hat oder ob ein solcher Dienst installiert ist.

Ein nmap auf einen beliebigen Port, auf dem kein Dienst erreichbar ist, sollte immer ‚closed‘ anzeigen. Es sei denn, du fängst die Pakete ab und lieferst keine oder eine gefälschte Antwort zurück - indem du z. B. eine Firewall anweist, alle Pakete auf dem Port zu droppen.

Wenn du also auf genau drei Ports ein ‚closed‘ als Antwort bekommst, auf allen anderen Ports aber z. B. ein ‚filtered‘, sagt das überhaupt nichts über die gescannte Maschine bzw. deren Dienste aus, sondern lediglich etwas darüber, wie du deine Firewall konfiguriert hast.

Du lieferst einem Angreifer auf dem Umweg über die Firewall also genau die Informationen, die du doch eigentlich verstecken wolltest.

Gruß

Hallo herrmann,

Ich glaub’, du sitzt da einer Mystifikation auf. Dass nmap
‚closed‘ anzeigt, bedeutet nichts weiter, als dass auf diesem
Port derzeit kein Dienst läuft. Diese Information lässt nicht
den geringsten Schluss darüber zu, ob irgendwann mal ein
Dienst auf diesem Port gelauscht hat oder ob ein solcher
Dienst installiert ist.

So ganz hab ich das noch nicht verstanden…, denn warum gibt nmap alle Ports als filtered aus, aber genau diese Dienste, welche unter Umständen aktiv sind, als closed aus …oder anders ausgedrückt, wenn der Auszug von nmap … closed port 25 gewesen wäre …dann ok, hab ich nicht installiert oder am laufen, aber es gab genau die Dienste als closed aus, die auch mal aktiv waren, oder ab und zu geplant sind. Was für mich persönlich, da ich ja die Erkenntnis der evtl aktiven Ports habe, eine gewisse Info heraus geben.

Ein nmap auf einen beliebigen Port, auf dem kein Dienst
erreichbar ist, sollte immer ‚closed‘ anzeigen. Es sei denn,
du fängst die Pakete ab und lieferst keine oder eine
gefälschte Antwort zurück - indem du z. B. eine Firewall
anweist, alle Pakete auf dem Port zu droppen.

Was in meinem Beispiel einem filtered entspricht, oder?

Wenn du also auf genau drei Ports ein ‚closed‘ als Antwort
bekommst, auf allen anderen Ports aber z. B. ein ‚filtered‘,
sagt das überhaupt nichts über die gescannte Maschine bzw.
deren Dienste aus, sondern lediglich etwas darüber, wie du
deine Firewall konfiguriert hast.

OK…ist die Firewall, dann korrekt konfiguriert?

Du lieferst einem Angreifer auf dem Umweg über die Firewall
also genau die Informationen, die du doch eigentlich
verstecken wolltest.

Wie würde man sowas beheben?

Gruß XXD

So ganz hab ich das noch nicht verstanden…, denn warum gibt
nmap alle Ports als filtered aus, aber genau diese Dienste,
welche unter Umständen aktiv sind, als closed aus

Weil du mit nmap auf den anderen Ports gar nicht erst an das Gerät rankommst, sondern vorher schon in der Firewall hängenbleibst. Wobei es belanglos ist, ob es sich um eine phys. Firewall handelt, die zwischen dir und dem Gerät steht, oder um iptables o. ä. Für einen Port bekommst du die Antwort von der Firewall, für den anderen kommt die Antwort vom angesprochenen Gerät.

Was in meinem Beispiel einem filtered entspricht, oder?

Wenn du Pakete verwirfst, wird das als gefiltert angezeigt, ja.

Du lieferst einem Angreifer auf dem Umweg über die Firewall
also genau die Informationen, die du doch eigentlich
verstecken wolltest.

Wie würde man sowas beheben?

Kommt drauf an, was du bewirken willst. Das Verwerfen von Paketen bringt für Ports, auf denen eh kein Dienst lauscht, im Grunde wenig Nutzen. Man bremst einen unbedarften Angreifer allenfalls etwas aus, weil er so auf ein Timeout läuft.

Genaugenommen bringt die komplette Firewall (bzw. ein Portfilter) keinen Nutzen, wenn man eh keinen Dienst anbietet. Nutzen bringt sie erst, wenn man verhindern will, dass unerwünscht aktive Dienste angesprochen werden können. Dann reicht es es aber, Pakete zurückzuweisen, statt sie zu verwerfen. Dann bekommt der Angreifer per nmap für jeden Port den Status ‚closed‘ zurückgeliefert. Er kann am Status nicht erkennen, ob der Port geschlossen ist, weil kein Dienst darauf lauscht oder weil die Firewall ihn geschlossen hat.

Gruß

Hallo,

Dennoch habe ich eine Frage zu einem nmap Ergebnis. Nmap gab
folgendes aus:
…closed Port nfs
…closed Port dhpcd
…closed Port sshd

Mit welchen Optionen hattest Du nmap aufgerufen?

Sebastian

Hallo Sebastian,

Mit welchen Optionen hattest Du nmap aufgerufen?

aus Armitage heraus mit:

db\_nmap --min-hostgroup 96 -p 1-65535 -n -T4 -A -v 192.168.x.x

Gruß XXD

Hallo hermann,

danke für die Antwort und Erklärung, hab es glaube ich verstanden.

Gruß XXD