Está en la página 1de 18

Reventando

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:

Las herramientas usadas para este escrito son:

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

(Cambiando la fecha de nuestro ordenador)

(la seccin proteccin no me dejan usarlo en modo completo)

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

(El software est limpio sin cifrar)

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

Seleccionamos y con F2 ponemos un BreakPoint (punto de ruptura)

Ahora presionamos de nuevo analizar en la casilla de flash para que este intente
mostrar el mensaje y pare su ejecucin en ese momento.

En el stack o pila tenemos la direccin de retorno 0x42C66B, podemos seguirla (click


derecho- Follow in disassembler)

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

Ponemos un BreakPoint a todas esa lista:

Pgina 8

Reventando MalwareBytes

Reiniciamos y corremos de nuevo nuestro debugger y sabremos de donde empieza a


hacer comprobaciones o movimientos dentro de ese buffer y quizs veamos de donde
nace el problema y que bytes deben ir dentro de ese buffer.

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:

Ahora ejecutamos todo F9

Pgina 11

Reventando MalwareBytes

Listo la seccin de proteccio en tiempo real se activ , ahora en el ttulo de la ventana


nos marca que es una versin (PRO) y el anlisis FLASH

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:

la herramienta LordPE es en dado caso que a alguien le de error al ejecutar el binario,


eso podra deberse a que muchas veces se desacomoda la cabecera, en ese caso la
abrimos en el men de la derecha seleccionamos RebuildPe seleccionamos nuestro
binario y listo.

Pgina 13

Reventando MalwareBytes

Abrimos nuestro debugger y veamos que si se agreg correctamente la seccin:

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:

Digmosle que s y seleccionamos el binario, sobrescribindolo, entonces reiniciamos y


ahora as quedara el parche y una prueba de concepto simulando una inyeccin
malware:

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.

(PODEMOS OMITIR LO SIGUIENTE QUE SOLO UNA PRUEBA DE CONCEPTO DE UN MSGBOX


QUE APAREZCA CADA QUE SE QUIERE VERIFICAR LA LICENCIA)
Ahora meter un poco de cdigo para mostrar el Msgbox, simulando que es una infeccin
por malware:

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

También podría gustarte