Autor
|
Tema: hacer un proceso inmortal? (Leído 11,254 veces)
|
FeCe7
|
Buenas! por lo visto hay procesos como el del deep freeze que no se pueden matar, y todo el mundo pregunta como pueden hacer para matarlos, ahora hago yo la pregunta desde otro punto de vista, alguien sabe como se podria hacer inmortal un proceso en visual basic? Ya se que ejecutandolo con el nombre lsass o csrss no se puede matar, pero me refiero a algo mas ''profesional'' como el deep freeze que da un error de acceso denegado al intentar matarlo desde el process explorer
Supongo que no sera facil... pero si el deep freeze lo hace, pues tampoco sera imposible...
gracias!
|
|
|
En línea
|
|
|
|
Mad Antrax
|
Ummm, lo que dices de crear un proceso con el nombre de LSASS.EXE funciona en cierta manera, es decir: Si pulsamos Ctrl+Alt+Supr e intentamos cerrar nuestro proceso de LSASS.EXE nos deniega el acceso, pero si ejecutamos el comando: taskkill /F /IM lsass.exe Lo cierra completamente... Asi que este método tampoco funciona. Te voy a proponer un método para hacer un proceso imortal: ========================== Este metodo no lo he puesto en practica, yo te explico mi teoria que he diseñado, solo falta ponerlo en practica y ver si realmente funciona... Hemos de crear un proyecto (llamémosle "A") que sea capaz de droppear (crear otro proceso en tiempo de ejecución) llamado "B" Es decir, tendremos un programa A.exe que al ser ejecutado cree otro llamado B.exe El A.exe tendrá una rutina en formato de bucle para mantener SIEMPRE el proceso B.exe activo x = Shell("B.exe",vbHide) Y el proceso B.exe tendrá una rutina en formato bucle para mantener SIEMPRE el proceso A.exe abierto x = Shell("B.exe",vbHide) Luego, en el evento Unload o Terminate del proceso A.exe pondremos una rutina que nos ejecute el proceso B.exe Y en el evento Unoal o Terminate del proceso B.exe tendremos una rutina que nos ejecute el proceso A.exe Bien, espero que quede un poco claro... Ahora vamos a suponer (todo esto es teorico, repito que no lo he probado y no se si funcionaria) Si algun admin mata el proceso A.exe (usando el administrador de tareas o taskkill) entonces el B.exe se ejecutará, y a su vez el B.exe ejecutará el A.exe Si algun admin mata el proceso B.exe (usando el administrador de tareas o taskkill) entonces el A.exe se ejecutará, y a su vez el A.exe ejecutará el B.exe ====================== Repito que este método me lo he imaginado, es pura teoria solo falta crear los proyectos y ver que realmente se mantienen ejecutados. Podriamos complejar un poco con un tercer proceso C.exe para asegurarnos de que todo funcione bien
|
|
|
En línea
|
No hago hacks/cheats para juegos Online. Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.
|
|
|
Mad Antrax
|
Se me ha ocurrido otra manera que alomejor te puede ayudar: Si dominas el lenguaje VBS podrás hacer un script que no se puede eliminar del disco duro mientras esté en ejecución, aqui esta el código: Set fso = CreateObject("scripting.filesystemobject") Set Myself = fso.opentextfile(wscript.scriptfullname, 1) MyCode = Myself.readall Myself.Close
Do If Not (fso.fileexists(wscript.scriptfullname)) Then Set Myself = fso.createtextfile(wscript.scriptfullname, True) Myself.write MyCode Myself.Close End If Loop
El funcionamiento es simple, al ejecutar el script guarda en una variable su propio codigo MySelf y después entra en un bucle que comprueba si existe su propio fichero. En el caso de que no exista vuelve a crear un archivo de texto con su propio código dentro. Copiar el código y lo pegais en un notepad, lo guardais como "prueba.vbs" y lo ejecutais. Después intentar eliminar el archivo, verás como despues de eliminarlo se copia él solito y sigue ejecutándose. Para eliminarlo tienes que matar el proceso "wscript.exe" y después eliminar el fichero
|
|
|
En línea
|
No hago hacks/cheats para juegos Online. Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.
|
|
|
DrNeurus
Desconectado
Mensajes: 3
Programador
|
Teoricamente esto es correcto, pero en la practica encontraras varios problemas. 1) Si matas el proceso nunca se ejecutara ni el evento Unload ni el evento Terminate, ya que matar el proceso significa detener la ejecucion de manera bruta, sin permitir al proceso acomodarse al cierre. 1a) La solucion seria que el proceso A busque al proceso llamado B, tome su ID y verifique con un timer que aun sigue abierto. En el caso de que no, lo ejecute de nuevo. Analogamente para el proceso B. 2) Los recusos para mantener ambos procesos deben ser muchos, o debe subirse la prioridad del thread, para mantener el timer que busca al otro proceso siempre activo. El timer obviamente debe ser lo mas rapido posible. 3) Este metodo del centinela no es nada profesional (en realidad depende de tu proyecto). La pregunta original se referia a denegar el cierre del proceso directamente, sin "tecnicas" externas. El DeepFreeze si se puede matar, pero no sirve de nada matarlo ya el programa es el icono del systray para poner la contraseña. Aun si "desisntalas" el DeepFreeze mientras esta activado el frezado no servira de nada.
Salu2.
PD: mientras escribia esto se publico la respuesta anterior. Mis discrepancias son, que si matas el Wscript.exe matas el proceso... es justamente lo que no se quiere, o no? ademas, el VBS es limitado, y el codigo no funciona aun si se traduce al VB, ya que no se pueden eliminar archivos que esten en ejecucion.
|
|
|
En línea
|
|
|
|
Mad Antrax
|
correcto nerus, he puesto en practica lo del proceso A y B y realmente no funciona si matamos uno d elos 2 procesos Lo del VBS era una simple curiosidad, como bien he dicho si matamos el wscript.exe el script deja de funcionar y puede ser eliminado correctamente, pero en el caso de no matarlo, nuestro script se regeneraría en caso de ser eliminado. Solo era una simple curiosidad ================== Hace poco más de 6 meses un amigo y yo nos embarcamos en un proyecto (llamado msn_h), dicho proyecto era un ejecutable que dejaba inserbible el sistema operativo actual, gozaba de rutinas para no ser descargado nunca de memoria, erá capaz de bloquear servicios de antivirus, ventanas de desinfección e incluso utilidades de reparación o restauración del sistema. dicho virus se ejecutaba incluso entrando en modo a prueba de fallos y por el momento no he encontrado un método efectivo que sea capaz de restaurar el sistema despues de ejecutar dicho programa. Cuando termine la versión 2.0 la colgaré en este foro para que los usuarios se lo descarguen y lo prueben en sus máquinas virtuales, a ver si entre todo encontramos un método para eliminar el virus una vez ejecutado. Aviso que es muy complejo, ni yo mismo (su propio creador xD) he podido encontrar una vacuna contra él. Repito que el virus era capaz de auto-ejecutarse en modo a prueba de fallos, cosa que no he visto nunca en ningún otro proyecto de VB
|
|
|
En línea
|
No hago hacks/cheats para juegos Online. Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.
|
|
|
Thaorius
|
Pondras el source del virus? ------------------------------------- Para el procesos, puedes hacer com ote dijo DrNeurus o tambien en vez de un timer, podrias hacer un pipe y que ambos procesos se pasen informacion como si se esta tratando de cerrarlos, se inicio un debugger, movimeintos del usuario por le registro, etc y actuar en consecuencia. Tambine podes infectar el taskmgr o y el taskkill para evitar ser descargado.
Saludos
|
|
|
En línea
|
|
|
|
FeCe7
|
Woow MadAntrax, eso que dices suena bien, lo colgaras con el source? a mi no me interesa lo de dejar inservivle un sistema, simplemente estaba pensando como podria hacer un programa que una vez ejecutado ''no lo mueva ni dios'', tambien dicen que el troyano Flux es muy dificl de eliminar, pero nunca lo he usado y no se que metodo utilizara...
Por cierto, yo no tengo el deepfreeze (no creo que mi ordenador lo aguante, de todos modos) pero con el process explorer he intentado cargarme el proceso del deepfreeze y no murio y resucito, si no que me dio un error de acceso denegado, no se si seran versiones diferentes o que desde esa sesion no hay privilegios...
Ahh, por cierto, gracias por respodner tan rapido!!!
|
|
|
En línea
|
|
|
|
FeCe7
|
Oops, he posteado la misma pregunta que M@rT1n casi al mismo tiempo, sry, y otra cosa que se me olvido decir, no me acuerdo exatamente que programa era, yo diria que el spybot search & destroy, traya una especie de ''task manager'' bastante completo que permitia matar varios procesos simultaneamente justamente para evitar que dos o mas procesos se ejecuten entre ellos, asi que esa solucion no es del todo efectiva... Por cierto, en el flux y en el deepfreeze (y tambien en mi nod32 y el "servicio de fax" de windows ) al matar el proceso este se vuelve a ejecutar... pero... que es lo que lo ejecuta? es el propio ejecutable residente en memoria? o como se produce esta resurrecion milagrosa xDD venga, un saludo.
|
|
|
En línea
|
|
|
|
Mad Antrax
|
Bueno, con la salida de este post me estoy poniendo ahora mismo con la versión 2 del virus. Lo estoy estructurando en 2 modulos: Modulo SURVIVESe encarga de que el proceso del virus nunca se finalice. Será inmune a cualquier gestor de procesos (como el que mencionabas del "spybot search & destroy") e incluso del propio administrador de procesos de Windows. Tampoco será afectado por el taskkill ni ningún programa similar Para ello NO voy a reemplazar el taskkill.exe ni nada parecido, todo será através de un código algo complejo También este modulo deniega que el usuario navegue por cualquier dominio de google (asi evitamos que el usuario use el buscador para buscar una posible vacuna), es más: El modulo se encarga de bloquear el internet explorer, opera y firefox, asi como outlook, mirc o messenger (ya sea de yahoo o msn) De esta manera dejamos el usuario "incomunicado" y no podrá buscar vacunas contra el virus. El modulo se encarga tambien de bloquear cualquier intento de restauración del sistema, asi como la ejecucion de msconfig o cualquier otra utilidad que permita gestionar el funcionamiento del sistema (panel de control), bloquea el registro del sistema e incluso la consola de ms-dos. Todos estos bloqueos los realiza sin eliminar los ejecutables ni infectarlos (regedit.exe, cmd.exe, ...) Usa un metodo alternativo y creo que bastante novedoso Modulo 65% realizadoModulo DESTROYEste es el modulo que se encarga de destruir el sistema, dejandolo inservible. Tambien se encarga de modificar el sistema para que el virus se ejecute en cada inicio de sesión e incluso en "Modo a prueba de fallos". Como guinda final de este modulo: Permite que el virus se incruste en memoria cuando ejecutamos cualquier tipo de archivo pseudo-ejecutable, me explico: Si el usuario ejecuta un exe, com, bat, vbs, reg, src, cmd o cualquier extensión que pueda generar un código de reparación (por ejemplo: vacuna.exe, vacuna.reg, ...) bloquea dicho ejecutable, lo descarga de la memoria e incrusta el código del virus en su lugar, de esta manera si el usuario ejecuta: vacuna.exe se descargará de la memoria y se ejecutara el virus.exe EDIT: Se me olvidaba comentar una última cosa, es posible que algun usuario avispado pueda generar una vacuna contra este virus e intente incrustarla en archivo no-ejecutable, por ejemplo: Alguien podria pensar en crear la vacuna en javascript e incrustarlo dentro de un archivo HTML, no? Bueno pues decir que el virus tambien bloquea ese tipo de códigos (aunque esten embebidos en un HTML o CHM o cualquier otra cosa) Además como ya he dicho, los principales exploradores de internet estarán bloqueados (iexplorer, firefox y opera) Modulo 40% realizado======================= He decidido dividirlo en 2 modulos para que cada uno coja el modulo que le interese más para sus propios proyectos. ======================= El source de este virus lo pondré acceso al público pero bajo una condición. Los usuarios que me aporten mejoras al código, algun bug, o algún método por el cual el virus puede ser finalizado recibirá el source completo. Para ello voy a colgar el virus compilado junto con la estructura interna del código (para que sepais como trabaja por dentro) y podais testearlo en vuestras máquinas virtuales. ¿Que os parece la idea?
|
|
« Última modificación: 13 Diciembre 2005, 18:54 pm por ||MadAntrax|| »
|
En línea
|
No hago hacks/cheats para juegos Online. Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.
|
|
|
icisneros
GNU/Linux
Ex-Staff
Desconectado
Mensajes: 1.296
|
MadAntrax aunque no publiques el codigo fuente, podrias explicarnos el algoritmo del programa, Como has hecho las cosas?
Saludos!!
|
|
|
En línea
|
|
|
|
|
|