Você está na 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

Você também pode gostar