Lehrstuhl für Datenverarbeitung Prof. Dr.-Ing. Dr. E.h. Wolfgang Weber Studienarbeit 282 Methoden zur Unterbindung einer Kommunikation zwischen zwei Rechnern Für die Sicherheit ist der Status des aktuellen Netzwerkverkehrs von Interesse. Eine Absicherung findet durch eine Firewall statt, indem der Datenstrom sofort restriktiv gesperrt werden kann. Eine interne Kommunikation innerhalb eines Sub-Netzes kann hingegen durch eine Firewall nicht unterbunden werden. Das Ziel ist es nun, Methoden zur Unterbindung einer Kommunikation zwischen zwei Rechnern zu entwickeln. Hierfür sind zunächst die möglichen Mechanismen zur prinzipiellen Trennung und Blockierung von Verbindungen auf TCP- und UDP-Basis zu untersuchen. Die Realisierung soll mittels eines geeigneten Mechanismus erfolgen, wobei die Möglichkeit bestehen soll, die Kommunikation auf bestimmten Ports zu unterbinden. Die Software soll ein GUI Interface zur Steuerung und zum Sperren der einzelnen Kommunikationkanäle erhalten. Zum Testen der Software sollen geeignete Testprogramme entwickelt und die einzelnen Testdurchläufe entsprechend protokolliert werden. Die Software ist mit MS Visual C++ unter MS Windows NT zu realisieren. Alle Entwicklungsschritte sind zudem projektbegleitend zu dokumentieren. (Prof. Dr.-Ing. Wolfgang Weber) Bearbeiter: Matrikel-Nummer: Betreuer: Bearbeitungszeitraum: cand.-Ing. Oliver Thomas Bethge 108 093 215 210 Dipl.-Ing. Thomas Droste WS 1999/2000 Inhalt Inhalt 1 2 3 4 5 6 7 Einleitung ................................................................................................................ 3 Mögliche Angriffsmethoden ................................................................................... 5 2.1 Datenstrom-Mitschnitt ........................................................................................ 5 2.2 Trojanische Pferde .............................................................................................. 6 2.3 Winnuke Angriffe ............................................................................................... 6 2.4 Teardrop Angriffe ............................................................................................... 7 2.5 Juggernaut Angriffe ............................................................................................ 8 Netzwerkprotokolle................................................................................................. 9 3.1 ISO/OSI-Modell .................................................................................................. 9 3.1.1 Funktionen der einzelnen Schichten.......................................................... 10 3.2 TCP/IP-Modell .................................................................................................. 11 3.3 Transmission Control Protocol ......................................................................... 12 3.3.1 Funktionsumfang ....................................................................................... 12 3.3.2 Header........................................................................................................ 13 3.4 User Datagram Protocol .................................................................................... 16 3.4.1 Funktionsumfang ....................................................................................... 16 3.4.2 Header........................................................................................................ 18 3.5 Vergleich zwischen TCP- und UDP-Verbindungen ......................................... 19 3.6 TCP-Zustandsdiagramm.................................................................................... 19 3.6.1 Verbindungsaufbau.................................................................................... 20 3.6.2 Verbindungsabbau ..................................................................................... 21 3.7 NetBEUI............................................................................................................ 22 3.7.1 Header........................................................................................................ 23 Problemstellung..................................................................................................... 24 Erkennung bestehender Verbindungen ................................................................. 25 Lösungsansatz ....................................................................................................... 28 6.1 Windows Sockets .............................................................................................. 28 6.2 Network Driver Interface .................................................................................. 29 6.3 Verbindungsübernahme .................................................................................... 30 Realisierung........................................................................................................... 32 7.1 Windows Sockets .............................................................................................. 32 7.1.1 ClosePort ................................................................................................... 32 7.1.2 ServiceScannner ........................................................................................ 33 7.1.3 ServiceServer ............................................................................................. 34 7.2 Network Driver Interface .................................................................................. 35 1 Inhalt 7.3 Verbindungsübernahme .................................................................................... 36 8 Zusammenfassung................................................................................................. 37 9 Ausblick ................................................................................................................ 38 10 Literatur................................................................................................................. 39 Anhang .......................................................................................................................... 43 2 Kapitel 1 Einleitung 1 Einleitung In der Zeit der modernen Informationsgesellschaft gewinnt die Netzwerksicherheit immer mehr an Bedeutung. Schäden durch mißbräuchliche Nutzung der Informationsressourcen können finanzielle Schäden und Image-Schäden von enormem Ausmaßen verursachen. Die vom Computer Emergency Response Team Coordination Center (CERT-CC) verzeichneten sicherheitsrelevanten Vorfälle steigen ständig. 1989 waren es weltweit weniger als 200, 1991 etwa 400, 1993 schon 1400 und 1994 sogar 2241 bekannte Fälle. Die Anzahl dieser sicherheitsrelevanten Vorfälle kann jedoch kein genaues Bild über den Verlauf geben, da viele Firmen Vorfälle erst gar nicht melden. Ein nicht abzuschätzender Teil sicherheitsrelevanter Vorfälle wird zudem von den Betroffenen erst gar nicht bemerkt. Zudem existiert keine Statistik, wie viele Vorfälle überhaupt entdeckt werden. Firmen bieten ihren Kunden Sicherheitstests ihrer Computernetze an. Dabei wird versucht, mit Erlaubnis der Computernetzbetreiber in die Netze einzudringen. Der Test wird dabei mit den gleichen Methoden und Werkzeugen vorgenommen, welche auch Hacker1 benutzten, dabei werden nur 4 Prozent der durchgeführten Eindringversuche überhaupt bemerkt. Zu einem sicheren System gehöhrt folglich nicht nur die Abschottung des Systems gegen unberechtigte Zugriffe, sondern ebenso Methoden um Eindringversuche festzustellen und zu unterbinden. In dieser Arbeit soll die Möglichkeit untersucht werden, eine Verbindung zwischen zwei Rechnern zu beenden (vgl. Abbildung 1-1). Rechner A Kommunikation Rechner B Rechner A Kommunikation Rechner B Abbildung 1-1: Unterbinden der Kommunikation zwischen zwei Rechnern 1 Hacker - Jemand der sich unberechtigt Zugriff zu Informationen verschafft. 3 Kapitel 1 Einleitung Dabei soll eine bestehende Verbindung zwischen zwei Rechnern, die von zwei verschiedenen Prozessen aufgebaut worden ist, durch einen dritten Prozeß abgebaut werden. Es handelt sich immer um die Interaktion zwischen zwei Rechnern, d.h. der Prozeß zum Beenden der Verbindung wird immer auf einem der beiden Rechner ausgeführt. Der gezielte Abbau einer Kommunikation ist nötig, um Angriffe auf einen Rechner abwenden zu können. Es ist notwendig verschiedene Vorgehensweisen zu behandeln, die als Ergebnis die Unterbrechung der Verbindung mit sich führen. Der Benutzer des Rechners steht dabei außen vor. 4 Kapitel 2 Mögliche Angriffsmethoden 2 Mögliche Angriffsmethoden In diesem Kapitel werden einige Angriffsmethoden exemplarisch erläutert, diese gilt es entsprechend zu erkennen und abzufangen. 2.1 Datenstrom-Mitschnitt Eine Angriffsmethode ist das Mitlesen des Datenstroms (vgl. Abbildung 2-1), welcher über ein Netzwerk übertragen wird. Mitlesen Angreifender Rechner Rechner A Datenstrom Rechner B Abbildung 2-1: Mitlesen des Datenstroms einer Verbindung Werden Daten unverschlüsselt übertragen, ist es möglich aus dem gewonnenen Informationen weitergehende Angriffsversuche einzuleiten. Bei der Nutzung von bestimmten Diensten, wie z.B. bei Zugriffen über Telnet2, FTP3 , POP4 und HTTP5, werden Paßwörter im Klartext übertragen. Durch den Mitschnitt des Datenstroms sind die Paßwörter für diese Dienste direkt im Klartext lesbar. Diese unverschlüsselten Dienste werden als gefährliche Dienste eingestuft, da sie die Datenübertragung unverschlüsselt durchführen. Sichere, verschlüsselte Dienste sind z.B. SSH6 und HTTPs7. 2 Telnet - Terminal Emulation 3 FTP - File Transfer Protocol 4 POP - Post Office Protokoll 5 HTTP - Hyper Text Transport Protocol 6 SSH - Secure Shell 7 HTTPs - Secure Hyper Text Transport Protocol 5 Kapitel 2 Mögliche Angriffsmethoden 2.2 Trojanische Pferde Trojanische Pferde8 werden über Wirt-Programme in Systeme eingeschleust. Der Benutzer installiert das Wirt-Programm und gleichzeitig das Trojanische Pferd selbst auf dem Rechner. Die Wirt-Programme könne z.B. per Email verschickt werden oder ein Benutzer lädt sie sich selbst aus dem Internet herunter. Das Wirt-Programm täuscht nützliche Anwendungen (Bildschirmschoner, Spiele, usw.) vor, verheimlichen aber ihren eigentlichen Sinn (vgl. Abbildung 2-2). Wirt-Programm Trojanisches Pferd Abbildung 2-2: Verkapselung eines Trojanischen Pferdes Die Trojanischen Pferde sammeln z.B. nach der Installation gezielt Daten auf dem Rechner. Die gewonnen Informationen gespeichert, bis sich eine geeignete Möglichkeit ergibt, sie zum Angreifer zu übertragen. Eine Übertragung zum Angreifer geschieht z.B. als Anhang an eine Email oder über eine neu aufgebaute Netzwerk-Verbindung. 2.3 Winnuke Angriffe Mittels eines „denial of service“-Angriffs wird versucht die Netzwerkschnittstelle eines Rechners mit überhöhtem Netzwerkverkehr zu blockieren. Die unter dem Namen Winnunke bekannt gewordenen Programme können dadurch das Betriebssystem eines Rechner zum Absturz bringen. Betroffen sind verschiedene Betriebsysteme, wie z.B. Microsoft Windows 95 und Windows NT. Diese Betriebssysteme besitzen eine fehlerhafte Implementation der Netzwerkschnittstelle, welche von Winnuke Programmen ausgenutzt wird. 8 Trojanisches Pferd – analog zur gr. Geschichte um den Kampf um Troja 6 Kapitel 2 Mögliche Angriffsmethoden Angreifer OOB Daten Zielrechner Abbildung 2-3: Winnuke Angriff Durch Senden von OOB9-Datenpaketen (vgl. Abbildung 2-3) an die Netzwerkschnittstelle werden unvorhersehbare Ereignisse ausgelöst, wodurch ein Rechner zum Absturz gebracht werden kann. Ein Angriff auf z.B. ein Microsoft Windows 95 oder Windows NT-System erfolgt durch senden der Daten an den Zielport 139 (NetBEUI). 2.4 Teardrop Angriffe Die unter dem Namen Teardrop bekannten Programme können die Betriebssysteme verschiedener Plattformen zum Absturz bringen. Es handelt sich um einen „denial of service“-Angriff. Betroffen sind u.a. die Betriebssysteme der Firma Microsoft und das Betriebssystem Linux. Die Teardrop Programme nutzen einen Fehler bei der TCP/IPProtokoll-Implementierung der Betriebssysteme aus. Es werden überlappende ICMP10/IP11 Fragmente (vgl. Abbildung 2-4) an die Netzwerkschnittstelle eines Rechners gesendet. Dadurch erreicht die Netzwerkschnittstellenimplementierung der Betriebssysteme einen nicht definierten Zustand und kann das Betriebssystem zum Absturz bringen. Angreifer überlappende ICMP/IP Fragmente Zeilrechner Abbildung 2-4: Teardrop Angriff 9 OOB - Out of Band 10 ICMP – Internet Control Message Protocol 11 IP – Internet Protocol 7 Kapitel 2 Mögliche Angriffsmethoden 2.5 Juggernaut Angriffe Durch einen Juggernaut12 Angriff wird das Übernehmen einer existierenden Verbindung beschrieben. Dafür schaltet sich das Programm Juggernaut in die bestehende Kommunikation zwischen zwei Rechnern ein (vgl. Abbildung 2-3). Übernehmen Angriffsrechner Rechner A Kommunikation Trennen der Verbindung Rechner B Abbildung 2-5: Funktionsweise von Juggernaut Diese Angriffe funktionieren unabhänig von dem auf dem angegriffen Rechner verwendeten Betriebssystem. Anfällig von dieser Angriffsmethode sind besonders die Telnet- und FTP-Verbindungen. Eine zwischen den Rechnern A und B bestehende Verbindung wird z.B. vom Angreifer zum Rechner B abgebaut. Dem Rechner A wird vorgetäuscht der ursprüngliche Kommunikationspartner, vormals Rechner B, zu sein. Durch das Übernehmen der Verbindung ist es möglich, gezielt Informationen von dem Rechner A auszuspähen. Wird z.B. eine Telnet Verbindung übernommen, hat der ursprüngliche Kommunikationspartner sich bereits am Rechner A mit Namen und Paßwort angemeldet. Der Angreifer hat mit Übernahme der Verbindung so die Sicherheitsmechanismen des Dienstes umgangen und kann ungehindert die gewünschten Informationen ausspähen. 12 Juggernaut - Moloch 8 Kapitel 3 Netzwerkprotokolle 3 Netzwerkprotokolle 3.1 ISO/OSI-Modell Das ISO13/OSI14-Modell ist 1978 entworfen worden, um eine Kommunikation zwischen verschiedenen Systemen und unterschiedlichen Herstellern mit ihren eigenen Netzwerkprotokollen zu definieren. In Abbildung 3-1 ist das ISO/OSI-Modell dargestellt. Schicht 7 Anwendungsschicht Schicht 6 Darstellungsschicht Schicht 5 Sitzungsschicht Schicht 4 Transportschicht Schicht 3 Netzwerkschicht Schicht 2 Sicherungsschicht Schicht 1 Physikalische Schicht Abbildung 3-1: Schichten des ISO/OSI-Modells Es gliedert sich in sieben Schichten, welche jeweils unterschiedliche Funktionen besitzen. Die Kommunikation geschieht schichtweise. Jede Schicht überträgt immer nur Daten zur nächst höheren und nächst unteren Schicht. 13 ISO - International Standart Organisation 14 OSI - Open Systems Interconnection 9 Kapitel 3 Netzwerkprotokolle 3.1.1 Funktionen der einzelnen Schichten • Schicht 7, Anwendungsschicht (Application Layer): Diese Schicht ist das Bindeglied zwischen den Netzwerkfunktionen und der eigentlichen Anwendung. Die Anwendung kommuniziert nur mit der Anwendungsschicht. Alle anderen Schichten bleiben der Anwendung verborgen. • Schicht 6, Darstellungsschicht (Presentation Layer): In der Darstellungsschicht werden die Darstellungsformate der übertragenen Nachrichten betrachtet. Sie übersetzt verschiedene Codes und Formate so, daß eine gemeinsam bekannte Darstellungsart zwischen den Systemen zur Verfügung steht. • Schicht 5, Sitzungsschicht (Session Layer): Die Sitzungsschicht ist die unterste Schicht des Anwendungssystems15. Ihre Aufgabe ist das Aufrechterhalten der Verbindungen. In dieser Schicht können logische Benutzer gleichzeitig über mehrere Verbindungen kommunizieren. Bricht eine Verbindung zusammen, so baut diese Schicht sie wieder auf. • Schicht 4, Transportschicht (Transport Layer): Diese Schicht ist die oberste Schicht des Transportsystems16. Die Transportschicht stellt den höheren Schichten ein Kommunikationssystem zur Verfügung. Die höheren Schichten sehen nur die Transportschicht. Diese baut logische Verbindungen zwischen Rechnern auf. Diese werden durch Transportadressen gekennzeichnet. • Schicht 3, Netzwerkschicht (Network Layer): Die Aufgabe dieser Schicht ist der Austausch von Paketen von nicht direkt miteinander verbundenen Rechner-Stationen. Hier wird das Routing, d.h. die Wegwahl, bestimmt und es werden die Sicherungsschicht-Verbindungen gemultiplext. Die Pakete die zu Sicherungsschicht gegeben werden, werden auf eine einheitliche Länge geschnitten (Sequenzbildung). Es wird eine Flußkontrolle und Fehlerbehandlung durchgeführt. • Schicht 2, Sicherungsschicht (Data Link Layer): In dieser Schicht werden Verbindungen aufgebaut und beendet. Informationen werden in Datenpakete zerteilt. Die Schicht führt mittels Prüfsummen eine Erkennung von Übertragungsfehlern durch und steuert die Reihenfolge der Datenpakete. 15 Anwendungssystem - Das Anwendungssystem beinhaltet die Schichten 5-7 im ISO/OSI Modell 16 Transportsystem - Das Transportsystem beinhaltet die Schichten 1-4 im ISO/OSI Modell 10 Kapitel 3 Netzwerkprotokolle • Schicht 1, Physikalische Übertragungsschicht (Physical Layer): Die Übertragungsschicht ermöglicht die physikalische Kommunikation. Die Datenpakete werden auf die Leitung (z.B. Kupfer, Glasfaser, Luftschnittstelle) umgesetzt. Die Realisierung der Schicht hängt von der gewählten Netzwerktopologie ab. 3.2 TCP/IP-Modell Das TCP17/IP- Modell ist aufgrund seiner großen Verbereitung ein De-facto-Standard. Es läßt sich komplett in das ISO/OSI-Modell einbinden (vgl. Abbildung 3-2), das Internet Protokoll deckt dabei die Schicht 3 und das Transmission Control Protocol die Schicht 4 im ISO/OSI-Modell ab. ISO/OSI-Modell TCP/IP-Modell Anwendungen Anwendungsschicht Standart: Erweiterte Anwendunge: Systemmeldungen: NFS Darstellungsschicht FTP Telnet Drucker Server Fehlerbehandlung SMTP Sitzungsschicht Transportschicht Trnsmission Control Protocol (TCP) User Datagram Delivery Protocol (UDP) Netzwerkschicht Internet Protocol (IP) Addres Resolution Protocol (ARP) Internet Control Message Protocol (ICMP) Sicherungsschicht Übertragungsmedium Physikalische Schicht Abbildung 3-2: Einordung des TCP/IP-Modells in das ISO/OSI-Modell 17 TCP - Transmission Control Protocol 11 Kapitel 3 Netzwerkprotokolle 3.3 Transmission Control Protocol Das Transmission Control Protocol (TCP) ist ein verbindungsorientiertes Punkt-zuPunkt-Protokoll. Es garantiert eine folgerichtige und zuverlässige Übertragung. Die Sender- und Empfängeradressen werden weltweit nur einmal vergeben und mittels vier durch Punkte getrennte Zahlentupel angegeben. Jede dieser Zahlentupel kann einen maximalen dezimalen Wert von 255 annehmen. Eine eindeutige Netzwerkadresse setzt sich aus der Sender- oder Empfängeradresse und einer Portnummer (vgl. Anhang-B) zusammen. Es wird zwischen reservierten und nicht reservierten Ports unterschieden. Reservierte Ports liegen unterhalb von 1024, alle darüber liegenden werden als die nicht reservierten Ports bezeichnet. Eine Verbindung zwischen zwei Rechnern wird von einem nicht reservierten Port zu einem reservierten Port aufgebaut. Ein reservierter Port übernimmt eine bestimmte Aufgabe. So steht z.B. der Port Nummer 23 für eine Telnet-Verbindung, oder Port Nummer 25 für eine FTP-Verbindung. Da Übertragung paketweise erfolgt, muß der Protokollstack des Empfängers die erhaltenen Pakete der Reihe nach sortieren, um die Information zu erhalten. Pakete die den Empfänger nicht erreichen müssen erneut gesendet werden. 3.3.1 Funktionsumfang Das Transmission Control Protocol besitzt mehrere Funktionen: • End-to-End-Kontrolle: Um eine korrekte Datenübertragung zu gewährleisten, existiert beim TCP ein Quittierungsmechanismus. Dabei wird jedes beim Empfänger ankommende Paket bestätigt. Erreicht ein Paket den Empfänger nicht, so wird es erneut vom Sender geschickt. • Verbindungsmanagement: Das Verbindungsmanagement des TCP besteht aus drei Teilen: dem gesicherten Aufbau, dem Aufrechterhalten während der gesamten Kommunikation zwischen Sender und Empfänger sowie dem gesicherten Abbau der Verbindung. • Flußkontrolle: Die Flußkontrolle besteht aus der fortlaufenden Numerierung der Datenpakete, der Bestätigung der empfangenen Daten durch dem Empfänger und einem Fenstermechanismus. Mit der Flußkontrolle wird ein Datenverlust und der Überlauf von Datenpuffern verhindert. • Multiplexen von Verbindungen: Damit mehrere Verbindungen gleichzeitig über das TCP aufgebaut werden können, d.h. damit mehrere Anwendungen gleichzeitig auf das TCP zugreifen können, werden den einzelnen Anwendungen Ports zugeordnet. 12 Kapitel 3 Netzwerkprotokolle • Zeitüberwachung von Verbindungen: Es findet beim TCP eine Zeitüberwachung statt. Werden Datenpakete innerhalb eines zeitlich definierten Zeitraums nicht quittiert, so werden diese vom Sender erneut gesendet. • Spezialfunktionen: Beim TCP existieren zwei spezielle Funktionen Urgent Data und der PushMechanismus. Mit diesen Funktionen können Vorrang-Daten gekennzeichnet werden, die bevorzugt übertragen werden. • Fehlerbehandlung: Das TCP führt eine Fehlerkontrolle durch. Entsteht ein Fehler, so wird dies der nächst niedrigeren Schicht mitgeteilt, und das verlorengegangene Paket wird erneut angefordert. 3.3.2 Header In Abbildung 3-3 ist der TCP Header dargestellt. 1 Abstand 4 8 Sendeport Reserviert 12 16 20 Sequenznummer Quittungsnummer Kontrollbits Prüfsumme 24 28 Empfängerport 32 Fenstergröße Urgent-Zeiger Optionen Füllzeichen Abbildung 3-3: TCP Header • Sendeport: Das Feld hat eine Länge von 16 Bit und zeigt die Absenderadresse eines Prozesses an. Durch den Sendeport wird angegeben, von welchem Dienst eines höheren Protokolls Daten übermittelt worden sind. Der Sendeport und die IP-Adresse bilden zusammen einen Socket. Wird eine Verbindung über einen Socket aufgebaut, so kommunizieren die Kommunikationspartner beide während der gesamten Zeit über die gleichen Ports. Diese Ports bleiben aber nur für die Dauer einer Verbindung identisch. • Empfängerport: Das Feld ist ein 16 Bit Datenwort und zeigt die Zieladresse auf dem Zielrechner an. Eine Verbindung wird eindeutig aus der IP-Adresse des Senders und Empfängers sowie dem Sendeport und Empfängerport gebildet. 13 Kapitel 3 Netzwerkprotokolle • Sequenznummer: Das Feld besteht aus 32 Bit. Jedem einzelnen Datenpaket bei einer TCPVerbindung wird eine Sequenznummer zugeordnet. Im Laufe der Kommunikation wird die Sequenznummer mit jedem Datenpaket um eins erhöht. • Quittungsnummer: Die Quittungsnummer (Acknowledge-Nummer) hat eine Länge von 32 Bit und ist ein Mechanismus zur Flußkontrolle. Jedes Paket wird bei der Übertragung fortlaufend numeriert (Sequenznummer). Es wird eine Quittungsnummer erzeugt, die den Empfang des Paketes bestätigt und so gleichzeitig anzeigt, welches Paket als nächstes erwartet wird. • Abstand: Der Abstand hat einen Umfang von 4 Bit und gibt die Anzahl der 32-Bit-Datenworte im TCP Header an. Das Abstandsfeld ist wegen der veränderlichen Größe des Optionenfelds notwendig. • Reserviert: Das Feld ist 6 Bit lang. Es ist für zukünftige Einstellungen reserviert und wird auf „0“ vordefiniert. • Kontrollbits: In diesem Feld (vgl. Abbildung 3-4) sind eine Reihe von Flags, die zum Aufbau, Abbau und zur Aufrechterhaltung einer Verbindung dienen. 1 URG 2 ACK 3 PSH 4 RST 5 SYN 6 FIN Abbildung 3-4: TCP Kontrollbits • Urgent-Zeiger-Bit (URG): Ist das Urgent-Zeiger-Bit-Feld auf „1“ gesetzt so zeigt es an, daß das UrgentZeiger-Feld im TCP Header beachtet werden muß. Dieses dient zur Markierung von Vorrangdaten. • Acknowledge-Bit (ACK): Ist das Acknowledge-Bit auf „1“ gesetzt, so zeigt es an, daß das AcknoledgeFeld im TCP Header zu beachten ist. Das Acknowledge-Feld bestätigt empfangene Daten. • Push-Bit (PSH): Das Push-Bit zeigt, auf „1“ gesetzt, an, daß die empfangenen Daten direkt an die nächsthöhere Schicht weitergeleitet werden sollen. Diese Funktion ist auch als Push-Mechanismus bekannt. 14 Kapitel 3 • • • • Netzwerkprotokolle • Reset-Bit (RST): Das Reset-Bit zeigt, auf „1“ gesetzt, an, daß der eine Verbindungspartner die Verbindung beenden will. • Synchronisation-Bit (SYN): Mit dem auf „1“ gesetzten Synchronisations-Bit teilt der Sender dem Empfänger mit, daß eine Verbindung aufgebaut werden soll. • Final-Bit (FIN): Ist das Final-Bit auf „1“ gesetzt, so ist die Verbindung endgültig beendet und der Sender überträgt keine Pakete mehr von höheren Protokollen. Fenstergröße: Das Feld hat einen Umfang von 16 Bit und dient zur Flußkontrolle zwischen dem Sender und dem Empfänger. Der Fenstermechanismus teilt dem Sender mit, wie groß der verbleibende Puffer beim Empfänger ist. So wird verhindert, daß Pakete unbestätigt versendet werden und der Empfänger-Puffer überläuft. Prüfsumme: Die Prüfsumme ist ein Datenfeld von 16 Bit Länge und wird aus dem TCP Header und einem 96 Bit Pseudo-Header gebildet. Sie besteht aus dem 16-Bit-Einerkomplement der Einerkomplementsumme aller 16-Bit-Wörter im Header und in den Daten. Folgende Teile sind im Pseudo Header vorhanden: • IP-Sendeadresse (32 Bit) • IP-Empfängeradresse (32 Bit) • Leerfeld (8 Bit) • Protokollindentifikator (8 Bit) • Information über die Länge des TCP Segmentes (16 Bit) Urgent-Zeiger: Die Feldlänge des Urgent-Zeiger beträgt 16 Bit. Dringliche Daten werden mit dem Urgent-Zeiger(URG)-Bit und dem Urgent-Zeiger versehen und stehen immer am Anfang eines TCP-Paketes. Der Urgent-Zeiger zeigt die Position des letzten dringenden Pakets an. Wird zu der Sequenznummer der Urgent-Zieger addiert, ergibt sich die Nummer des letzten dringenden Pakets. Optionen: Das Feld hat eine veränderliche Länge. In dem Optionen Feld ist es möglich Service-Optionen zu definieren. Die TCP Optionen setzen sich aus einem Oktett Optionsart und optional einen Oktett Optionslänge und Optionsdaten zusammen. Folgende TCP Optionen existieren bis jetzt: • End of Option List: Für diese Option ist die Optionsart auf „0“ festgelegt worden. Sie zeigt das Ende aller zu übertragenden Optionen an und hat eine Länge von 8 Bit. 15 Kapitel 3 Netzwerkprotokolle • No Option List: Für diese Option wurde die Optionsart „1“ festgelegt. Sie dient zur Trennung zwischen zwei Optionen und besitzt eine Länge von 8 Bit. • Maximum Segment Size: Die Option hat die Optionsart „2“. Durch sie wird die maximale Segmentlänge zwischen den Kommunikationspartnern festgelegt. Die Option wird bei einem Verbindungsaufbau benutzt und hat eine Länge von 16 Bit. • Füllzeichen: Das Feld Füllzeichen stellt sicher, daß die Länge des TCP Headers immer ein Vielfaches von 32 Bit beträgt. Ist der Header zu kurz so werden in diesem Feld Füllzeichen eingefügt. Die Option hat einen Umfang von 8 bis 24 Bit. 3.4 User Datagram Protocol The Department of Defense’s User Datagram Protocol (UDP) ist ein verbindungsloses Protokoll. Es ist in RFC18 768 definiert. Das UDP hat im Gegensatz zum TCP einen kleineren Daten-Overhead für die Adressierung. Es ist deshalb schneller und wird oft zur Übermittlung großer Datenmengen eingesetzt. 3.4.1 Funktionsumfang Das UDP übernimmt mehrere Funktionen: • Transportdienst: Der wesentliche Unterschied zwischen dem TCP und dem UDP liegt in der Verbindungsüberwachung. Im Gegensatz zum TCP überprüft das UDP nicht die korrekte Übergabe der Daten an den Empfänger, d.h. die gesendeten Pakete werden vom Empfänger nicht quittiert. Erreichen bei der Übertragung Pakete den Empfänger nicht, werden diese nicht wie beim TCP noch einmal geschickt. Beim UDP muß die über dem UDP liegende Applikationsschicht die Aufgabe der Transportkontrolle übernehmen. • Verbindungs-Management: Das UDP baut keine aktive Verbindung zwischen Sender und Empfänger auf. Es werden, wie bei dem darunterliegenden IP-Protokoll, die einzelnen Pakete völlig unabhängig voneinander versendet. Die Applikationsschicht steuert hierbei die Daten zwischen Sender und Empfänger. 18 RFC - Request for Comment 16 Kapitel 3 Netzwerkprotokolle • Flußkontrolle: Es existiert beim UDP keine Flußkontrolle. Es gibt keine Sequenz- und Acknowledge-Nummern wie beim TCP. Die höheren Schichten übernehmen die Flußkontrolle. • Multiplexen von Verbindungen: Damit mehrere Verbindungen gleichzeitig über das UDP aufgebaut werden können, d.h. damit mehrere Anwendungen gleichzeitig auf das UDP zugreifen können, werden den einzelnen Anwendungen Ports zugeordnet. Eine Verbindung ist immer durch die IP-Adresse des Empfängers und die Portnummer beim Empfänger gekennzeichnet. Das UDP wird insbesondere für folgende Anwendungen benutzt: • Name Service Protokoll (EIN 116) • Trivial File Transfer Protokoll (TFTP) • Network File System (NFS) • Boot Protokoll (BootP) • Simple Network Management Protokoll (SNMP) • Domain Name Service Protokoll (DNS) • Zeitüberwachung der Verbindung: Eine Zeitüberwachung findet beim UDP im Gegensatz zum TCP nicht statt, d.h. Datenübertragung wird nicht zeitlich geprüft. Die höheren Schichten müssen die Zeitüberwachung abdecken. • Spezialfunktionen: Die vom TCP her bekannten speziellen Funktionen wie z.B. Urgent Data werden vom UDP nicht unterstützt. Hier ist es wieder Aufgabe der höheren Schichten, diese Funktionen zu erfüllen, wenn sie benötigt werden. • Fehlerbehandlung: Je nach Implementation des UDP in den verschiedenen Betriebssystemen wird eine minimale Fehlerkontrolle durchgeführt. Entstehen Fehler, so kann das UDP diese an die höhere Schicht mitteilen. Ist keine Fehlerkontrolle implementiert, so ist es Aufgabe der höheren Schicht, diese zu übernehmen. 17 Kapitel 3 Netzwerkprotokolle 3.4.2 Header Der UDP Header besteht aus dem Sendeport, dem Empfängerport, der Paketlänge und der Prüfsumme (vgl. Abbildung 3-5). 1 4 8 Sendeport Paketlänge 12 16 20 24 28 Empfängerport Prüfsumme 32 Abbildung 3-5: UDP Header • Sendeport: Der Sendeport ist ein optionales Feld mit einer Länge von 16 Bit. Es dient dazu, daß bei Antworten die Sendeport-Adresse direkt angesprochen werden kann. Setzt ein Sender keinen Wert für dieses Feld, so wird es auf „0“ gesetzt. • Empfängerport: Der Empfängerport ist ein Feld mit einer Länge von 16 Bit. Dieser stellt den Port des Empfängers an den der Sender das Paket schickt dar. • Paketlänge: Das Feld hat eine Länge von 16 Bit und zeigt die gesamte Länge des UDP-Pakets inklusive Headers an. Ein UDP-Paket hat immer eine minimale Länge von 8 Oktetten, dies entspricht genau der Länge des Headers. • Prüfsumme: Die Prüfsumme ist ein optionales Feld von 16 Bit Umfang. Nicht jede Implementation des UDP berücksichtigt diese Feld. Wird keine Prüfsumme berechnet, so wird das Feld automatisch auf „0“ gesetzt. Die Prüfsumme wird aus dem UDP-Header und einem 96 Bit Pseudo-Header gebildet. Sie setzt sich aus dem 16 Bit Einerkomplement der Einerkomplementsumme aller 16 Bit Wörter im Header und Daten zusammen. Folgende Teile werden im Pseudoheader zusammen gefaßt: • IP Sende Adresse (32 Bit) • IP Empfänger Adresse (32 Bit) • Leerfeld (8 Bit) • Protokollindentifikator (8 Bit) • Informationen über die Länge des UDP Segmentes (16 Bit) 18 Kapitel 3 Netzwerkprotokolle 3.5 Vergleich zwischen TCP- und UDP-Verbindungen Die Tabelle 3-1 zeigt die wesentlichen Unterschiede zwischen dem TCP und dem UDP. Es wird deutlich, daß das UDP besser zur schnellen Übertragung von großen Datenmengen geeignet ist, wogegen des TCP eine gesicherte Übertragung gewährleisten kann. Funktion Ende-zu-Ende-Kontrolle Zeitüberwachung der Verbindung Spezialfunktionen (z. B. „Urgent Data“) Flußkontrolle über das Netz hinweg Zuverlässige Datenübertragung Geschwindigkeit Erkennung von Paketduplikaten Reihenfolgerichtige Übertragung Verbindung wird aufgebaut Multiplexen von Verbindungen TCP ja ja ja ja ja mittel ja ja ja ja UDP nein nein nein nein nein hoch nein nein nein ja Tabelle 3-1: Vergleich von TCP- und UDP-Protokoll 3.6 TCP-Zustandsdiagramm In Abbildung 3-6 sind die möglichen TCP-Zustände mit ihren Übergängen dargestellt. Segmentaustausch Closed Passive Open Passive Open Aktive Open Open Fehler Active Open Closing Established Passive Open Send Abbildung 3-6: Vereinfachtes TCP Zustandsdiagramm 19 Kapitel 3 Netzwerkprotokolle Ein Service kann dabei folgende Zustände besitzen: • Closed: Es besteht keine Verbindung. • Passive Open: Der Port nimmt durch Passiv Open initialisierte Verbindungsaufrufe entgegen. Es wird auf den Verbindungsaufbau gewartet. Dabei werden Vorrangdaten und Sicherheitsstufen berücksichtigt. • Active Open: Der Port nimmt eine durch Active Open initialisierte Verbindungsaufrufe entgegen. Es wird ein aktiver Verbindungsaufbau gestartet. Dabei werden Vorrangdaten und Sicherheitsstufen berücksichtigt. • Established: Die Verbindung ist aufgebaut. • Closing: Die Verbindung wird durch den Nutzer kontrolliert abgebaut. Eine Verbindung kann über Active Open oder Passive Open initialisiert werden. Dieser Zustand geht in den Established-Zustand über, d.h. die Verbindung ist aufgebaut und Daten können gesendet werden. Sollen keine Daten mehr gesendet werden, so wird der Zustand Closing angenommen. Die Verbindung wird kontrolliert abgebaut. Ist die Verbindung abgebaut, ist der Zustand Closed erreicht und eine neue Verbindung kann über Active Open oder Passive Open aufgebaut werden. Für den Verbindungsaufbau können folgende Serviceroutinen genutzt werden: • Active Open • Active Open mit Daten • voll spezifiziertes Passive Open • unspezifiziertes Passive Open Eine TCP-Verbindung wird immer von einem Port auf dem Quellrechner zu dem Port auf dem Zielrechner aufgebaut. Diese Verbindung kann aktiv oder passiv aufgebaut werden. Wird die Verbindung passiv aufgebaut, wartet der Rechner auf den Verbindungsaufbau über einen bestimmten Port. Der passive Verbindungsaufbau kann voll spezifiziert, nur zu einem bestimmten Port, oder unspezifiziert, zu einem beliebigen Port, geschehen. Beim aktiven Verbindungsaufbau baut der Quellrechner eine Verbindung zu einem Empfängerrechner auf. Der Empfängerrechner ist dabei im Passive Open-Modus, oder er baut eine Active Open-Verbindung zum gleichen Port auf. 3.6.1 Verbindungsaufbau Der Verbindungsaufbau ist in Abbildung 3-7 dargestellt. 20 Kapitel 3 Netzwerkprotokolle Active Open SYN senden Passive Open Closed Close Close SYN gesendet Listen SYN empfangen Established SYN empfangen SYN gesendet Abbildung 3-7: Verbindungsaufbau Eine Verbindung wird immer von dem Zustand Closed aus aufgebaut. Sie kann mit Active Open oder Passive Open initialisiert werden. Wird die Verbindung mit Passive Open initialisiert, wird der Zustand Listen erreicht. Beim aktiven Aufbau wird das SYN-Zeichen gesendet und der SYN-Zustand wird angenommen. Dieser Zustand wird so lange aufrecht erhalten, bis ein Timer abgelaufen ist. Danach wird automatisch wieder der Zustand Closed angenommen. Wenn das SYN-Zeichen hingegen vom Empfänger positiv beantwortet wird, wechselt der Zustand zu Established. Der Empfänger, der mit Passive Open im Listen-Zustand war, erreicht den Established-Zustand. Bekommt ein Empfänger kein SYN-Zeichen gesendet, kann er wieder in den ClosedModus übergehen. Im Established-Zustand können die Daten übertragen werden. 3.6.2 Verbindungsabbau Der Verbindungsabbau ist in Abbildung 3-8 dargestellt. Close FIN senden Established FIN Wait FIN empfangen Close Wait FIN Empfangen Closed Close FIN senden Abbildung 3-8: Verbindungsabbau 21 Kapitel 3 Netzwerkprotokolle Eine Verbindung wird immer vom Sender mit dem FIN-Bit beendet und gelangt damit den FIN-Wait-Status. Wird das FIN positiv beantwortet, so wird wieder der ClosedModus angenommen. Ist das FIN empfangen worden, so gelangt ein Empfänger direkt in den Close-Wait-Status. Nach Versenden des FIN wird die Verbindung abgebaut und der Closed-Zustand angenommen. Es existieren zwei Möglichkeiten, eine Verbindung zu beenden: Graceful Close und Abort. Beim Graceful Close schließen die höheren Übertragungsprotokolle auf beiden Seiten die Verbindung. Dies kann gleichzeitig oder nacheinander geschehen, das TCP koordiniert den Verbindungsabbau. Die Verbindung wird erst abgebaut, wenn alle restlichen Daten übertragen worden sind, um Datenverlust zu vermieden. Die zweite Möglichkeit ist der Abort. Eine Verbindung wird mit Abort beendet, wenn die Verbindung einseitig abgebaut werden muß, z.B. bei einem fehlgeschlagenen Authentifizierungsversuch bei einem sicheheitsrelevantem Dienst. Dabei baut ein höheres Protokoll eines Kommunikationspartners die Verbindung einseitig ab. Das TCP koordiniert den Abbau der Verbindung in diesem Fall nicht und es kann zu Datenverlust kommen. 3.7 NetBEUI Das NetBEUI ist ein nicht routingfähiges Protokoll. Es besteht die Möglichkeit die Routing-Fähigkeit der Protokolle TCP/IP- oder IPX zu nutzen in dem NetBEUI-Pakete an diese gebunden werden. NetBEUI arbeitet auf den TCP/IP Ports 137 bis 139 (vgl. Tabelle 3-2). Ursprünglich ist NetBEUI von der Firma IBM entwickelt worden, um kleine Netzwerke zu verbinden. Es können maximal 254 Rechner auf einmal miteinander verbinden. Name NetBEUI-ns NetBEUI-ns NetBEUI-dgm NetBEUI-dgm NetBEUI-ssn NetBEUI-ssn Port 137/tcp 137/udp 138/tcp 138/udp 139/tcp 139/udp Beschreibung Name Service Name Service Datagram Service Datagram Service Session Service Session Service Tabelle 3-2: NetBEUI Ports 22 Kapitel 3 Netzwerkprotokolle 3.7.1 Header In Abbildung 3-9 ist der NetBEUI Header dargestellt 1 4 8 Länge 12 Kommando Datenlänge Reserviert Empfänger-Session Sender-Session 16 20 24 28 Signatur Resyncindikator Antwortverknüpfung Beginn Datenbereich 32 Abbildung 3-9: NetBEUI Header • Länge: Das Feld ist 16 Bit lang und zeigt die Anzahl der zu übermittelnden Daten an. • Signatur: Die Signatur wird zum Identifizieren der übertragenen Pakete eingesetzt. Sie hat eine Länge von 16 Bit. • Kommando: Das Feld ist 8 Bit lang und zeigt die Netzwerkaktion an, die ausgeführt werden soll (Daten anfordern, Verbindung aufbauen). • Datenlänge: Das Feld hat einen Umfang von 8 Bit und zeigt an, wie viele 32-Bit-Datenworte im Header vorhanden sind. • Resyncindikator: Das Feld hat eine Länge von 16 Bit. Die Funktion dieses Feldes ist ein Mechanismus zur Flußkontrolle. Um eine gesicherte Übertragung zu ermöglichen können hier fehlende oder nicht korrekt übertragene Datenpakete ermittelt werden. • Reserviert: Das Feld erstreckt sich über 16 Bit. Dieses Feld ist für zukünftige Funktionen reserviert und wird immer auf „0“ gesetzt. • Antwortverknüpfung: Das Feld hat eine Länge von 16 Bit. Die Funktion dieses Feldes ist es, die richtige Reihenfolge der empfangenen Pakete herzustellen. • Empfänger-Session: Dieses Feld zeigt an, welche Anwendung oder welcher Dienst die Pakete erhalten soll und ist 8 Bit lang. • Sender-Session: Das Sender-Session-Feld zeigt an, von welcher Anwendung oder von welchem Dienst die Pakete stammen. Es hat einen Umfang vom 8 Bit. 23 Kapitel 4 Problemstellung 4 Problemstellung Zwischen zwei Rechnern besteht eine aktive Kommunikation. Diese wird im Normalfall systematisch wieder von beiden Kommunikationspartnern abgebaut. Ziel ist es jetzt, die Kommunikation von einem externen Prozeß auf einem der beiden Rechner zu unterbinden bzw. zu beenden. Dazu sind verschiedener Mechanismen, die als Ergebnis die Unterbrechung dieser Kommunikation (vgl. Abbildung 4-1) zwischen den beiden Rechnern mit sich führen, zu untersuchen. Die geeignet zu entwickelnde Routine soll die Kommunikation zwischen zwei Rechnern beenden. Rechner A Kommunikation Rechner B Befehl zum Abbau der Verbindung Rechner A Kommunikation Rechner B Kommunikation ist beendet Rechner A Rechner B Abbildung 4-1: Problemstellung Abbau einer Verbindung Als Eingangsparameter werden die Daten der vorhanden Kommunikation zwischen zwei Rechnern übernommen, welche zuvor festgestellt werden müssen (vgl. Kapitel 5). Die Routine soll als Modul realisiert werden, um diese in mehreren Programmen nutzen zu können. 24 Kapitel 5 Erkennung bestehender Verbindungen 5 Erkennung bestehender Verbindungen Um eine Verbindung zwischen zwei Rechnern abbauen zu können ist es notwendig, die bestehenden Verbindungen eines Rechners zu kennen. Zu einer Verbindung gehören Informationen, welche diese eindeutig identifizieren. Dazu gehören z.B.: • aktive Verbindungen • Protokolltyp • Quellrechner • Zielrechner • Sende und Empfängerport • Status (Listening, Established, ...) Eine einfache Möglichkeit diese Informationen zu erhalten wird z.B. mittels des Programms Netstat (MS Windows 9x/NT) erreicht, welches für die Verbindungsanalyse zur Verfügung steht. Die möglichen Eingabeparameter sind in Abbildung 5-1 mit den jeweiligen Funktionen aufgelistet. Abbildung 5-1: Netstat /? Alle aktiven Verbindungen eines Rechners werden mit Netstat -a angezeigt. Abbildung 5-2 zeigt die aktuellen Verbindungen des Rechners thread. 25 Kapitel 5 Erkennung bestehender Verbindungen Abbildung 5-2: Netstat -a Die neunte Zeile von oben zeigt z.B. einen TCP Socket auf dem Rechner thread am NetBEUI-Port 137 der den Status Listening besitzt. D.h. der Rechner thread erwartet auf dem Port 137 einen Verbindungsaufbau. In der zwölften Zeile ist eine TCP-Verbindung vom Port 1027 des Rechners thread zum Port nbsession des Rechners thing mit dem Status Time Wait. Der Rechner thread wartet auf Daten vom Rechner thing. Eine Schnittstellenstatistik für die Netzwerkkarte wird mittels Netstat -e ausgegeben (vgl. Abbildung 5-3). Abbildung 5-3: Netstat -e 26 Kapitel 5 Erkennung bestehender Verbindungen Die dritte Zeile zeigt die Menge der übertragenen Bytes an. Es wird die Anzahl der Unicast-19 (Zeile 4) und Nicht-Unicast-Pakete (Zeile 5) sowie die der verworfenen (Zeile 6) und fehlerhaften Pakete (Zeile 7) angezeigt. Bei der Ausgabe wird zwischen gesendeten und empfangenen Paketen unterschieden. Unten wird die Menge der unbekannten Protokolle angegeben. Die Routing-Tabelle sowie alle aktiven Verbindungen wird mit Netstat -r ausgegeben. Eine Routing-Tabelle beschreibt den Weg, mit der Pakete im Netzwerk verschickt werden. Abbildung 5-4: Netstat –r Abbildung 5-4 zeigt in der dritten Zeile alle Pakete, die in die Netzwerkmaske 0.0.0.0 mit der Subnetzmaske 0.0.0.0 übereinstimmen, an das Gateway20 mit der Adresse 134.147.40.7 weitergeleitet werden. Alle Pakete, die an einen Rechner in dem lokalen Netz 134.147.40.0 mit der Subnetzmaske 255.255.255.128 adressiert sind werden nicht über das Gateway 134.147.40.7 geschickt, sondern lokal versendet (Zeile 6). Pakete, die nur für den Rechner mit der IP-Adresse 134.147.40.88 bestimmt sind, werden auf das Loopback Device21 geschickt (Zeile 7). Dieser Rechner (134.147.40.88) ist der lokale Rechner selbst. Der zweite Teil zeigt die aktiven Verbindungen. Die Darstellung ist analog zum Ergebniss vom Netstat –a. 19 Unicast - nur zu einem Empfänger 20 Gateway - Netzknoten, der Pakete in ein anderes Netz transportiert 21 Loopback Device - Internes Netzwerkinterface auf dem eigenen Rechner. Wird genutzt, um den eigenen Rechner über das Netz anzusprechen. 27 Kapitel 6 Lösungsansatz 6 Lösungsansatz Das Problem eine Netzwerkverbindung zu kennen (vgl. Kapitel 5) kann durch drei Ansätze gelöst werden: mittels Windows Sockets, auf der Netzwerkschnittstelle oder durch Verbindungsübernahme. 6.1 Windows Sockets Der erste Ansatz ist im ISO/OSI-Modell auf der Ebene 7 (Anwendungsebene) einzuordnen und soll die Windows Socket Routinen nutzen. Die Microsoft Sockets basieren auf der Spezifikation der Sockets der Berkeley Software Distribution (BSD) der University of California in Berkeley. Die Implementation umfaßt die Socket-Routinen von der BSD und ist um spezielle Windows-Routinen erweitert. Viele Netzwerk-Software Hersteller unterstützen die Windows Sockets. Im Prinzip kann jedes Netzwerk-Protokoll mit den Windows Sockets kompatibel sein. Dafür bedarf es einer speziellen DLL22-Version. Für den Zugriff auf die Internet Protokolle TCP, UDP und IP stellt Microsoft unter den 16-Bit-Betriebssystemen die Programmierschnittstelle winsock.dll und unter den 32-Bit-Betriebssystemen wsock32.dll zur Verfügung. Eine allgemeine Schnittstelle zur Internetprogrammierung ist die Microsoft Foundation Classes (MFC). Sie kann grundsätzlich in vier Gruppen eingeteilt werden: • Low Level Protokolle (TCP/UDP/IP) • Anwendungsprotokolle • Dateidienste • Ausnahmebehandlungen Die MFC lassen sich unterteilen in: Low Level Win Socket-Klassen (vgl. Abbildung 6-1) und den Klassen auf der Anwendungsprotokoll-Schicht (vgl. Abbildung 6-2). CAsyncSocket CSocket CAsyncSocket CSocket WinSocket WinSocket TCP-/UDP-/IPDatenpakete Internet TCP-/UDP-/IPDatenpakete Abbildung 6-1: Schichten der Low Level Win Socket Klassen 22 DLL - Dynamic Link Libery 28 Kapitel 6 Lösungsansatz Die einzelnen Klassen setzen auf den Netzwerkschichten auf. Dabei stellt TCP-/UDP-/IP-Datenpakete die TCP/UDP/IP-Implementierung von Windows dar. Auf die Low Level-Ebene greifen die Klassen CSocket und CAsyncSocket zu. Beide Klassen unterstützen die Protokolle TCP und UDP. CFtpConnection CHttpConnection CGopher Connection CFtpConnection CHttpConnection CGopher Connection WinInet WinInet WinSocket WinSocket TCP-/UDP-/IPDatenpakete Internet TCP-/UDP-/IPDatenpakete Abbildung 6-2: Schichten der Anwendungsprotokoll-Klassen Die Anwendungsprotokoll-Klassen besitzen eine höhere Abstraktion in der Programmierung. Es wird nicht direkt auf TCP- oder UDP-Ebene zugegriffen, sondern mit den Anwendungsprotokoll-Klassen direkt auf die Anwendungsschicht im ISO/OSI-Modell zugegriffen. Zu den Anwendungsprotokoll-Klassen gehören die Klasse CFtpConnection zur Datenübertragung, die Klasse CHttpConnection zur Übertragung von HTML-Dokumenten und die Klasse CGopherConnection für GopherÜbertragungen. 6.2 Network Driver Interface Der zweite Ansatz setzt auf die unteren Schichten des ISO/OSI-Modells auf. Es ist zu untersuchen ob eine Verbindung zwischen zwei Rechnern auf den untersten Ebenen beendet werden kann. Für die Realisierung ist die Network Interface Card-Ebene des Betriebssystems MS Windows NT zu betrachten. Dies entspricht in dem ISO/OSIModell der Physikalischen Schicht (Schicht 1) und einem Teil Sicherungschicht (Schicht 2). In Abbildung 6-3 ist die Einordnung der MS Windows NT Netzwerkebenen in das ISO/OSI-Modell abgebildet. 29 Kapitel 6 Lösungsansatz IOS/OSI-Modell Microsoft Modell Anwendungen Anwendungsschicht Darstellungsschicht Standart: Erweiterte Anwendunge: Systemmeldungen: FTP NFS Fehlerbehandlung Telnet Drucker Server SMTP Sitzungsschicht Transportschicht Netzwerkschicht Transport Driver Interface Ebene TDI Ebene Sicherungsschicht Logical Link Control Sicherungsschicht Media Access Control Physikalische Schicht Network Interface Card Ebene NIC Ebene Abbildung 6-3: Eingliederung der Windows NT Netzwerkebenen ins ISO/OSIModell 6.3 Verbindungsübernahme Die Idee des dritten Ansatzes besteht darin, eine TCP-Verbindung, die zwischen zwei Kommunikationspartnern besteht, zu übernehmen und die Verbindung zu beenden. Analog zum Juggernaut-Angriff (vgl. Kapitel 2.5) wird von einem dazwischen liegenden Prozeß die Verbindung übernommen. Der Unterschied hier liegt in der Initiierung der Übernahme, da die Übernahme vom eigenen System erfolgen soll (vgl. Abbildung 6-4). Dem zweiten Verbindungspartner der bestehenden Verbindung (Rechner B) wird vorgetäuscht, der richtige Kommunikationspartner dieser Verbindung zu sein. Dies geschieht indem durch den Prozeß zur Verbindungsübernahme auf dem Rechner B Pakete mit einer höheren Sequenznummer an den gleichen Sende- und Empfangsport geschickt werden. Dadurch kann die Verbindung übernommen werden. 30 Kapitel 6 Lösungsansatz Rechner A Rechner B Prozeß zum Übernehmem der Verbindung Prozeß 1 an Rechner B, Port 23, Sequneznr. 45 Port 1024 Sequneznr.44 Verbindung Port 23 Sequneznr.44 Prozeß 2 Abbildung 6-4: Verbindung durch einen anderen Prozeß übernehmen Mit senden des Abort-Signals von Rechner A aus wird die Verbindung mit Rechner B korrekt abgebaut (Abbildung 6-5). Abort Signal zu Recher 2 senden Prozeß zum beenden der Verbindung Prozeß 1 Ver- bindung Prozeß 2 Beenden der Verbindung Abbildung 6-5: Beenden einer Verbindung durch einen anderen Prozeß Dieser Ansatz läßt sich nicht mit den MFC-Klassen programmieren, da diese nur die exklusive Verwendung eines Ports für eine Anwendung erlauben. Weiterhin ist mit dem MFC-Klassen nicht möglich, die aktuelle Sequenznummer eines Paketes festzustellen. Es ist deshalb notwendig, für die Programmierung auf tieferen Netzwerkschichten zuzugreifen. 31 Kapitel 7 Realisierung 7 Realisierung 7.1 Windows Sockets Es sind drei Programme entwickelt worden: ClosePort, ServiceScanner und ServiceServer. Diese Programme werden folgend weiter erläutert. 7.1.1 ClosePort Das Ziel des Programms ist es alle Ports zu blockieren, um eine Verbindung für eine Kommunikation direkt abblocken zu können. Das Programm ClosePort (Abbildung 7-1) belegt sukzessiv alle Ports von 1 bis 10000 mit einem Windows Socket. Abbildung 7-1: ClosePort Es wird eine Schleife durchlaufen, welche nacheinander zunächst eine Socket erstellt und anschließend auf dem Socket hört (vgl. Abbildung 7-2). Schleife von 1 bis 10000 Erzeuge Socket Höre auf Socket Abbildung 7-2 Struktogramm ClosePort Wenn ein Port bereits von einem anderen Programm belegt ist, kann dieser Port nicht erneut belegt werden. Mit den MFC-Klassen ist es nicht möglich einen Socket aus einem anderen Programm heraus zu schließen. So bleibt das andere Programm auf dem Port aktiv. Wenn z.B. ein Http-Server auf dem Port 80 aktiv ist und ClosePort gestartet wird, bleibt der Server weiterhin aktiv, da der Port nicht mehrfach belegt 32 Kapitel 7 Realisierung werden kann. Wird hingegen ClosePort vor dem Http-Server gestartet, kann der Server den Port nicht belegen. Durch ClosePort werden alle freien Sockets bis Port Nummer 10000 belegt. Die Grenze Port Nummer 10000 ist frei gewählt. Ein Problem besteht darin, daß ClosePort für jeden Port einen eigenen Socket öffnet. Unter Microsoft Windows 95 kann es zu einer graduellen Vermehrung des durch das Betriebssystem beanspruchten Speicherplatzes kommen. Dies ist durch einen Fehler in dem Microsoft Windows 95 Kernel (Kernel32.dll) bedingt, der die Freigabe kleiner Datenstrukturen verhindert, welche durch das Öffnen und Schließen von Windows Sockets resultieren. Die Folge ist eine enorme Verringerung des Betriebssystemspeichers. Eine aktualisierte Version der Datei Kernel32.dll wird zur Lösung des Problem von Microsoft zur Verfügung gestellt. Microsoft Windows NT hat dieses Problem nicht. Ferner ist es jedoch, bedingt durch das Betriebssystem, nur möglich eine bestimmte Anzahl von Sockets gleichzeitig zu öffnen. Deshalb kann das Programm ClosePort nicht alle Ports eines Rechners blockieren. 7.1.2 ServiceScannner Der ServiceScanner (vgl. Abbildung 7-3) ist ein Programm zum systematischen Überprüfen eines Rechners nach belegten Ports. Das Programm arbeitet ebenso wie ClosePort (vgl. Kapitel 7.1.1) mit den MFC-Funktionen. Abbildung 7-3: ServiceScanner 33 Kapitel 7 Realisierung In das Feld Zielrechner wird die IP-Adresse oder der Netzwerk-Name des Zielrechners eingegeben. Durch betätigen des Start-Knopfes wird der Prüfvorgang eingeleitet. Wenn Eingabe Zielrechner und Taste Start gedrückt ja nein Schleife von 1 bis 10000 Verbindung zum Zielrechner aufbauen % Wenn Port auf Zielrechner antwortet nein % ja Portnummer ausgeben Abbildung 7-4: Struktogramm ServiceScanner Das Programm arbeitet dabei eine Schleife von 1 bis 10000 ab und versucht, zu jedem Port des Zielrechners eine Verbindung aufzubauen (vgl. Abbildung 7-4). Kann eine Verbindung aufgebaut werden, so wird die Portnummer, der Servicename und das verwendete Protokoll im Feld Konnektierbare Ports angezeigt. Das Programm eignet sich dazu, die Funktionsweise von ClosePort bzw. die belegten Ports eines Rechners zu überprüfen . 7.1.3 ServiceServer Ziel des Programms ServiceServer ist es gezielt einen Port belegen zu können, um ihn so für andere Anwendungen zu sperren bzw. einen Verbindungsaufbau zu diesem Port zu erkennen. Abbildung 7-5: ServiceServer Durch betätigen der Start-Taste wird ein Windows Socket für die angegebene Portnummer mit dem Status Listen erzeugt. 34 Kapitel 7 Realisierung Wenn Eingabe Portnummer und Taste Start gedrückt nein ja Erzeuge Socket (Portnummer) % Höre auf Socket (Portnummer) Abbildung 7-6 Struktogramm ServiceServer Initiiert ein Kommunikationspartner z.B. eine Telnet-Sitzung über den Port, so wird in dem Statusfeld die IP-Adresse des Kommunikationspartners ausgegeben. Der Status der Verbindung ist dann Established. Besteht bereits eine Verbindung zu einem Rechner und eine zweite Anfrage auf einen Port trifft ein, so wird die erste Verbindung geschlossen und die neue Verbindungsanfrage angenommen. Dieses Programm eignet sich dazu einzelne Ports zu sperren. Ist der ServiceServer auf einem Port aktiv, kann kein anderes Programm auf diesem Port eine Verbindung aufbauen. 7.2 Network Driver Interface Die Network Driver Interface Spezifikation greift direkt auf die Hardwareressourcen der Netzwerkkarte zu. Sie ist das unterste Bindeglied zwischen Netzwerkkarte Protokollimplementierung des Betriebssystems. Die Hardware wird nur von den NDISFunktionen angesprochen, alle anderen Netzwerkprotokollebenen greifen auf die NDIS-Funktionen zu. Die NDIS-Funktionen stellen eine fest spezifizierte Schnittstelle zwischen Netzwerkkarte und den über der NDIS liegenden Schichten dar. Microsoft stellt mit MS Windows 9x und MS Windows NT eine Reihe von NDIS-Bibliotheken zur Verfügung. Mit diesen Bibliotheken ist es möglich, ohne Wissen der Funktionsweise der Netzwerkkarte, auf standardisierte Funktionen zurückzugreifen. So ist eine einfache Programmierung der Netzwerkkarte gewährleistet. Diese standardisierten Funktionen stellen aber keine Möglichkeit zur Verfügung eine Verbindung zwischen zwei Rechnern zu terminieren. Die NDIS-Schnittstelle erlaubt auch den direkten Zugriff auf die Netzwerkkarte, d.h. es besteht die Möglichkeit direkt auf die hardwareabhängigen Funktionen der Netzwerkkarte zurückzugreifen. 35 Kapitel 7 Realisierung 7.3 Verbindungsübernahme Die Übernahme einer Verbindung ist bereits als Basement Research Kill (BRkill) bekannt. Durch ein Fehler in der TCP/IP-Implementierung von MS Windows 95 und MS Windows NT wird es einem Dritten erlaubt eine bestehende Verbindung auf diesen Rechnern zu beenden. Dafür wird nur die IP-Adresse und der TCP Port der Verbindung des Windows Rechners benötigt. Mit diesen Informationen ist es möglich, ein Connection Reset an den Windows Rechner zu senden. Beim BRkill wird ein Push Acknowledge (vgl. Kapitel 3.3.2) benutzt, um ein Connection Reset zu generieren. Das zurückgesendete Acknowledge-Feld enthält die letzte Acknowledge-Nummer der bestehenden TCP-Verbindung. Mit diesem Wissen ist es möglich, dem Windows Rechner ein Reset-Bit mit der letzten Acknowledge-Nummer als Sequenz-Nummer zu schicken. Das Acknowledge-Feld wird dabei auf „0“ gesetzt. Die bestehende Verbindung wir dann abgebaut. Das Senden des Reset-Bits muß in einer relativ kurzen Zeitspanne geschehen. Es darf kein weiteres neues Paket mit einer höheren Acknowledge-Nummer vom Windows Rechner gesendet werden. Andernfalls würde die Sequenz-Nummer des Paketes mit dem Reset-Bit nicht mehr akzeptiert, weil sie zu niedrig wäre, und das Paket würde verworfen. Die Realisierung von BRkill enthält die Möglichkeit eine Reihe von höheren Sequenz-Nummern (Acknowledge-Bit + n) zu senden, um das Problem zu umgehen. Wenn auf dem Zielrechner viele bestehende TCP-Verbindungen existieren, ist es schwer eine bestehende Verbindung zu beenden, da eine Reihe von AcknowledgeNummern existieren und nicht bekannt ist welche benötigt wird, um die Verbindung zu beenden. Mit steigender Anzahl von bestehenden Verbindungen wird es somit schwieriger eine bestimmte Verbindung auf diese Art zu beenden. Es ist nicht empfehlenswert diese Realisierung zur Verbindungsunterbrechung in der Praxis einzusetzen. Der entscheidende Nachteil besteht darin, daß sie auf einem Fehler in der TCP-Protokoll-Implementierung des Microsoft Betriebssystems aufbaut. Dieser Fehler ist in den Betriebssystemen MS Windows 95 und MS Windows NT 4.0 noch vorhanden, wird aber durch entsprechende Service Packs beseitigt. Desweiteren wird beim Beenden einer Verbindung mit BRkill auf dem Windows Zielrechner die Fehlermeldung „The connections has been reset by the remote host“ ausgegeben. Dies stellt in dem Fall des Beendens der Verbindung durch einen Dritten nicht den Sachverhalt dar. 36 Kapitel 8 Zusammenfassung 8 Zusammenfassung Bei der Nutzung der MFC-Klassen scheiterte die Lösung an einem Fehler von Windows, der den Betriebssystemspeicher zum Überlauf bringt, und an der Möglichkeit nicht beliebig viele Sockets öffnen zu können. Zusätzlich stellen die MFC-Klassen keine Möglichkeit zur Verfügung, eine Netzwerkverbindung zwischen zwei Prozessen durch einen dritten zu beenden. Mit NDIS-Schnittstelle besteht die beste Chance die Beendung einer Verbindung zwischen zwei Rechnern zu realisieren, da diese die unterste Schnittstelle in der Netzwerkprotokollimplementierung der Microsoft Betriebssysteme darstellt. Keine andere Programmierung der Netzwerkschittstelle ist grundlegender als die Programierung der NDIS-Schnittstelle. Nur bei dieser Lösung scheint es möglich eine Verbindung zwischen zwei Rechnern von außen her zu beenden. Die Möglichkeit der Verbindungsübernahme zeigt keine Lösung der Problematik. Diese Realisierung baut auf einem Fehler in der TCP-Protokoll-Implementierung des Microsoft Betriebssystemen auf. Das es grundsätzlich möglich ist eine Verbindung zwischen zwei Rechnern zu beenden, zeigt das im Anhang-A beschriebene Programm AtGuard. Hier ist eine Routine zur Beendung einer Kommunikation zwischen zwei Rechnern implementiert worden. Keine der vorgestellten Ansätze stellt somit ein zufriedenstellendes Ergebnis zur Lösung dar. 37 Kapitel 9 Ausblick 9 Ausblick Es sind Möglichkeiten zur Unterbrechung einer Kommunikation zwischen zwei Rechner untersucht worden. Dabei stellte sich kein zufriedenstellendes Ergebnis ein. Eine Möglichkeiten zur Lösung des Problems stellt die direkte Analyse des Netzwerkstroms dar. Problematisch ist hierbei die nicht ausführliche Dokumentation der Netzwerkschnittstelle von Microsoft Windows NT. Eine weitere Möglichkeit ist der Zugriff auf hardwareabhänige Funktionen der Netzwerkkarte. Problem hierbei in die proprietäre Architektur der erweiterten Netzwerkartenfunktionen. Durch eine zu entwickelnde Routinen ist es dann möglich, Verbindungen zwischen zwei Rechnern auf unterer Ebene im ISO/OSI-Modell zu beenden. Diese Routine kann im weiteren Programmen zur Netzwerksicherheit eingebunden werden. Eine fortgeschrittene Entwicklung könnte die Programmfunktionen „Netzwerkanalyse“ bzw. „Netzwerküberwachung“ und das Terminieren von Netzwerkverbindungen beinhalten. Die einzelnen Programmfunktionen würden dabei miteinander interagieren. Die Netzwerküberwachung meldet der Routine zum Beenden einer Verbindung die sicherheitskritischen Netzwerkverbindungen. Die Terminierungsroutine trennt daraufhin die kritischen Verbindungen und sendet eine Statusmeldung an die Überwachungsroutine zurück. Die Terminierungsroutine kann unabhängig in weiteren Programmen zur Anwendung kommen. Denkbar sind z.B. Sicherheitstools die nur gewissen Nutzern Zugriff auf bestimmte Daten erlauben oder Programme die bestimmte Netzwerkverbindungen, z.B. solche mit rechtlich kritischem Inhalt, filtern. 38 Kapitel 10 Literatur 10 Literatur [BAL98] Balzert, Helmut Lehrbuch der Softwaretechnik, Software-Entwicklung Spektrum Akademischer Verlag, Heidelberg 1998 ISBN 3-8274-0042-2 [BAU99] Baumann, Heiko Entwicklung eines Softwaretools zur Protokollierung und Analyse des Datenstroms in Netzwerken Diplomarbeit 344, Lehrstuhl für Datenverarbeitung Ruhr-Universität Bochum, Bochum 1999 [BAS99] Basemnet Research Brkill Basement Research, 1999 http://deep.ee.siue.edu/br [BRA95] Bradner, S. / Mankin, A, Request for Comments 1752, The Recommendation for the IP Next Generation Protocol Network Working Group, Havard 1995 [CHA95] Chapman, D. Brent / Zwicky, Elisabeth D. Einrichten von Internet Firewalls O’Reilly, Köln 1995 ISBN 3-930673-31-2 [CHA92] Chapman, D. Brent Networking (In)Security Through IP Packet Filtering The Third USENIX UNIX Security Symposium, Baltimore 1992 [CHP98] Chapman, Davis Visual C++ 6 in 21 Tagen SAMS, Haar 1998 ISBN 3-8272-2035-1 39 Kapitel 10 Literatur [COD99] Codeguru Codeguru Internetseite Codeguru, 1999 http://www.codeguru.com [DEE95] Deering, S / Hinden, R. Request for Comments 1883, Internet Protocol Version 6 Specifikation Network Working Group, 1995 [DDK99] Microsoft Device Driver Kit Onlinehilfe Microsoft Corperation, Redmond 1999 [HEI98] Heim, Mathias TCP/IP, Internetprotokolle im Einsatz International Thomson Publishing, Bonn 1998 ISBN 3-8266-4035-7 [HEI99] Heise Heise Internetseite Verlag Heinz Heise, Hannover 1998 http://www.heise.de [HOR99] Horster, Patrik Systemsicherheit - Sicherheit in komplexen IT-Systemen Folien zur Vorlesung WS 1999/2000 Ruhr-Universittät Bochum, Bochum 1999 [MFC99] MfC Professional MfC Professional Internetseite MfC Professional, 1999 http://www.visionx.com/mfcpro/ [MIC97] Microsoft Coperation Visual C++ Online-Hilfe Microsoft, Redmond 1997 40 Kapitel 10 Literatur [MIC99] Microsoft Coperation Microsoft Coperation Internetseite Microsoft, Redmond 1999 http://www.microsoft.com/ [MIR99] Microsoft Coperation MSDN Internetseite Microsoft, Redmond 1999 http://msdn.microsoft.com/default.asp [NWG87] Network Working Group Request for Comments 1001, Protocol Standard for a NetBIOS Service on a TCP/UDP Transport Network Working Group, 1987 [POS80] Postel, J. Request for Comments 768 User Datagram Protocoll Network Working Group, 1980. [RAY81] del Ray, Marina Request for Comment 791, Internet Protocol Universität Southern California, California 1981 [RAZ81] del Ray, Marina Request for Comment 793, Transmission Control Protocol Universität Southern California, California 1981 [RIE99] Riebl, Rosa Visual C++ 6, Professionelle Windows Programmierung C&L, Vaterstetten 1999 ISBN 3-932311-20-5 [ROT99] Rootshell Rootshell, Sicherheitslücken http://www.rootshell.com [SDK99] Microsoft Software Development Kit Onlinehilfe Microsoft Corp., Redmond 1999 41 Kapitel 10 Literatur [SOL98] Solomon, David A. Inside Windows NT Second Edition Microsoft Press, Redmond 1998 ISBN 1-57231-677-2 [WRQ99] WRQ AtGuard WRQ Inc., Seattle 1999 http://www.atguard.com [ZEN95] Zenk, Andreas Lokale Netze, Kommunikationplattform der 90er Jahre Addison-Wesley, Bonn 1997 ISBN 3-8273-1020-2 42 Anhang-A AtGuard Anhang-A AtGuard AtGuard ist ein Produkt der Firma WRQ mit einer Reihe von sicherheitsrelevanten Routinen. Es enthält Sicherheitseinstellungen für die Nutzung des WWW1 und eine Implementierung einer Firewall2. Das Programm arbeitet im Hintergrund und schaltet sich bei sicherheitsrelevanten Ereignissen automatisch in den Vordergrund. In Abbildung A-1 ist das Optionsmenü für die Konfiguration von AtGuard abgebildetet. Hier lassen sich die Sicherheitseinstellungen für die WWW-Nutzung und die Einstellungen der Firewall vornehmen. Abbildung A-1: ATGuard-Konfigurationsmenü Die Firewall unterstützt die Protokolle TCP, UDP und ICMP. In einem Menü können Filterregeln wie bei bekannten Paketfiltern, z.B. dem Ipfwadm bei Linux, eingestellt werden. Es stehen die Regeln PERMIT, BLOCK und IGNORE für ein und ausgehende Pakete zur Verfügung. Zusätzliche Funktionen sind das Sperren von Anwendungen oder das Festlegen von Filterregeln für bestimmte Zeiträume. Zur Auswertung der sicherheitsrelevanten Ereignisse können diese protokolliert werden, zudem steht ein Ereignismonitor zur Verfügung. 1 WWW – World Wide Web 2 Firewall - [engl.] Brandschutzmauer. Gerät zum Schutz von Netzen nach außen. 43 Anhang-A AtGuard Tritt ein sicherheitsrelevantes Ereignis ein, so öffnet sich ein PopUp-Dialog (vgl. Abbildung A-2). Dieser erlaubt das einmalige Blockieren oder Freigeben der Verbindung. Falls die Verbindung immer freigegeben oder blockiert werden soll, kann dies über die dialoggeführte Einstellung vorgenommen werden. Abbildung A-2: ATGuard Sicherheits PopUp Menü Das Programmpaket bietet eine Statistikfunktion (vgl. Abbildung A-3) an. Diese Statistik zeigt die Menge der in Netz übertragenen Daten und der durch die einzelnen Filterregeln geblockten Verbindungen an. Im Fenster werden unten links die vorhanden Verbindungen angezeigt. Eine bestimmte Verbindung zwischen zwei Rechnern kann beendet werden, indem diese mit der Maus markiert und durch drücken der rechten Maustaste terminiert wird Abbildung A-3: ATGuard-Statistik 44 Anhang-B Portzuordnung Anhang-B Portzuordnung Name tcpmux echo echo discard discard systat daytime daytime netstat qotd chargen chargen ftp-data ftp telnet smtp time time rlp name whois domain domain mtp bootps bootpc tftp gopher rje finger http link kerberos Nummer/Protokoll 1/tcp 7/tcp 7/udp 9/tcp 9/udp 11/tcp 13/tcp 13/udp 15/tcp 17/tcp 19/tcp 19/udp 20/tcp 21/tcp 23/tcp 25/tcp 37/tcp 37/udp 39/udp 42/udp 43/tcp 53/tcp 53/udp 57/tcp 67/udp 68/udp 69/udp 70/tcp 77/tcp 79/tcp 80/tcp 87/tcp 88/udp Aliasname users quote ttytst source ttytst source mail timeserver timeserver resource nameserver nicname ttylink kdc 45 Anhang-B kerberos supdup hostnames iso-tsap x400 x400-snd csnet-ns pop-2 pop-3 pop sunrpc sunrpc sunrpc sunrpc auth sftp uucp-path nntp ntp ntp NetBEUI-ns NetBEUI-ns NetBEUI-dgm NetBEUI-dgm NetBEUI-ssn imap NeWS snmp snmp-trap exec biff login who shell syslog printer talk Portzuordnung 88/tcp 95/tcp 101/tcp 102/tcp 103/tcp 104/tcp 105/tcp 109/tcp 110/tcp 110/tcp 111/tcp 111/tcp 111/udp 111/udp 113/tcp 115/tcp 117/tcp 119/tcp 123/tcp 123/udp 137/tcp 137/udp 138/tcp 138/udp 139/tcp 143/tcp 144/tcp 161/udp 162/udp 512/tcp 512/udp 513/tcp 513/udp 514/tcp 514/udp 515/tcp 517/udp kdc hostname portmapper portmapper ident usenet nbns nbns nbdgm nbdgm nbssn news comsat whod cmd spooler 46 Anhang-B ntalk efs route timed tempo courier conference netnews netwall uucp klogin kshell new-rwho remotefs rmonitor monitor pcServer mount pcnfs bwnfs kerberos-adm kerberos-adm kerberos-sec kerberos-sec kerberos_master kerberos_master krb5_prop cddbp listen nterm kpop ingreslock tnet cfinger nfs eklogin krb524 Portzuordnung 518/udp 520/tcp 520/udp 525/udp 526/tcp 530/tcp 531/tcp 532/tcp 533/udp 540/tcp 543/tcp 544/tcp 550/udp 556/tcp 560/udp 561/udp 600/tcp 635/udp 640/udp 650/udp 749/tcp 749/udp 750/udp 750/tcp 751/udp 751/tcp 888/tcp 1025/tcp 1026/tcp 1109/tcp 1524/tcp 1600/tcp 2003/tcp 2049/udp 2105/tcp 4444/tcp router routed timeserver newdate rpc chat readnews uucpd cmd new-who rfs Server rfs rmonitord listener rfs remote file sharing remote login network terminal 47 Anhang-B irc dos Portzuordnung 6667/tcp 7000/tcp msdos 48