Malware que descarga instrucciones?

Iniciado por Vaagish, 23 Junio 2014, 00:38 AM

0 Miembros y 3 Visitantes están viendo este tema.

Vaagish

CitarEl 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..

CitarY 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..

CitarLa 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!

cpu2

#11
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.

Vaagish

CitarY 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

CitarSi 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

daryo

#13
CitarCreo 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
buenas

Vaagish

Citarme 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...

x64core

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 Pero igual se puede implementar una función que resuelva las direcciones de memoria de igual manera que lo hace Windows.

Cita de: MCKSys Argentina en 23 Junio 2014, 20:12 PM
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.


Vaagish

CitarPero 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:

CitarModulo: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..

CitarCita de: MCKSys Argentina en Ayer a las 20:12
CitarUn 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!

MCKSys Argentina

Cita de: x64Core en 24 Junio 2014, 04:15 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.

Cita de: Vaagish en 24 Junio 2014, 05:21 AM
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!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


x64core

#18
Cita de: Vaagish en 24 Junio 2014, 05:21 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)

Cita de: Vaagish en 24 Junio 2014, 05:21 AM
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.

Cita de: MCKSys Argentina en 24 Junio 2014, 06:04 AM
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.

engel lex

Cita de: x64Core en 24 Junio 2014, 06:19 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?
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.