¿Cómo funciona la Explotación de EternalBlue?

14

He buscado en Google las explicaciones sobre cómo funciona exactamente el exploit EternalBlue, pero supongo que dada la tormenta mediática sobre WannaCry, solo he podido encontrar recursos que, en el mejor de los casos, son un exploit SMB. Entiendo que hubo un error en la implementación del protocolo SMB de Microsoft, pero lo que me gustaría saber es exactamente qué tipo de carga útil tenía que ser diseñada para explotar la falla de seguridad de Microsoft, y qué hizo Microsoft mal que dejó a Windows. vulnerable a tal ataque? Incluso un enlace (confiable) a algún código fuente sería más de lo que he podido encontrar hasta ahora.

    
pregunta butallmj 16.05.2017 - 22:31
fuente

1 respuesta

12

Se explica una vulnerabilidad para EternalBlue en Metasploit aquí :

  

Hay una operación memmove de desbordamiento de búfer en Srv! SrvOs2FeaToNt. El tamaño se calcula en Srv! SrvOs2FeaListSizeToNt, con un error matemático donde se resta un DWORD en una PALABRA. La agrupación del kernel está preparada para que el desbordamiento esté bien diseñado para sobrescribir un búfer SMBv1. El secuestro real de RIP se completa más tarde en srvnet! SrvNetWskReceiveComplete.

No soy un experto y no entiendo muy bien a Ruby, pero por lo que entiendo, DWORD tiene el doble de tiempo que WORD, lo que te permitiría escribir en la memoria enviando un búfer grande. La memoria del kernel se organiza (se acicala) mientras se escriben los datos, de modo que la carga útil que se está transmitiendo tiene sentido una vez que el puntero RIP se secuestra y apunta a la memoria sobrescrita, que luego se leerá y ejecutará.

Puede ver el código fuente aquí .

En cuanto a lo que se hizo mal, debería haber una resta de DWORD a DWORD o de WORD a WORD. Tener la diferencia en tamaños es lo que permitió que la memoria se sobrescribiera.

EDITAR: Checkpoint hizo un asombroso artículo explicando los 3 errores relacionados con esta vulnerabilidad, lo que entendido por el código ruby que leí es solo el error 1/3 (error A en la redacción de Checkpoint), si quieres profundizar mucho más, échale un vistazo.

    
respondido por el Daniel V 16.05.2017 - 23:49
fuente

Lea otras preguntas en las etiquetas