Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Reventando MalwareBytes
Reventando MalwareBytes
MalwareBytes
Poniendo a prueba la seguridad de los
antivirus
Alejandro Torres Ramirez - torrescrack
22/10/2013
@TorresCrack248
Reventando MalwareBytes
INTRODUCCION
Bien como lo promet durante el evento, para los que asistieron al Festival Iberoamericano
de Seguridad Informtica (FISI), me toco explicar lo simple que puede ser romper la
seguridad de algunos de nuestros protectores (antivirus) como lo es protecciones anticracking, las cosas que dejan pasar por alto y que ponen en riesgo su integridad, por
ejemplo evitar ser infectado por algn malware. Aqu tenemos el escrito detallado donde
explico los riesgos que corren los antivirus y como podran ser aprovechados. Intentare
explicar manualmente como lo hara un malware
En esta ocasin empezaremos con nuestro anti-malware MalwareBytes para no
aburrirlos vamos por l.
Pgina 1
Reventando MalwareBytes
HERRAMIENTAS:
Debugger:
http://tuts4you.com/request.php?3479
Topo :
http://ricardonarvaja.info/WEB/OTROS/HERRAMIENTAS/Q-R-S-TU/topo12corregido.rar
LordPE:
http://ricardonarvaja.info/WEB/OTROS/HERRAMIENTAS/L-M-N-O-P/lordpedelux1.4.zip
Un poco de Cerebro
Pgina 2
Reventando MalwareBytes
INICIANDO:
Corremos nuestro anti-malware y veamos que nos ofrece y ver por donde podramos
empezar a analizar este software
Bueno primero al parecer todas sus funcionalidades estn disponibles solo por unos das.
Podramos adelantar la fecha en nuestro ordenador y Ahora veamos las limitantes..
Pgina 3
Reventando MalwareBytes
Pgina 4
Reventando MalwareBytes
(el anlisis memoria flash esta desactivo y solo disponible en la versin completa)
Ahora abrimos nuestro debugger y podremos ver en el punto de entrada que se trata de
un Visual Basic 5
Bien podemos usar el MessageBox para encontrar la zona donde nos muestra el error.
Bien podemos presionar dentro de nuestro debugger CTRL+G y buscar lo que sera la Api
MessageBox de VisualBasic (rtcMsgBox)y ubicarnos en ese offset.
Pgina 5
Reventando MalwareBytes
Ahora presionamos de nuevo analizar en la casilla de flash para que este intente
mostrar el mensaje y pare su ejecucin en ese momento.
Pgina 6
Reventando MalwareBytes
Una vez que estamos ubicados en la zona podemos rpidamente ubicar que en el offset
0x42C5EB, existe una comparacin entre el contenido del buffer [4671D8], con el
contenido de del registro DI , y abajo un salto condicional, si es igual al registro toma el
salto y nos muestra el mensaje que no hemos comprado el software. Podramos hacer
algo sper sencillo y es cambiar el salto condicional y forzarlo para que no me muestre ese
mensaje molesto, pero quiero hacerlo algo ms ahmm.. PRO y ver de dnde nace el
problema. Aqu es de imaginarse que ese buffer lo utiliza en otras comprobaciones, ya que
en esta zona solo lo est utilizando para saber si est registrado el software y no mostrar
el mensaje, en la instruccin podemos seleccionarla instruccin , hacer click derecho ( Find
references to- Address Constant) y tenemos la lista donde es usado ese mismo buffer en
otros lugares, veamos:
Pgina 7
Reventando MalwareBytes
Pgina 8
Reventando MalwareBytes
Estamos ubicados en la primer ubicacin donde ha parado la ejecucin, aqu hay algo
importante como vemos est metiendo el contenido de eax , en los punteros indicados
y como el registro eax esta valiendo 0, esta limpindolos y recordando que ese buffer
debe ser distinto de 0 entonces aqu nace el problema y adems estoy seguro que esos
Pgina 9
Reventando MalwareBytes
buffers que est limpiando tambin se ocupan para comprobaciones que tienen que ver
con la licencia, abajo veremos un llamada si entramos con f7 podemos ver:
Esta parte es muy sencilla de explicar y es donde ubique el BreakPoint para que se
ubiquen mueve al registro eax 0FFFFFFFF despus hacer un OR eax, FFFFFFFF
quedando eax valiendo FFFF0000, si seguimos avanzando con F8, al retornar veremos
una comprobacin test ax, ax, recordemos el registro EAX es de 32 bits por lo tanto esta
comprobando nicamente 16 sea est comprobando si el contenido de ax que en ese
caso es 0 y entonces ya no guarda 0xFFFF en el buffer, veamos:
Lo que sigue es de lgica, el buffer donde quiere guardar 0xFFFF es uno de los que acabo
de limpiar arriba, por lo tanto estoy casi 100% seguro que todos los buffer que puso a 0
hace un momento son donde harn comprobaciones de licencia y que el valor 0xFFFF es el
correcto para que detecte que est registrado, pues si recuerdan el valor deba ser
Pgina 10
Reventando MalwareBytes
diferente de 0, para no mostrar el mensaje, y cuando retrocedimos vemos que en una
ejecucin normal el buffer se queda en 0, y en base a una comprobacin decide si mete
los bytes 0xFFFF al buffer. Creo que no hay mucho que pensar, si recordamos la zona
anterior:
Primero con el xor eax,eax pone eax a 0 y asi limpia todo entonces podemos hacerlo
muy fcil, primero probemos en el offset 0x451CFC ponemos un BreakPoint y reiniciemos
y que pare su ejecucin ah mismo para colocar en eax el valor adecuado y ver cmo
funciona todo:
Pgina 11
Reventando MalwareBytes
Todo Funciona como si acabara de comprar mi licencia, y bueno todo est corriendo en
memoria, pero con un simple parche resolvera el problema, pero yo aprovechar un error
que quiero mostrarles y es algo muy importante que este antivirus no s porque dejo
pasar por alto y es que no detecta cambios en su propio cdigo y es algo grave.
Pgina 12
Reventando MalwareBytes
Por ejemplo vamos a crear una seccin de ms dentro del software como lo hubiera
hecho comnmente algn malware, para saber de lo que hablo leamos una parte en mi
escrito de anlisis malware polica federal.
http://www.hackingmexico.mx/analisis-malware-policia-federal/
En mi anlisis, desde la pgina 32, explico como el malware crea una seccin nueva para
posteriormente cambiar el punto de entrada del binario re direccionndolo a donde
inyecto cdigo para despus seguir su ejecucin normal.
Les cuento que no detecte cambios es un error grave en un antivirus ya que podra ser
vctima de algn ataque malware, mostrare como hacerlo manualmente y para ello
utilizamos la herramienta Topo abrimos seleccionamos nuestro binario, metemos los
bytes que queremos agregar, yo coloque 1000 bytes y presionamos Do IT! haber que
sucede:
Pgina 13
Reventando MalwareBytes
En el offset 0x4DD000, entonces hagamos lo que hara el bicho antes mencionado pero
manualmente, redirijamos en algn momento la ejecucin a la zona creada y metamos
cdigo, que este caso aprovechare para meter el parche que no hice hace un momento,
pero antes recordemos los buffers donde debamos meter el 0xFFFF :
0x4671D4
0x4671D6
0x4671D8
Pgina 14
Reventando MalwareBytes
Podemos usar el offset 0x451CF0 antes de que guarde dentro del primer buffer el 0, para
hacer nuestra propia rutina metiendo los datos correctos:
Primero guardamos los cambios, seleccionamos, click derecho edit- copy to executable,
nos saldr una ventana, le damos cerrar a la nueva ventana y nos lanzara un Mesnaje
pereguntado si deseo guardar:
Pgina 15
Reventando MalwareBytes
Como vemos hay coloque la primer instruccin que hace es un PUSHAD, que lo que hace
es salvar todos los registros y podemos hacer los movimientos que queramos para
despus usar POPAD y seguir como si nunca hubiese pasado nada, seguimos y colocamos
el parche para que meta el contenido 0xFFFF a los buffer antes mencionados.
Solo faltara agregar un push 0x451D02 y un ret y listo, estara perfecto un parche
funcional de MalwareBytes.
Lo siguiente es una muestra para mostrar como seria si agregramos un mensaje de
Infectado que se ejecutara cada que intenta verificar la licencia.
Pgina 16
Reventando MalwareBytes
Antes de retornar debe meter a la pila la direccin donde regresara que es en la prxima
intruccion debajo de las instrucciones que no usaremos, que es el offset 0x451D02
Guardamos los cambios como mencione anteriormente y ahora lo que hara este es que
cada que pase a corroborar la licencia mandara un Mensaje que est infectado
Probemos!
Listo creo que fue todo, si tienen alguna duda o algo no quedo muy claro abajo estn los
lugares donde pueden contactarme.
E: tora_248@hotmail.com
T:@torrescrack248
B: www.torrescrack.blogspot.com
Pgina 17