MS17-010
Ce dépôt contient mes travaux publics sur MS17-010. Je n'ai pas l'intention de fournir un support. Toutes les demandes de support resteront sans réponse de ma part.
Fichiers
- BUG.txt Détail du bug MS17-010 et quelques analyses
- checker.py Script pour trouver un named pipe accessible
- eternalblue_exploit7.py Exploit Eternalblue pour Windows 7/2008
- eternalblue_exploit8.py Exploit Eternalblue pour Windows 8/2012 x64
- eternalblue_poc.py PoC Eternalblue pour le bug de dépassement de tampon
- eternalblue_kshellcode_x64.asm Shellcode kernel x64 pour mon exploit Eternalblue. Ce shellcode devrait fonctionner sur Windows Vista et versions ultérieures
- eternalblue_kshellcode_x86.asm Shellcode kernel x86 pour mon exploit Eternalblue. Ce shellcode devrait fonctionner sur Windows Vista et versions ultérieures
- eternalblue_sc_merge.py Script pour fusionner les shellcodes Eternalblue x86 et x64. L'exploit Eternalblue prenant en charge à la fois x86 et x64 avec un shellcode fusionné n'a pas besoin de détecter l'architecture de la cible
- eternalchampion_leak.py PoC Eternalchampion pour la partie fuite d'informations
- eternalchampion_poc.py PoC Eternalchampion pour contrôler le RIP
- eternalchampion_poc2.py PoC Eternalchampion pour obtenir l'exécution de code
- eternalromance_leak.py PoC Eternalromance pour la partie fuite d'informations
- eternalromance_poc.py PoC Eternalromance pour l'écriture hors limites
- eternalromance_poc2.py PoC Eternalromance pour contrôler une transaction menant à une lecture/écriture arbitraire
- eternalsynergy_leak.py PoC Eternalsynergy pour la partie fuite d'informations
- eternalsynergy_poc.py PoC Eternalsynergy pour démontrer le heap spraying avec un grand pool paginé
- infoleak_uninit.py PoC pour la fuite d'informations à partir d'un tampon de données de transaction non initialisé
- mysmb.py Classe SMB Impacket étendue pour faciliter l'exploitation des bugs MS17-010
- npp_control.py PoC pour contrôler l'allocation du pool non paginé avec la commande session setup
- zzz_exploit.py Exploit pour Windows 2000 et versions ultérieures (nécessite l'accès à un named pipe)
Utilisateur anonyme
L'utilisateur anonyme (session null) subit davantage de restrictions avec les paramètres par défaut des nouvelles versions de Windows. Pour exploiter SMB Windows sans authentification, il faut être conscient du comportement suivant.
- Depuis Windows Vista, les paramètres par défaut n'autorisent pas l'accès anonyme à un named pipe
- Depuis Windows 8, les paramètres par défaut n'autorisent pas l'accès anonyme au partage IPC$ (IPC$ peut être accessible, mais on ne peut pas en faire grand-chose)
À propos des exploits NSA
- Eternalblue nécessite uniquement l'accès à IPC$ pour exploiter une cible, alors que les autres exploits nécessitent aussi l'accès à un named pipe. L'exploit fonctionne donc toujours contre Windows < 8 dans toutes les configurations (si le port TCP 445 est accessible). Cependant, Eternalblue a plus de risques de faire planter une cible que les autres exploits.
- Eternalchampion nécessite l'accès à un named pipe. L'exploit n'a aucune chance de faire planter une cible.
- Eternalromance nécessite l'accès à un named pipe. L'exploit peut cibler Windows < 8 car le bug de fuite d'informations est corrigé dans Windows 8. L'exploit devrait avoir moins de chances de faire planter une cible qu'Eternalblue. Je n'ai jamais testé la fiabilité de l'exploit.
- Eternalsynergy nécessite l'accès à un named pipe. Je pense que cet exploit est modifié à partir d'Eternalromance pour cibler Windows 8 et versions ultérieures. Eternalsynergy utilise un autre bug pour la fuite d'informations et utilise une astuce pour trouver de la mémoire exécutable (je ne sais pas comment cela fonctionne car je n'ai lu que le journal de sortie et le fichier pcap).