MS17-010
Dieses Repository ist für meine öffentliche Arbeit zu MS17-010 gedacht. Ich habe nicht vor, irgendeinen Support zu leisten. Auf alle Supportanfragen werde ich nicht antworten.
Dateien
- BUG.txt Details zum MS17-010-Fehler und einige Analysen
- checker.py Skript zum Auffinden zugänglicher Named Pipes
- eternalblue_exploit7.py Eternalblue-Exploit für Windows 7/2008
- eternalblue_exploit8.py Eternalblue-Exploit für Windows 8/2012 x64
- eternalblue_poc.py Eternalblue-PoC für den Pufferüberlauf-Fehler
- eternalblue_kshellcode_x64.asm x64-Kernel-Shellcode für meinen Eternalblue-Exploit. Dieser Shellcode sollte unter Windows Vista und neuer funktionieren.
- eternalblue_kshellcode_x86.asm x86-Kernel-Shellcode für meinen Eternalblue-Exploit. Dieser Shellcode sollte unter Windows Vista und neuer funktionieren.
- eternalblue_sc_merge.py Skript zum Zusammenführen von Eternalblue-x86- und x64-Shellcode. Ein Eternalblue-Exploit, der sowohl x86 als auch x64 unterstützt, muss mit zusammengeführtem Shellcode die Zielarchitektur nicht erkennen.
- eternalchampion_leak.py Eternalchampion-PoC für den Teil zum Leaken von Informationen
- eternalchampion_poc.py Eternalchampion-PoC zur Kontrolle von RIP
- eternalchampion_poc2.py Eternalchampion-PoC zur Erlangung von Codeausführung
- eternalromance_leak.py Eternalromance-PoC für den Teil zum Leaken von Informationen
- eternalromance_poc.py Eternalromance-PoC für OOB-Write
- eternalromance_poc2.py Eternalromance-PoC zur Kontrolle einer Transaktion, die beliebiges Lesen/Schreiben ermöglicht
- eternalsynergy_leak.py Eternalsynergy-PoC für den Teil zum Leaken von Informationen
- eternalsynergy_poc.py Eternalsynergy-PoC zur Demonstration von Heap-Spraying mit großem Paged Pool
- infoleak_uninit.py PoC zum Leaken von Informationen aus einem nicht initialisierten Transaktionsdatenpuffer
- mysmb.py Erweiterte Impacket-SMB-Klasse zur einfacheren Ausnutzung von MS17-010-Fehlern
- npp_control.py PoC zur Steuerung der Nonpaged-Pool-Zuweisung mit dem Session-Setup-Befehl
- zzz_exploit.py Exploit für Windows 2000 und neuer (erfordert Zugriff auf eine Named Pipe)
Anonymer Benutzer
Ein anonymer Benutzer (Null-Session) erhält bei den Standardeinstellungen neuer Windows-Versionen mehr Einschränkungen. Um Windows-SMB ohne Authentifizierung auszunutzen, sollte man sich des folgenden Verhaltens bewusst sein.
- Seit Windows Vista erlauben die Standardeinstellungen anonymen Benutzern keinen Zugriff auf Named Pipes.
- Seit Windows 8 erlauben die Standardeinstellungen anonymen Benutzern keinen Zugriff auf die IPC$-Freigabe (IPC$ ist möglicherweise erreichbar, aber man kann nicht viel damit anfangen).
Über NSA-Exploits
- Eternalblue benötigt nur Zugriff auf IPC$, um ein Ziel auszunutzen, während andere Exploits zusätzlich Zugriff auf eine Named Pipe benötigen. Daher funktioniert der Exploit unter Windows < 8 in jeder Konfiguration immer (wenn TCP-Port 445 erreichbar ist). Allerdings ist die Wahrscheinlichkeit, dass Eternalblue ein Ziel zum Absturz bringt, höher als bei anderen Exploits.
- Eternalchampion benötigt Zugriff auf eine Named Pipe. Der Exploit kann ein Ziel nicht zum Absturz bringen.
- Eternalromance benötigt Zugriff auf eine Named Pipe. Der Exploit kann Windows < 8 angreifen, da der Fehler für den Info-Leak in Windows 8 behoben wurde. Die Wahrscheinlichkeit, dass der Exploit ein Ziel zum Absturz bringt, sollte geringer sein als bei Eternalblue. Ich habe die Zuverlässigkeit des Exploits nie getestet.
- Eternalsynergy benötigt Zugriff auf eine Named Pipe. Ich glaube, dieser Exploit wurde aus Eternalromance weiterentwickelt, um Windows 8 und neuer anzugreifen. Eternalsynergy nutzt einen anderen Fehler für den Info-Leak und wendet einen Trick an, um ausführbaren Speicher zu finden (ich weiß nicht, wie das funktioniert, da ich nur das Ausgabeprotokoll und die PCAP-Datei gelesen habe).