O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Netzwerkprotokolle hacken

Book Description

Der umfassende Leitfaden befasst sich mit Netzwerken aus der Perspektive eines Angreifers, um Schwachstellen zu finden, auszunutzen und letztendlich zu schützen.Teil I gibt einem Überblick über Netzwerkgrundlagen und Traffic-Erfassung als Grundlage für die Analyse eines Netzwerks.Teil II geht weiter zur Protokollanalyse, sowohl statisch als auch dynamisch. Teil III schließlich konzentriert sich auf das Auffinden und Ausnutzen von Schwachstellen und erklärt häufige Fehlerklassen. Forshaw schließt mit einem Überblick über die besten Werkzeuge zur Analyse und Nutzung von Netzwerken.Das Buch ist damit ein Muss für jeden Penetration Tester, Bug Hunter oder Entwickler, der Netzwerkschwachstellen ausnutzen und schützen möchte.

Table of Contents

  1. Cover
  2. Titel
  3. Impressum
  4. Inhaltsübersicht
  5. Vorwort
  6. Danksagungen
  7. Einführung
  8. Inhaltsverzeichnis
  9. 1 Netzwerk-Grundlagen
    1. 1.1 Netzwerkarchitekturen und -protokolle
    2. 1.2 Die Internet-Protokoll-Suite
    3. 1.3 Datenkapselung
    4. 1.3.1 Header, Footer und Adressen
    5. 1.3.2 Datenübertragung
    6. 1.4 Netzwerk-Routing
    7. 1.5 Mein Modell für die Analyse von Netzwerkprotokollen
    8. 1.6 Am Ende dieses Kapitels
  10. 2 Capturing von Anwendungsverkehr
    1. 2.1 Passives Capturing von Netzwerkverkehr
    2. 2.2 Eine kurze Einführung in Wireshark
    3. 2.3 Alternative passive Capturing-Techniken
    4. 2.3.1 Tracing von Systemaufrufen
    5. 2.3.2 Das strace-Utility unter Linux
    6. 2.3.3 Netzwerkverbindungen mit DTrace verfolgen
    7. 2.3.4 Process Monitor unter Windows
    8. 2.4 Vor- und Nachteile passiven Capturings
    9. 2.5 Aktives Capturing von Netzwerkverkehr
    10. 2.6 Netzwerk-Proxys
    11. 2.6.1 Port-Forwarding-Proxy
    12. 2.6.2 SOCKS-Proxy
    13. 2.6.3 HTTP-Proxys
    14. 2.6.4 Forwarding eines HTTP-Proxys
    15. 2.6.5 HTTP-Reverse-Proxy
    16. 2.7 Am Ende dieses Kapitels
  11. 3 Strukturen von Netzwerk-Protokollen
    1. 3.1 Binäre Protokollstrukturen
    2. 3.1.1 Numerische Daten
    3. 3.1.2 Boolesche Werte
    4. 3.1.3 Bit-Flags
    5. 3.1.4 Binäre Bytereihenfolge (Endianness)
    6. 3.1.5 Text und menschenlesbare Daten
    7. 3.1.6 Binärdaten variabler Länge
    8. 3.2 Datum und Uhrzeit
    9. 3.2.1 POSIX/Unix-Zeit
    10. 3.2.2 Windows FILETIME
    11. 3.3 TLV-Muster
    12. 3.4 Multiplexing und Fragmentierung
    13. 3.5 Netzwerk-Adressinformationen
    14. 3.6 Strukturierte Binärformate
    15. 3.7 Strukturen textbasierter Protokolle
    16. 3.7.1 Numerische Daten
    17. 3.7.2 Boolesche Werte in Textform
    18. 3.7.3 Datum und Uhrzeit
    19. 3.7.4 Daten variabler Länge
    20. 3.7.5 Formate für strukturierten Text
    21. 3.8 Codierung binärer Daten
    22. 3.8.1 Hex-Codierung
    23. 3.8.2 Base64
    24. 3.9 Am Ende dieses Kapitels
  12. 4 Fortgeschrittenes Capturing von Anwendungsverkehr
    1. 4.1 Rerouting von Verkehr
    2. 4.1.1 Traceroute nutzen
    3. 4.1.2 Routing-Tabellen
    4. 4.2 Konfiguration eines Routers
    5. 4.2.1 Routing unter Windows aktivieren
    6. 4.2.2 Routing unter *nix aktivieren
    7. 4.3 Network Address Translation
    8. 4.3.1 SNAT aktivieren
    9. 4.3.2 SNAT unter Linux konfigurieren
    10. 4.3.3 DNAT aktivieren
    11. 4.4 Verkehr an ein Gateway weiterleiten
    12. 4.4.1 DHCP-Spoofing
    13. 4.4.2 ARP-Poisoning
    14. 4.5 Am Ende dieses Kapitels
  13. 5 Analyse auf der Datenleitung
    1. 5.1 Die Verkehr produzierende Anwendung: SuperFunkyChat
    2. 5.1.1 Den Server starten
    3. 5.1.2 Clients starten
    4. 5.1.3 Kommunikation zwischen Clients
    5. 5.2 Ein Crashkurs zur Analyse mit Wireshark
    6. 5.2.1 Netzwerkverkehr generieren und Pakete erfassen
    7. 5.2.2 Grundlegende Analyse
    8. 5.2.3 Inhalte einer TCP-Session lesen
    9. 5.3 Die Paketstruktur mit Hex Dump identifizieren
    10. 5.3.1 Einzelne Pakete betrachten
    11. 5.3.2 Die Protokollstruktur ermitteln
    12. 5.3.3 Unsere Annahmen überprüfen
    13. 5.3.4 Das Protokoll mit Python sezieren
    14. 5.4 Einen Wireshark-Dissector in Lua entwickeln
    15. 5.4.1 Den Dissector entwickeln
    16. 5.4.2 Sezieren mit Lua
    17. 5.4.3 Parsen eines Nachrichtenpakets
    18. 5.5 Einen Proxy zur aktiven Verkehrsanalyse nutzen
    19. 5.5.1 Den Proxy einrichten
    20. 5.5.2 Protokollanalyse mittels Proxy
    21. 5.5.3 Grundlegendes Parsen von Protokollen hinzufügen
    22. 5.5.4 Das Protokollverhalten ändern
    23. 5.6 Am Ende dieses Kapitels
  14. 6 Reverse Engineering einer Anwendung
    1. 6.1 Compiler, Interpreter und Assembler
    2. 6.1.1 Interpretierte Sprachen
    3. 6.1.2 Kompilierte Sprachen
    4. 6.1.3 Statisches und dynamisches Linking
    5. 6.2 Die x86-Architektur
    6. 6.2.1 Instruction Set Architecture
    7. 6.2.2 CPU-Register
    8. 6.2.3 Ablaufsteuerung
    9. 6.3 Betriebssystem-Grundlagen
    10. 6.3.1 Dateiformate für Executables
    11. 6.3.2 Abschnitte
    12. 6.3.3 Prozesse und Threads
    13. 6.3.4 Netzwerkschnittstelle des Betriebssystems
    14. 6.3.5 Application Binary Interface
    15. 6.4 Statisches Reverse Engineering
    16. 6.4.1 Kurzanleitung für die Nutzung der IDA Pro Free Edition
    17. 6.4.2 Stackvariablen und Argumente analysieren
    18. 6.4.3 Schlüsselfunktionalitäten identifizieren
    19. 6.5 Dynamisches Reverse Engineering
    20. 6.5.1 Breakpunkte setzen
    21. 6.5.2 Debugger-Fenster
    22. 6.5.3 Wo setzt man Breakpunkte?
    23. 6.6 Reverse Engineering von Managed Code
    24. 6.6.1 .NET-Anwendungen
    25. 6.6.2 ILSpy nutzen
    26. 6.6.3 Java-Anwendungen
    27. 6.6.4 Mit Verschleierungstaktiken umgehen
    28. 6.7 Reverse-Engineering-Ressourcen
    29. 6.8 Am Ende dieses Kapitels
  15. 7 Sicherheit von Netzwerkprotokollen
    1. 7.1 Verschlüsselungsalgorithmen
    2. 7.1.1 Substitutionschiffre
    3. 7.1.2 XOR-Verschlüsselung
    4. 7.2 Zufallszahlengeneratoren
    5. 7.3 Symmetrische Verschlüsselung
    6. 7.3.1 Blockchiffre
    7. 7.3.2 Blockchiffre-Modi
    8. 7.3.3 Blockchiffre-Padding
    9. 7.3.4 Padding Oracle Attack
    10. 7.3.5 Stromchiffre
    11. 7.4 Asymmetrische Verschlüsselung
    12. 7.4.1 RSA-Algorithmus
    13. 7.4.2 RSA-Padding
    14. 7.4.3 Schlüsselaustausch nach Diffie-Hellman
    15. 7.5 Signaturalgorithmen
    16. 7.5.1 Kryptografische Hash-Algorithmen
    17. 7.5.2 Asymmetrische Signaturalgorithmen
    18. 7.5.3 Message Authentication Codes
    19. 7.6 Public-Key-Infrastruktur
    20. 7.6.1 X.509-Zertifikate
    21. 7.6.2 Verifikation einer Zertifikatskette
    22. 7.7 Fallbeispiel: Transport Layer Security
    23. 7.7.1 Der TLS-Handshake
    24. 7.7.2 Initiale Aushandlungen
    25. 7.7.3 Endpunkt-Authentifizierung
    26. 7.7.4 Die Verschlüsselung aufbauen
    27. 7.7.5 Sicherheitsanforderungen erfüllen
    28. 7.8 Am Ende dieses Kapitels
  16. 8 Implementierung des Netzwerkprotokolls
    1. 8.1 Replay von erfasstem Netzwerkverkehr
    2. 8.1.1 Verkehr mit Netcat erfassen
    3. 8.1.2 Replay von UDP-Verkehr mittels Python
    4. 8.1.3 Unseren Analyse-Proxy wiederverwenden
    5. 8.2 Ausführbaren Code wiederverwenden
    6. 8.2.1 Code in .NET-Anwendungen wiederverwenden
    7. 8.2.2 Code in Java-Anwendungen wiederverwenden
    8. 8.2.3 Unmanaged Executables
    9. 8.3 Verschlüsselung und der Umgang mit TLS
    10. 8.3.1 Die verwendete Verschlüsselung ermitteln
    11. 8.3.2 TLS-Verkehr entschlüsseln
    12. 8.4 Am Ende dieses Kapitels
  17. 9 Die Hauptursachen für Sicherheitslücken
    1. 9.1 Vulnerabilitätsklassen
    2. 9.1.1 Remote Code Execution
    3. 9.1.2 Denial-of-Service
    4. 9.1.3 Offenlegung von Informationen
    5. 9.1.4 Authentifizierung umgehen
    6. 9.1.5 Autorisierung umgehen
    7. 9.2 Verfälschung des Speichers
    8. 9.2.1 Speichersichere und speicherunsichere Programmiersprachen
    9. 9.2.2 Pufferüberlauf
    10. 9.2.3 Out-of-Bounds-Indexierung
    11. 9.2.4 Datenexpansion
    12. 9.2.5 Fehler bei der dynamischen Speicherallozierung
    13. 9.3 Voreingestellte oder festcodierte Anmeldedaten
    14. 9.4 Offenlegung von Benutzernamen
    15. 9.5 Fehlerhafter Zugriff auf Ressourcen
    16. 9.5.1 Kanonisierung
    17. 9.5.2 Fehlermeldungen mit zu viel Information
    18. 9.6 Speicherüberlastung
    19. 9.7 Massenspeicherüberlastung
    20. 9.8 CPU-Überlastung
    21. 9.8.1 Algorithmische Komplexität
    22. 9.8.2 Konfigurierbare Kryptografie
    23. 9.9 Formatstrings
    24. 9.10 Befehlsinjektion
    25. 9.11 SQL-Injektion
    26. 9.12 Zeichenersetzung bei Textcodierung
    27. 9.13 Am Ende dieses Kapitels
  18. 10 Sicherheitslücken aufspüren und ausnutzen
    1. 10.1 Fuzzing
    2. 10.1.1 Der einfachste Fuzzing-Test
    3. 10.1.2 Mutations-Fuzzer
    4. 10.1.3 Testdatensätze generieren
    5. 10.2 Sicherheitslücken untersuchen
    6. 10.2.1 Debugging von Anwendungen
    7. 10.2.2 Die Chancen erhöhen, um die Hauptursache für einen Absturz zu ermitteln
    8. 10.3 Gängige Sicherheitslücken ausnutzen
    9. 10.3.1 Exploit von Speicherlücken
    10. 10.3.2 Willkürliche Schreiboperationen
    11. 10.4 Shell-Code entwickeln
    12. 10.4.1 Erste Schritte
    13. 10.4.2 Einfache Debugging-Technik
    14. 10.4.3 Systemaufrufe ausführen
    15. 10.4.4 Andere Programme ausführen
    16. 10.4.5 Shell-Code mit Metasploit generieren
    17. 10.5 Maßnahmen gegen Speicherlücken
    18. 10.5.1 Data Execution Prevention
    19. 10.5.2 Return-Oriented Programming
    20. 10.5.3 Address Space Layout Randomization (ASLR)
    21. 10.5.4 Stacküberläufe durch Canaries erkennen
    22. 10.6 Am Ende dieses Kapitels
  19. Anhang
    1. A Toolkit für die Netzwerkprotokoll-Analyse
    2. A.1 Tools zum passiven Capturing und zur Analyse von Netzwerkprotokollen
    3. A.1.1 Microsoft Message Analyzer
    4. A.1.2 TCPDump und LibPCAP
    5. A.1.3 Wireshark
    6. A.2 Aktives Netzwerk-Capturing und Analyse
    7. A.2.1 Canape
    8. A.2.2 Canape Core
    9. A.2.3 Mallory
    10. A.3 Netzwerkkonnektivität und Protokolltests
    11. A.3.1 Hping
    12. A.3.2 Netcat
    13. A.3.3 Nmap
    14. A.4 Webanwendungen testen
    15. A.4.1 Burp Suite
    16. A.4.2 Zed Attack Proxy (ZAP)
    17. A.4.3 Mitmproxy
    18. A.5 Frameworks zum Fuzzing, zur Paketgenerierung und zur Entwicklung von Exploits
    19. A.5.1 American Fuzzy Lop (AFL)
    20. A.5.2 Kali Linux
    21. A.5.3 Metasploit-Framework
    22. A.5.4 Scapy
    23. A.5.5 Sulley
    24. A.6 Netzwerk-Spoofing und -Umleitung
    25. A.6.1 DNSMasq
    26. A.6.2 Ettercap
    27. A.7 Reverse Engineering von Executables
    28. A.7.1 Java Decompiler (JD)
    29. A.7.2 IDA Pro
    30. A.7.3 Hopper
    31. A.7.4 ILSpy
    32. A.7.5 .NET Reflector
  20. Fußnoten
  21. Index