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
- Cover
- Titel
- Impressum
- Inhaltsübersicht
- Vorwort
- Danksagungen
- Einführung
- Inhaltsverzeichnis
- 1 Netzwerk-Grundlagen
-
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
Product information
- Title: Netzwerkprotokolle hacken
- Author(s):
- Release date: June 2018
- Publisher(s): dpunkt
- ISBN: 9783864905698
You might also like
book
Mathematik
Haben Sie kürzlich eine Wasserstoffbombe oder ein Nuklearunterseeboot verloren und fragen sich, wie eine vernünftige Suchstrategie …
book
Basiswissen Sicherheitstests
Die Autoren geben einen fundierten Einstieg und praxisorientierten Überblick über die technischen, organisatorischen und prozessoralen Aspekte …
book
Die C++-Challenge
Dieses Buch zeigt dir einige bemerkenswerte Features, die C++ zu bieten hat, und wie du sie …
book
Basiswissen Abnahmetest
Acceptance Testing ist eine Ebene des Softwaretests, auf der ein System auf seine Akzeptanz durch den …