Ausarbeitung
Transcription
Ausarbeitung
HTW Aalen Projektarbeit Network Intrusion Detection Systeme Autor: Betreuer: Andreas Heißel Prof. Dr. Roland Hellmann Eine Projektarbeit, erstellt im Rahmen der Vorlesung Netzwerksicherheit SS2013 des Studienganges Informatik 2. Juli 2013 Erklärung Ich erkläre hiermit, dass ich die Ausarbeitung, ’Network Intrusion Detection Systeme’ selbstständig verfasst und keine andren Quellen und Hilfsmittel als die angegebenen benutzt habe. Die Stellen, die anderen Werken im Wortlaut oder dem Sinn nach entnommen wurden sind in jedem einzelnen Fall unter Angabe der Quelle als Entlehnung (Zitat) kenntlich gemacht. Das gleiche gilt für beigefügte Skizzen und Darstellungen. Ort, Datum: Unterschrift: i Inhaltsverzeichnis Erklärung i Abbildungsverzeichnis iv Tabellenverzeichnis v Abkürzungen vi 1 Einleitung 1.1 Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3 Ziel der Arbeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 1 2 2 Network Intrusion Detection Systeme 2.1 Aktives NIDS . . . . . . . . . . . . . . . . . . 2.2 Passives NIDS . . . . . . . . . . . . . . . . . 2.3 Funktion eines NIDS . . . . . . . . . . . . . . 2.3.1 Erkennung von Angriffsmustern . . . . 2.3.2 Abweichung vom Normalverhalten . . 2.3.2.1 Protokollanalyse . . . . . . . 2.3.2.2 Erkennung durch Statistische 2.3.3 Korrelation von Ereignisdaten . . . . . 2.4 Aufbau von NIDS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3 4 5 5 6 6 7 8 9 3 Snort 3.1 Installation und erste Konfiguration 3.2 Die Arbeit mit Snort . . . . . . . . . 3.2.1 Programmaufruf . . . . . . . 3.3 Snort Regeln . . . . . . . . . . . . . 3.3.1 Aufbau der Snort Regeln . . 3.3.2 Beispielregel . . . . . . . . . . 3.4 Präprozessoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 11 12 12 13 14 16 16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Schwächen von NIDS 18 4.1 Session Splicing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 4.2 Denial of Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 4.3 Weitere Schwächen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 ii Inhalt 5 Praktikum 5.1 Lösungen . . . 5.1.1 Aufgabe 5.1.2 Aufgabe 5.1.3 Aufgabe 5.1.4 Aufgabe Literaturverzeichnis iii . 1 2 3 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 25 25 25 26 26 27 Abbildungsverzeichnis 2.1 2.2 2.3 Aktives NIDS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Passives NIDS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mögliche Layouts für ein NIDS . . . . . . . . . . . . . . . . . . . . . . . . 3.1 3.2 Aufbau einer Snort Regel . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Snort Beispielregel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 4.1 4.2 Beispielregel Session Splicing . . . . . . . . . . . . . . . . . . . . . . . . . 19 Session Splicing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 5.1 5.2 5.3 5.4 5.5 Aufgabe Aufgabe Aufgabe Aufgabe Aufgabe 2 2 3 3 4 Lösungsmöglichkeit 1 Lösungsmöglichkeit 2 Lösung 1 . . . . . . . Lösung 2 . . . . . . . Lösung 1 . . . . . . . . . . . . iv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 5 9 25 25 26 26 26 Tabellenverzeichnis 3.1 3.2 3.3 Mögliche Aktionen für Snort Regeln . . . . . . . . . . . . . . . . . . . . . 14 Sonderzeichen bei der Angabe von Quell- und Zieladresse . . . . . . . . . 15 Mögliche Rule-Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 v Abkürzungen NIDS Network Intrusion Detection System IDS Intrusion Detection System IDPS Intrusion Detection and Prevention System (D)DoS (Distributed) Denial Of Service TTL Time To Live MTU Maximum Transmission Unit NIDPS Network Intrusion Detection and Prevention System vi Kapitel 1 Einleitung 1.1 Einleitung In diesem Kapitel wird die Motivation der Arbeit dargestellt. Darauf folgend wir das Ziel und die Gliederung der Ausarbeitung vorgestellt. 1.2 Motivation Vernetzte Computersysteme sind aus der heutigen Welt nicht mehr wegzudenken. Egal, ob nun beim Online-Shopping von der Couch oder bei der Zusammenarbeit mit Geschäftspartnern auf der ganzen Welt, es gibt kaum einen Bereich, in dem Computernetze noch keinen Einzug gehalten haben. Gerade deshalb ist es um so wichtiger diese Systeme vor Angriffen zu schützen, denn bei all den Vorteilen die eine Netzwerk-Infrastruktur mit sich bringen kann, birgt diese auch zahlreiche Gefahren für Unternehmen und Privatpersonen. Neben den etablierten Systemen wie Firewalls und Virenscanner erlauben Network Intrusion Detection Systeme das Erkennen und Abwehren von Angriffen auf das eigene Netzwerk. 1 Einleitung 1.3 2 Ziel der Arbeit Das Ziel dieser Ausarbeitung ist zunächst die allgemeine Betrachtung von Network Intrusion Deteciton Systemen. Hierzu werden zunächst verschiedene NIDS-Varianten vorgestellt und deren unterschiedliche Funktions- und Arbeitsweisen betrachtet. Des Weiteren wird mit Snort ein frei Verfügbares Open-Source NIDS-System vorgestellt und an Hand einiger praktischer Beispiele die Arbeit mit diesem demonstriert. Hauptaugenmerk hierbei liegt dabei auf der Erstellung von Erkennungs-Regeln für Snort. In einem weiteren Kapitel werden daraufhin Möglichkeiten aufgezeigt, wie ein Network Intrusion Detection System umgangen werden kann und Probleme und Schwächen von Network Intrusion Detection Systemen angesprochen. Ein letztes Kapitel umfasst zudem verschiedene Übungen zum Umgang und der Arbeit mit Snort und die zugehörigen Lösungen. Kapitel 2 Network Intrusion Detection Systeme Wie der Name bereits andeutet, bezeichnet man mit Network Intrusion Detection System bezeichnet ein System, welches dazu eingesetzt wird, Angriffe auf ein Netzwerk zu erkennen. Hierzu kann je nach eingesetztem System eine Alarm, etwa per E-Mail oder SMS, ausgelöst und der Angriff beziehungsweise die verdächtigen Pakete zur Analyse oder gar als Beweismittel protokolliert werden. Während Firewalls den Netzwerkverkehr einfach nach festgelegten Regeln blockieren, wird bei einem NIDS der Datenstrom mitgelesen und auf bestimmte Eingenschaften hin untersucht. Auf diese Weise können Angriffe wie (D)Dos, Sniffing oder Spoofing und auch die Aktivität von Viren, Trojanern oder Botnetzen festgestellt werden.[14]. Je nach Implementierung des Systems unterscheidet man dabei zwischen aktiven- und passiven Network Intrusion Detection Systemen. 2.1 Aktives NIDS Bei einem aktiven, auch Inline genannten, Network Intrusion Detection System sitzt das NIDS in der Regel an einem Übergang zwischen zwei Netzwerksegmenten. Dies hat zur Folge, dass bei dieser Variante der gesamte Datenverkehr, der in das Netz hinein oder heraus fließt, verarbeitet werden kann, beziehungsweise durch das Intrusion Detection System verarbeitet werden muss. 3 Network Intrusion Deteciton Systeme 4 Abbildung 2.1: Aktives NIDS Die Implementierung eines aktiven NIDS erfolgt entweder durch ein eigenständiges Netzwerkgerät oder in dem man etwa eine Firewall oder einen Switch mit einem Network Intrusion Detection System kombiniert [16]. Da bei einem aktiven NIDS der durchfließende Verkehr direkt verarbeitet wird, kann mit diesem System bei einem möglichen Angriffsfall nicht nur ein Alarm ausgelöst, sondern auch aktiv in die Datenübertragung eingegriffen werden. Je nach eingesetztem NIDS können auf diese Weise etwa verdächtige Pakete abgewiesen, der Payload, also die eigentlichen Nutzdaten der Pakete bearbeitet oder Regeln der Firewall verändert werden. Bei einem System, dass in einem Angriffsfall aktiv in den Datenverkehr eingreift handelt es sich jedoch genau genommen nicht mehr um ein NIDS, in diesem Fall spricht man in der Regel von einem Network Intrusion Detection and Prevention System (NIDPS). Ein Nachteil eines aktiven Network Intrusion Deteciton Systemes zeigt sich jedoch, wenn die Netzwerklast die Kapazität des NIDS überstigt. In diesem Fall lässt das Network Intruison Detection System den Verkehr in der Regel ungeprüft passieren lässt, um die Netzwerk-Kommunikation nicht zu beeinträchtigen und kann in diesem Moment keinen Schutz mehr bieten, was ein möglichen Angriffsvektor darstellt. Mehr zu diesem Thema finden Sie im Abschnitt 4.2. Solche aktiven NID-Systeme sind oftmals als Komplettlösung, bestehend aus spezieller Hardware und der dazugehörigen Software, erhältlich. Als Beispiel wäre hier etwa die IDP-Serie der Firma Juniper zu erwähnen [4]. 2.2 Passives NIDS Die zweite Möglichkeit, ein NIDS zu betreiben ist im passiven Modus. Hierbei verarbeitet das Network Intrusion Detection System den Verkehr nicht direkt, sondern untersucht nur eine Kopie des anfallenden Datenstromes. Im einfachsten Fall besteht diese Implementierung aus einem gewöhnlichen Host, dessen Netzwerkinterface im sogenannten Network Intrusion Deteciton Systeme 5 ”Promiscious Mode” Netzwerkverkehr mitschneidet und einer NIDS-Software die die Datenpakete nach bestimmten Regeln verarbeitet. Siehe hierzu Abbildung 2.2. Da nur eine Kopie des Datenverkehres bearbeitet wird, kann im Gegensatz zu aktiven Systemen bei einem passiven System bei einem möglichen Angriff nicht aktiv eingegriffen werden. Hier wird in der Regel lediglich ein Alarm, etwa in Form einer Meldung auf dem Bildschirm oder einer E-Mail ausgelöst und der potentiell gefährliche Verkehr in eine Log-Datei geschrieben. Gerade in großen Netzwerken mit hohem Datenaufkommen kann ein passives im Vergleich zu einem aktiven NIDS einen Performance-Vorteil bedeuten, da der Datenverkehr kein extra Verarbeitungsschritt durchlaufen muss. [16] Abbildung 2.2: Passives NIDS 2.3 Funktion eines NIDS Es gibt verschiedene Möglichkeiten, auf die ein Network Intrusion Detection System ungewollten Verkehr erkennen kann. Hierzu unterscheidet man zwischen der Erkennung von Angriffsmustern, der Erkennung auf Grund von Abweichung des Normalverhaltens und der Erkennung von Angriffen auf Grund Korrelation von Ereignisdaten. 2.3.1 Erkennung von Angriffsmustern Die am weitesten verbreitete Funktionsweise ist die Erkennung von Angriffsmustern, auch Pattern Matching genannt. Hierbei wird der Datenstrom einfach mit Verhaltensmustern bekannter Angriffe abgeglichen. Für die Erkennung der Angriffe können hierbei alle Details des TCP-Verkehres, wie etwa gesetzte Flags, der Payload oder auch der TTL-Wert eines Paketes, verwendet werden. Auf diese Weise kann etwa gezielt nach Paketen gesucht werden, bei denen sowohl das SYN als auch das FIN Flag gesetzt ist, Network Intrusion Deteciton Systeme 6 da diese Eigenschaft charakteristisch für einen sogenannten SYN-FIN-Netzwerkscan ist und bei normalen Datenverkehr nicht auftaucht. Der Vorteil dieser Methode ist, dass sie einfach zu implementieren und auch zu verstehen ist, da einfach nur für jeden Angriff eine passende Signatur erstellt werden muss. Ein solches System kann in der Regel auch einfach vom Nutzer erweitert und angepasst werden in dem eigene Regeln hinzugefügt werden. Zusätzlich bieten die meisten Hersteller von NIDS-Systemen in regelmäßigen Abständen Signaturen für neue Angriffe an, sodass die Konfiguration des Systemes nicht ausschließlich in den Händen des Endnutzers liegt. Die Kehrseite dieser Methode ist es, dass eine große Anzahl an Regeln notwendig sind um einen ausreichenden Schutz zu gewährleisten, da wirklich nur Angriffe erkannt werden können, deren Signatur implementiert ist. Gleichzeitig kann dieses System bei der Verwendung von unscharfen Regeln jedoch auch zu vielen Fehlalarmen führen was wiederum einen hohen Wartungsaufwand mit sich bringt. [12, 15] 2.3.2 Abweichung vom Normalverhalten Im Gegensatz zur Erkennung von Angriffsmustern liegt diesem Ansatz kein fester Regelsatz vor. Dieser Herangehensweise liegt die Annahme zu Grunde, dass Angriffe und unerwünschtes Verhalten durch eine Abweichung vom Normalverhalten eines Systemes erkennbar sind. Ziel ist es daher, durch verschiedene Methoden Abweichungen von einem zuvor festgelegten Normalverhalten zu erkennen. 2.3.2.1 Protokollanalyse Der Protokollanalyse liegt das Normalverhalten zu Grunde, welches in den Spezifikationen der überwachten Protokolle festgelegt wurde. Bei der Erkennung von Angriffen macht man sich zu Nutze, dass viele Angriffe auf Computernetze von diesem Normalverhalten abweichen. Beispiele hierfür sind etwa absichtlich falsch gesetzte Flags die Beispielsweise bei einem Stealth- oder XMas-Scan [12, 92-101] eingesetzt werden, oder ungewöhnliche Paketgrößen. Da nur die festgelegten Spezifikationen eingetragen werden müssen ist ein System zur Protokollanalyse einfach zu implementieren und zu pflegen. Gleichzeitig weißt es eine sehr gute Performance auf, da im Gegensatz zum Pattern Matching nur eine geringe Anzahl an Regeln abgearbeitet werden müssen. Jedoch schützt Network Intrusion Deteciton Systeme 7 auch dieses System nicht vollständig vor Angriffen. Angriffe, die etwa auf Fehlern oder Unschärfe der Protokollspezifikationen beruhen werden durch eine Protokollanalyse nicht erfasst. 2.3.2.2 Erkennung durch Statistische Daten Eine weitere Möglichkeit Angriffe auf ein Netzwerk zu erkennen basiert auf der Auswertung von Statistischen Daten. Auch in diesem Fall liegt die Annahme zu Grunde, dass sich ein System im Falle eines Angriffes von einem Normalsystem unterscheidet. Um nun einen Angriff zu erkennen werden möglichst viele statistische Daten gesammelt. Mögliche Werte sind hierbei etwa die durchschnittliche CPU-Last, die Zugriffszeit auf ein bestimmtes System oder die Häufigkeit von fehlgeschlagenen Anmeldungen. Erkennt nun das System eine Abweichung von diesen Standard-Werten so wird ein Angriff auf das System angenommen. Der Nachteil dieser Methode ist, dass er für jedes System komplett individuell konfiguriert werden muss und daher sehr Fehlerträchtig ist. Es gibt jedoch verschiedene Ansätze durch die die Leistung eines auf statistischen Daten basierenden NIDS verbessert werden kann. Hierzu zählen zum Beispiel der Einsatz von Honeypots und und künstlicher Intelligenz. Mit Honeypot bezeichnet man einen Rechner in einem Netzwerk, der sozusagen als Falle für einen Angreifer dient. Im Falle eines NIDS wird hierzu in der Regel ein Rechner verwendet auf dem keine Programme oder Dienste laufen. Auf diese Weise kann man davon ausgehen, dass jegliche Aktivität die auf diesem System zu beobachten ist eine ungewollte und somit ein potentieller Angriff ist. Nachteil an dieser Methode ist jedoch, dass ein Honeypot je nach Standort im Netzwerk unter Umständen nicht alle Angriffe registrieren kann und gleichzeitig muss ein Angriff auf einen Honeypot auch nicht unbedingt einen Angriff auf ein Produktivsystem bedeuten. Ziel bei der Verwendung von künstlicher Intelligenz ist die Erstellung eines Systems, welches selbstständig lernt welches Verhalten normal und welches böse ist und die Regeln und das Verhalten des Network Intrusion Detectin Systemes selbstständig anpasst. Da solche Systeme auf dem heutigen Stand der Technik jedoch noch sehr Fehleranfällig sind findet diese Technik hauptsächlich in der Forschung eine Anwendung. Network Intrusion Deteciton Systeme 2.3.3 8 Korrelation von Ereignisdaten Die bisher beschriebenen Technologien, mit Ausnahme der Erkennung an Hand von Statistischen Daten, betrachten bei der Untersuchung den Verkehr Paket für Paket und entscheiden dann an Hand eines einzigen Paketes, ob dieses teil eines Angriffes ist oder nicht. Zwar lassen sich auf diese Weise viele Angriffe zuverlässig erkennen, doch es gibt auch Angriffe die genau diesen Umstand ausnutzen um unentdeckt zu bleiben. So lässt sich etwa der Netzwerkscanner nmap etwa in einem sogenannten paranoiden Modus betreiben [8] in dem nur alle 15 Minuten ein Port gescannt wird. Um auch solchen Angriffen auf die Schliche zu kommen setzen manche Systeme auf die Korrelation von Ereignisdaten. Dabei wird der Datenverkehr nicht nur untersucht sondern auch über längere Zeit gespeichert, sodass auch zeitlich auseinanderliegende Ereignisse miteinander in Verbindung gebracht werden können. So ist etwa ein versuchter Verbindungsaufbau an einem bestimmten Port für sich betrachtet kein außergewöhnliches oder gar unbedingt gefährliches Ereignis. Sieht man jedoch über längere Zeit, dass von der gleichen IP nacheinander Verbindungen zu allen Ports aufgebaut werden, so lässt das auf einen Netzwerkscan schließen. Auch diese Methode ist jedoch nicht ohne Nachteile. So muss bedacht werden dass vor allem in größeren Unternehmen sehr großer Datenverkehr anfällt was in einer sehr großen Datenmenge resultiert, die gespeichert und verarbeitet werden muss. Zudem kann es bei der Speicherung der Daten Konflikte mit dem Datenschutz geben. Network Intrusion Deteciton Systeme 2.4 9 Aufbau von NIDS Je nach gewünschtem Einsatzgebiet gibt es unterschiedliche Möglichkeiten ein Intrusion Detection System in einem Netzwerk zu installieren. Abbildung 2.3 zeigt ein schematisches Netzwerk wobei die Kameras mögliche Standorte für NID-Systeme darstellen. Abbildung 2.3: Mögliche Layouts für ein NIDS Installiert man ein NIDS an Position eins, also zwischen Firewall und Internet, so kann dieses System alle Angriffe auf ein Netzwerk erkennen, auch diejenigen, die eigentlich von der Firewall abgewehrt werden. An Hand dieser Daten kann man etwa überprüfen, ob eine Firewall ausreichend konfiguriert ist. Ein Network Intrusion Deteciton System an dieser Position muss jedoch auch am meisten Traffic verarbeiten, muss also entsprechend performant sein. Da dieses System vor der Firewall sitzt, werden hier auch entsprechend viele Angriffe registriert was den höchsten Verwaltungsaufwand bedeutet. Ein System an Position zwei hingegen sieht nur den Verkehr, der von der Firewall nicht geblockt wurde also tatsächlich ins Netzwerk gelangen ist. Ein NIDS an dieser Stelle eignet sich besonders gut um zu prüfen, wie zuverlässig die Firewall arbeitet. Wird an dieser Position ein aktives Network Intrusion Detection System installiert, so kann dies genutzt werden um Angriffe, die nicht von der Firewall geblockt, wurden zu verarbeiten. Da dieses Network Intrusion Detection System nur noch die Angriffe erkennt, die nicht bereits von der Firewall blockiert wurden, treten an dieser Stelle weniger Alarme auf. Es ist mit einem Network Intrusion Deteciton System jedoch auch möglich, wie an Punkt drei gezeigt, nur einzelne Netzsektoren zu überwachen. Werden nur wichtige Systeme wie etwa Server überwacht wird der Verwaltungsaufwand gering gehalten. Diesen Vorteil Network Intrusion Deteciton Systeme 10 erkauft man sich jedoch mit der Tatsache, dass Angriffe auf andere Netzwerksektoren unerkannt bleiben. Bei den hier vorgestellten Implementierungsmöglichkeiten handelt es sich natürlich ausschließlich um Beispiele. So können NIDS-System je nach Bedarf beliebig im Netzwerk platziert und auch mehrere Systeme miteinander kombiniert werden. Bei der Wahl des Standortes gilt es letztendlich im Einzelfall abzuwägen, welche Informationen man mit einem NIDS erhalten möchte. Kapitel 3 Snort Snort ist eines der bekanntesten Open Source Network Intrusion Detecion Systeme. Es wurde ursprünglich von Martin Roesch entwickelt und bereits im Jahre 1988 in einer ersten Version veröffentlicht. In der Zwischenzeit wird Snort durch das von Martin Roesch gegründete Unternehmen Sourcefire vertrieben und ist sowohl als Version für die Betriebssysteme Windows, Linux als auch Mac erhältlich und bereits mehrere Millionen mal heruntergeladen worden. Im Jahre 2009 wurde die Software von InfoWorld sogar als ëine der besten Open Source Softwares aller Zeitenı̈n die Open Source Hall of Fame gewählt. [2] Das Unternehmen Sourcefire kümmert sich jedoch nicht nur um die stetige Weiterentwicklung der eigentlichen Software. Mit dem sogenannten Vulnerability Research Team beschäftigt Sourcefire mehrere Mitarbeiter, die laufend Signaturen für neue Angriffe erstellen, die in Kombination mit den eigenen Regeln genutzt werden können. Während Snort an sich kostenlos erhältlich ist, stehen diese offiziellen Regeln zahlenden Kunden jedoch früher zur Verfügung als den nicht zahlenden Anwendern. 3.1 Installation und erste Konfiguration Die Installationsdaten für Snort können ganz einfach auf der Homepage von Snort heruntergeladen werden[10]. Unter Linux kann Snort natürlich auch einfach über den entsprechenden Paketmanager installiert werden, unter Debian etwa mit dem Befehl 11 Snort 12 sudo apt-get install snort. Nach der Installation erstellt Snort eine StandardKonfigurationsdatei namens Snort.conf, die sich im Verzeichnis /etc/snort befindet. Zudem wird im Verzeichnis /etc/snort/rules ein Satz an Standard-Regeln erstellt, der bereits zahlreiche Angriffe durch bestimmte Trojaner und Viren, Sniffing und ähnliches erkennt. Sowohl die Regeln als auch die Datei Snort.conf kann oder besser gesagt sollte natürlich an die eigenen Bedürfnisse angepasst werden. Die Konfigurationsdatei snort.conf erlaubt es zahlreiche Einstellungen vorzunehmen. Neben der Möglichkeit Regeln direkt anzugeben oder per Pfad einzubinden können auch Variablen, etwa für die IP-Range des eigenen Netzes, angegeben oder Präprozessoren konfiguriert werden. 3.2 Die Arbeit mit Snort Im folgenden Abschnitt wird die Arbeit mit Snort beschrieben. Alle verwendeten Befehle beziehen sich dabei auf das Betriebssystem Debian Squeeze. 3.2.1 Programmaufruf Je nach gewünschter Funktionalität kann Snort auf verschiedene Weisen gestartet werden: Im Sniffing Modus, im Logging Modus und im sogenannten NIDS Modus. Der Aufruf erfolgt einfach über eine Konsole mit dem Parameter des gewünschten Modus. Sniffing Modus Der Sniffing Mode wird über den Parameter -v aufgerufen. In diesem Modus arbeitet Snort einfach als Paketsniffer, vergleichbar etwa mit TCPDump oder Wireshark und gibt die TCP-Header auf der Konsole aus [11]. Will man für eine genauere Analyse zusätzlich die Paketdaten sehen, so gelingt dies über einen Aufruf mit dem Parameter -vd. Snort 13 Loggin Modus Eine weitere Möglichkeit für einen Aufruf von Snort ist der sogenannte Logging Modus. Hierbei werden alle Daten die Snort auf dem angegebenen Interface sieht in ein angegebenes Logging-Verzeichnis geschrieben. Für einen Aufruf des Logging Modus muss man zusätzlich zu den gewünschten Parametern des Sniffing Modus noch mit -l ein Verzeichnis angeben. Ein Beispielaufruf wäre also snort -vd -l ./log In diesem Beispiel würden alle Pakete im Verzeichnis ./log gespeichert werden. NIDS Modus Der dritte Modus ist der sogenannte NIDS Modus in dem Snort den Verkehr an Hand von festgelegten Regeln verarbeitet. Für den Aufruf des NIDS Modus wird beim Aufruf mit dem Parameter -c eine Konfigurationsdatei angegeben in der die entsprechenden Regeln und Einstellungen festgelegt sind. Mit dem Aufruf snort -c snort.conf wird Snort also mit den in der Datei snort.conf festgelegten Einstellungen im NIDS Modus gestartet. 3.3 Snort Regeln Der Elementare Bestandteil von Snort sind die Regeln. Wird Snort im NIDS Modus gestartet, so verarbeitet das Programm den untersuchten Verkehr Paket für Paket und überprüft dabei, ob eine der angegebenen Regeln auf das aktuelle Paket zutrifft. Ist dies der Fall, so wird das Paket wie in der Regel festgelegt verarbeitet und eine eventuell definierte Aktion ausgeführt. Die einzelnen Regeln werden dabei von oben nach unten durchgearbeitet - für ein Paket wird nur die erste gefundene Regel angewandt. Snort 14 Name alert log pass activate dynamic Aktion Meldung wird ausgelöst und Paket geloggt Paket wird nur aufgezeichnet Paket wird nicht verarbeitet Löst Alert aus und aktiviert dynamische Regel Regel inaktiv bis sie durch ein Acivate-Event aktiviert wurde Tabelle 3.1: Mögliche Aktionen für Snort Regeln 3.3.1 Aufbau der Snort Regeln Jede Snort Regel besteht aus zwei grundlegenden Teilen, dem sogenannten Header und den Options. Der Header setzt sich weiterhin aus demAktions Feld, dem Protokol Feld und dem Quell und Zieladressen Feld zusammen. Abbildung 3.1: Aufbau einer Snort Regel Im Aktions Feld muss zuerst angegeben werden, welche Aktion bei einem Paketfund ausgeführt werden soll. Hierbei sind die in Tabelle 3.1 aufgeführten Werte möglich. Wird Snort als aktives Network Intrusion Detection System betrieben ist es zudem möglich, weitere Aktionen wie zum Beispiel drop, reject oder sdrop anzugeben, wodurch ein Paket verworfen, abgelehnt beziehungsweise verworfen wird, ohne dass ein Eintrag in das Log-File geschrieben wird. Im nächsten Feld, dem Protokoll Feld wird das Protokoll angegeben, nach dem gesucht wird. In der aktuellen Version 2.9.4.6 stehen hierfür die Protokolle TCP, UDP, ICMP oder IP zur Verfügung. Im Quell- und Ziel-Adressfeld des Headers wird der IP-Adressbereich und der Port für die Pakete festgelegt, auf die die Regel gilt. Hierzu können zum einen einzelne IP-Adressen oder mit Hilfe der sogenannten CIDR-Notation ganze Subnetze angegeben werden. Zwischen den beiden IP Adressen beziehungsweise Adress-Bereichen gibt ein Pfeil, symbolisiert durch -> die Flussrichtung der zu untersuchenden Pakete an. Snort 15 Zeichen any ! 20:22 :1023 1023: Bedeutung Beliebige IP oder Port Adresse oder Port negieren Port-Bereich ’kleiner als’ ’größer als’ Tabelle 3.2: Sonderzeichen bei der Angabe von Quell- und Zieladresse 10.0.1.0/24 80 -> 192.168.10.0/24 80 Folgende Zeile etwa legt fest, dass diese Regel nur auf Pakete angewandt wird, die aus dem Subnetz 10.0.1.0/24 von Port 80 kommen und an eine Adresse im IP-Bereich 192.168.10.0/24 an Port 80 adressiert sind. Zur Festlegung des Quell- und Ziel-Adressbereiches sind verschiedene Sonderschreibweisen möglich, die es etwa ermöglichen PortBereiche anzugeben. Siehe hierzu Tabelle 3.2 In den Regel Optionen können weitere Merkmale angegeben werden, nach denen die Pakete untersucht werden. Hierzu stehen nahezu alle Felder eines Datenpaketes zur Verfügung. Bei einem TCP Paket kann etwa nach gesetzten Control-Flags Ausschau gehalten oder der Payload nach bestimmten Strings durchsucht werden. Eine kleine Auswahl an möglichen Optionen findet sich in der Tabelle 3.3. Hierbei handelt es sich jedoch längst nicht um alle möglichen Optionen, eine vollständige Liste finden Sie im Snort Manual [11]. Zwei wichtige Options die gesondert erwähnt werden sollten sind msg und sid. Mit msg legen Sie eine Nachricht fest, die im Logfile über dem aufgezeichneten Paket angezeigt wird und kann somit veranschaulichen auf Grund welcher Regel das Paket geloggt wurde. Bei sid handelt es sich um eine eindeutige ID die jeder Regel zugeordnet werden muss. Bei der Vergabe der SIDs sollte jedoch beachtet werden, dass die Zahlen zwischen 1 und 1.000.000 für Regeln reserviert sind, die von Snort mitgeliefert werden. Zudem muss jeder Regel eine eindeutige SID zugeordnet werden, fehlt bei einer Regel die SID so gibt Snort eine Fehlermeldung aus und lässt sich nicht starten. Snort 16 Option flag content dsize ttl fragbits Auswirkung Gesetzte TCP-Flags String im Payload Größe des Payloads TTL-Wert Gesetzte Fragbits Tabelle 3.3: Mögliche Rule-Options 3.3.2 Beispielregel alert tcp !10.1.1.0/24 any -> 10.1.1.0/24 any / (flags: SF; msg: ”SYN-FIN-Scan”; sid: 123456;) Abbildung 3.2: Snort Beispielregel In Figur 5.1 ist eine Beispielregel für Snort zu sehen. Diese Regel löst einen Alert mit der Nachricht SYN-FIN-Scan aus, wenn folgende Eigenschaften zutreffen: • Es handelt sich um ein TCP Paket • Das Paket stammt nicht aus dem Subnetz 10.1.1.0/24 • Seine Zieladresse liegt im Subnetz 10.1.1.0/24 • Quell- und Ziel-Port sind beliebig • Es sind die TCP-Flags S und F gesetzt 3.4 Präprozessoren Der Funktionsumfang von Snort lässt sich mit Hilfe verschiedener Präprozessoren um zusätzliche Funktionen erweitern. Bei Präprozessoren handelt es sich um optionale Pakete die die Datenpakete vor der eigentlichen Überprüfung an Hand der Regeln verarbeiten. So kann der Verkehr etwa zusätzlich auf bestimmte Angriffsmuster untersucht oder im Folgenden genauer und effektiver analysiert werden. Den Präprozessoren ist es dabei sowohl möglich einzelne Pakete zu analysieren als auch etwa den Payload zu verändern. Zur Nutzung der Präprozessoren werden diese einfach in der Snort Konfigurationsdatei mit dem Aufruf preprocessor [name]: [option] mit den gewünschten Optionen aufgerufen. Bekannte Präprozessoren sind etwa: Snort 17 Stream5 Mit diesem Präprozessor kann TCP Verkehr defragmentiert werden. Wie in Kapitel 4.1 gezeigt wird, kann die Fragmentierung von TCP Paketen dazu genutzt werden um NIDS-Systeme zu umgehen. Durch die Defragmentierung des Verkehres lassen sich die verschleierten Angriffe dennoch erkennen. Arpspoof Dieser Präprozessor dient zur Erkennung von Arp-Spoofing Angriffen sfPortscan Der Präprozessor sfPortscan ermöglicht es TCP- UDP- und IP-Portscans zu entdecken. Reputation Mit diesem Präprozessor können IP-Adressen auf eine White- oder Blacklist gesetzt werden und dadurch der Zugriff limitiert werden. Wie auch bei den Regel Optionen sei an dieser Stelle gesagt, dass es sich hierbei nur um einen kleinen Auszug der verfügbaren Präprozessoren handelt. Eine umfangreiche Liste finden Sie ebenfalls in der Dokumentation von Snort. [11] Kapitel 4 Schwächen von NIDS Wie bei allen Sicherheitssystemen im Bereich der IT, bietet auch ein Network Intrusion Detection System keinen vollständigen Schutz vor Angriffen auf das überwachte System. Wie bereits in Kapitel 2.3 angesprochen weißen Network Intrusion Detection je nach Implementierung verschiedene, charakteristische Schwächen auf, die von einem Angreifer für seine Zwecke ausgenutzt werden können. Im Folgenden werden mehrere mögliche Angriffsszenarien dargestellt die solche Schwächen nutzen um das System zu umgehen. 4.1 Session Splicing Eine Möglichkeit einen Angriff auf ein Netzwerk auszuführen, der von einem Network Intrusion Deteciton System unerkannt bleibt, ist das sogenannte Session Splicing. Grundlage hierfür ist, dass das Payload-Feld eines TCP-Paketes keine feste Größe hat, sondern sich über die sogenannte Maximum Transmission Unit festlegen lässt. Die MTU gibt an, wie groß ein TCP-Frame maximal sein darf - ist die zu übertragende Datenmenge zu groß für ein einzelnes Paket, so wird sie auf mehrere Pakete aufgeteilt. Da Snort in der Standard-Einstellung den Datenverkehr Paket für Paket bearbeitet und somit keine Informationen über vorhergegangene Pakete zur Verfügung stehen, kann dieser Umstand dazu ausgenutzt werden um auf einfache Weise einen Angriff unbemerkt an einem Network Intrusion Detection System vorbei zu schleusen. Die in Abbildung 4.1 dargestellte Regel durchsucht den Datenverkehr nach Paketen, die den String www.evil.com enthalten. Da bei einem Aufruf einer Internetseite die 18 Schwächen von NIDS 19 alert tcp !10.1.1.0/24 any -> 10.1.1.0/24 any / (content: ”www.evil.com”; msg: ”Aufruf von Evil.com”; sid: 123456;) Abbildung 4.1: Beispielregel Session Splicing aufgerufene Adresse an den Client übertragen werden muss, würde die dargestellte Snort Regel im Normalfall bei einem Aufruf der Internetseite www.evil.com einen Alert auslösen. Wird die MTU der zu übertragenden Pakete jetzt jedoch soweit verringert, dass die Adresse nicht mehr als zusammenhängender String übertragen werden kann sonder aufgeteilt werden muss, so schlägt das NIDS nicht mehr an. Abbildung 4.2: Session Splicing Abbildung 4.2 zeigt etwa einen Fall, in dem der String www.evil.com in die zwei Teilstrings www.e und vil.com zerlegt wurde. Für das Network Intrusion Detection System trifft für keinen der beiden Teilstrings die Regel 4.1 zu. Der Client, für den die Pakete bestimmt sind, setzt diese jedoch wieder zusammen und erhält damit unbemerkt NIDS die Adresse www.evil.com. Diese Methode der Umgehung von NIDS kann auf verschiedene Weisen modifiziert werden. Da jedes TCP Paket eine eindeutige Sequenz Nummer enthält, an Hand deren der Empfänger den TCP-Verkehr in der richtigen Reihenfolge zusammen setzen kann ist es dem Angreifer möglich, die Pakete in vertauschter Reihenfolge zu verschicken. Wie bereits angedeutet kann diese Art der Verschleierung durch den Einsatz eines Präprozessors verhindert werden. Wird etwa der Präprozessor Stream5 eingesetzt, so werden fragmentierte Pakete vor der Untersuchung durch die Regeln wie auf dem Client zusammengesetzt wodurch der Angriffsversuch erkannt werden kann. Schwächen von NIDS 4.2 20 Denial of Service Eine weitere, wenn auch nicht so unauffällige Methode, ein Network Intrusion Detection System zu umgehen ist ein sogenannter Denial of Service Angriff. Bei einem Denial of Service Angriff wird das System soweit ausgelastet, dass es seine eigentliche Tätigkeit, in diesem Fall das Überprüfen des Datenverkehres, nicht mehr ausführen kann. Um den Netzwerkverkehr nicht zu blockieren sind die meisten NID-System standardmäßig so konfiguriert, dass der Verkehr bei zu hoher Last nicht mehr überprüft wird. Ein Angreifer kann nun ein Netzwerk etwa mit Verbindungsanfragen oder vermeintlichen Angriffen fluten, bis das NIDS überlastet ist und den weiteren Verkehr und somit auch den eigentlichen Angriff passieren lässt. Ein Denial of Service Angriff kann jedoch nicht nur durch einen Angreifer ausgelöst werden sondern auch das Resultat einer unsorgfältigen Implementierung sein. Muss ein NIDS mehr Verkehr verarbeiten, als die Hardware verkraften kann so kann es auch bei normalem Datenverkehr ohne Eingriff eines Angreifers zu einem Ausfall des Systems und damit zu unerkannten Angriffen kommen. 4.3 Weitere Schwächen Wie bereits beschrieben hängt die Sicherheit eines NIDS Systems vor allem von der Qualität der eingesetzten Regeln ab. Sind die Regeln zu strikt, werden unter Umständen nicht alle Angriffe erkannt, sind die Regeln zu unscharf können viele Fehlalarme auftreten, was die Arbeit mit dem System erschwert. Werden tatsächliche Angriffe auf Grund von zu vielen Fehlalarmen übersehen, wird auch die Sicherheit des Netzwerkes beeinträchtigt. Da ein passives System die einzelnen Angriffe nur protokolliert müssen hier die ausgegebenen Alerts von Hand überprüft und im einzelnen entschieden werden, ob es sich tatsächlich um einen Angriff handelt oder nicht und wie weiter verfahren werden soll. Hierzu kommt, dass es oftmals umfangreiche Kenntnisse der Netzwerk-Protokolle benötigt, um einen tatsächlichen Angriff von einem Fehlalarm zu unterscheiden, was die Wartung eines Network Intrusion Detection Systemes sehr kompliziert und zeitaufwändig macht. Schwächen von NIDS 21 Um einen ausreichenden Schutz für das überwachte System bieten zu können, sollte ein Network Intrusion Detecion System niemals alleine, sondern ausschließlich in Kombination mit anderen Sicherheits-Systemen wie etwa Virenscanner und Firewalls verwendet werden. Kapitel 5 Praktikum Für die folgenden Übungsaufgaben stehen zwei VMs zur Verfügung: Kali Angreifer • Benutzername: root • Passwort: toor • Netzwerk: Host Only Debian NIDS-Host • Benutzername: user • Passwort: user • Root Passwort: toor • Netzwerk: Host Only • Installierte Programme: Snort, ProFTPD Beide VMs müssen sich im gleichen Subnetz befinden. Dies kann über die Befehle ifconfig und ifconfig eth0 [ip] sichergestellt werden. Auf dem Desktop der Debian-VM befindet sich zudem das Handbuch von Snort im PDF Format 22 Praktikum 23 Aufgabe 1: Snort starten Die erste Aufgabe besteht darin, sich mit Snort vertraut zu machen. Beantworten Sie dazu folgende Fragen: • Wie wird Snort gestartet? • Wie wird Snort in den einzelnen Modi gestartet? (Logging, NIDS) • Wo befindet sich die Beispielkonfiguration snort.conf? Aufgabe 2: Google.de In der folgenden Aufgabe soll Snort dazu eingesetzt werden, beim Aufruf von bestimmten Seiten Alarm zu schlagen. • Erstellen Sie eine Regel, die beim Aufruf der Seite Google.de einen Alert auslöst. Legen Sie dazu eine neue Konfigurationsdatei an und starten Sie Snort mit dieser. Für diesen Test muss die VM auf Bridge oder NAT eingestellt werden. • Überprüfen Sie an Hand der gespeicherten Alert-Meldungen, ob die Regel ausgeführt wurde • Zusatzaufgabe: Das Logfile snort.log.[Nummer] kann mit Snort betrachtet werden • Welche Nachteile kann es haben, wenn hier einfach mit der Option content auf einen String geprüft wird? Aufgabe 3: FTP In Aufgabe drei wird Snort für die Überwachung eines FTP-Servers eingesetzt. Dazu läuft auf der Debian-VM ein ProFTPD-Server, der zum Testen verwendet werden kann. Angelegte Nutzer sind: Praktikum 24 Username Passwort admin passwort123 user user • Erstellen Sie eine Regel, die einen Verbindungsversuch mit dem Benutzernamen admin loggt • Erstellen Sie eine Regel, die bei einem Fehlgeschlagenen Anmeldeversuch einen Alert auslöst • Testen Sie auch hier an Hand des Log-Files und der gespeicherten Alert-Meldungen, ob Ihren Regeln richtig angewendet wurden. Aufgabe 4: Netzwerk-Scan erkennen Die Letzte Aufgabe besteht darin, einen Port-Scan zu erkennen. • Erstellen Sie eine Regel, die einen sogenannten FIN-Scan erkennt und lassen Sie einen Alert ausgeben. Der Scan kann mit dem Kommando nmap -sF [IP] ausgeführt werden. Praktikum 25 5.1 Lösungen 5.1.1 Aufgabe 1 Snort kann in verschiedenen Modi gestartet werden: Sniffing Modus snort -v Logging Modus snort -l ./logFile NIDS Modus snort -c snort.conf Die Beispielkonfigurationsdatei befindet sich an unter folgendem Pfadetc/snort/snort.conf 5.1.2 Aufgabe 2 Diese Aufgabe kann auf mehrere Wege gelöst werden. Eine Möglichkeit ist, in den übermittelten Paketen nach dem String google.de zu suchen. alert tcp any any -> any any / (content: ”google.de”; msg:”Aufruf von Google.de”; sid: 123456;) Abbildung 5.1: Aufgabe 2 Lösungsmöglichkeit 1 Diese Regel ist zwar einfach, und löst bei einem Aufruf von Google einen Alarm aus, wird jedoch auch getriggert, wenn etwa auf einer anderen Seite nach dem String ”google.de” gesucht wird und dieser unverschlüsselt übertragen wird. Sauberer aber auch aufwändiger wäre deshalb etwa die IPs von Google anzugeben (msg: ”Aufruf von Google”; sid: 123456;) Abbildung 5.2: Aufgabe 2 Lösungsmöglichkeit 2 Hierbei muss jedoch beachtet werden, dass Google mehrere IPs besitzt, die alle eingetragen werden müssen um eine sichere Regel zu schreiben. Praktikum 26 log tcp any any -> [IP vom FTP-Server] 21 / (content: ”admin”; msg:”FTP Login Versuch”; sid: 123456;) Abbildung 5.3: Aufgabe 3 Lösung 1 5.1.3 Aufgabe 3 Um einen Anmeldeversuch an einem FTP-Server mit dem Account admin Aufzuzeichnen bietet es sich an, nach dem String admin Ausschau zu halten. Um einen fehlgeschlagenen Login-Versuch zu erkennen, empfiehlt es sich die FTP-Fehlercodes auszunutzen. Schlägt ein login fehl, so sendet der FTP-Server eine Antwort mit dem Fehlercode 530. log tcp [IP vom FTP-Server] 21 -> $HOME NET any / (content: ”530”; msg:”Fehlgeschlagener FTP-Login”; sid: 123456;) Abbildung 5.4: Aufgabe 3 Lösung 2 Hierbei ist zu beachten, dass dies eine Antwort vom FTP-Server ist, also eingehende Pakete zu untersuchen sind. 5.1.4 Aufgabe 4 Ein SYN-FIN-Scan ist ein Scan, bei dem die SYN-ACK-Sequenz Sofort mittels eines gesetzten FIN-Flags abgebrochen wird. Charakteristisch ist daher ein gesetztes FINFlag im Paket mit der Sequenznummer 1. log tcp !$HOME NET any -> $HOME NET any / (msg:”SYN-FIN-Scan”; seq:1; flags:F; sid: 123456;) Abbildung 5.5: Aufgabe 4 Lösung 1 Literaturverzeichnis [1] L. Todd Heberlein Karl N. Levitt Biswanath Mukherjee. on Detection. Network Intrusi- http://wenke.gtisc.gatech.edu/ids-readings/network_id. pdf, 22.08.2011. [2] Bloomberg. Sourcefire named to infoworld’s open source hall of fame. http://www. bloomberg.com/apps/news?pid=newsarchive&sid=aaCpMAb3DbU0. [3] BSI. BSI-Leitfaden zur Einführung von Intrusion-Detection-Systemen. https: //www.bsi.bund.de/DE/Publikationen/Studien/ids02/zus_htm.html, 2010. [4] Juniper. Idp series intrusion detection and prevention: Application and net- work intrusion detection - juniper networks. http://www.juniper.net/us/en/ products-services/security/idp-series/. [5] Carsten Crantz Markus Kobe. Seminararbeit - Intrusion Detection System. http://www.informatik.uni-hamburg.de/RZ/lehre/18.415/seminararbeit/ 8_IDS.pdf, 17.04.2003. [6] Martin Roesch. Snort - Lightweight Intrusion Detection for Networks. http: //www.mathcs.richmond.edu/~dszajda/classes/cs334/papers/snort.pdf, 11.08.2009. [7] Network Security Resource. Intrusion Detection Systems. https://www.ischool. utexas.edu/~netsec/ids.html, 07.02.2002. [8] nmap. Timing and performance. http://nmap.org/book/man-performance.html. [9] Ricky M. Magalhaes. Host-Based IDS vs Network-Based IDS. http: //www.windowsecurity.com/articles-tutorials/intrusion_detection/ Hids_vs_Nids_Part1.html, 23.01.2013. 27 Quellen 28 [10] Snort. Snort :: Home Page. http://www.snort.org/. [11] Chris Green Sourcefire, Martin Roesch. Snort Users Manual. Snort Manual, 2013. [12] Stephen Northcutt and Judy Nocak. Network Intrusion Detection. New Riders Pub., Indianapolis and Ind, 3 edition, 2002, c2003. [13] Timothy N. Newsham Thomas H. Ptacek. Insertion, Evasion and Denial of Service: Eluding Network Intrusion Detection. http://insecure.org/stf/secnet_ids/ secnet_ids.pdf, 12.04.2013. [14] Edwin Reusch Tillmann Werner. WID-Portal - Sondervorlesung Netzsicherheit: IDS Evasion: Eine technische Einführung. http://net.cs.uni-bonn.de/fileadmin/ events/Special/BSI/2007-07-04_Sondervorlesung_Netzsicherheit_ publication.pdf, 05.05.2009. [15] Types of Intrusion Detection Systems. Types of Intrusion Detection Systems (IDS). http://www.omnisecu.com/security/infrastructure-and-email-security/ types-of-intrusion-detection-systems.htm, 03.02.2011. [16] William Stallings. Introduction to Network-Based Intrusion Detection Systems. http://www.informit.com/articles/article.aspx?p=782118, 2007. [17] WindowSecurity.com. FAQ: Network Intrusion Detection Systems :: Intrusion Detection :: White Papers. http://www.windowsecurity.com/whitepapers/ intrusion_detection/FAQ_Network_Intrusion_Detection_Systems_.html#1., 2013.