49
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 Kom- munikationkanä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) Lehrstuhl für Datenverarbeitung Prof. Dr.-Ing. Dr. E.h. Wolfgang Weber Bearbeiter: cand.-Ing. Oliver Thomas Bethge Matrikel-Nummer: 108 093 215 210 Betreuer: Dipl.-Ing. Thomas Droste Bearbeitungszeitraum: WS 1999/2000

Lehrstuhl für Datenverarbeitung - ruhr-uni-bochum.de · Die Software ist mit MSVisual C++ unter MS Windows NT zu realisieren. Alle Entwicklungsschritte sind zudem projektbegleitend

  • Upload
    lamnhan

  • View
    213

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Lehrstuhl für Datenverarbeitung - ruhr-uni-bochum.de · Die Software ist mit MSVisual C++ unter MS Windows NT zu realisieren. Alle Entwicklungsschritte sind zudem projektbegleitend

Studienarbeit 282

Methoden zur Unterbindung einer Kommunikation zwischen zweiRechnern

Für die Sicherheit ist der Status des aktuellen Netzwerkverkehrs von Interesse. EineAbsicherung findet durch eine Firewall statt, indem der Datenstrom sofort restriktivgesperrt werden kann. Eine interne Kommunikation innerhalb eines Sub-Netzes kannhingegen durch eine Firewall nicht unterbunden werden.

Das Ziel ist es nun, Methoden zur Unterbindung einer Kommunikation zwischen zweiRechnern zu entwickeln. Hierfür sind zunächst die möglichen Mechanismen zurprinzipiellen Trennung und Blockierung von Verbindungen auf TCP- und UDP-Basis zuuntersuchen.Die Realisierung soll mittels eines geeigneten Mechanismus erfolgen, wobei dieMöglichkeit bestehen soll, die Kommunikation auf bestimmten Ports zu unterbinden. DieSoftware soll ein GUI Interface zur Steuerung und zum Sperren der einzelnen Kom-munikationkanäle erhalten.

Zum Testen der Software sollen geeignete Testprogramme entwickelt und die einzelnenTestdurchläufe entsprechend protokolliert werden.

Die Software ist mit MS Visual C++ unter MS Windows NT zu realisieren. AlleEntwicklungsschritte sind zudem projektbegleitend zu dokumentieren.

(Prof. Dr.-Ing. Wolfgang Weber)

Lehrstuhl fürDatenverarbeitungProf. Dr.-Ing. Dr. E.h. Wolfgang Weber

Bearbeiter: cand.-Ing. Oliver Thomas BethgeMatrikel-Nummer: 108 093 215 210Betreuer: Dipl.-Ing. Thomas DrosteBearbeitungszeitraum: WS 1999/2000

Page 2: Lehrstuhl für Datenverarbeitung - ruhr-uni-bochum.de · Die Software ist mit MSVisual C++ unter MS Windows NT zu realisieren. Alle Entwicklungsschritte sind zudem projektbegleitend

Inhalt

1

Inhalt

1 Einleitung ................................................................................................................32 Mögliche Angriffsmethoden ...................................................................................5

2.1 Datenstrom-Mitschnitt ........................................................................................52.2 Trojanische Pferde ..............................................................................................62.3 Winnuke Angriffe ...............................................................................................62.4 Teardrop Angriffe ...............................................................................................72.5 Juggernaut Angriffe ............................................................................................8

3 Netzwerkprotokolle.................................................................................................93.1 ISO/OSI-Modell ..................................................................................................9

3.1.1 Funktionen der einzelnen Schichten..........................................................103.2 TCP/IP-Modell ..................................................................................................113.3 Transmission Control Protocol .........................................................................12

3.3.1 Funktionsumfang.......................................................................................123.3.2 Header........................................................................................................13

3.4 User Datagram Protocol ....................................................................................163.4.1 Funktionsumfang.......................................................................................163.4.2 Header........................................................................................................18

3.5 Vergleich zwischen TCP- und UDP-Verbindungen .........................................193.6 TCP-Zustandsdiagramm....................................................................................19

3.6.1 Verbindungsaufbau....................................................................................203.6.2 Verbindungsabbau .....................................................................................21

3.7 NetBEUI............................................................................................................223.7.1 Header........................................................................................................23

4 Problemstellung.....................................................................................................245 Erkennung bestehender Verbindungen .................................................................256 Lösungsansatz .......................................................................................................28

6.1 Windows Sockets ..............................................................................................286.2 Network Driver Interface ..................................................................................296.3 Verbindungsübernahme ....................................................................................30

7 Realisierung...........................................................................................................327.1 Windows Sockets ..............................................................................................32

7.1.1 ClosePort ...................................................................................................327.1.2 ServiceScannner ........................................................................................337.1.3 ServiceServer .............................................................................................34

7.2 Network Driver Interface ..................................................................................35

Page 3: Lehrstuhl für Datenverarbeitung - ruhr-uni-bochum.de · Die Software ist mit MSVisual C++ unter MS Windows NT zu realisieren. Alle Entwicklungsschritte sind zudem projektbegleitend

Inhalt

2

7.3 Verbindungsübernahme ....................................................................................368 Zusammenfassung.................................................................................................379 Ausblick ................................................................................................................3810 Literatur.................................................................................................................39Anhang ..........................................................................................................................43

Page 4: Lehrstuhl für Datenverarbeitung - ruhr-uni-bochum.de · Die Software ist mit MSVisual C++ unter MS Windows NT zu realisieren. Alle Entwicklungsschritte sind zudem projektbegleitend

Kapitel 1 Einleitung

3

1 Einleitung

In der Zeit der modernen Informationsgesellschaft gewinnt die Netzwerksicherheitimmer mehr an Bedeutung. Schäden durch mißbräuchliche Nutzung der Informations-ressourcen können finanzielle Schäden und Image-Schäden von enormem Ausmaßenverursachen.Die vom Computer Emergency Response Team Coordination Center (CERT-CC)verzeichneten sicherheitsrelevanten Vorfälle steigen ständig. 1989 waren es weltweitweniger als 200, 1991 etwa 400, 1993 schon 1400 und 1994 sogar 2241 bekannteFä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 nichtabzuschätzender Teil sicherheitsrelevanter Vorfälle wird zudem von den Betroffenenerst gar nicht bemerkt. Zudem existiert keine Statistik, wie viele Vorfälle überhauptentdeckt werden. Firmen bieten ihren Kunden Sicherheitstests ihrer Computernetze an.Dabei wird versucht, mit Erlaubnis der Computernetzbetreiber in die Netze einzu-dringen. Der Test wird dabei mit den gleichen Methoden und Werkzeugen vor-genommen, welche auch Hacker1 benutzten, dabei werden nur 4 Prozent der durch-geführten Eindringversuche überhaupt bemerkt.Zu einem sicheren System gehöhrt folglich nicht nur die Abschottung des Systemsgegen unberechtigte Zugriffe, sondern ebenso Methoden um Eindringversuche fest-zustellen und zu unterbinden.In dieser Arbeit soll die Möglichkeit untersucht werden, eine Verbindung zwischenzwei Rechnern zu beenden (vgl. Abbildung 1-1).

Rechner A Rechner BKommunikation

Rechner A Rechner BKommunikation

Abbildung 1-1: Unterbinden der Kommunikation zwischen zwei Rechnern

1 Hacker - Jemand der sich unberechtigt Zugriff zu Informationen verschafft.

Page 5: Lehrstuhl für Datenverarbeitung - ruhr-uni-bochum.de · Die Software ist mit MSVisual C++ unter MS Windows NT zu realisieren. Alle Entwicklungsschritte sind zudem projektbegleitend

Kapitel 1 Einleitung

4

Dabei soll eine bestehende Verbindung zwischen zwei Rechnern, die von zweiverschiedenen Prozessen aufgebaut worden ist, durch einen dritten Prozeß abgebautwerden. Es handelt sich immer um die Interaktion zwischen zwei Rechnern, d.h. derProzeß zum Beenden der Verbindung wird immer auf einem der beiden Rechnerausgeführt.Der gezielte Abbau einer Kommunikation ist nötig, um Angriffe auf einen Rechnerabwenden zu können. Es ist notwendig verschiedene Vorgehensweisen zu behandeln,die als Ergebnis die Unterbrechung der Verbindung mit sich führen. Der Benutzer desRechners steht dabei außen vor.

Page 6: Lehrstuhl für Datenverarbeitung - ruhr-uni-bochum.de · Die Software ist mit MSVisual C++ unter MS Windows NT zu realisieren. Alle Entwicklungsschritte sind zudem projektbegleitend

Kapitel 2 Mögliche Angriffsmethoden

5

2 Mögliche Angriffsmethoden

In diesem Kapitel werden einige Angriffsmethoden exemplarisch erläutert, diese giltes 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.

Rechner A Rechner BDatenstrom

AngreifenderRechner

Mitl

esen

Abbildung 2-1: Mitlesen des Datenstroms einer Verbindung

Werden Daten unverschlüsselt übertragen, ist es möglich aus dem gewonnenenInformationen weitergehende Angriffsversuche einzuleiten. Bei der Nutzung vonbestimmten Diensten, wie z.B. bei Zugriffen über Telnet2, FTP3 , POP4 und HTTP5,werden Paßwörter im Klartext übertragen. Durch den Mitschnitt des Datenstroms sinddie Paßwörter für diese Dienste direkt im Klartext lesbar. Diese unverschlüsseltenDienste werden als gefährliche Dienste eingestuft, da sie die Datenübertragungunverschlüsselt durchführen. Sichere, verschlüsselte Dienste sind z.B. SSH6 undHTTPs7.

2 Telnet - Terminal Emulation3 FTP - File Transfer Protocol4 POP - Post Office Protokoll5 HTTP - Hyper Text Transport Protocol6 SSH - Secure Shell7 HTTPs - Secure Hyper Text Transport Protocol

Page 7: Lehrstuhl für Datenverarbeitung - ruhr-uni-bochum.de · Die Software ist mit MSVisual C++ unter MS Windows NT zu realisieren. Alle Entwicklungsschritte sind zudem projektbegleitend

Kapitel 2 Mögliche Angriffsmethoden

6

2.2 Trojanische Pferde

Trojanische Pferde8 werden über Wirt-Programme in Systeme eingeschleust. DerBenutzer installiert das Wirt-Programm und gleichzeitig das Trojanische Pferd selbstauf dem Rechner. Die Wirt-Programme könne z.B. per Email verschickt werden oderein Benutzer lädt sie sich selbst aus dem Internet herunter. Das Wirt-Programm täuschtnützliche Anwendungen (Bildschirmschoner, Spiele, usw.) vor, verheimlichen aberihren eigentlichen Sinn (vgl. Abbildung 2-2).

Trojanisches Pferd

Wirt-Programm

Abbildung 2-2: Verkapselung eines Trojanischen Pferdes

Die Trojanischen Pferde sammeln z.B. nach der Installation gezielt Daten auf demRechner. Die gewonnen Informationen gespeichert, bis sich eine geeignete Möglich-keit ergibt, sie zum Angreifer zu übertragen. Eine Übertragung zum Angreifer ge-schieht z.B. als Anhang an eine Email oder über eine neu aufgebaute Netzwerk-Ver-bindung.

2.3 Winnuke Angriffe

Mittels eines „denial of service“-Angriffs wird versucht die Netzwerkschnittstelleeines Rechners mit überhöhtem Netzwerkverkehr zu blockieren. Die unter dem NamenWinnunke bekannt gewordenen Programme können dadurch das Betriebssystem einesRechner zum Absturz bringen. Betroffen sind verschiedene Betriebsysteme, wie z.B.Microsoft Windows 95 und Windows NT. Diese Betriebssysteme besitzen eine fehler-hafte Implementation der Netzwerkschnittstelle, welche von Winnuke Programmenausgenutzt wird.

8 Trojanisches Pferd – analog zur gr. Geschichte um den Kampf um Troja

Page 8: Lehrstuhl für Datenverarbeitung - ruhr-uni-bochum.de · Die Software ist mit MSVisual C++ unter MS Windows NT zu realisieren. Alle Entwicklungsschritte sind zudem projektbegleitend

Kapitel 2 Mögliche Angriffsmethoden

7

Angreifer ZielrechnerOOB Daten

Abbildung 2-3: Winnuke Angriff

Durch Senden von OOB9-Datenpaketen (vgl. Abbildung 2-3) an die Netzwerk-schnittstelle werden unvorhersehbare Ereignisse ausgelöst, wodurch ein Rechner zumAbsturz gebracht werden kann. Ein Angriff auf z.B. ein Microsoft Windows 95 oderWindows 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 Betriebssystemeverschiedener Plattformen zum Absturz bringen. Es handelt sich um einen „denial ofservice“-Angriff. Betroffen sind u.a. die Betriebssysteme der Firma Microsoft und dasBetriebssystem Linux. Die Teardrop Programme nutzen einen Fehler bei der TCP/IP-Protokoll-Implementierung der Betriebssysteme aus. Es werden überlappendeICMP10/IP11 Fragmente (vgl. Abbildung 2-4) an die Netzwerkschnittstelle einesRechners gesendet. Dadurch erreicht die Netzwerkschnittstellenimplementierung derBetriebssysteme einen nicht definierten Zustand und kann das Betriebssystem zumAbsturz bringen.

Angreifer ZeilrechnerüberlappendeICMP/IP Fragmente

Abbildung 2-4: Teardrop Angriff

9 OOB - Out of Band10 ICMP – Internet Control Message Protocol11 IP – Internet Protocol

Page 9: Lehrstuhl für Datenverarbeitung - ruhr-uni-bochum.de · Die Software ist mit MSVisual C++ unter MS Windows NT zu realisieren. Alle Entwicklungsschritte sind zudem projektbegleitend

Kapitel 2 Mögliche Angriffsmethoden

8

2.5 Juggernaut Angriffe

Durch einen Juggernaut12 Angriff wird das Übernehmen einer existierenden Ver-bindung beschrieben. Dafür schaltet sich das Programm Juggernaut in die bestehendeKommunikation zwischen zwei Rechnern ein (vgl. Abbildung 2-3).

Rechner A Rechner BKommunikation

Angriffs-rechner

Übe

rneh

men

Trennen derVerbindung

Abbildung 2-5: Funktionsweise von Juggernaut

Diese Angriffe funktionieren unabhänig von dem auf dem angegriffen Rechnerverwendeten Betriebssystem. Anfällig von dieser Angriffsmethode sind besonders dieTelnet- und FTP-Verbindungen. Eine zwischen den Rechnern A und B bestehendeVerbindung wird z.B. vom Angreifer zum Rechner B abgebaut. Dem Rechner A wirdvorgetäuscht der ursprüngliche Kommunikationspartner, vormals Rechner B, zu sein.Durch das Übernehmen der Verbindung ist es möglich, gezielt Informationen von demRechner A auszuspähen. Wird z.B. eine Telnet Verbindung übernommen, hat derursprüngliche Kommunikationspartner sich bereits am Rechner A mit Namen undPaßwort angemeldet. Der Angreifer hat mit Übernahme der Verbindung so dieSicherheitsmechanismen des Dienstes umgangen und kann ungehindert die ge-wünschten Informationen ausspähen.

12 Juggernaut - Moloch

Page 10: Lehrstuhl für Datenverarbeitung - ruhr-uni-bochum.de · Die Software ist mit MSVisual C++ unter MS Windows NT zu realisieren. Alle Entwicklungsschritte sind zudem projektbegleitend

Kapitel 3 Netzwerkprotokolle

9

3 Netzwerkprotokolle

3.1 ISO/OSI-Modell

Das ISO13/OSI14-Modell ist 1978 entworfen worden, um eine Kommunikationzwischen verschiedenen Systemen und unterschiedlichen Herstellern mit ihren eigenenNetzwerkprotokollen zu definieren. In Abbildung 3-1 ist das ISO/OSI-Modell darge-stellt.

Schicht 7Anwendungsschicht

Schicht 6Darstellungsschicht

Schicht 5Sitzungsschicht

Schicht 4Transportschicht

Schicht 3Netzwerkschicht

Schicht 2Sicherungsschicht

Schicht 1Physikalische Schicht

Abbildung 3-1: Schichten des ISO/OSI-Modells

Es gliedert sich in sieben Schichten, welche jeweils unterschiedliche Funktionen be-sitzen. Die Kommunikation geschieht schichtweise. Jede Schicht überträgt immer nurDaten zur nächst höheren und nächst unteren Schicht.

13 ISO - International Standart Organisation14 OSI - Open Systems Interconnection

Page 11: Lehrstuhl für Datenverarbeitung - ruhr-uni-bochum.de · Die Software ist mit MSVisual C++ unter MS Windows NT zu realisieren. Alle Entwicklungsschritte sind zudem projektbegleitend

Kapitel 3 Netzwerkprotokolle

10

3.1.1 Funktionen der einzelnen Schichten• Schicht 7, Anwendungsschicht (Application Layer):

Diese Schicht ist das Bindeglied zwischen den Netzwerkfunktionen und dereigentlichen Anwendung. Die Anwendung kommuniziert nur mit der Anwen-dungsschicht. Alle anderen Schichten bleiben der Anwendung verborgen.

• Schicht 6, Darstellungsschicht (Presentation Layer):In der Darstellungsschicht werden die Darstellungsformate der übertragenenNachrichten betrachtet. Sie übersetzt verschiedene Codes und Formate so, daß einegemeinsam bekannte Darstellungsart zwischen den Systemen zur Verfügung steht.

• Schicht 5, Sitzungsschicht (Session Layer):Die Sitzungsschicht ist die unterste Schicht des Anwendungssystems15. IhreAufgabe ist das Aufrechterhalten der Verbindungen. In dieser Schicht könnenlogische Benutzer gleichzeitig über mehrere Verbindungen kommunizieren. Brichteine Verbindung zusammen, so baut diese Schicht sie wieder auf.

• Schicht 4, Transportschicht (Transport Layer):Diese Schicht ist die oberste Schicht des Transportsystems16. Die Transportschichtstellt den höheren Schichten ein Kommunikationssystem zur Verfügung. Diehöheren Schichten sehen nur die Transportschicht. Diese baut logische Ver-bindungen zwischen Rechnern auf. Diese werden durch Transportadressen gekenn-zeichnet.

• Schicht 3, Netzwerkschicht (Network Layer):Die Aufgabe dieser Schicht ist der Austausch von Paketen von nicht direktmiteinander verbundenen Rechner-Stationen. Hier wird das Routing, d.h. die Weg-wahl, bestimmt und es werden die Sicherungsschicht-Verbindungen gemultiplext.Die Pakete die zu Sicherungsschicht gegeben werden, werden auf eine einheitlicheLänge geschnitten (Sequenzbildung). Es wird eine Flußkontrolle und Fehlerbe-handlung durchgeführt.

• Schicht 2, Sicherungsschicht (Data Link Layer):In dieser Schicht werden Verbindungen aufgebaut und beendet. Informationenwerden in Datenpakete zerteilt. Die Schicht führt mittels Prüfsummen eine Er-kennung von Übertragungsfehlern durch und steuert die Reihenfolge der Daten-pakete.

15 Anwendungssystem - Das Anwendungssystem beinhaltet die Schichten 5-7 im ISO/OSI Modell16 Transportsystem - Das Transportsystem beinhaltet die Schichten 1-4 im ISO/OSI Modell

Page 12: Lehrstuhl für Datenverarbeitung - ruhr-uni-bochum.de · Die Software ist mit MSVisual C++ unter MS Windows NT zu realisieren. Alle Entwicklungsschritte sind zudem projektbegleitend

Kapitel 3 Netzwerkprotokolle

11

• Schicht 1, Physikalische Übertragungsschicht (Physical Layer):Die Übertragungsschicht ermöglicht die physikalische Kommunikation. Die Daten-pakete werden auf die Leitung (z.B. Kupfer, Glasfaser, Luftschnittstelle) umge-setzt. 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), dasInternet Protokoll deckt dabei die Schicht 3 und das Transmission Control Protocol dieSchicht 4 im ISO/OSI-Modell ab.

ISO/OSI-Modell TCP/IP-Modell

Anwendungen

Anwendungsschicht

Darstellungsschicht

Netzwerkschicht

Transportschicht

Sitzungsschicht

Sicherungsschicht

Physikalische Schicht

Standart:

FTP

Telnet

SMTP

System-meldungen:

Fehler-behandlung

ErweiterteAnwendunge:

NFS

Drucker Server

Trnsmission Control Protocol (TCP)User Datagram Delivery Protocol (UDP)

Internet Protocol (IP)Addres Resolution Protocol (ARP)

Internet Control Message Protocol (ICMP)

Übertragungsmedium

Abbildung 3-2: Einordung des TCP/IP-Modells in das ISO/OSI-Modell

17 TCP - Transmission Control Protocol

Page 13: Lehrstuhl für Datenverarbeitung - ruhr-uni-bochum.de · Die Software ist mit MSVisual C++ unter MS Windows NT zu realisieren. Alle Entwicklungsschritte sind zudem projektbegleitend

Kapitel 3 Netzwerkprotokolle

12

3.3 Transmission Control Protocol

Das Transmission Control Protocol (TCP) ist ein verbindungsorientiertes Punkt-zu-Punkt-Protokoll. Es garantiert eine folgerichtige und zuverlässige Übertragung. DieSender- und Empfängeradressen werden weltweit nur einmal vergeben und mittels vierdurch Punkte getrennte Zahlentupel angegeben. Jede dieser Zahlentupel kann einenmaximalen dezimalen Wert von 255 annehmen.Eine eindeutige Netzwerkadresse setzt sich aus der Sender- oder Empfängeradresseund einer Portnummer (vgl. Anhang-B) zusammen. Es wird zwischen reservierten undnicht reservierten Ports unterschieden. Reservierte Ports liegen unterhalb von 1024,alle darüber liegenden werden als die nicht reservierten Ports bezeichnet. Eine Verbin-dung zwischen zwei Rechnern wird von einem nicht reservierten Port zu einemreservierten 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 25für eine FTP-Verbindung. Da Übertragung paketweise erfolgt, muß der Protokollstackdes Empfängers die erhaltenen Pakete der Reihe nach sortieren, um die Information zuerhalten. Pakete die den Empfänger nicht erreichen müssen erneut gesendet werden.

3.3.1 FunktionsumfangDas Transmission Control Protocol besitzt mehrere Funktionen:• End-to-End-Kontrolle:

Um eine korrekte Datenübertragung zu gewährleisten, existiert beim TCP ein Quit-tierungsmechanismus. Dabei wird jedes beim Empfänger ankommende Paket be-stätigt. Erreicht ein Paket den Empfänger nicht, so wird es erneut vom Sender ge-schickt.

• Verbindungsmanagement:Das Verbindungsmanagement des TCP besteht aus drei Teilen: dem gesichertenAufbau, dem Aufrechterhalten während der gesamten Kommunikation zwischenSender und Empfänger sowie dem gesicherten Abbau der Verbindung.

• Flußkontrolle:Die Flußkontrolle besteht aus der fortlaufenden Numerierung der Datenpakete, derBestätigung der empfangenen Daten durch dem Empfänger und einem Fenster-mechanismus. Mit der Flußkontrolle wird ein Datenverlust und der Überlauf vonDatenpuffern 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.

Page 14: Lehrstuhl für Datenverarbeitung - ruhr-uni-bochum.de · Die Software ist mit MSVisual C++ unter MS Windows NT zu realisieren. Alle Entwicklungsschritte sind zudem projektbegleitend

Kapitel 3 Netzwerkprotokolle

13

• Zeitüberwachung von Verbindungen:Es findet beim TCP eine Zeitüberwachung statt. Werden Datenpakete innerhalbeines zeitlich definierten Zeitraums nicht quittiert, so werden diese vom Sendererneut gesendet.

• Spezialfunktionen:Beim TCP existieren zwei spezielle Funktionen Urgent Data und der Push-Mechanismus. Mit diesen Funktionen können Vorrang-Daten gekennzeichnetwerden, die bevorzugt übertragen werden.

• Fehlerbehandlung:Das TCP führt eine Fehlerkontrolle durch. Entsteht ein Fehler, so wird dies dernächst niedrigeren Schicht mitgeteilt, und das verlorengegangene Paket wird erneutangefordert.

3.3.2 HeaderIn Abbildung 3-3 ist der TCP Header dargestellt.

1 4 8 12 16 20 24 28 32Sendeport Empfängerport

SequenznummerQuittungsnummer

Abstand Reserviert Kontrollbits FenstergrößePrüfsumme 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 Prozessesan. Durch den Sendeport wird angegeben, von welchem Dienst eines höherenProtokolls Daten übermittelt worden sind. Der Sendeport und die IP-Adressebilden zusammen einen Socket. Wird eine Verbindung über einen Socket auf-gebaut, so kommunizieren die Kommunikationspartner beide während der gesam-ten Zeit über die gleichen Ports. Diese Ports bleiben aber nur für die Dauer einerVerbindung 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ängerssowie dem Sendeport und Empfängerport gebildet.

Page 15: Lehrstuhl für Datenverarbeitung - ruhr-uni-bochum.de · Die Software ist mit MSVisual C++ unter MS Windows NT zu realisieren. Alle Entwicklungsschritte sind zudem projektbegleitend

Kapitel 3 Netzwerkprotokolle

14

• Sequenznummer:Das Feld besteht aus 32 Bit. Jedem einzelnen Datenpaket bei einer TCP-Verbindung wird eine Sequenznummer zugeordnet. Im Laufe der Kommunikationwird die Sequenznummer mit jedem Datenpaket um eins erhöht.

• Quittungsnummer:Die Quittungsnummer (Acknowledge-Nummer) hat eine Länge von 32 Bit und istein Mechanismus zur Flußkontrolle. Jedes Paket wird bei der Übertragung fort-laufend numeriert (Sequenznummer). Es wird eine Quittungsnummer erzeugt, dieden Empfang des Paketes bestätigt und so gleichzeitig anzeigt, welches Paket alsnächstes erwartet wird.

• Abstand:Der Abstand hat einen Umfang von 4 Bit und gibt die Anzahl der 32-Bit-Daten-worte im TCP Header an. Das Abstandsfeld ist wegen der veränderlichen Größedes 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 2 3 4 5 6URG ACK PSH RST SYN 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 Urgent-Zeiger-Feld im TCP Header beachtet werden muß. Dieses dient zur Markierungvon Vorrangdaten.

• Acknowledge-Bit (ACK):Ist das Acknowledge-Bit auf „1“ gesetzt, so zeigt es an, daß das Acknoledge-Feld im TCP Header zu beachten ist. Das Acknowledge-Feld bestätigtempfangene Daten.

• Push-Bit (PSH):Das Push-Bit zeigt, auf „1“ gesetzt, an, daß die empfangenen Daten direkt andie nächsthöhere Schicht weitergeleitet werden sollen. Diese Funktion ist auchals Push-Mechanismus bekannt.

Page 16: Lehrstuhl für Datenverarbeitung - ruhr-uni-bochum.de · Die Software ist mit MSVisual C++ unter MS Windows NT zu realisieren. Alle Entwicklungsschritte sind zudem projektbegleitend

Kapitel 3 Netzwerkprotokolle

15

• Reset-Bit (RST):Das Reset-Bit zeigt, auf „1“ gesetzt, an, daß der eine Verbindungspartner dieVerbindung beenden will.

• Synchronisation-Bit (SYN):Mit dem auf „1“ gesetzten Synchronisations-Bit teilt der Sender demEmpfä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 undder 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 demSender und dem Empfänger. Der Fenstermechanismus teilt dem Sender mit, wiegroß der verbleibende Puffer beim Empfänger ist. So wird verhindert, daß Paketeunbestä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 Headerund einem 96 Bit Pseudo-Header gebildet. Sie besteht aus dem 16-Bit-Einer-komplement der Einerkomplementsumme aller 16-Bit-Wörter im Header und inden 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 demUrgent-Zeiger(URG)-Bit und dem Urgent-Zeiger versehen und stehen immer amAnfang eines TCP-Paketes. Der Urgent-Zeiger zeigt die Position des letztendringenden Pakets an. Wird zu der Sequenznummer der Urgent-Zieger addiert, er-gibt sich die Nummer des letzten dringenden Pakets.

• Optionen:Das Feld hat eine veränderliche Länge. In dem Optionen Feld ist es möglichService-Optionen zu definieren. Die TCP Optionen setzen sich aus einem OktettOptionsart 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 dasEnde aller zu übertragenden Optionen an und hat eine Länge von 8 Bit.

Page 17: Lehrstuhl für Datenverarbeitung - ruhr-uni-bochum.de · Die Software ist mit MSVisual C++ unter MS Windows NT zu realisieren. Alle Entwicklungsschritte sind zudem projektbegleitend

Kapitel 3 Netzwerkprotokolle

16

• No Option List:Für diese Option wurde die Optionsart „1“ festgelegt. Sie dient zur Trennungzwischen 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ängezwischen den Kommunikationspartnern festgelegt. Die Option wird bei einemVerbindungsaufbau 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 Viel-faches von 32 Bit beträgt. Ist der Header zu kurz so werden in diesem Feld Füll-zeichen 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 verbindungslosesProtokoll. Es ist in RFC18 768 definiert. Das UDP hat im Gegensatz zum TCP einenkleineren Daten-Overhead für die Adressierung. Es ist deshalb schneller und wird oftzur Übermittlung großer Datenmengen eingesetzt.

3.4.1 FunktionsumfangDas UDP übernimmt mehrere Funktionen:• Transportdienst:

Der wesentliche Unterschied zwischen dem TCP und dem UDP liegt in derVerbindungsüberwachung. Im Gegensatz zum TCP überprüft das UDP nicht diekorrekte Übergabe der Daten an den Empfänger, d.h. die gesendeten Pakete werdenvom Empfänger nicht quittiert. Erreichen bei der Übertragung Pakete denEmpfänger nicht, werden diese nicht wie beim TCP noch einmal geschickt. BeimUDP muß die über dem UDP liegende Applikationsschicht die Aufgabe derTransportkontrolle übernehmen.

• Verbindungs-Management:Das UDP baut keine aktive Verbindung zwischen Sender und Empfänger auf. Eswerden, wie bei dem darunterliegenden IP-Protokoll, die einzelnen Pakete völligunabhängig voneinander versendet. Die Applikationsschicht steuert hierbei dieDaten zwischen Sender und Empfänger.

18 RFC - Request for Comment

Page 18: Lehrstuhl für Datenverarbeitung - ruhr-uni-bochum.de · Die Software ist mit MSVisual C++ unter MS Windows NT zu realisieren. Alle Entwicklungsschritte sind zudem projektbegleitend

Kapitel 3 Netzwerkprotokolle

17

• Flußkontrolle:Es existiert beim UDP keine Flußkontrolle. Es gibt keine Sequenz- undAcknowledge-Nummern wie beim TCP. Die höheren Schichten übernehmen dieFlußkontrolle.

• Multiplexen von Verbindungen:Damit mehrere Verbindungen gleichzeitig über das UDP aufgebaut werdenkönnen, d.h. damit mehrere Anwendungen gleichzeitig auf das UDP zugreifenkönnen, werden den einzelnen Anwendungen Ports zugeordnet. Eine Verbindungist immer durch die IP-Adresse des Empfängers und die Portnummer beim Emp-fä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 dieZeitüberwachung abdecken.

• Spezialfunktionen:Die vom TCP her bekannten speziellen Funktionen wie z.B. Urgent Data werdenvom 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 eineminimale Fehlerkontrolle durchgeführt. Entstehen Fehler, so kann das UDP diesean die höhere Schicht mitteilen. Ist keine Fehlerkontrolle implementiert, so ist esAufgabe der höheren Schicht, diese zu übernehmen.

Page 19: Lehrstuhl für Datenverarbeitung - ruhr-uni-bochum.de · Die Software ist mit MSVisual C++ unter MS Windows NT zu realisieren. Alle Entwicklungsschritte sind zudem projektbegleitend

Kapitel 3 Netzwerkprotokolle

18

3.4.2 HeaderDer UDP Header besteht aus dem Sendeport, dem Empfängerport, der Paketlänge undder Prüfsumme (vgl. Abbildung 3-5).

1 4 8 12 16 20 24 28 32Sendeport EmpfängerportPaketlänge Prüfsumme

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. Setztein 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 Portdes 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-Paketsinklusive Headers an. Ein UDP-Paket hat immer eine minimale Länge von 8Oktetten, dies entspricht genau der Länge des Headers.

• Prüfsumme:Die Prüfsumme ist ein optionales Feld von 16 Bit Umfang. Nicht jedeImplementation des UDP berücksichtigt diese Feld. Wird keine Prüfsummeberechnet, so wird das Feld automatisch auf „0“ gesetzt. Die Prüfsumme wird ausdem UDP-Header und einem 96 Bit Pseudo-Header gebildet. Sie setzt sich aus dem16 Bit Einerkomplement der Einerkomplementsumme aller 16 Bit Wörter imHeader 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)

Page 20: Lehrstuhl für Datenverarbeitung - ruhr-uni-bochum.de · Die Software ist mit MSVisual C++ unter MS Windows NT zu realisieren. Alle Entwicklungsschritte sind zudem projektbegleitend

Kapitel 3 Netzwerkprotokolle

19

3.5 Vergleich zwischen TCP- und UDP-Verbindungen

Die Tabelle 3-1 zeigt die wesentlichen Unterschiede zwischen dem TCP und demUDP. Es wird deutlich, daß das UDP besser zur schnellen Übertragung von großenDatenmengen geeignet ist, wogegen des TCP eine gesicherte Übertragung gewähr-leisten kann.

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.

PassiveOpen

Closed

ActiveOpen Closing

Established

Passive Open Aktive Open

Send

Passive Open

Open Fehler

Segment-austausch

Abbildung 3-6: Vereinfachtes TCP Zustandsdiagramm

Funktion TCP UDPEnde-zu-Ende-Kontrolle ja neinZeitüberwachung der Verbindung ja neinSpezialfunktionen (z. B. „Urgent Data“) ja neinFlußkontrolle über das Netz hinweg ja neinZuverlässige Datenübertragung ja neinGeschwindigkeit mittel hochErkennung von Paketduplikaten ja neinReihenfolgerichtige Übertragung ja neinVerbindung wird aufgebaut ja neinMultiplexen von Verbindungen ja ja

Page 21: Lehrstuhl für Datenverarbeitung - ruhr-uni-bochum.de · Die Software ist mit MSVisual C++ unter MS Windows NT zu realisieren. Alle Entwicklungsschritte sind zudem projektbegleitend

Kapitel 3 Netzwerkprotokolle

20

Ein Service kann dabei folgende Zustände besitzen:• Closed:

Es besteht keine Verbindung.• Passive Open:

Der Port nimmt durch Passiv Open initialisierte Verbindungsaufrufe entgegen. Eswird auf den Verbindungsaufbau gewartet. Dabei werden Vorrangdaten undSicherheitsstufen berücksichtigt.

• Active Open:Der Port nimmt eine durch Active Open initialisierte Verbindungsaufrufe entgegen.Es wird ein aktiver Verbindungsaufbau gestartet. Dabei werden Vorrangdaten undSicherheitsstufen 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. DieserZustand geht in den Established-Zustand über, d.h. die Verbindung ist aufgebaut undDaten können gesendet werden. Sollen keine Daten mehr gesendet werden, so wird derZustand Closing angenommen. Die Verbindung wird kontrolliert abgebaut. Ist dieVerbindung 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 Portauf dem Zielrechner aufgebaut. Diese Verbindung kann aktiv oder passiv aufgebautwerden. Wird die Verbindung passiv aufgebaut, wartet der Rechner auf den Ver-bindungsaufbau über einen bestimmten Port. Der passive Verbindungsaufbau kannvoll spezifiziert, nur zu einem bestimmten Port, oder unspezifiziert, zu einem be-liebigen Port, geschehen. Beim aktiven Verbindungsaufbau baut der Quellrechner eineVerbindung zu einem Empfängerrechner auf. Der Empfängerrechner ist dabei imPassive Open-Modus, oder er baut eine Active Open-Verbindung zum gleichen Portauf.

3.6.1 VerbindungsaufbauDer Verbindungsaufbau ist in Abbildung 3-7 dargestellt.

Page 22: Lehrstuhl für Datenverarbeitung - ruhr-uni-bochum.de · Die Software ist mit MSVisual C++ unter MS Windows NT zu realisieren. Alle Entwicklungsschritte sind zudem projektbegleitend

Kapitel 3 Netzwerkprotokolle

21

SYNempfangen

Closed

SYN gesendet Listen

Established

Close Close

PassiveOpen

Active OpenSYN senden

SYN empfangenSYN gesendet

Abbildung 3-7: Verbindungsaufbau

Eine Verbindung wird immer von dem Zustand Closed aus aufgebaut. Sie kann mitActive Open oder Passive Open initialisiert werden. Wird die Verbindung mit PassiveOpen initialisiert, wird der Zustand Listen erreicht. Beim aktiven Aufbau wird dasSYN-Zeichen gesendet und der SYN-Zustand wird angenommen. Dieser Zustand wirdso lange aufrecht erhalten, bis ein Timer abgelaufen ist. Danach wird automatischwieder der Zustand Closed angenommen. Wenn das SYN-Zeichen hingegen vom Emp-fä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 Closed-Modus übergehen. Im Established-Zustand können die Daten übertragen werden.

3.6.2 VerbindungsabbauDer Verbindungsabbau ist in

Abbildung 3-8 dargestellt.

Established

Close WaitFIN Wait

Closed

FINempfangen

Close FINsenden

FINEmpfangen

Close FINsenden

Abbildung 3-8: Verbindungsabbau

Page 23: Lehrstuhl für Datenverarbeitung - ruhr-uni-bochum.de · Die Software ist mit MSVisual C++ unter MS Windows NT zu realisieren. Alle Entwicklungsschritte sind zudem projektbegleitend

Kapitel 3 Netzwerkprotokolle

22

Eine Verbindung wird immer vom Sender mit dem FIN-Bit beendet und gelangt damitden FIN-Wait-Status. Wird das FIN positiv beantwortet, so wird wieder der Closed-Modus angenommen. Ist das FIN empfangen worden, so gelangt ein Empfänger direktin den Close-Wait-Status. Nach Versenden des FIN wird die Verbindung abgebaut undder Closed-Zustand angenommen.Es existieren zwei Möglichkeiten, eine Verbindung zu beenden: Graceful Close undAbort. Beim Graceful Close schließen die höheren Übertragungsprotokolle auf beidenSeiten die Verbindung. Dies kann gleichzeitig oder nacheinander geschehen, das TCPkoordiniert den Verbindungsabbau. Die Verbindung wird erst abgebaut, wenn allerestlichen Daten übertragen worden sind, um Datenverlust zu vermieden. Die zweiteMöglichkeit ist der Abort. Eine Verbindung wird mit Abort beendet, wenn die Ver-bindung einseitig abgebaut werden muß, z.B. bei einem fehlgeschlagenen Authen-tifizierungsversuch bei einem sicheheitsrelevantem Dienst. Dabei baut ein höheresProtokoll eines Kommunikationspartners die Verbindung einseitig ab. Das TCP ko-ordiniert den Abbau der Verbindung in diesem Fall nicht und es kann zu Datenverlustkommen.

3.7 NetBEUI

Das NetBEUI ist ein nicht routingfähiges Protokoll. Es besteht die Möglichkeit dieRouting-Fähigkeit der Protokolle TCP/IP- oder IPX zu nutzen in dem NetBEUI-Paketean 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, umkleine Netzwerke zu verbinden. Es können maximal 254 Rechner auf einmal mit-einander verbinden.

Name Port BeschreibungNetBEUI-ns 137/tcp Name ServiceNetBEUI-ns 137/udp Name ServiceNetBEUI-dgm 138/tcp Datagram ServiceNetBEUI-dgm 138/udp Datagram ServiceNetBEUI-ssn 139/tcp Session ServiceNetBEUI-ssn 139/udp Session Service

Tabelle 3-2: NetBEUI Ports

Page 24: Lehrstuhl für Datenverarbeitung - ruhr-uni-bochum.de · Die Software ist mit MSVisual C++ unter MS Windows NT zu realisieren. Alle Entwicklungsschritte sind zudem projektbegleitend

Kapitel 3 Netzwerkprotokolle

23

3.7.1 HeaderIn Abbildung 3-9 ist der NetBEUI Header dargestellt

1 4 8 12 16 20 24 28 32Länge Signatur

Kommando Datenlänge ResyncindikatorReserviert Antwortverknüpfung

Empfänger-Session Sender-Session Beginn Datenbereich

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 hateine 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 imHeader vorhanden sind.

• Resyncindikator:Das Feld hat eine Länge von 16 Bit. Die Funktion dieses Feldes ist ein Mechanis-mus zur Flußkontrolle. Um eine gesicherte Übertragung zu ermöglichen könnenhier fehlende oder nicht korrekt übertragene Datenpakete ermittelt werden.

• Reserviert:Das Feld erstreckt sich über 16 Bit. Dieses Feld ist für zukünftige Funktionenreserviert und wird immer auf „0“ gesetzt.

• Antwortverknüpfung:Das Feld hat eine Länge von 16 Bit. Die Funktion dieses Feldes ist es, die richtigeReihenfolge der empfangenen Pakete herzustellen.

• Empfänger-Session:Dieses Feld zeigt an, welche Anwendung oder welcher Dienst die Pakete erhaltensoll und ist 8 Bit lang.

• Sender-Session:Das Sender-Session-Feld zeigt an, von welcher Anwendung oder von welchemDienst die Pakete stammen. Es hat einen Umfang vom 8 Bit.

Page 25: Lehrstuhl für Datenverarbeitung - ruhr-uni-bochum.de · Die Software ist mit MSVisual C++ unter MS Windows NT zu realisieren. Alle Entwicklungsschritte sind zudem projektbegleitend

Kapitel 4 Problemstellung

24

4 Problemstellung

Zwischen zwei Rechnern besteht eine aktive Kommunikation. Diese wird im Normal-fall systematisch wieder von beiden Kommunikationspartnern abgebaut. Ziel ist esjetzt, die Kommunikation von einem externen Prozeß auf einem der beiden Rechner zuunterbinden bzw. zu beenden. Dazu sind verschiedener Mechanismen, die als Ergebnisdie Unterbrechung dieser Kommunikation (vgl. Abbildung 4-1) zwischen den beidenRechnern mit sich führen, zu untersuchen. Die geeignet zu entwickelnde Routine solldie Kommunikation zwischen zwei Rechnern beenden.

Rechner A Rechner BKommunikation

Rechner A Rechner BKommunikation

Rechner A Rechner B

Befehl zum Abbau derVerbindung

Kommunikationist beendet

Abbildung 4-1: Problemstellung Abbau einer Verbindung

Als Eingangsparameter werden die Daten der vorhanden Kommunikation zwischenzwei Rechnern übernommen, welche zuvor festgestellt werden müssen (vgl. Kapitel5). Die Routine soll als Modul realisiert werden, um diese in mehreren Programmennutzen zu können.

Page 26: Lehrstuhl für Datenverarbeitung - ruhr-uni-bochum.de · Die Software ist mit MSVisual C++ unter MS Windows NT zu realisieren. Alle Entwicklungsschritte sind zudem projektbegleitend

Kapitel 5 Erkennung bestehender Verbindungen

25

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 ge-hö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 desProgramms Netstat (MS Windows 9x/NT) erreicht, welches für die Verbindungs-analyse zur Verfügung steht. Die möglichen Eingabeparameter sind in Abbildung 5-1mit 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.

Page 27: Lehrstuhl für Datenverarbeitung - ruhr-uni-bochum.de · Die Software ist mit MSVisual C++ unter MS Windows NT zu realisieren. Alle Entwicklungsschritte sind zudem projektbegleitend

Kapitel 5 Erkennung bestehender Verbindungen

26

Abbildung 5-2: Netstat -a

Die neunte Zeile von oben zeigt z.B. einen TCP Socket auf dem Rechner thread amNetBEUI-Port 137 der den Status Listening besitzt. D.h. der Rechner thread erwartetauf dem Port 137 einen Verbindungsaufbau. In der zwölften Zeile ist eine TCP-Ver-bindung vom Port 1027 des Rechners thread zum Port nbsession des Rechners thingmit 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

Page 28: Lehrstuhl für Datenverarbeitung - ruhr-uni-bochum.de · Die Software ist mit MSVisual C++ unter MS Windows NT zu realisieren. Alle Entwicklungsschritte sind zudem projektbegleitend

Kapitel 5 Erkennung bestehender Verbindungen

27

Die dritte Zeile zeigt die Menge der übertragenen Bytes an. Es wird die Anzahl derUnicast-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 zwischengesendeten und empfangenen Paketen unterschieden. Unten wird die Menge derunbekannten 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 verschicktwerden.

Abbildung 5-4: Netstat –r

Abbildung 5-4 zeigt in der dritten Zeile alle Pakete, die in die Netzwerkmaske 0.0.0.0mit der Subnetzmaske 0.0.0.0 übereinstimmen, an das Gateway20 mit der Adresse134.147.40.7 weitergeleitet werden. Alle Pakete, die an einen Rechner in dem lokalenNetz 134.147.40.0 mit der Subnetzmaske 255.255.255.128 adressiert sind werdennicht ü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 Ver-bindungen. Die Darstellung ist analog zum Ergebniss vom Netstat –a.

19 Unicast - nur zu einem Empfänger20 Gateway - Netzknoten, der Pakete in ein anderes Netz transportiert21 Loopback Device - Internes Netzwerkinterface auf dem eigenen Rechner. Wird genutzt, um den eigenen

Rechner über das Netz anzusprechen.

Page 29: Lehrstuhl für Datenverarbeitung - ruhr-uni-bochum.de · Die Software ist mit MSVisual C++ unter MS Windows NT zu realisieren. Alle Entwicklungsschritte sind zudem projektbegleitend

Kapitel 6 Lösungsansatz

28

6 Lösungsansatz

Das Problem eine Netzwerkverbindung zu kennen (vgl. Kapitel 5) kann durch dreiAnsätze gelöst werden: mittels Windows Sockets, auf der Netzwerkschnittstelle oderdurch Verbindungsübernahme.

6.1 Windows Sockets

Der erste Ansatz ist im ISO/OSI-Modell auf der Ebene 7 (Anwendungsebene) einzu-ordnen und soll die Windows Socket Routinen nutzen.Die Microsoft Sockets basieren auf der Spezifikation der Sockets der Berkeley Soft-ware Distribution (BSD) der University of California in Berkeley. Die Implementationumfaßt die Socket-Routinen von der BSD und ist um spezielle Windows-Routinen er-weitert. Viele Netzwerk-Software Hersteller unterstützen die Windows Sockets. ImPrinzip 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 Pro-tokolle TCP, UDP und IP stellt Microsoft unter den 16-Bit-Betriebssystemen die Pro-grammierschnittstelle winsock.dll und unter den 32-Bit-Betriebssystemen wsock32.dllzur Verfügung. Eine allgemeine Schnittstelle zur Internetprogrammierung ist dieMicrosoft Foundation Classes (MFC). Sie kann grundsätzlich in vier Gruppen ein-geteilt werden:

• Low Level Protokolle (TCP/UDP/IP)• Anwendungsprotokolle• Dateidienste• Ausnahmebehandlungen

Die MFC lassen sich unterteilen in: Low Level Win Socket-Klassen (vgl. Abbildung6-1) und den Klassen auf der Anwendungsprotokoll-Schicht (vgl. Abbildung 6-2).

CAsyncSocketCSocket

TCP-/UDP-/IP-Datenpakete

TCP-/UDP-/IP-Datenpakete

WinSocket WinSocket

CAsyncSocketCSocket

Internet

Abbildung 6-1: Schichten der Low Level Win Socket Klassen 22 DLL - Dynamic Link Libery

Page 30: Lehrstuhl für Datenverarbeitung - ruhr-uni-bochum.de · Die Software ist mit MSVisual C++ unter MS Windows NT zu realisieren. Alle Entwicklungsschritte sind zudem projektbegleitend

Kapitel 6 Lösungsansatz

29

Die einzelnen Klassen setzen auf den Netzwerkschichten auf. Dabei stelltTCP-/UDP-/IP-Datenpakete die TCP/UDP/IP-Implementierung von Windows dar.Auf die Low Level-Ebene greifen die Klassen CSocket und CAsyncSocket zu. BeideKlassen unterstützen die Protokolle TCP und UDP.

CFtpConnectionCHttpConnection

CGopher Connection

Internet

WinInet

TCP-/UDP-/IP-Datenpakete

WinSocket

CFtpConnectionCHttpConnection

CGopher Connection

WinInet

WinSocket

TCP-/UDP-/IP-Datenpakete

Abbildung 6-2: Schichten der Anwendungsprotokoll-Klassen

Die Anwendungsprotokoll-Klassen besitzen eine höhere Abstraktion in der Pro-grammierung. Es wird nicht direkt auf TCP- oder UDP-Ebene zugegriffen, sondernmit den Anwendungsprotokoll-Klassen direkt auf die Anwendungsschicht imISO/OSI-Modell zugegriffen. Zu den Anwendungsprotokoll-Klassen gehören dieKlasse CFtpConnection zur Datenübertragung, die Klasse CHttpConnection zur Über-tragung 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 zuuntersuchen ob eine Verbindung zwischen zwei Rechnern auf den untersten Ebenenbeendet werden kann. Für die Realisierung ist die Network Interface Card-Ebene desBetriebssystems MS Windows NT zu betrachten. Dies entspricht in dem ISO/OSI-Modell der Physikalischen Schicht (Schicht 1) und einem Teil Sicherungschicht(Schicht 2). In Abbildung 6-3 ist die Einordnung der MS Windows NT Netzwerk-ebenen in das ISO/OSI-Modell abgebildet.

Page 31: Lehrstuhl für Datenverarbeitung - ruhr-uni-bochum.de · Die Software ist mit MSVisual C++ unter MS Windows NT zu realisieren. Alle Entwicklungsschritte sind zudem projektbegleitend

Kapitel 6 Lösungsansatz

30

IOS/OSI-Modell Microsoft Modell

Anwendungen

Anwendungsschicht

Darstellungsschicht

Netzwerkschicht

Transportschicht

Sitzungsschicht

Standart:

FTP

Telnet

SMTP

System-meldungen:

Fehler-behandlung

ErweiterteAnwendunge:

NFS

DruckerServer

Physikalische Schicht

SicherungsschichtMedia Access Control

SicherungsschichtLogical Link Control

Transport Driver Interface EbeneTDI Ebene

Network Interface Card EbeneNIC Ebene

Abbildung 6-3: Eingliederung der Windows NT Netzwerkebenen ins ISO/OSI-Modell

6.3 Verbindungsübernahme

Die Idee des dritten Ansatzes besteht darin, eine TCP-Verbindung, die zwischen zweiKommunikationspartnern besteht, zu übernehmen und die Verbindung zu beenden.Analog zum Juggernaut-Angriff (vgl. Kapitel 2.5) wird von einem dazwischen liegen-den Prozeß die Verbindung übernommen. Der Unterschied hier liegt in der Initiierungder Übernahme, da die Übernahme vom eigenen System erfolgen soll (vgl. Abbildung6-4).Dem zweiten Verbindungspartner der bestehenden Verbindung (Rechner B) wird vor-getäuscht, der richtige Kommunikationspartner dieser Verbindung zu sein. Dies ge-schieht indem durch den Prozeß zur Verbindungsübernahme auf dem Rechner BPakete mit einer höheren Sequenznummer an den gleichen Sende- und Empfangsportgeschickt werden. Dadurch kann die Verbindung übernommen werden.

Page 32: Lehrstuhl für Datenverarbeitung - ruhr-uni-bochum.de · Die Software ist mit MSVisual C++ unter MS Windows NT zu realisieren. Alle Entwicklungsschritte sind zudem projektbegleitend

Kapitel 6 Lösungsansatz

31

Prozeß 1 Prozeß 2

Prozeß zumÜbernehmem der

Verbindung

an Rechner B, Port 23,Sequneznr. 45

Verbindung Port 23Sequneznr.44

Rechner A Rechner B

Port 1024Sequneznr.44

Abbildung 6-4: Verbindung durch einen anderen Prozeß übernehmen

Mit senden des Abort-Signals von Rechner A aus wird die Verbindung mit Rechner Bkorrekt abgebaut (Abbildung 6-5).

Prozeß 1 Prozeß 2Ver- bindung

Prozeß zumbeenden derVerbindung

Abo

rt S

igna

lzu

Rec

her

2se

nden

Beenden derVerbindung

Abbildung 6-5: Beenden einer Verbindung durch einen anderen Prozeß

Dieser Ansatz läßt sich nicht mit den MFC-Klassen programmieren, da diese nur dieexklusive Verwendung eines Ports für eine Anwendung erlauben. Weiterhin ist mitdem MFC-Klassen nicht möglich, die aktuelle Sequenznummer eines Paketes fest-zustellen. Es ist deshalb notwendig, für die Programmierung auf tieferen Netzwerk-schichten zuzugreifen.

Page 33: Lehrstuhl für Datenverarbeitung - ruhr-uni-bochum.de · Die Software ist mit MSVisual C++ unter MS Windows NT zu realisieren. Alle Entwicklungsschritte sind zudem projektbegleitend

Kapitel 7 Realisierung

32

7 Realisierung

7.1 Windows Sockets

Es sind drei Programme entwickelt worden: ClosePort, ServiceScanner undServiceServer.Diese Programme werden folgend weiter erläutert.

7.1.1 ClosePortDas Ziel des Programms ist es alle Ports zu blockieren, um eine Verbindung für eineKommunikation direkt abblocken zu können.Das Programm ClosePort (Abbildung 7-1) belegt sukzessiv alle Ports von 1 bis 10000mit einem Windows Socket.

Abbildung 7-1: ClosePort

Es wird eine Schleife durchlaufen, welche nacheinander zunächst eine Socket erstelltund anschließend auf dem Socket hört (vgl. Abbildung 7-2).

Schleife von 1 bis 10000

Höre auf Socket

Erzeuge Socket

Abbildung 7-2 Struktogramm ClosePort

Wenn ein Port bereits von einem anderen Programm belegt ist, kann dieser Port nichterneut belegt werden. Mit den MFC-Klassen ist es nicht möglich einen Socket auseinem anderen Programm heraus zu schließen. So bleibt das andere Programm aufdem Port aktiv. Wenn z.B. ein Http-Server auf dem Port 80 aktiv ist und ClosePortgestartet wird, bleibt der Server weiterhin aktiv, da der Port nicht mehrfach belegt

Page 34: Lehrstuhl für Datenverarbeitung - ruhr-uni-bochum.de · Die Software ist mit MSVisual C++ unter MS Windows NT zu realisieren. Alle Entwicklungsschritte sind zudem projektbegleitend

Kapitel 7 Realisierung

33

werden kann. Wird hingegen ClosePort vor dem Http-Server gestartet, kann derServer den Port nicht belegen. Durch ClosePort werden alle freien Sockets bis PortNummer 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 dasBetriebssystem beanspruchten Speicherplatzes kommen. Dies ist durch einen Fehler indem Microsoft Windows 95 Kernel (Kernel32.dll) bedingt, der die Freigabe kleinerDatenstrukturen verhindert, welche durch das Öffnen und Schließen von WindowsSockets resultieren. Die Folge ist eine enorme Verringerung des Betriebssystem-speichers. Eine aktualisierte Version der Datei Kernel32.dll wird zur Lösung desProblem von Microsoft zur Verfügung gestellt. Microsoft Windows NT hat diesesProblem nicht. Ferner ist es jedoch, bedingt durch das Betriebssystem, nur möglicheine bestimmte Anzahl von Sockets gleichzeitig zu öffnen. Deshalb kann dasProgramm ClosePort nicht alle Ports eines Rechners blockieren.

7.1.2 ServiceScannnerDer ServiceScanner (vgl. Abbildung 7-3) ist ein Programm zum systematischen Über-prüfen eines Rechners nach belegten Ports. Das Programm arbeitet ebenso wieClosePort (vgl. Kapitel 7.1.1) mit den MFC-Funktionen.

Abbildung 7-3: ServiceScanner

Page 35: Lehrstuhl für Datenverarbeitung - ruhr-uni-bochum.de · Die Software ist mit MSVisual C++ unter MS Windows NT zu realisieren. Alle Entwicklungsschritte sind zudem projektbegleitend

Kapitel 7 Realisierung

34

In das Feld Zielrechner wird die IP-Adresse oder der Netzwerk-Name des Zielrechnerseingegeben. Durch betätigen des Start-Knopfes wird der Prüfvorgang eingeleitet.

Wenn Eingabe Zielrechner undTaste Start gedrückt

%

Schleife von 1 bis 10000

Verbindung zum Zielrechner aufbauen

Portnummer ausgeben

Wenn Port auf Ziel-rechner antwortet

%

janein

janein

Abbildung 7-4: Struktogramm ServiceScanner

Das Programm arbeitet dabei eine Schleife von 1 bis 10000 ab und versucht, zu jedemPort des Zielrechners eine Verbindung aufzubauen (vgl. Abbildung 7-4). Kann eineVerbindung aufgebaut werden, so wird die Portnummer, der Servicename und das ver-wendete Protokoll im Feld Konnektierbare Ports angezeigt. Das Programm eignet sichdazu, die Funktionsweise von ClosePort bzw. die belegten Ports eines Rechners zuüberprüfen .

7.1.3 ServiceServerZiel des Programms ServiceServer ist es gezielt einen Port belegen zu können, um ihnso für andere Anwendungen zu sperren bzw. einen Verbindungsaufbau zu diesem Portzu erkennen.

Abbildung 7-5: ServiceServer

Durch betätigen der Start-Taste wird ein Windows Socket für die angegebene Port-nummer mit dem Status Listen erzeugt.

Page 36: Lehrstuhl für Datenverarbeitung - ruhr-uni-bochum.de · Die Software ist mit MSVisual C++ unter MS Windows NT zu realisieren. Alle Entwicklungsschritte sind zudem projektbegleitend

Kapitel 7 Realisierung

35

Wenn Eingabe Portnummer undTaste Start gedrückt

janein

%

Höre auf Socket (Portnummer)

Erzeuge Socket (Portnummer)

Abbildung 7-6 Struktogramm ServiceServer

Initiiert ein Kommunikationspartner z.B. eine Telnet-Sitzung über den Port, so wird indem Statusfeld die IP-Adresse des Kommunikationspartners ausgegeben. Der Statusder Verbindung ist dann Established. Besteht bereits eine Verbindung zu einemRechner und eine zweite Anfrage auf einen Port trifft ein, so wird die erste Ver-bindung geschlossen und die neue Verbindungsanfrage angenommen.Dieses Programm eignet sich dazu einzelne Ports zu sperren. Ist der ServiceServer aufeinem Port aktiv, kann kein anderes Programm auf diesem Port eine Verbindung auf-bauen.

7.2 Network Driver Interface

Die Network Driver Interface Spezifikation greift direkt auf die Hardwareressourcender Netzwerkkarte zu. Sie ist das unterste Bindeglied zwischen Netzwerkkarte Proto-kollimplementierung des Betriebssystems. Die Hardware wird nur von den NDIS-Funktionen angesprochen, alle anderen Netzwerkprotokollebenen greifen auf dieNDIS-Funktionen zu. Die NDIS-Funktionen stellen eine fest spezifizierte Schnittstellezwischen Netzwerkkarte und den über der NDIS liegenden Schichten dar. Microsoftstellt mit MS Windows 9x und MS Windows NT eine Reihe von NDIS-Bibliothekenzur Verfügung. Mit diesen Bibliotheken ist es möglich, ohne Wissen der Funktions-weise der Netzwerkkarte, auf standardisierte Funktionen zurückzugreifen. So ist eineeinfache Programmierung der Netzwerkkarte gewährleistet. Diese standardisiertenFunktionen stellen aber keine Möglichkeit zur Verfügung eine Verbindung zwischenzwei 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 Netz-werkkarte zurückzugreifen.

Page 37: Lehrstuhl für Datenverarbeitung - ruhr-uni-bochum.de · Die Software ist mit MSVisual C++ unter MS Windows NT zu realisieren. Alle Entwicklungsschritte sind zudem projektbegleitend

Kapitel 7 Realisierung

36

7.3 Verbindungsübernahme

Die Übernahme einer Verbindung ist bereits als Basement Research Kill (BRkill) be-kannt. Durch ein Fehler in der TCP/IP-Implementierung von MS Windows 95 und MSWindows NT wird es einem Dritten erlaubt eine bestehende Verbindung auf diesenRechnern zu beenden. Dafür wird nur die IP-Adresse und der TCP Port der Ver-bindung des Windows Rechners benötigt. Mit diesen Informationen ist es möglich, einConnection Reset an den Windows Rechner zu senden. Beim BRkill wird ein PushAcknowledge (vgl. Kapitel 3.3.2) benutzt, um ein Connection Reset zu generieren. Daszurückgesendete Acknowledge-Feld enthält die letzte Acknowledge-Nummer der be-stehenden TCP-Verbindung. Mit diesem Wissen ist es möglich, dem WindowsRechner ein Reset-Bit mit der letzten Acknowledge-Nummer als Sequenz-Nummer zuschicken. Das Acknowledge-Feld wird dabei auf „0“ gesetzt. Die bestehende Verbin-dung wir dann abgebaut.Das Senden des Reset-Bits muß in einer relativ kurzen Zeitspanne geschehen. Es darfkein weiteres neues Paket mit einer höheren Acknowledge-Nummer vom WindowsRechner gesendet werden. Andernfalls würde die Sequenz-Nummer des Paketes mitdem Reset-Bit nicht mehr akzeptiert, weil sie zu niedrig wäre, und das Paket würdeverworfen. Die Realisierung von BRkill enthält die Möglichkeit eine Reihe vonhöheren Sequenz-Nummern (Acknowledge-Bit + n) zu senden, um das Problem zu um-gehen.Wenn auf dem Zielrechner viele bestehende TCP-Verbindungen existieren, ist esschwer eine bestehende Verbindung zu beenden, da eine Reihe von Acknowledge-Nummern existieren und nicht bekannt ist welche benötigt wird, um die Verbindungzu beenden. Mit steigender Anzahl von bestehenden Verbindungen wird es somitschwieriger eine bestimmte Verbindung auf diese Art zu beenden.Es ist nicht empfehlenswert diese Realisierung zur Verbindungsunterbrechung in derPraxis einzusetzen. Der entscheidende Nachteil besteht darin, daß sie auf einem Fehlerin der TCP-Protokoll-Implementierung des Microsoft Betriebssystems aufbaut. DieserFehler ist in den Betriebssystemen MS Windows 95 und MS Windows NT 4.0 nochvorhanden, wird aber durch entsprechende Service Packs beseitigt.Desweiteren wird beim Beenden einer Verbindung mit BRkill auf dem WindowsZielrechner die Fehlermeldung „The connections has been reset by the remote host“ausgegeben. Dies stellt in dem Fall des Beendens der Verbindung durch einen Drittennicht den Sachverhalt dar.

Page 38: Lehrstuhl für Datenverarbeitung - ruhr-uni-bochum.de · Die Software ist mit MSVisual C++ unter MS Windows NT zu realisieren. Alle Entwicklungsschritte sind zudem projektbegleitend

Kapitel 8 Zusammenfassung

37

8 Zusammenfassung

Bei der Nutzung der MFC-Klassen scheiterte die Lösung an einem Fehler vonWindows, der den Betriebssystemspeicher zum Überlauf bringt, und an der Möglich-keit nicht beliebig viele Sockets öffnen zu können. Zusätzlich stellen die MFC-Klassenkeine Möglichkeit zur Verfügung, eine Netzwerkverbindung zwischen zwei Prozessendurch einen dritten zu beenden.Mit NDIS-Schnittstelle besteht die beste Chance die Beendung einer Verbindungzwischen zwei Rechnern zu realisieren, da diese die unterste Schnittstelle in der Netz-werkprotokollimplementierung der Microsoft Betriebssysteme darstellt. Keine andereProgrammierung der Netzwerkschittstelle ist grundlegender als die Programierung derNDIS-Schnittstelle. Nur bei dieser Lösung scheint es möglich eine Verbindungzwischen 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 desMicrosoft Betriebssystemen auf.Das es grundsätzlich möglich ist eine Verbindung zwischen zwei Rechnern zu be-enden, zeigt das im Anhang-A beschriebene Programm AtGuard. Hier ist eine Routinezur Beendung einer Kommunikation zwischen zwei Rechnern implementiert worden.Keine der vorgestellten Ansätze stellt somit ein zufriedenstellendes Ergebnis zurLösung dar.

Page 39: Lehrstuhl für Datenverarbeitung - ruhr-uni-bochum.de · Die Software ist mit MSVisual C++ unter MS Windows NT zu realisieren. Alle Entwicklungsschritte sind zudem projektbegleitend

Kapitel 9 Ausblick

38

9 Ausblick

Es sind Möglichkeiten zur Unterbrechung einer Kommunikation zwischen zwei Rech-ner untersucht worden. Dabei stellte sich kein zufriedenstellendes Ergebnis ein. EineMöglichkeiten zur Lösung des Problems stellt die direkte Analyse des Netzwerkstromsdar. Problematisch ist hierbei die nicht ausführliche Dokumentation der Netzwerk-schnittstelle von Microsoft Windows NT. Eine weitere Möglichkeit ist der Zugriff aufhardwareabhänige Funktionen der Netzwerkkarte. Problem hierbei in die proprietäreArchitektur der erweiterten Netzwerkartenfunktionen.Durch eine zu entwickelnde Routinen ist es dann möglich, Verbindungen zwischenzwei Rechnern auf unterer Ebene im ISO/OSI-Modell zu beenden. Diese Routine kannim weiteren Programmen zur Netzwerksicherheit eingebunden werden. Eine fortge-schrittene Entwicklung könnte die Programmfunktionen „Netzwerkanalyse“ bzw.„Netzwerküberwachung“ und das Terminieren von Netzwerkverbindungen beinhalten.Die einzelnen Programmfunktionen würden dabei miteinander interagieren. DieNetzwerküberwachung meldet der Routine zum Beenden einer Verbindung die sicher-heitskritischen Netzwerkverbindungen. Die Terminierungsroutine trennt daraufhin diekritischen Verbindungen und sendet eine Statusmeldung an die Überwachungsroutinezurück.Die Terminierungsroutine kann unabhängig in weiteren Programmen zur Anwendungkommen. Denkbar sind z.B. Sicherheitstools die nur gewissen Nutzern Zugriff aufbestimmte Daten erlauben oder Programme die bestimmte Netzwerkverbindungen,z.B. solche mit rechtlich kritischem Inhalt, filtern.

Page 40: Lehrstuhl für Datenverarbeitung - ruhr-uni-bochum.de · Die Software ist mit MSVisual C++ unter MS Windows NT zu realisieren. Alle Entwicklungsschritte sind zudem projektbegleitend

Kapitel 10 Literatur

39

10 Literatur

[BAL98] Balzert, HelmutLehrbuch der Softwaretechnik, Software-EntwicklungSpektrum Akademischer Verlag, Heidelberg 1998ISBN 3-8274-0042-2

[BAU99] Baumann, HeikoEntwicklung eines Softwaretools zur Protokollierung und Analyse desDatenstroms in NetzwerkenDiplomarbeit 344, Lehrstuhl für DatenverarbeitungRuhr-Universität Bochum, Bochum 1999

[BAS99] Basemnet ResearchBrkillBasement Research, 1999http://deep.ee.siue.edu/br

[BRA95] Bradner, S. / Mankin, A,Request for Comments 1752, The Recommendation for the IPNext Generation ProtocolNetwork Working Group, Havard 1995

[CHA95] Chapman, D. Brent / Zwicky, Elisabeth D.Einrichten von Internet FirewallsO’Reilly, Köln 1995ISBN 3-930673-31-2

[CHA92] Chapman, D. BrentNetworking (In)Security Through IP Packet FilteringThe Third USENIX UNIX Security Symposium, Baltimore 1992

[CHP98] Chapman, DavisVisual C++ 6 in 21 TagenSAMS, Haar 1998ISBN 3-8272-2035-1

Page 41: Lehrstuhl für Datenverarbeitung - ruhr-uni-bochum.de · Die Software ist mit MSVisual C++ unter MS Windows NT zu realisieren. Alle Entwicklungsschritte sind zudem projektbegleitend

Kapitel 10 Literatur

40

[COD99] CodeguruCodeguru InternetseiteCodeguru, 1999http://www.codeguru.com

[DEE95] Deering, S / Hinden, R.Request for Comments 1883, Internet Protocol Version 6 SpecifikationNetwork Working Group, 1995

[DDK99] Microsoft Device Driver Kit OnlinehilfeMicrosoft Corperation, Redmond 1999

[HEI98] Heim, MathiasTCP/IP, Internetprotokolle im EinsatzInternational Thomson Publishing, Bonn 1998ISBN 3-8266-4035-7

[HEI99] HeiseHeise InternetseiteVerlag Heinz Heise, Hannover 1998http://www.heise.de

[HOR99] Horster, PatrikSystemsicherheit - Sicherheit in komplexen IT-SystemenFolien zur Vorlesung WS 1999/2000Ruhr-Universittät Bochum, Bochum 1999

[MFC99] MfC ProfessionalMfC Professional InternetseiteMfC Professional, 1999http://www.visionx.com/mfcpro/

[MIC97] Microsoft CoperationVisual C++ Online-HilfeMicrosoft, Redmond 1997

Page 42: Lehrstuhl für Datenverarbeitung - ruhr-uni-bochum.de · Die Software ist mit MSVisual C++ unter MS Windows NT zu realisieren. Alle Entwicklungsschritte sind zudem projektbegleitend

Kapitel 10 Literatur

41

[MIC99] Microsoft CoperationMicrosoft Coperation InternetseiteMicrosoft, Redmond 1999http://www.microsoft.com/

[MIR99] Microsoft CoperationMSDN InternetseiteMicrosoft, Redmond 1999http://msdn.microsoft.com/default.asp

[NWG87] Network Working GroupRequest for Comments 1001, Protocol Standard for a NetBIOS Serviceon a TCP/UDP TransportNetwork Working Group, 1987

[POS80] Postel, J.Request for Comments 768 User Datagram ProtocollNetwork Working Group, 1980.

[RAY81] del Ray, MarinaRequest for Comment 791, Internet ProtocolUniversität Southern California, California 1981

[RAZ81] del Ray, MarinaRequest for Comment 793, Transmission Control ProtocolUniversität Southern California, California 1981

[RIE99] Riebl, RosaVisual C++ 6, Professionelle Windows ProgrammierungC&L, Vaterstetten 1999ISBN 3-932311-20-5

[ROT99] RootshellRootshell, Sicherheitslückenhttp://www.rootshell.com

[SDK99] Microsoft Software Development Kit OnlinehilfeMicrosoft Corp., Redmond 1999

Page 43: Lehrstuhl für Datenverarbeitung - ruhr-uni-bochum.de · Die Software ist mit MSVisual C++ unter MS Windows NT zu realisieren. Alle Entwicklungsschritte sind zudem projektbegleitend

Kapitel 10 Literatur

42

[SOL98] Solomon, David A.Inside Windows NT Second EditionMicrosoft Press, Redmond 1998ISBN 1-57231-677-2

[WRQ99] WRQAtGuardWRQ Inc., Seattle 1999http://www.atguard.com

[ZEN95] Zenk, AndreasLokale Netze, Kommunikationplattform der 90er JahreAddison-Wesley, Bonn 1997ISBN 3-8273-1020-2

Page 44: Lehrstuhl für Datenverarbeitung - ruhr-uni-bochum.de · Die Software ist mit MSVisual C++ unter MS Windows NT zu realisieren. Alle Entwicklungsschritte sind zudem projektbegleitend

Anhang-A AtGuard

43

Anhang-A AtGuard

AtGuard ist ein Produkt der Firma WRQ mit einer Reihe von sicherheitsrelevantenRoutinen. Es enthält Sicherheitseinstellungen für die Nutzung des WWW1 und eineImplementierung einer Firewall2. Das Programm arbeitet im Hintergrund und schaltetsich bei sicherheitsrelevanten Ereignissen automatisch in den Vordergrund. In Ab-bildung A-1 ist das Optionsmenü für die Konfiguration von AtGuard abgebildetet.Hier lassen sich die Sicherheitseinstellungen für die WWW-Nutzung und die Ein-stellungen der Firewall vornehmen.

Abbildung A-1: ATGuard-Konfigurationsmenü

Die Firewall unterstützt die Protokolle TCP, UDP und ICMP. In einem Menü könnenFilterregeln wie bei bekannten Paketfiltern, z.B. dem Ipfwadm bei Linux, eingestelltwerden. Es stehen die Regeln PERMIT, BLOCK und IGNORE für ein und ausgehendePakete zur Verfügung. Zusätzliche Funktionen sind das Sperren von Anwendungenoder das Festlegen von Filterregeln für bestimmte Zeiträume. Zur Auswertung dersicherheitsrelevanten Ereignisse können diese protokolliert werden, zudem steht einEreignismonitor zur Verfügung.

1 WWW – World Wide Web2 Firewall - [engl.] Brandschutzmauer. Gerät zum Schutz von Netzen nach außen.

Page 45: Lehrstuhl für Datenverarbeitung - ruhr-uni-bochum.de · Die Software ist mit MSVisual C++ unter MS Windows NT zu realisieren. Alle Entwicklungsschritte sind zudem projektbegleitend

Anhang-A AtGuard

44

Tritt ein sicherheitsrelevantes Ereignis ein, so öffnet sich ein PopUp-Dialog (vgl. Ab-bildung A-2). Dieser erlaubt das einmalige Blockieren oder Freigeben der Verbindung.Falls die Verbindung immer freigegeben oder blockiert werden soll, kann dies über diedialoggeführte Einstellung vorgenommen werden.

Abbildung A-2: ATGuard Sicherheits PopUp Menü

Das Programmpaket bietet eine Statistikfunktion (vgl. Abbildung A-3) an. DieseStatistik zeigt die Menge der in Netz übertragenen Daten und der durch die einzelnenFilterregeln geblockten Verbindungen an. Im Fenster werden unten links die vor-handen Verbindungen angezeigt. Eine bestimmte Verbindung zwischen zwei Rech-nern kann beendet werden, indem diese mit der Maus markiert und durch drücken derrechten Maustaste terminiert wird

Abbildung A-3: ATGuard-Statistik

Page 46: Lehrstuhl für Datenverarbeitung - ruhr-uni-bochum.de · Die Software ist mit MSVisual C++ unter MS Windows NT zu realisieren. Alle Entwicklungsschritte sind zudem projektbegleitend

Anhang-B Portzuordnung

45

Anhang-B Portzuordnung

Name Nummer/Protokoll Aliasnametcpmux 1/tcpecho 7/tcpecho 7/udpdiscard 9/tcpdiscard 9/udpsystat 11/tcp usersdaytime 13/tcpdaytime 13/udpnetstat 15/tcpqotd 17/tcp quotechargen 19/tcp ttytst sourcechargen 19/udp ttytst sourceftp-data 20/tcpftp 21/tcptelnet 23/tcpsmtp 25/tcp mailtime 37/tcp timeservertime 37/udp timeserverrlp 39/udp resourcename 42/udp nameserverwhois 43/tcp nicnamedomain 53/tcpdomain 53/udpmtp 57/tcpbootps 67/udpbootpc 68/udptftp 69/udpgopher 70/tcprje 77/tcpfinger 79/tcphttp 80/tcplink 87/tcp ttylinkkerberos 88/udp kdc

Page 47: Lehrstuhl für Datenverarbeitung - ruhr-uni-bochum.de · Die Software ist mit MSVisual C++ unter MS Windows NT zu realisieren. Alle Entwicklungsschritte sind zudem projektbegleitend

Anhang-B Portzuordnung

46

kerberos 88/tcp kdcsupdup 95/tcphostnames 101/tcp hostnameiso-tsap 102/tcpx400 103/tcpx400-snd 104/tcpcsnet-ns 105/tcppop-2 109/tcppop-3 110/tcppop 110/tcpsunrpc 111/tcpsunrpc 111/tcp portmappersunrpc 111/udpsunrpc 111/udp portmapperauth 113/tcp identsftp 115/tcpuucp-path 117/tcpnntp 119/tcp usenetntp 123/tcpntp 123/udpNetBEUI-ns 137/tcp nbnsNetBEUI-ns 137/udp nbnsNetBEUI-dgm 138/tcp nbdgmNetBEUI-dgm 138/udp nbdgmNetBEUI-ssn 139/tcp nbssnimap 143/tcpNeWS 144/tcp newssnmp 161/udpsnmp-trap 162/udpexec 512/tcpbiff 512/udp comsatlogin 513/tcpwho 513/udp whodshell 514/tcp cmdsyslog 514/udpprinter 515/tcp spoolertalk 517/udp

Page 48: Lehrstuhl für Datenverarbeitung - ruhr-uni-bochum.de · Die Software ist mit MSVisual C++ unter MS Windows NT zu realisieren. Alle Entwicklungsschritte sind zudem projektbegleitend

Anhang-B Portzuordnung

47

ntalk 518/udpefs 520/tcproute 520/udp router routedtimed 525/udp timeservertempo 526/tcp newdatecourier 530/tcp rpcconference 531/tcp chatnetnews 532/tcp readnewsnetwall 533/udpuucp 540/tcp uucpdklogin 543/tcpkshell 544/tcp cmdnew-rwho 550/udp new-whoremotefs 556/tcp rfs Server rfsrmonitor 560/udp rmonitordmonitor 561/udppcServer 600/tcpmount 635/udppcnfs 640/udpbwnfs 650/udpkerberos-adm 749/tcpkerberos-adm 749/udpkerberos-sec 750/udpkerberos-sec 750/tcpkerberos_master 751/udpkerberos_master 751/tcpkrb5_propcddbp 888/tcplisten 1025/tcp listener rfs remote file sharingnterm 1026/tcp remote login network terminalkpop 1109/tcpingreslock 1524/tcptnet 1600/tcpcfinger 2003/tcpnfs 2049/udpeklogin 2105/tcpkrb524 4444/tcp

Page 49: Lehrstuhl für Datenverarbeitung - ruhr-uni-bochum.de · Die Software ist mit MSVisual C++ unter MS Windows NT zu realisieren. Alle Entwicklungsschritte sind zudem projektbegleitend

Anhang-B Portzuordnung

48

irc 6667/tcpdos 7000/tcp msdos