Malware que descarga instrucciones?

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

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

Vaagish

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!

MCKSys Argentina

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!
MCKSys Argentina

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


Vaagish

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!

engel lex

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

cpu2

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.

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.

Vaagish

Citarpensé 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).

CitarAquí 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

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

Saludos! Gracias!

engel lex

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

MCKSys Argentina

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. Pero ojo con lo que ejecutas! :)

Te dejo un par de links interesantes:

link1
link2

Saludos!
MCKSys Argentina

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


Vaagish

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!

cpu2

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