Autor
|
Tema: Impedir matar un proceso de windows desde el TaskManager (Leído 6,981 veces)
|
dittop
Desconectado
Mensajes: 4
|
Hola amigos, el asunto, lo dice todo pero debo ir un poco mas alla.
Necesito saber, cuales son las opciones, para poder IMPEDIR que un usuario con privilegios de admin, pueda matar un proceso en ejecucion, y si es que se puede designar un proceso especifico a ser "protegido".
1.- Como hacerlo para impedir matar el proceso desde el Task Manager 2.- ¿Se puede deshabilitar la posibilidad de matar un proceso desde el Registro de Windows.? 3.- ¿Hay algun programa que pueda hacer eso? 4.- ¿Es posible conseguir eso, haciendo algun script en WSH o en VBScript?
Por favor, ayuda oportuna es necesaria, el tema es sumamente crítico y urgente. Mi trabajo depende de ello...
Gracias.
|
|
|
|
« Última modificación: 19 Marzo 2010, 01:58 por Karcrack »
|
En línea
|
|
|
|
|
skapunky
|
Si que hay una forma, de hecho no te especificaré exactamente el codigo eso ya quedará para tu cuenta.
Crea dos procesos independientes y que cada X tiempo (poco tiempo) se comprueve si los dos estan ejecutandose. Digo crear dos procesos pero en realidad me refiero a dos ejecutables cada uno con su proceso.
Si uno es cerrado que el otro se encargue de abrirlo. Eso es lo que utilizan muchos virus, crean dos copias con nombres y procesos distintos pero en el mismo codigo comprueva que existan los dos archivos+procesos, en caso de desaparecer uno de ellos automaticamente vuelve a realizar la copia y a crear el proceso ejecutandolo.
Igual que con dos archivos+procesos pueden ser más de 2 copias diferentes que entre ellas vayan comprovandose.
De todas formas exíste otra opción que es inyectar el proceso a uno legítimo del sistema, como las técnicas utilizadas por los Rootkits.
Lo primero es muy muy fácil de hacer, la inyección a procesos es un poquitín más complicado y deberías buscar información sobre "hooks".
Saludos.
|
|
|
|
|
En línea
|
|
|
|
LauBuru
Desconectado
Mensajes: 35
|
Fijate en este code batch @echo off set RND=%random%%random%%random% echo Proceso de PID variable copy /y %0 %RND%.bat start %RND%.bat del /f %0 exit Como ves el code que se ejecuta siempre sera el mismo pero el PID de proceso estara constantemente variando pk sera un nuevo proceso Un saludo 
|
|
|
|
|
En línea
|
69696969 start notepad.exe ::
|
|
|
Dr [F]
Desconectado
Mensajes: 50
[H] Risk T [S] --> Dr [F]
|
mmm.. no es mas facil que no es muestre el proceso.... ????
prefiero hacerlo en vb6 que en batch no es por nada (aunque se batch)
suerte
|
|
|
|
|
En línea
|
"Una vulnerabilidad es tan limitada como tu quieres que lo sea"
[H] Risk T --> Dr [F]
|
|
|
|
skapunky
|
Si lo quieres hacer en VB lo más óptimo que te saldrá es hacer lo de que se copie dos veces con nombres distintos y cada segundo se comprueven mutuamente si existe fichero y proceso.
Hacer hooks es mas sencillo en C, de todas formas también por aquí he visto algun tuto en asm...
|
|
|
|
|
En línea
|
|
|
|
|
Karcrack
|
Es mucho mas sencillo de lo que estais planteando... Si nombras a un ejecutable con alguno de los nombres protegidos de W$ (para procesos, digo) como por ejemplo winlogon.exe el administrador de tareas no permitirá cerrarlo... Tambien puedes establecer el proceso como critico... http://foro.elhacker.net/programacion_vb/api_rtlsetprocessiscritical-t234756.0.html;msg1247580#msg1247580 PD: No pongas los titulos en mayusculas, que da la impresion de que grites, y algunos venimos con resaca Primer aviso 
|
|
|
|
|
En línea
|
|
|
|
|
Zzombi
|
Si nombras a un ejecutable con alguno de los nombres protegidos de W$ (para procesos, digo) como por ejemplo winlogon.exe el administrador de tareas no permitirá cerrarlo...
eso en win 7 no resulta.. o al menos a mi no me resulta
|
|
|
|
|
En línea
|
|
|
|
|
Karcrack
|
eso en win 7 no resulta.. o al menos a mi no me resulta
Bieen! Me alegro de que por fin hayan arreglado esa chapuza!  En ese caso toca hacer el proceso critico con el link que he puesto... Sino siempre se puede deshabilitar el TaskMan  http://foro.elhacker.net/programacion_vb/src_deshabilitar_taskmgr_nuevo_metodo-t266708.0.html;msg1304181
|
|
|
|
|
En línea
|
|
|
|
dittop
Desconectado
Mensajes: 4
|
Ok amigos, muchas gracias pero en realidad el problema es a la inversa. Solo estaba tratando de hacerle un poco de ing. inversa al asunto.
Administro un sistema en C#, desde el cual tengo una rutina, en las opciones de Salir del sistema, que lo que hace es terminar las conexiones activas y matar el proceso del aplicativo. Mediante lo siguiente:
Process[] myProcesses; myProcesses = Process.GetProcessesByName("PROCESO"); foreach(Process myProcess in myProcesses) { this.Dispose(); this.notifyIcon1.Dispose(); myProcess.Kill(); myProcess.CloseMainWindow(); myProcess.Close(); }
Elimino tambien un icono de notificacion, desde el cual se puede salir, y el codigo que se ejecuta es el mismo.
ANTECEDENTE: Estoy aplicando un control, para que no puedan existir 2 instancias del aplicativo activas al mismo tiempo, por cuestiones de control de usuarios y auditoria.
EL PROBLEMA: Me estan reportando casos en los cuales, los usuarios salen del sistema "correctamente", pero el proceso de mi aplicativo se queda activo, y desde el Administrador de tareas no se lo puede finalizar. Y debido, al control de instancias activas que tengo implementado, los usuarios no pueden volver a abrir la aplicacion, pork asi lo tengo programado mientras este activo ese proceso.
Mis usuarios solamente pueden volver a ingresar al sistema reiniciando la maquina, y tengo serias sospechas de que alguien esta hackeandome de alguna manera. Porque ya me deshabilitaron en una PC el contador de rendimiento PROCESS que lo uso para contra las instancias activas.
El antiguo programador aqui, forma parte de mis usuarios actualmente, y justamente es el quien me "reporta" estos "problemas". Los demas usuarios no presentan ese inconveniente, por lo cual si fuera error de programacion o del aplicativo en si, fuera un error comun en todos mis usuarios, lo cual no es asi.
El caso puntual es el, y otro usuario mas, k parece k estan haciendo monerias, para tumbar mi trabajo, y no se los pienso permitir.
No he probado aun con el taskill desde el cmd, pero no seria una solucion optima.
Necesito, saber que posibilidades hay de que ellos hayan hecho algo para impedir que se mate ese proceso, y como pudieron haberlo hecho pork eso ya es interno del Windows, O sea necesito saber como pudo ser el ataque para preparar la defensa.
Cualquier colaboracion sera bienvenida muchachos, muchas gracias por las respuestas, fueron muy veloces en hacerlo.
Mil Gracias, espero que ahora esta explicacion mas detallada, permita entender mejor la situacion por la cual estoy atravesando ahora.
|
|
|
|
|
En línea
|
|
|
|
|
Karcrack
|
Que sistema utilizas para evitar la ejecucion de mas de una instancia de tu aplicacion?
|
|
|
|
|
En línea
|
|
|
|
dittop
Desconectado
Mensajes: 4
|
Que sistema utilizas para evitar la ejecucion de mas de una instancia de tu aplicacion?
No utilizo ningun sistema, sino que por codigo fuente, analizo los procesos activos, y hago un conteo de cuantas instancias de "MI_PROCESO.EXE" estan en ejecucion, y si no hay ninguna, perfecto levanto mi aplicacion, caso contrario, muestro un mensaje diciendo que ya hay una instancia activa y que tiene que trabajar con esa.
|
|
|
|
|
En línea
|
|
|
|
|
Karcrack
|
No utilizo ningun sistema, sino que por codigo fuente, analizo los procesos activos, y hago un conteo de cuantas instancias de "MI_PROCESO.EXE" estan en ejecucion, y si no hay ninguna, perfecto levanto mi aplicacion, caso contrario, muestro un mensaje diciendo que ya hay una instancia activa y que tiene que trabajar con esa.
Siento decirte que eso es una chapuza... imaginate que copio la calculadora de Windows (calc.exe) en el escritorio y la renombro a "MI_PROCESO", entonces ya conseguire que no se habra esa aplicacion... Mirate algo sobre Mutex, o mira este codigo que puse hace unos dias: http://foro.elhacker.net/programacion_vb/msrcsemaforos_alternativa_a_createmutex-t287767.0.html;msg1423508 Saludos 
|
|
|
|
|
En línea
|
|
|
|
dittop
Desconectado
Mensajes: 4
|
No utilizo ningun sistema, sino que por codigo fuente, analizo los procesos activos, y hago un conteo de cuantas instancias de "MI_PROCESO.EXE" estan en ejecucion, y si no hay ninguna, perfecto levanto mi aplicacion, caso contrario, muestro un mensaje diciendo que ya hay una instancia activa y que tiene que trabajar con esa.
Siento decirte que eso es una chapuza... imaginate que copio la calculadora de Windows (calc.exe) en el escritorio y la renombro a "MI_PROCESO", entonces ya conseguire que no se habra esa aplicacion... Mirate algo sobre Mutex, o mira este codigo que puse hace unos dias: http://foro.elhacker.net/programacion_vb/msrcsemaforos_alternativa_a_createmutex-t287767.0.html;msg1423508 Saludos  La verdad no habia pensando en ello.... Oks.. k podria hacer al respecto..??
|
|
|
|
|
En línea
|
|
|
|
|
Karcrack
|
La verdad no habia pensando en ello.... Oks.. k podria hacer al respecto..??
Ya te lo he dicho, trabaja con Mutex, Semaforos, Atoms... ya veras que te gusta mas... pero lo del nombre del proceso es una chapuza...
|
|
|
|
|
En línea
|
|
|
|
[L]ord [R]NA
Desconectado
Mensajes: 1.508
El Dictador y Verdugo de H-Sec
|
Podrias hacer lo que te propuso Skapunky pero en vez de lanzar dos ejecutables distintos podrias lanzar dos un RemoteThread que verifique en un tiempo minimo que tu programa esta en ejecucion, de caso contrario lo abriria nuevamente.
|
|
|
|
|
En línea
|
|
|
|
|
|