Lehrstuhl für Netzarchitekturen und Netzdienste Institut für Informatik Technische Universität München V1.2 Automatisierte Protokollanalyse Abschlussvortrag zur Masterarbeit Markus Dauberschmidt 1
Überblick Aufgabenstellung und Vorgehen Related work und Konzeption Implementierung Validierung Ausblick 2
Überblick Aufgabenstellung und Vorgehen Related work und Konzeption Implementierung Validierung Ausblick 3
Problemstellung / Motivation Ausgangslage: Unbekannte oder proprietäre (closed source) Protokolle in Geräten oder Betriebssystemen Gewünschter Zustand: Weitere Anwendungen sollen mittels des unbekannten Protokolls kommunizieren: Intelligente Fuzzer für z.b. Blackbox Analyse Alternative Implementierungen (z.b. Samba ) 4
Aufgabenstellung und Ziel der Arbeit Konzeption und Implementierung einer Software zur automatisierten Protokollanalyse anhand von Netzwerktraces Validierung der Güte der eingesetzten Algorithmen Automatische Generierung von Protokollbeschreibungen PCAP Files Protokollspezifikation 5
Vorgehen in der Masterarbeit Ermittlung vielversprechender Herangehensweisen an die Thematik Auswahl geeigneter Algorithmen für die Integration in das Protokollanalyse-Framework des Lehrstuhls Implementierung der Basis-Algorithmen Iteratives Vorgehen Validierung der generierten Resultate mittels Testserien 6
Überblick Aufgabenstellung und Vorgehen Related work und Konzeption Implementierung Validierung Ausblick 7
Related work Weidong Cui, Jayanthkumar Kannan, and Helen J. Wang, Discoverer: Automatic Protocol Reverse Engineering from Network Traces, in Proceedings of the 16th USENIX Security Symposium, August 2007 Patrick Haffner, Subhabrata Sen, Oliver Spatscheck, Dongmei Wang, ACAS: automated construction of application signatures, in Proceedings of the 2005 ACM SIGCOMM workshop on Mining network data Corrado Leita, Marc Dacier, Frederic Massicotte, Automatic handling of protocol dependencies and reaction to 0-day attacks with ScriptGen based honeypots, Raid 2008 Joao Antunes, Nuno Ferreira Neves, Paulo Verissimo ReverX: Reverse Engineering of Protocols, DOI:10455/6699 Gil Tahan, Chanan Glezer, Yuval Elovici, Lior Rokach Auto-Sign: An automatic signature generator for high-speed malware filtering devices Hyang-Ah Kim, Brad Karp Autograph: Toward automated, distributed worm signature detection Konrad Rieck, Gudio Schwenk, Tobias Limmer, Thorsten Holz, Pavel Laskov Botzilla: Detecting the Phoning home of malicious software Christian Krebich, Jon Crowcroft Efficient sequence alignment of network traffic Marshall A. Beddoe Network Protocol Analysis using Bioinformatics algorithms 8
Discoverer in a nutshell Analyse der Nachrichten in mehreren Phasen mittels Tokenbildung, Clustering und semantischer Analyse Ergebnis: Menge von Nachrichtenformaten 9
ReverX in a nutshell Bildung von Token (von textbasierten Protokollen) Generierung der Protokollzustandsmaschine mittels Reduktion und Heuristiken Endergebnis: Endlicher Automat, der die Sprache des Protokolls akzeptiert 10
Überblick Aufgabenstellung und Vorgehen Related work und Konzeption Implementierung Validierung Ausblick 11
Nachrichtenformate Konzepte aus dem Discoverer Tokenizing, Recursive Clustering Vorgehen zur Semantikermittlung Problem: Nachrichteninformationen nicht ausreichend für den Einsatz in Fuzzing-Software Eigene Erweiterungen: Statistikberechnungen Weitere Semantiken wie CRC, Session ID, Set Generierung RegEx anhand Nachrichtenformat 12
Zustandsmaschine Konzepte aus ReverX: Reduktionsregeln für die Zustandsmaschine Eigene Erweiterungen: Integration von Client- & Servernachrichten Intelligente Zustandsmaschinengenerierung anhand der Formate des Discoverer Akzeptanztestfunktionen GraphViz Export der Zustandsmaschine XML Export der Protokollbeschreibung 13
Analyseschritte PCAP Dateien Bro Network Security Monitor Application Data Units (ADU) ProtoX XML und GraphViz Export 14
Überblick Aufgabenstellung und Vorgehen Related work und Konzeption Implementierung Validierung Ausblick 15
Protokolle in der Validierung FTP: Einfaches textbasiertes Protokoll DNS: Binär-/Textprotokoll mit komplexen Strukturen 16
Vorgehen in der Validierungsphase Manuelle Analyse Formate Zustandsmaschine Besonderheiten Qualitätskriterien, Punktesystem Automatisierte Analyse Akzeptanztest Cross Validation Verschiedene Batchgrößen Aussage: Wie flexibel ist der Automat? 17
File Transfer Protocol 18
Manuelle Analyse Formate: ca. 500 Cluster aus 10000 Flows Anzahl OK, aber davon 22 nur aus variable Token bestehend 150 Cluster mit lediglich einer Nachricht Semantiken: OK, im Wesentlichen set und session ID Saubere Trennung zwischen echten Variablen und Argumenten Zustandsmaschine: Bedingt gut, riesige Ausmaße 19
Beispiel für FTP Zustandsmaschine (Auszug) Click to edit Master text styles Second level Third level Fourth level» Fifth level 20
Automatisierte Analyse FTP Kreuzvalididerung zeigt gute Ergebnisse (Rejects: 7,2% avg, 4,94% min, 20,07% max) 21
DNS Protokoll 22
Manuelle Analyse Formate: ca. 700 Cluster aus 1000 Flows Ursache: Record-Struktur des DNS Längenunterschied unterschiedlicher Cluster Bereits im ersten Schritt Verteilung auf große Anzahl von Cluster Semantiken: OK, im Wesentlichen set und session ID Zustandsmaschine: Riesige Ausmaße, bereits aus Startzustand 196 Transitionen 23
Automatisierte Analyse DNS Kreuzvalidierung zeigt enttäuschende Ergebnisse (Rejects: 60,0% avg, 52,8% min, 64,3% max) Erklärung: Dynamische Record-Strukturen 24
Überblick Aufgabenstellung und Vorgehen Related work und Konzeption Implementierung Validierung Ausblick 25
Aktueller Status und Ausblick Was wurde erreicht? Framework zur Ermittlung von Nachrichtenformaten und der Zustandsmaschine aus Verkehrsdaten Entwicklung eines verbesserten Algorithmus Akzeptanztestfunktionalität Export in weiterverarbeitbarem Format (XML) Was ist noch zu tun? Verarbeitung von Record Strukturen ( DNS) Mehr Semantiken Aggregation von binary Token zu Word, DWord,... Generierung von Konfigurationsdateien für Fuzzer 26
27
Bildnachweise/Quellen Slide 5: http://www.marcoprosal.com/website/zielscheibe%20kopie.gif http://screenshots.en.sftcdn.net/en/scrn/72000/72486/wireshark-1.jpg, http://www.thomasnet.com/articles/image/contract-packaging(1).jpg Slide 6: https://www.deliusklasing.de/sixcms/media.php/403/thumbnails/zmf13.jpg.55511.jpg Slide 8: http://www.mlkschule.eu/uploads/images/buecherstapel.jpg Slide 9: Weidong Cui, Jayanthkumar Kannan, and Helen J. Wang, Discoverer: Automatic Protocol Reverse Engineering from Network Traces, in Proceedings of the 16th USENIX Security Symposium, August 2007 Slide 10: Joao Antunes et al, ReverX: Reverse Engineering of Protocols, University of Lisboa, 2011 Slide 14: http://www.cs.berkeley.edu/~bh/v3ch1/fsm3-reject.gif, https://webspace.utexas.edu/curtispe/images/xmllogo.png, http://www.broids.org/images/bro-eyes.png 28
Backup 29
Bereinigte Zustandsmaschine PNG File 30
DNS Protokoll Nur Protokoll-Header (12 Byte) Gesamte Nachricht 31
Generierung der RegEx Problem: Transitionen zum Bau der Zustandsmaschine werden benötigt Vorgabe: Formate des Discoverer sollen verwendet werden Nutzung in Fuzzing-Software Lösung: Umsetzung der Nachrichtenformate in reguläre Ausdrücke mittels der Informationen über const/variable Token und Variablen-Statistiken 32
Format Beispiele [('direction', const ('client2server'), []), ('text', const ('CWD'), []), ('text', variable, []), ('binary', const ('13'), ['CR']), ('binary', const ('10'), ['LF'])] Variable stats: Index 5, Text: Shortest: '/pub/alphabeticalorder_entities.html', Longest: '/pub/ifcgeometryresource/lexical/ifccompositecurvesegme nt.html', Distinct: 12, Top3: '/pub/ifcarchitecturedomain\content.html' (1), '/pub/ifcgeometryresource/ifcgeometryresource.html' (1), '/pub/ifcgeometryresource/lexical/ifccompositecurvesegme nt.html' (1) RegExVisual: ^\s*cwd\s+.{36,62}\s*\x0d\x0a 33
Hierarchische RegEx Problemstellung: Beinhaltet ein RegEx den anderen? RegExA: ^\s*.*\s+.*\s*\x0d\x0a$ RegExB: ^\s*tum\s{2,4}\(2012\)\s*\x0d\x0a$ RegExB wird transformiert: ^\s*tum\s{2,4}\(2012\)\s*\x0d\x0a$ \s*tum\s{2,4}\(2012\)\s*\x0d\x0a TUM \(2012\)\x0d\x0a TUM (2012)\x0d\x0a TUM (2012) RegExA matcht nun den transformierten RegExB RegExB ist spezieller als RegExA 34
Herausforderungen Bisherige Arbeiten zu dem Thema sind oft sehr speziell und decken nur Teilaspekte ab (z.b. Fokus rein auf textbasierte Protokolle) Kombination von Format- und Semantikinferenz und der Zustandsmaschine ist notwendig für komplettes Protokoll-Reverse Engineering Kein veröffentlichter Code vorhanden als Ausgangsbasis 35
Related work Weidong Cui, Jayanthkumar Kannan, and Helen J. Wang, Discoverer: Automatic Protocol Reverse Engineering from Network Traces, in Proceedings of the 16th USENIX Security Symposium, August 2007 Patrick Haffner, Subhabrata Sen, Oliver Spatscheck, Dongmei Wang, ACAS: automated construction of application signatures, in Proceedings of the 2005 ACM SIGCOMM workshop on Mining network data Corrado Leita, Marc Dacier, Frederic Massicotte, Automatic handling of protocol dependencies and reaction to 0-day attacks with ScriptGen based honeypots, Raid 2008 Joao Antunes, Nuno Ferreira Neves, Paulo Verissimo ReverX: Reverse Engineering of Protocols, DOI:10455/6699 Gil Tahan, Chanan Glezer, Yuval Elovici, Lior Rokach Auto-Sign: An automatic signature generator for high-speed malware filtering devices Hyang-Ah Kim, Brad Karp Autograph: Toward automated, distributed worm signature detection Konrad Rieck, Gudio Schwenk, Tobias Limmer, Thorsten Holz, Pavel Laskov Botzilla: Detecting the Phoning home of malicious software Christian Krebich, Jon Crowcroft Efficient sequence alignment of network traffic Marshall A. Beddoe Network Protocol Analysis using Bioinformatics algorithms 36
Manuelle Analyse DNS (Gesamte Nachricht) Click to edit Master text styles Second level Third level Fourth level» Fifth level 37
Manuelle Analyse DNS (Gesamte Nachricht) Click to edit Master text styles Second level Third level Fourth level» Fifth level 38
Manuelle Analyse FTP Click to edit Master text styles Second level Third level Fourth level» Fifth level (Extremwertbereinigt) 39
Manuelle Analyse FTP Click to edit Master text styles Second level Third level Fourth level» Fifth level 40
Bewertung der Ergebnisse Parsen von Verkehrstraces: Textprotokolle Binärprotokolle Kann die generierte Zustandsmaschine die Eingaben verarbeiten? Generierung von Protokollbeschreibungen Abgleich mit jeweiligen RfCs 41
Tokenization/Initial clustering Zeichenweises Einlesen der einzelnen Nachrichten Klassifizierung in Binärdaten oder Text Tokenization Clustering 42
Recursive Clustering Herleitung der Formate Herleitung der Semantik Ermittlung der Format Distinguisher Erzeugen von Unterclustern, Rekursion 43
Merging Needleman-Wunsch Algorithmus (BioInformatik) Zusammenführen ähnlicher Cluster 44
Initial clustering Erkennung von binary/text, Tokenbildung, Clustering Textsegment Tokenizing ergibt (text, Hello,1,5),(text, World!,7,6) Not printable Tokenizing ergibt: (binary,0x02,13,1) Not printable Tokenizing ergibt: (binary,0x0c,0,1) Zu kurzer Text Tokenizing ergibt: (binary,0x43,14,1),(binary,0x75,15 Endergebnis: msg: [(binary,0x0c,0,1),(text, Hello,1,5),(text, World!,7,6),(binary,0x02,13,1), (binary,0x43,14,1),(binary,0x75,15,1),(binary,0x05,16,1),(text, later,17,5), (binary,0x0d,22,1),(binary,0x0a,23,1)] 45
Recursive Clustering Format inference Semantic inference Ermittelung von Format Distinguisher Endergebnis: msg: [(binary,0x0c,0,1,{ lengthfield },v), (text, Hello,1,5,{},c), (text, World!,7,6,{},v), (binary,0x02,13,1,{},v), (binary,0x43,14,1,{},v), (binary,0x75,15,1,{},v), (binary,0x05,16,1,{ lengthfield },v), (text, later,17,5,{},v), (binary,0x0d,22,1, { CR },c), (binary,0x0a,23,1,{ LF },c)] 46
Merging phase Griff in die Bio-Informatik Trickkiste: Needleman Wunsch-Algorithmus zum DNA Alignment Ermitteln von ähnlichen bzw. identischen Token-Sequenzen über Clustergrenzen hinweg, Beheben von Fehlern der Phase Initial clustering Endergebnis: msg: [(binary,0x0c,0,1,[ lengthfield ],v), (text, Hello,1,5,[],c), (text, World!,7,6, [],v), (binary,0x02,13,1,[ lengthfield ],v), (text, Cu,14,2,[],v), (binary,0x05,16,1, [ lengthfield ],v), (text, later,17,5,[],v), (binary,0x0d,22,1,[ CR ],c), (binary,0x0a,23,1,[ LF ],c)] 47
Am Beispiel von Daten einer ftp client session Cluster information: 566 entries Format inferred: [('text', 'const', []), ('text', 'variable', set(['fd'])), ('binary', 'const', set(['cr'])), ('binary', 'const', set(['lf']))] Token 0: const text token, value 'TYPE' Token 1: FD, 2 values: 'I' (431), 'A' (135) Token 2: const binary token, value 0x0d (CR) Token 3: const binary token, value 0x0a (LF) ************************************************** Cluster information: 1045 entries Format inferred: [('text', 'variable', set(['fd'])), ('binary', 'const', set(['cr'])), ('binary', 'const', set(['lf']))] Token 0: FD, 12 values: 'QUIT' (92), 'STAT' (38), 'PASV' (377), 'SYST' (172), 'LIST' (106), 'ABOR' (36), 'PWD' (171), 'NLST' (3), 'NOOP' (31), 'EPSV' (7), 'FEAT' (11), 'MDTM' (1) Token 1: const binary token, value 0x0d (CR) Token 2: const binary token, value 0x0a (LF) ************************************************** Cluster information: 2 entries Format inferred: [('text', 'const', set(['fd'])), ('text', 'const', []), ('text', 'const', []), ('binary', 'const', set(['cr'])), ('binary', 'const', set(['lf']))] Token 0: FD, 1 values: 'SITE' (2) Token 1: const text token, value 'TRUTH' Token 2: const text token, value 'ON' Token 3: const binary token, value 0x0d (CR) Token 4: const binary token, value 0x0a (LF) ************************************************** Cluster information: 56 entries Format inferred: [('text', 'const', set(['fd'])), ('text', 'const', []), ('text', 'const', []), ('binary', 'const', set(['cr'])), ('binary', 'const', set(['lf']))] Token 0: FD, 1 values: 'OPTS' (56) Token 1: const text token, value 'utf8 48
Related work Weites Forschungsfeld, von der Malware-Erkennung bis zu Honeypot -Replay Scripting und noch viel zu tun! Einige Beispiele: Discoverer, Microsoft Research, 2007 Ermittlung der Nachrichtenformate durch Clustering und semantische Analysen ReverX, University of Lisboa, 2011 Statemachine Inferenz für textbasierte Protokolle ScriptGen, Institut Eurecom, 2006 Selbstlernende Statemachines für Honeypots 49
Zeitplan Januar, Februar: Einarbeitung in das Fachgebiet Format-Inferenz März-April: State-Machine-Generator Erweiterungen für Fuzzing. Mai-Juli: Generierung von Fuzzer Config-Dateien Evaluierung der Güte der ermittelten Protokolle Verbesserungen & Feintuning (Heuristiken, Semantiken) August-Ende: Dokumentation, Ausarbeitung, Abschluss-Präsentation 50
51
Click to edit Master text styles Second level Third level Fourth level» Fifth level 52
Problem: Zu eifriges Zusammenfassen verfälscht Click to edit Master text styles Second level Third level Fourth level» Fifth level 53
Click to edit Master text styles Second level Third level Fourth level» Fifth level 54