Foro de elhacker.net

Seguridad Informática => Análisis y Diseño de Malware => Mensaje iniciado por: Vaagish en 23 Junio 2014, 00:38 am



Título: Malware que descarga instrucciones?
Publicado por: Vaagish en 23 Junio 2014, 00:38 am
Hola! Se me ocurrió algo hoy,, pero quería leer algunas opiniones antes de pasar a la POC..

La idea es hacer un programa que descarga opcodes de un servidor y luego los ejecuta, (los mete en la pila), podría ser un binario o un simple archivo de texto.. quizás eso podría evadir el análisis estático... no? Los opcodes podrían ser cosas como cargar una librería y hacer otra cosa.. digamos que el malware seria solo el motor que ejecuta otras ordenes.. a grandes rasgos seria la única firma detectable (el mismo motor, todas las demás funciones serian dinámicas) no se si me explico bien..
que les parece? seria viable?

Saludos!


Título: Re: Malware que descarga instrucciones?
Publicado por: MCKSys Argentina en 23 Junio 2014, 00:45 am
Creo que es algo viable para evadir el analisis estatico.

Creo que lo ideal seria algo asi como una maquina virtual polimorfica, la cual puede ser tan compleja como uno quiera (siquiendo esta linea de pensamiento).

Saludos!


Título: Re: Malware que descarga instrucciones?
Publicado por: Vaagish en 23 Junio 2014, 16:12 pm
Citar
Creo que lo ideal seria algo asi como una maquina virtual polimorfica, la cual puede ser tan compleja como uno quiera (siquiendo esta linea de pensamiento).

Exacto, seria algo asi.. lo bueno que podria tener este metodo seria la capacidad de cambiar en base a lo que uno suba al servidor.. (diferentes opcodes) ademas una vez evadido el analisis estatico, tambien se excluye del sandbox.. despues esta el tema del comportamiento, pero eso ya es otro tema  :xD
Voy a tirar unas lineas de codigo a ver que pasa.. jaja

Saludos!


Título: Re: Malware que descarga instrucciones?
Publicado por: engel lex en 23 Junio 2014, 16:20 pm
pensé que esto era lo que hacia el payloader -.- no vivo mucho en ese mundo, pero como hacer el opcode solo de un proceso? (tampoco me doy con asm hace mucho XD)


Título: Re: Malware que descarga instrucciones?
Publicado por: xv0 en 23 Junio 2014, 16:58 pm
Pues como tu dijiste, si es un opcode ejecutable, pues guardarlo en la pila y para ejecutarlo bastaría con una llamada o un salto.

Aquí tienes un ejemplo muy básico, de un encoder para un payload de BSD*, claro que como dijeron por hay arriba se puede hacer muchísimo mas complejo, solamente quería mostrar un ejemplo.

Código:
http://foro.elhacker.net/bugs_y_exploits/encode_xor_binsh_x8664-t396372.0.html

E visto virus polimorfos con simples xor y add, pero evadían mas de la mitad de las firmas :D, imaginate si te tomas tu tiempo para crear un buen polimorfismo, y no hablo mas del tema porque no se nada sobre antivirus y de Windows.

Si tienes alguna duda ya sabes.

Un saludo.


Título: Re: Malware que descarga instrucciones?
Publicado por: Vaagish en 23 Junio 2014, 19:40 pm
Citar
pensé que esto era lo que hacia el payloader -.- no vivo mucho en ese mundo, pero como hacer el opcode solo de un proceso? (tampoco me doy con asm hace mucho XD)
La verdad no se exactamente que es un payloader, lo he leído 1 millón de veces pero nunca lo estudie (ahora lei un poco sobre el tema.. para mi era lo mismo que un exploit)
No creo que sea lo mismo a la idea de "maquina virtual polimorfica", esto podría ser mucho mas amplio y no tan especifico.. Tampoco es necesario meter todo un proceso en opcodes.. el proceso se va creando a medida que le llegan las instrucciones.. el malware es "un simple motor ejecutor" (por así decirlo).

Citar
Aquí tienes un ejemplo muy básico, de un encoder para un payload de BSD
Voy a estudiar mejor el tema de los payload, entiendo que hay muchas similitudes con esta idea.. todo ejemplo/idea sirve

Citar
Si tienes alguna duda ya sabes.
No lo dudo, ya estaré posteando algo por el subforo jeje

Saludos! Gracias!


Título: Re: Malware que descarga instrucciones?
Publicado por: engel lex en 23 Junio 2014, 20:05 pm
El concepto de maquina virtual ya no lo tengo claro xD creía ue se rwfería a la virtualizacion del hard...

y viendolo solo como un interprete, podrías usar motores standard como lua y le pasas los scripts cifrados para que el av no fastidie pero te vez limitado sin opcodes a su capacidad inicial, es.decir si solo lees archivos y transmites, un script no te va a dar vidéo, trndrías que actualizar el
exe


Título: Re: Malware que descarga instrucciones?
Publicado por: MCKSys Argentina en 23 Junio 2014, 20:12 pm
Creo que un buen ejemplo de una VM NO polimorfica es la VM de VB6 (la libreria msvbvm60.dll).
Cuando haces un EXE compilado en P-CODE, lo que obtienes es un exe que tiene opcodes que son interpretados por la maquina virtual de Visual Basic. No hay codigo x86 en el ejecutable.

Tambien, todos los .NET normales (normales = sin packers ni cosas raras) trabajan de la misma forma, pero las maquinas virtuales no son polimorficas (Ni hablar que los opcodes tampoco cambian, por ende, se puede interpretar estaticamente lo que hacen).

Un lugar donde puedes encontrar VMs polimorficas es este (http://vxheaven.org/). Pero ojo con lo que ejecutas! :)

Te dejo un par de links interesantes:

link1 (http://www.icemanind.com/VMCS.pdf)
link2 (http://www.codeproject.com/Articles/43176/How-to-create-your-own-virtual-machine)

Saludos!


Título: Re: Malware que descarga instrucciones?
Publicado por: Vaagish en 23 Junio 2014, 20:44 pm
Muy buena info MCKSys!
Si no mal recuerdo.. vos habías separado la VM de VB6, no? Yo tenia pensado algo mas simplón, pero se podría hacer algo mucho mejor con toda esa información.. en definitiva veo que no es algo nuevo lo que se me ocurrió.. seria una forma de implementar algo que ya esta inventado.. jaja..

PD: Que difícil resulta inventar algo hoy en día  :xD

Gracias! Saludos!


Título: Re: Malware que descarga instrucciones?
Publicado por: xv0 en 23 Junio 2014, 21:13 pm
@Vaagish

El Payload simplemente son instrucciones "funciones" pasadas a opcode, los payloads normalmente son utilizados en los exploits, este se encarga de explotar el bug y cargar el payload para que ejecute las instrucciones "funciones" que desees. Los polimorfismos de los payloads suelen ser mas simples que los del malware, pero el metedo es casi el mismo.

Y esta es una pregunta abierta, eso de la VM de VB6, solamente es interpretado si el sistema tiene VB6 en el, no? Esta crea un opcode que la VM de VB6 puede interpretar, si es así desde mi punto de vista no vale mucho.

La verdad yo no le veo el sentido a esas cosas, no es mejor buen polimorfismo?

A ver si me aclaran esa duda.

Un saludo.


Título: Re: Malware que descarga instrucciones?
Publicado por: Vaagish en 23 Junio 2014, 21:43 pm
Citar
El Payload simplemente son instrucciones "funciones" pasadas a opcode, los payloads normalmente son utilizados en los exploits, este se encarga de explotar el bug y cargar el payload para que ejecute las instrucciones "funciones" que desees. Los polimorfismos de los payloads suelen ser mas simples que los del malware, pero el metedo es casi el mismo.
Bien,, pero el exploit también son opcodes, no? Son muy parecidos.. en si el payload es la función especifica que explota la vulnerabilidad..

Citar
Y esta es una pregunta abierta, eso de la VM de VB6, solamente es interpretado si el sistema tiene VB6 en el, no? Esta crea un opcode que la VM de VB6 puede interpretar, si es así desde mi punto de vista no vale mucho.
Mas que tener el VB6 instalado lo que necesita es la misma VM, como dijo MCKSys, mas específicamente se necesita la libreria msvbvm60.dll, como funciona exactamente "por dentro", lo desconozco, pero básicamente es una VM..

Citar
La verdad yo no le veo el sentido a esas cosas, no es mejor buen polimorfismo?
La idea es que el motor pregunte a un servidor que hacer.. estas tareas podrían cambiar en cualquier momento, ya sea la acción como la forma de realizarla.. supongamos que algún AV detecta la acción maligna, (pero no el metodo).. la acción podría hacerse con diferentes opcodes modificandola desde el servidor..

Saludos!


Título: Re: Malware que descarga instrucciones?
Publicado por: xv0 en 23 Junio 2014, 22:07 pm
No, el exploit es el que se encarga de explotar la vulnerabilidad, el payload es el que se encarga de ejecutar las ordenes "funciones" que dicta su opcode, "es el transportista".

Y bueno sobre si el exploit son opcodes, pues te diría de que los dos pueden se representados en opcode. Si haces un antivirus potente puedes declarar el exploit y el payload juntos en un puntero, y que tu virus los llame.

En el link que te pase, ves la shellcode pasada en opcode en "formato" C, eso es el payload con su decrypt, siempre puedes poner el exploit en primer lugar y llamarlos, como dije anteriormente.

Y sobre la VM, pues si el user no elimina VB6 y su maquina pues este método si es valido.

Si te decides con los métodos del polimorfismo y ASM, cuanta con mi ayuda, ya que estos temas me parecen interesantes y no hay ninguno.

Un saludo.


Título: Re: Malware que descarga instrucciones?
Publicado por: Vaagish en 24 Junio 2014, 00:21 am
Citar
Y sobre la VM, pues si el user no elimina VB6 y su maquina pues este método si es valido.

Si te decides con los métodos del polimorfismo y ASM, cuanta con mi ayuda, ya que estos temas me parecen interesantes y no hay ninguno.

Naa,, pero mi idea no es usar la VM de VB6  :xD

Citar
Si te decides con los métodos del polimorfismo y ASM, cuanta con mi ayuda, ya que estos temas me parecen interesantes y no hay ninguno.

Ya estoy haciendo unas pruebas en ASM.. y claro que si! Toda participacion es bienvenida.. (ademas puede ser un proyecto largo si asi se quiere) a lo mejor sale algo bueno  :P


Título: Re: Malware que descarga instrucciones?
Publicado por: daryo en 24 Junio 2014, 00:37 am
Citar
Creo que un buen ejemplo de una VM NO polimorfica es la VM de VB6 (la libreria msvbvm60.dll).
Cuando haces un EXE compilado en P-CODE, lo que obtienes es un exe que tiene opcodes que son interpretados por la maquina virtual de Visual Basic. No hay codigo x86 en el ejecutable.
muy interesante con que de esa forma es como funciona,

edito:
me imagino  que una VM polimorfica es completamente indetectable , claro lo digo sin conocer demasiado del tema


Título: Re: Malware que descarga instrucciones?
Publicado por: Vaagish en 24 Junio 2014, 00:49 am
Citar
me imagino  que una VM polimorfica es completamente indetectable , claro lo digo sin conocer demasiado del tema
Mmm... no necesariamente.. yo creo que completamente indetectable no hay nada.. (quizás sea indetectada por un tiempo..) pero a la hora de la heuristica o abuso del malware,, siempre termina detectado...


Título: Re: Malware que descarga instrucciones?
Publicado por: x64core en 24 Junio 2014, 04:15 am
En realidad eso es lo que hace y a hecho malware durante años la descarga de payload desde la algún servidor y ejecutarlo.
Pero sí, hablando especificamente acerca de 'descargar instructiones' y ejecutarlas es posible , el código debe ser especialmente
diseñado para ser ejecutado de tal manera me refiero a PIC (http://en.wikipedia.org/wiki/Position-independent_code) Pero igual se puede implementar una función que resuelva las direcciones de memoria de igual manera que lo hace Windows.

Un lugar donde puedes encontrar VMs polimorficas es este (http://vxheaven.org/). Pero ojo con lo que ejecutas! :)
Mostranos al menos una 'VM polimorfica' que se encuentre en ese sitio.



Título: Re: Malware que descarga instrucciones?
Publicado por: Vaagish en 24 Junio 2014, 05:21 am
Citar
Pero igual se puede implementar una función que resuelva las direcciones de memoria de igual manera que lo hace Windows.

Te referis a por ejemplo las funciones de las apis? Yo tenia pensado (en un principio), leer desde el servidor una cadena por ejemplo asi:

Citar
Modulo:Kernel32.dll;Funcion:CopyFile;FileName:X.exe;....

Con eso el motor ya sabría que hacer con X cosa.. cargaría con LoadLibrary el modulo, llamaría a la función con GetProcAddress, etc, etc... luego surgió lo de los opcodes y una maquina virtual mas compleja.. es todo cuestión de probar, solo así se podrá saber la eficiencia..

Citar
Cita de: MCKSys Argentina en Ayer a las 20:12
Citar
Un lugar donde puedes encontrar VMs polimorficas es este. Pero ojo con lo que ejecutas! :)
Mostranos al menos una 'VM polimorfica' que se encuentre en ese sitio.

VM polimorfica no vi, (tampoco busque a fondo) pero hay buena información referente al tema.. la otra información que puso MCK también es muy buena, la VM esta creada en C#, pero no deja de ser buen material..

Saludos!


Título: Re: Malware que descarga instrucciones?
Publicado por: MCKSys Argentina en 24 Junio 2014, 06:04 am
Mostranos al menos una 'VM polimorfica' que se encuentre en ese sitio.

La verdad, hace ya un tiempo que vengo leyendo tus posts y me resultan cada vez más irritantes (más allá de quien tenga la razón o no). Es evidente tu necesidad de "demostrar" y "desafiar" y, la verdad, no dedicaré más tiempo que el que estoy empleando para informarte sobre esta cuestión.

VM polimorfica no vi, (tampoco busque a fondo) pero hay buena información referente al tema.. la otra información que puso MCK también es muy buena, la VM esta creada en C#, pero no deja de ser buen material..
Saludos!

Ese sitio contiene muchos sources con info para crear código polimórfico. En los otros links, hay info sobre cómo crear una VM.

Uniendo uno con lo otro tienes casi todo lo necesario para empezar.

Saludos!


Título: Re: Malware que descarga instrucciones?
Publicado por: x64core en 24 Junio 2014, 06:19 am
Te referis a por ejemplo las funciones de las apis? Yo tenia pensado (en un principio), leer desde el servidor una cadena por ejemplo asi:


Con eso el motor ya sabría que hacer con X cosa.. cargaría con LoadLibrary el modulo, llamaría a la función con GetProcAddress, etc, etc... luego surgió lo de los opcodes y una maquina virtual mas compleja.. es todo cuestión de probar, solo así se podrá saber la eficiencia..
Mostranos al menos una 'VM polimorfica' que se encuentre en ese sitio.
No, eso vendria a relacionarse si en el código se necesitase que las importaciones se resuelvan, yo realmente lo veo feo una implementación de
esa manera mejor resolver las funciones a usar durante la inicialización, me refiero a implementar GetModuleHandle, GetProcAddress , salvar la
direcciónes de memoria para luego usarlas.

Y lo que me refiero es a sresolver las direcciónes de memoria: http://en.wikipedia.org/wiki/Relocation_(computing)

VM polimorfica no vi, (tampoco busque a fondo) pero hay buena información referente al tema.. la otra información que puso MCK también es muy buena, la VM esta creada en C#, pero no deja de ser buen material..

Saludos!
En primer lugar como siempre la gente confunde este tipo de terminos lo que en realidad se habla en los enlaces es acerca de emulación de
código y no una maquina virtual, para realmente decir que es una maquina virtual allí debe haber virtualización, una maquina virtual
emula incluso el hardware incluyendo la BIOS.
Noten la enorme diferencia que hay entre emulación de código y una maquina virtual. Un ejemplo claro es Bochs este es más que un
respetable emulador. Y no se extrañen, es comun mirar norteamericanos en CodeProject programando algo que nisiquiera ellos mismos
saben que es.

La verdad, hace ya un tiempo que vengo leyendo tus posts y me resultan cada vez más irritantes (más allá de quien tenga la razón o no). Es evidente tu necesidad de "demostrar" y "desafiar" y, la verdad, no dedicaré más tiempo que el que estoy empleando para informarte sobre esta cuestión.
No sé a que viene esto, supongo que alguien esta teniendo un mal día.


Título: Re: Malware que descarga instrucciones?
Publicado por: engel lex en 24 Junio 2014, 06:39 am
En primer lugar como siempre la gente confunde este tipo de terminos lo que en realidad se habla en los enlaces es acerca de emulación de
código y no una maquina virtual, para realmente decir que es una maquina virtual allí debe haber virtualización, una maquina virtual
emula incluso el hardware incluyendo la BIOS.

entonces java no es una maquina virtual debido que nunca emula hardware sino que hace la conversión de opcode java a opcode SOhost?


Título: Re: Malware que descarga instrucciones?
Publicado por: MCKSys Argentina en 24 Junio 2014, 07:07 am
entonces java no es una maquina virtual debido que nunca emula hardware sino que hace la conversión de opcode java a opcode SOhost?

Si, java corre en una maquina virtual (http://en.wikipedia.org/wiki/Java_virtual_machine), al igual que Actionscript (http://en.wikipedia.org/wiki/ActionScript_Virtual_Machine) y los demas.

Es evidente que aquí, cuando decimos Virtual Machine, nos referimos a ésto (http://en.wikipedia.org/wiki/Virtual_machine#Process_virtual_machines).

Saludos!


Título: Re: Malware que descarga instrucciones?
Publicado por: x64core en 24 Junio 2014, 07:14 am
entonces java no es una maquina virtual debido que nunca emula hardware sino que hace la conversión de opcode java a opcode SOhost?
Java, VB6, .NET tienen enfoque de actuar como una maquina virtual eso no significa lo mismo.
creo que incluso Wikipedia resuelve tu duda.


Título: Re: Malware que descarga instrucciones?
Publicado por: engel lex en 24 Junio 2014, 07:15 am
Java, VB6, .NET tienen enfoque de actuar como una maquina virtual eso no significa lo mismo.
creo que incluso Wikipedia resuelve tu duda.
es decir que aunque sean maquina virtual java, maquina virutal action script ellos erraron en el concepto y colocaron un nombre que no es preciso para su función?


Título: Re: Malware que descarga instrucciones?
Publicado por: x64core en 24 Junio 2014, 07:25 am
es decir que aunque sean maquina virtual java, maquina virutal action script ellos erraron en el concepto y colocaron un nombre que no es preciso para su función?
En realidad es algo ambiguo yo no creo que seria algo original escribir una entera descripción como nombre de algun software es primera
vez que lo miras?


Título: Re: Malware que descarga instrucciones?
Publicado por: engel lex en 24 Junio 2014, 07:37 am
no entendi XD siento que falta una coma para separar la 2 ideas pero no estoy seguro donde empieza la segunda XD... explícate con lo de "es ambiguo", es decir, aun cuando la descripción de java es ser una maquina virtual, no lo es?


Título: Re: Malware que descarga instrucciones?
Publicado por: x64core en 1 Julio 2014, 07:54 am
Te digo que si es original poner una entera descripción como nombre de algún programa?