Foro de elhacker.net

Seguridad Informática => Análisis y Diseño de Malware => Mensaje iniciado por: Debci en 31 Enero 2013, 04:22 am



Título: Insertar .jar en el registro para auto-ejecución al inicio de Windows!
Publicado por: Debci en 31 Enero 2013, 04:22 am
Hola compañeros, hace tiempo que no me paso por esta sección del foro y ahora os traigo una duda relativa a un proyecto que estoy desarrollando.

Estoy desarrollando una herramienta de control remoto de la cual requiero que se ejecute al iniciar Windows. Esta herramienta esta desarrollada en Java, por lo que es un archivo con extensión .jar una vez compilado el código (ya me entendéis con "compilador" :P).

Yo lo hago de la siguiente forma:

-Accedo al registro de Windows mediante la herramienta de sistema regedit.exe
-Busco el directorio de claves "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Curr entVersion\Run"
-Añado una nueva clave de registro, como por ejemplo:
Código:
java -jar "C:\Midirectorio\nombreArchivo.jar"

La idea es hacerlo desde la propia aplicación, que en principio no es mi gran problema ahora mismo, pues existe una API para poder realizar dicha tarea.

Entonces ocurre algo que no esperaba, me lanza mi aplicación, que en principio no tiene GUI, pero sin embargo es visible porque se ejecuta en una ventana de consola de sistema tipo DOS.
Hay alguna manera de ejecutarlo en quiet-mode u ocultar dicha ventana?
Este tema me trae de cabeza.
A resumidas cuentas, mi pregunta es:
-Como podría ejecutar un jar al iniciar windows, de forma invisible? (al menos en el escritorio, ya que, se que se vería en la lista de procesos y la máquina virtual, levantaría sospechas)

Además se me ocurre otro problema, una vez alguien haya descargado mi aplicación, deseo que esta se mueva a otro directorio, menos accesible para el usuario. Técnicamente, como puedo lograr esto? No puedo mover mi aplicación si esta se está ejecutando, además de que no tengo nada con que moverlo, porque, no es técnicamente imposible que se mueva a si misma?

Muchísimas gracias por vuestro tiempo :)

Un cordial saludo!


Título: Re: Insertar .jar en el registro para auto-ejecución al inicio de Windows!
Publicado por: Elemental Code en 31 Enero 2013, 06:00 am
mmm hace que tu programa la esconda, osea no se como funcionara en java, pero tenes que tener apis para manejar ventanas :P


Título: Re: Insertar .jar en el registro para auto-ejecución al inicio de Windows!
Publicado por: Debci en 31 Enero 2013, 11:14 am
No se si esto es del todo posible, porque la ventana en sí no pertenece a la instancia de Java, osea que es la consola la que instancía a Java!

Gracias por tu tiempo :)


Título: Re: Insertar .jar en el registro para auto-ejecución al inicio de Windows!
Publicado por: 0xDani en 31 Enero 2013, 15:33 pm
En cuanto a lo de moverte a otro directorio, es perfectamente posible. Abres el archivo de tu programa, lo metes en un buffer, lo borras, abres otro archivo en el directorio que quieras, metes el contenido del buffer en el archivo que has creado y voila!

Y en cuanto a iniciar la ventana en modo oculto, seguramente tendras alguna API, o alguna opcion en el registro o en la propia VM de Java. Y si no en Linux se usa un truco, que es crear un proceso hijo, y que el proceso hijo mate al padre, haciendo que se cierre la ventana, y despues ya operar con el proceso hijo.

Saludos.


Título: Re: Insertar .jar en el registro para auto-ejecución al inicio de Windows!
Publicado por: Debci en 1 Febrero 2013, 12:15 pm
Muchas gracias, me informaré pues :)

Respecto a lo de moverse a otro directorio, si guardo el programa en un buffer, al cerrarlo lo perdería, no? Sugieres que lo haga con dos ejecutables?

Saludos


Título: Re: Insertar .jar en el registro para auto-ejecución al inicio de Windows!
Publicado por: 0xDani en 1 Febrero 2013, 15:25 pm
Muchas gracias, me informaré pues :)

Respecto a lo de moverse a otro directorio, si guardo el programa en un buffer, al cerrarlo lo perdería, no? Sugieres que lo haga con dos ejecutables?

Saludos

No, guardas el programa en un buffer y luego lo vuelcas a otro archivo. Si es necesario coambias la clave del registro para que ejecute ese otro archivo.

Ejemplo en C:

Código
  1. #include <stdio.h>
  2.  
  3. int main(int argc, char **argv)
  4. {
  5. FILE *f = fopen(argv[0], "rb");    /* Abrirte a ti mismo*/
  6. fseek(f, 0, SEEK_END);             /* Obtener el tamaño del archivo*/
  7. long long fileSize = ftell(f);
  8. fseek(f, 0, SEEK_SET);
  9.  
  10. char *buffer = malloc(fileSize); /* Reservar memoria para el buffer*/
  11.  
  12. fread(buffer, 1, fileSize, f);       /* Leer el archivo y meterlo al buffer*/
  13. fclose(f);
  14.  
  15. f = fopen("/Ruta/a/la/que/quieres/moverte", "wb"); /* Escribir el contenido del buffer en el
  16.                                                             nuevo archivo*/
  17. fwrite(buffer, 1, fileSize, f);
  18. fclose(f);
  19.  
  20. remove(argv[0]);    /* Borrar el antiguo archivo*/
  21. return 0;
  22. }
  23.  
  24.  


Título: Re: Insertar .jar en el registro para auto-ejecución al inicio de Windows!
Publicado por: burbu_1 en 1 Febrero 2013, 17:23 pm
no sé de java.... pero por hablar que no quede  :laugh: :laugh:
igual te sirve para ocultar la consola

Citar
http://blog.soporteti.net/programacion-2/ocultar-ventana-de-cmd-al-ejecutar-una-aplicacion-en-windows-java/

lo que comenta 0xDani, si no entiendo mal, es copiarse en vez de mover el archivo en ejecución. Y una vez copiado, puedes iniciar el nuevo proceso con parámetros para terminar el original, o usar algún melt desde el original...
Citar
http://foro.elhacker.net/programacion_vb/srcsnippet_alternativa_de_melt_winexec-t243264.0.html
, o con shellexecute, inyección....

saludos


Título: Re: Insertar .jar en el registro para auto-ejecución al inicio de Windows!
Publicado por: Debci en 3 Febrero 2013, 03:27 am
Vuestras respuestas han sido excelentes!
Han desvelado mis ideas!
Confirmo, el comando:
Código:
START /B java.exe -jar aplicacion.jar
Consigue ejecutar en segundo plano la aplicación!

Saludos