
Netzwerkprotokolle hacken
Description
Alles über E-Books | Antworten auf Fragen rund um E-Books, Kopierschutz und Dateiformate finden Sie in unserem Info- & Hilfebereich.
More details
Other editions
Additional editions


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