O'Reilly Online-Katalog
oreilly.deO'Reilly Network
KontaktBestellinfosOnline-Bücher

Pfeil Suche
Pfeil Bücher A-Z
Pfeil Neuerscheinungen
Pfeil Bücher bestellen
Pfeil Special Offer
 Programmbereiche
Pfeil
 Bioinformatik
 C/C++
 Design & Grafik
 Java
 Linux/Unix
 Mac
 .Net
 Open Source
 Oracle
 Perl
 PHP & MySQL
 Python
 Sicherheit
 System- &
 Netzwerkadministration
 Web
 Windows
 XML
Special Offer
 Buchreihen
Pfeil
 In a Nutshell
 Taschenbibliothek
 Missing Manuals
 Hacks
 Kochbücher
 CD Bookshelves
 Pragmatic>
 Bookshelf
Pfeil Katalog bestellen
Pfeil Newsletter
Pfeil Veranstaltungen
Pfeil UserGroups
Pfeil Archiv
Pfeil AGB




Netzwerksicherheits Hacks

Preston Gralla
September 2004
ISBN: 3-89721-384-2

Beispielhack:

Hack #40 Blocken Sie OS-Fingerprinting

Halten Sie, was Ihre Betriebssysteme betrifft, Außenstehende auf einer Basis, auf der sie nur das wissen, was sie wissen müssen.

Wenn Netzwerk-Reconnaissance (Netzwerk-Aufklärung) durchgeführt wird, ist für die angehenden Angreifer das Betriebssystem, das auf den Systemen läuft, die ihre Scans entdeckt haben, ein sehr wertvoller Teil an Information. Aus Sicht des Angreifers ist das sehr hilfreich, um herauszufinden, welche verwundbaren Schwachstellen das System besitzen könnte oder welche Exploits auf einem System funktionieren könnten. Kombiniert mit dem Wissen über offene Ports, die während eines Port-Scans entdeckt wurden, kann diese Information verheerend sein. Schließlich ist es nicht sehr wahrscheinlich, dass ein RPC-Exploit für SPARC-Solaris auch für x86-Linux funktioniert - der Code für den portmap-Daemon ist auf beiden Systemen verschieden und sie besitzen unterschiedliche Prozessor-Architekturen. Bewaffnet mit dem Wissen über eine bestimmte Server-Plattform, können Angreifer diejenigen Techniken sehr wirksam ausprobieren, die ihnen am wahrscheinlichsten erweiterten Zugriff gewähren, ohne dabei Zeit mit Exploits zu verschwenden, die nicht funktionieren können.

Üblicherweise würden Individuen, die Netzwerk-Reconnaissance ausführen, sich einfach mit jedem Dienst verbinden, der von ihrem Port-Scan entdeckt wurde, um zu sehen, welches Betriebssystem auf dem entfernten System läuft. Das funktioniert, da viele Daemons, wie zum Beispiel Sendmail, Telnet und sogar FTP, bereitwillig das zugrunde liegende Betriebssystem und sogar ihre eigene Versionsnummer bekannt geben. Selbst wenn diese Methode einfach und unkompliziert ist, wird sie jetzt doch als lästig angesehen, weil es einfach ist, jemanden, der sich gerade verbindet, in den System-Protokolldateien zu entdecken. Zusätzlich können die meisten Dienste so konfiguriert werden, dass sie diese sensiblen Informationen nicht bekannt geben. Daraufhin wurden raffiniertere Methoden entwickelt, die keine vollständige Verbindung auf das Zielsystem benötigen, um festzustellen, welches Betriebssystem dort läuft. Diese Methoden verlassen sich auf die Verschrobenheiten des TCP/IP-Stacks der Host-Betriebssysteme und deren Verhalten, wenn sie auf bestimmte Arten von Paketen antworten. Da verschiedene Betriebssysteme auf diese Pakete auf eine bestimmte Art und Weise antworten, ist es möglich, basierend darauf, wie sie auf Sondierungspakete antworten, die normalerweise nicht in Protokolldateien angezeigt werden, eine gute Vermutung darüber anzustellen, welches Betriebssystem auf einem bestimmten Server läuft. Glücklicherweise können solche Sondierungspakete an der Firewall abgeblockt werden, um alle Versuche zu vereiteln, die Methoden wie diese zur Betriebssystemerkennung einsetzen.

Ein häufig benutztes Werkzeug, das solche Methoden zur Betriebssystemerkennung einsetzt, ist Nmap (http://www.insecure.org/nmap/), das es Ihnen nicht nur ermöglicht, das Betriebssystem zu ermitteln, das auf einem entfernten System läuft, sondern auch verschiedene Arten von Port-Scans durchführt.

Der Versuch, ein Betriebssystem mit Nmap festzustellen, ist so einfach wie desssen Ausführung mit dem Schalter -O. Hier sind die Ergebnisse des Scans eines OpenBSD 3.3-Systems:

# nmap -O puffy


Starting nmap 3.48 ( http://www.insecure.org/nmap/ ) at 2003-12-02 19:14 MST
Interesting ports on puffy (192.168.0.42):
(The 1653 ports scanned but not shown below are in state: closed)
PORT    STATE SERVICE
13/tcp  open  daytime
22/tcp  open  ssh
37/tcp  open  time
113/tcp open  auth
Device type: general purpose
Running: OpenBSD 3.X
OS details: OpenBSD 3.0 or 3.3

 
Nmap run completed -- 1 IP address (1 host up) scanned in 24.873 seconds
 

Um die Bemühungen von Nmap zu durchkreuzen, können wir Firewall-Regeln einsetzen, die Pakete blocken, die für Betriebssystem-Untersuchungen verwendet werden. Diese sind ziemlich einfach auszumachen, da mehrere von ihnen ungültige Kombinationen von TCP-Flags besitzen. Einige der Tests, die Nmap durchführt, können nicht von PF geblockt werden, indem man einfach block-Regeln hinzufügt, sie können aber geblockt werden, wenn eine zustandsbezogene Filterung und eine Deny-Standardrichtlinie im Regelsatz implementiert wurden. Das liegt daran, dass einige der Tests Gebrauch von TCP-Optionen machen, die nicht von PF gefiltert werden können.

Um diese Fingerprinting-Versuche mit PF von OpenBSD zu blocken, können wir Regeln in unsere /etc/pf.conf stellen, die diesen hier ähnlich sind:

set block-policy  return
 

block in log quick proto tcp flags FUP/WEUAPRSF
block in log quick proto tcp flags WEUAPRSF/WEUAPRSF
block in log quick proto tcp flags SRAFU/WEUAPRSF
block in log quick proto tcp flags /WEUAPRSF
block in log quick proto tcp flags SR/SR
block in log quick proto tcp flags SF/SF
 

Dies hat auch den Nebeneffekt, dass alle Versuche auf das pflog0-Interface protokolliert werden. Selbst wenn wir nicht alle Tests von Nmap blocken können, so können wir doch zumindest einige der eindeutigeren Versuche blocken und Nmap möglicherweise dadurch verwirren, dass wir ein unvollständiges Bild über das Verhalten des TCP-Stacks unseres Betriebssystems liefern. Pakete, die diese Regeln ausgelöst haben, können mit tcpdump betrachtet werden, indem die folgenden Befehle ausgeführt werden:

# ifconfig pflog0 up
 
# tcpdump -n -i pflog0 
 

Lassen Sie uns jetzt einen Blick auf die Ergebnisse eines Nmap-Scans werfen, nachdem wir diese Regeln aktiviert haben:

# nmap -O puffy 
 

Starting nmap 3.48 ( http://www.insecure.org/nmap/ ) at 2003-12-02 22:56 MST
Interesting ports on puffy (192.168.0.42):
(The 1653 ports scanned but not shown below are in state: closed)
PORT    STATE SERVICE
13/tcp  open  daytime
22/tcp  open  ssh
37/tcp  open  time
113/tcp open  auth
No exact OS matches for host (If you know what OS is running on it, 
see http://www.insecure.org/cgi-bin/nmap-submit.cgi).
TCP/IP fingerprint:
SInfo(V=3.48%P=i686-pc-linux-gnu%D=12/2%Time=3FCD7B3F%O=13%C=1)
TSeq(Class=TR%IPID=RD%TS=2HZ)
T1(Resp=Y%DF=Y%W=403D%ACK=S++%Flags=AS%Ops=MNWNNT)
T2(Resp=Y%DF=Y%W=0%ACK=S%Flags=AR%Ops=)
T3(Resp=Y%DF=Y%W=0%ACK=O%Flags=AR%Ops=)
T4(Resp=Y%DF=Y%W=4000%ACK=O%Flags=R%Ops=)
T5(Resp=Y%DF=Y%W=0%ACK=S++%Flags=AR%Ops=)
T6(Resp=Y%DF=Y%W=0%ACK=O%Flags=R%Ops=)
T7(Resp=Y%DF=Y%W=0%ACK=S++%Flags=AR%Ops=)
PU(Resp=Y%DF=N%TOS=0%IPLEN=38%RIPTL=134%RID=E%RIPCK=F%UCK=E%UL
EN=134%DAT=E)
 

Nmap run completed -- 1 IP address (1 host up) scanned in 27.028 seconds
 

Wie Sie sehen können, war der Versuch diesmal nicht erfolgreich. Wenn Sie sich aber besonders gerissen vorkommen, dann könnte die einfache Verwirrung der Nmap-Versuche nicht genug sein. Was wäre, wenn Sie Angreifer tatsächlich glauben machen möchten, ein Server würde ein komplett anderes Betriebssystem betreiben? Dies könnte zum Beispiel nützlich sein, wenn Sie einen Honeypot [Hack #94] einrichten, um Schurken von Ihren wichtigen Servern abzulenken. Wenn das für Sie nach Spaß klingt, dann lesen Sie weiter.


Zurück zu Netzwerksicherheits Hacks

O'Reilly Home | O'Reilly Partnerbuchhandlungen | Bestellinformationen
Kontakt | Über O'Reilly | Datenschutz


© 2004, O'Reilly Verlag GmbH & Co.KG
webmaster@oreilly.de