MS17-010
Este repositorio es para mi trabajo público sobre MS17-010. No tengo planeado dar soporte. Todos los problemas de soporte no recibirán respuesta de mi parte.
Archivos
- BUG.txt Detalle del bug MS17-010 y algo de análisis
- checker.py Script para encontrar named pipe accesible
- eternalblue_exploit7.py Exploit Eternalblue para windows 7/2008
- eternalblue_exploit8.py Exploit Eternalblue para windows 8/2012 x64
- eternalblue_poc.py PoC de Eternalblue para el bug de desbordamiento de búfer
- eternalblue_kshellcode_x64.asm Shellcode de kernel x64 para mi exploit Eternalblue. Este shellcode debería funcionar en Windows Vista y versiones posteriores
- eternalblue_kshellcode_x86.asm Shellcode de kernel x86 para mi exploit Eternalblue. Este shellcode debería funcionar en Windows Vista y versiones posteriores
- eternalblue_sc_merge.py Script para fusionar el shellcode x86 y x64 de Eternalblue. El exploit Eternalblue, que soporta tanto x86 como x64, con shellcode fusionado no necesita detectar la arquitectura del objetivo
- eternalchampion_leak.py PoC de Eternalchampion para la parte de filtración de información
- eternalchampion_poc.py PoC de Eternalchampion para controlar RIP
- eternalchampion_poc2.py PoC de Eternalchampion para obtener ejecución de código
- eternalromance_leak.py PoC de Eternalromance para la parte de filtración de información
- eternalromance_poc.py PoC de Eternalromance para escritura fuera de límites (OOB)
- eternalromance_poc2.py PoC de Eternalromance para controlar una transacción que conduce a lectura/escritura arbitraria
- eternalsynergy_leak.py PoC de Eternalsynergy para la parte de filtración de información
- eternalsynergy_poc.py PoC de Eternalsynergy para demostrar heap spraying con un pool paginado grande
- infoleak_uninit.py PoC para filtrar información de un búfer de datos de transacción no inicializado
- mysmb.py Clase SMB extendida de Impacket para explotar más fácilmente los bugs de MS17-010
- npp_control.py PoC para controlar la asignación del pool no paginado con el comando session setup
- zzz_exploit.py Exploit para Windows 2000 y versiones posteriores (requiere acceso al named pipe)
Usuario anónimo
El usuario anónimo (null session) obtiene más restricciones en la configuración predeterminada de las versiones nuevas de Windows. Para explotar SMB de Windows sin autenticación, se debe tener en cuenta el siguiente comportamiento.
- Desde Windows Vista, la configuración predeterminada no permite que el usuario anónimo acceda a ningún named pipe
- Desde Windows 8, la configuración predeterminada no permite que el usuario anónimo acceda al recurso compartido IPC$ (IPC$ podría ser accesible, pero no se puede hacer mucho)
Acerca de los exploits de la NSA
- Eternalblue solo requiere acceso a IPC$ para explotar un objetivo, mientras que otros exploits también requieren acceso al named pipe. Por lo tanto, el exploit siempre funciona contra Windows < 8 en cualquier configuración (si el puerto tcp 445 es accesible). Sin embargo, Eternalblue tiene más probabilidades de causar un fallo (crash) en el objetivo que otros exploits.
- Eternalchampion requiere acceso al named pipe. El exploit no tiene posibilidades de causar un fallo en el objetivo.
- Eternalromance requiere acceso al named pipe. El exploit puede apuntar a Windows < 8 porque el bug de filtración de información está corregido en Windows 8. El exploit debería tener menos probabilidades de causar un fallo en el objetivo que Eternalblue. Nunca probé la fiabilidad del exploit.
- Eternalsynergy requiere acceso al named pipe. Creo que este exploit está modificado a partir de Eternalromance para apuntar a Windows 8 y versiones posteriores. Eternalsynergy usa otro bug para la filtración de información y hace algún truco para encontrar memoria ejecutable (no sé cómo funciona porque solo leí el registro de salida y el archivo pcap).