Click here to load reader

Design and Implementation of an IPv6 Plugin for the Snort Intrusion

  • View
    0

  • Download
    0

Embed Size (px)

Text of Design and Implementation of an IPv6 Plugin for the Snort Intrusion

DesignandImplementationofanIPv6PluginfortheSnortIntrusionDetectionSystemSnort Intrusion Detection System
Operating Systems and Distributed Systems
Supervisors: Prof. Dr. Bettina Schnor
Prof. Dipl.-Inform. Thomas Scheffler
Potsdam, September 1, 2011
Schutte, Martin [email protected]
Design and Implementation of an IPv6 Plugin for the Snort Intrusion Detection System Diploma Thesis, Institute for Computer Science Potsdam University, September
Selbststandigkeitserklarung
Potsdam, den 1. September 2011
Martin Schutte
Zusammenfassung
Mit der Verbreitung von IPv6 als neuem Internet-Protokoll gewinnt die Netzwerksicherheit in IPv6-basierten Netzen an Bedeutung. Bei einer Untersuchung des Protokolls zeigen sich dabei besondere Probleme im Neighbor Discovery Protocol, dem Teilsystem das fur die IPv6-Autokonfiguration zustandig ist und im lokalen Netzwerk die Adressvergabe und -auflosung ubernimmt. Viele dieser Angriffe sind seit Jahren bekannt und dokumentiert, unter anderem in Form des THC-Toolkits, es mangelt aber nach wie vor an Wissen und Werkzeugen um diese Angriffe uberhaupt zu erkennen. Eine Gefahrenabschatzung fur reale Netze und sinnvolle Gegenmaßnahmen gibt es meist nicht.
Zuverlassigen Schutz gegen Missbrauch bieten nur physisch und/oder auf Verbindungs- schicht gesicherte Netze. In allen anderen Fallen lassen sich Angriffe nicht vollig verhindern, es ware aber ein wesentlicher Fortschritt Angriffe und Fehlkonfigurationen zuverlassig identifizieren zu konnen. Wie die bestehende Erfahrung mit IPv4-Netzen zeigt, reichen in der Praxis schon einfache Sicherungen und eine ausreichend hohe Erkennungsrate aus, um die Kosten fur den Angreifer signifikant zu erhohen. Auf dieser Grundlage wird das Feld der Intrusion Detection Systems betrachtet; darin
erscheinen besonders Signatur-basierte Network Intrusion Detection Systems (NIDS) als geeignetes Werkzeug um IPv6-Angriffe zu erkennen. Besonderer Vorteil der NIDS – gerade gegenuber eigenstandigen Programmentwicklungen – ist die weite Verbreitung der Produkte. Sie werden bereits in vielen Netzwerken eingesetzt und dementsprechend besteht bereits eine Vielzahl von unterstutzenden Hilfsprogrammen, zum Beispiel zur Signaturverwaltung und zur Analyse der Ergebnisse. Ein Vergleich der wichtigsten open source NIDS-Produkte zeigt, dass die IPv6-Unterstutzung hier noch in der Entwicklung ist und keines der Systeme in der Lage ist die bekannten Angriffe zu entdecken. Daher wird ein eigenes IPv6-Plugin zur IPv6-spezifischen Angriffserkennung entwickelt. Als Grundlage wird das NIDS Snort ausgewahlt, welches mit seiner API fur dynamische Praprozessoren gute Voraussetzungen fur dereartige Erweiterungen bietet. Das IPv6-Plugin umfasst zwei Funktionsbereiche: Zum einen enthalt es einen Snort-
Praprozessor, der anhand der Neighbor Discovery Nachrichten verfolgt welche IPv6-Gerate und -Router im lokalen Netz aktiv sind. Damit lassen sich konfigurierbar verschiedene Alarmmeldungen erzeugen, zum Beispiel eine Meldung bei Anderung des Routers. Zum anderen werden neue Regeloptionen fur die Erkennungssignaturen bereitgestellt, mit denen auf IPv6-spezifische Informationen zugegriffen werden kann. Mithilfe dieser Optionen wird gleich eine Sammlung von IPv6-Signaturen angelegt, um zum Beispiel Charakteristika des THC-Toolkits zu erkennen.
Zur Uberprufung der Funktionalitat wurde zudem eine Test-Umgebung erstellt. Diese erlaubt den Aufruf von Snort mit vorgegebenen Konfigurationsparametern und vorher gespeicherten Netzwerk-Paketen. Nach Aufruf von Snort wird verglichen, ob die erzeugten Alarmmeldungen mit der Testspezifikation ubereinstimmen. Auf dieser Basis wurden sowohl Funktionstests fur alle Alarmmeldungen des Plugins erstellt, als auch eine Sammlung erwarteter Meldungen fur ausgewahlte Angriffe aus dem THC-Toolkit. Damit ist gezeigt, dass reale IPv6-spezifische Angriffe identifiziert werden konnen.
Contents
1. Introduction 1
2. IPv6 Features and their Security Implications 3 2.1. Larger Address Space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.2. Multicast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.3. Flow Label . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.4. Extension Headers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.4.1. Extension Header Chaining . . . . . . . . . . . . . . . . . . . . . . . 7 2.4.2. Hop-by-Hop and Destination Options . . . . . . . . . . . . . . . . . 8 2.4.3. Routing Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.4.4. Fragmentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.4.5. Compatibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.5. Neighbor Discovery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.6. Attacks against the Neighbor Discovery Protocol . . . . . . . . . . . . . . . 16
2.6.1. Neighbor Solicitation/Neighbor Advertisement Spoofing . . . . . . . 16 2.6.2. Router Advertisement/Redirection Spoofing . . . . . . . . . . . . . . 17 2.6.3. Other . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.7. Security measures to protect the Neighbor Discovery Protocol . . . . . . . . 19 2.7.1. Layer 2 filtering and RA-Guard . . . . . . . . . . . . . . . . . . . . . 19 2.7.2. IPsec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.7.3. SEND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.7.4. DHCPv6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.7.5. rafixd & ramond . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.8. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3. Intrusion Detection Systems 27 3.1. General Principles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.2. Taxonomy of Intrusion Detection Systems . . . . . . . . . . . . . . . . . . . 28
3.2.1. Information Source . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.2.2. Analysis Strategy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.2.3. Response Capability . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.2.4. Time Aspects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.2.5. Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.3. Architecture of Network Intrusion Detection Systems . . . . . . . . . . . . . 30 3.3.1. Network sensors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.3.2. Decoder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.3.3. Preprocessing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
i
3.3.4. Detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.3.5. Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.3.6. Other . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.4. Exemple Open Source Network Intrusion Detection Systems . . . . . . . . . 33 3.4.1. Snort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.4.2. Bro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.4.3. Suricata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.4.4. Other Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.5. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.1.1. Data Acquisition/Packet Capturing . . . . . . . . . . . . . . . . . . 37 4.1.2. Decoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 4.1.3. Preprocessor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 4.1.4. Rule Engine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 4.1.5. Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.2. Snort Plugin APIs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 4.2.1. Snort Dynamic Detection API . . . . . . . . . . . . . . . . . . . . . 44 4.2.2. Snort Dynamic Preprocessor API . . . . . . . . . . . . . . . . . . . . 45
4.3. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5. IPv6 Plugin Design and Implementation 49 5.1. Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 5.2. Functionality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.2.1. Preprocessor Alerts . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 5.2.2. Rule Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 5.2.3. Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
5.3. Implementation and Snort Integration . . . . . . . . . . . . . . . . . . . . . 55 5.3.1. Plugin Initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 5.3.2. Rule Option Initialization . . . . . . . . . . . . . . . . . . . . . . . . 58 5.3.3. Rule Option Evaluation . . . . . . . . . . . . . . . . . . . . . . . . . 59 5.3.4. Preprocessor Alerts and Neighbor Discovery Tracking . . . . . . . . 59 5.3.5. Performance and Resiliency . . . . . . . . . . . . . . . . . . . . . . . 61
5.4. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
6. Tests 63 6.1. Test case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 6.2. Test collections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 6.3. Testing Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 6.4. Limitations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 6.5. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
ii
7. Conclusion 69 7.1. Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 7.2. Future Development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
A. List of Abbreviations 71
B. Protocol Numbers and Message Types 73
C. State of the Implementation 77 C.1. Plugin Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 C.2. Snort IPv6 Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 C.3. Other Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 C.4. Configuration Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
D. Sequence Diagrams 79
F. Lists of IPv6 related Snort Alerts 87
G. Lists of Tests 91
H. CD-ROM Content 97 H.1. Directories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 H.2. Licences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 H.3. Installation & Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
iii
iv
1. Introduction
The principal unsolved technical problem found by the working group was that of how to provide multilevel resource and information sharing systems secure against the threat from a malicious user. This problem is neither hopeless nor solved. It is, however, perfectly clear to the panel that solutions to the problem will not occur spontaneously, nor will they come from the various well-intentioned attempts to provide security as an add-on to existing systems. (Anderson 1972, p. iv)
This work presents the design and implementation of an IPv6 intrusion detection module. It includes an overview of known attacks against the IPv6 protocol, suggested methods to detect and counter these attacks, a Snort plugin to implement the detection methods, and a set of tests to verify this functionality. The novel focus is on attacks against the local network and IPv6’s neighbour discovery which are not yet recognized by open source intrusion detection systems. The IPv6 protocol was first specified in 1995 (Deering and Hinden 1995), updated in
1998 (Deering and Hinden 1998), and…