elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ¿como detectar nuevos procesos en ejecucion?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿como detectar nuevos procesos en ejecucion?  (Leído 5,481 veces)
theghost_te

Desconectado Desconectado

Mensajes: 53


Ver Perfil
¿como detectar nuevos procesos en ejecucion?
« en: 19 Diciembre 2010, 16:41 pm »

se podrá de alguna manera hacer que nuestro prog. se entere cada vez que un nuevo proceso se ejecute?


« Última modificación: 19 Diciembre 2010, 19:05 pm por theghost_te » En línea

Littlehorse
All the world's a stage
Moderador
***
Desconectado Desconectado

Mensajes: 2.714


Nie Dam Sie


Ver Perfil WWW
Re: ¿como detectar nuevos procesos en ejecucion?
« Respuesta #1 en: 19 Diciembre 2010, 21:05 pm »

Depende de lo que estés haciendo. Antes que edites el post me pareció leer que estabas haciendo un rootkit, por lo tanto un hook en NtCreateSection es una de las mejores formas de proceder en este caso.





En línea

An expert is a man who has made all the mistakes which can be made, in a very narrow field.
theghost_te

Desconectado Desconectado

Mensajes: 53


Ver Perfil
Re: ¿como detectar nuevos procesos en ejecucion?
« Respuesta #2 en: 19 Diciembre 2010, 23:47 pm »

si, eso estoy haciendo, gracias, estoy buscando acerca de esa api y encuentro muy poca info, si tuvieras un enlace de su explicacion y uso, no importa en ingles te lo agradeceria. seguire buscando.
salu2
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.947


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: ¿como detectar nuevos procesos en ejecucion?
« Respuesta #3 en: 20 Diciembre 2010, 01:17 am »

Primer resultado de Google:
http://undocumented.ntinternals.net/UserMode/Undocumented%20Functions/NT%20Objects/Section/NtCreateSection.html

Segundo:
http://msdn.microsoft.com/en-us/library/ff556473%28VS.85%29.aspx

Y cuarto ya que estamos:
http://www.codeproject.com/KB/system/soviet_protector.aspx

Aunque si estamos en modo Kernel lo ideal es usar callbacks como por ejemplo PsSetCreateProcessNotifyRoutine.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
theghost_te

Desconectado Desconectado

Mensajes: 53


Ver Perfil
Re: ¿como detectar nuevos procesos en ejecucion?
« Respuesta #4 en: 20 Diciembre 2010, 01:24 am »

thanks eternal idol ahora me pongo a trabajar.
En línea

Littlehorse
All the world's a stage
Moderador
***
Desconectado Desconectado

Mensajes: 2.714


Nie Dam Sie


Ver Perfil WWW
Re: ¿como detectar nuevos procesos en ejecucion?
« Respuesta #5 en: 20 Diciembre 2010, 09:08 am »

EI, me parece que es como decís siempre, es un rootkit y no tiene que estar bien hecho en términos de buenas practicas. Es decir lo del callback me parece que suma para la estabilidad porque seria la forma correcta de hacer, por ejemplo, un monitor de procesos, pero en un rootkit que quiera evitar que los procesos se ejecuten es igual de efectivo ese método?

Al principio no me di cuenta cuando leí por primera vez lo de usar PsSetCreateProcessNotifyRoutine pero después me puse a pensar que si quiere hacer esto sera mas que nada para evitar que por ejemplo, alguien ejecute un antivirus. Entonces, como haces para denegar la apertura del proceso desde ese callback? no se me ocurre la verdad una forma que funcione siempre.

Entonces vi que PsSetCreateProcessNotifyRoutineEx puede usarse directamente para denegar la creación de determinado proceso al asignarle un error a CreationStatus de PS_CREATE_NOTIFY_INFO.

Citar
CreationStatus

 The NTSTATUS value to return for the process-creation operation. Drivers can change this value to an error code to prevent the process from being created.

el tema es que esta existe de Vista en adelante nada mas.
En línea

An expert is a man who has made all the mistakes which can be made, in a very narrow field.
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.947


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: ¿como detectar nuevos procesos en ejecucion?
« Respuesta #6 en: 20 Diciembre 2010, 09:43 am »

Es probable pero no lo especifico  :silbar: Igual se puede hacer, calcula que tenes acceso a la memoria del proceso y una forma relativamente sencilla es sobreescribir el entry point.

PD. Ademas de estar disponible desde Vista SP1 en adelante no cualquier binario puede usar PsSetCreateProcessNotifyRoutineEx, tenes que usar /integritycheck al generarlo y tiene que estar firmado.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Littlehorse
All the world's a stage
Moderador
***
Desconectado Desconectado

Mensajes: 2.714


Nie Dam Sie


Ver Perfil WWW
Re: ¿como detectar nuevos procesos en ejecucion?
« Respuesta #7 en: 21 Diciembre 2010, 02:55 am »

Si es verdad, a lo mejor quiere monitorear para llevar un registro de los procesos y nada mas.

La dificultad mas que nada la veía por el lado de que el proceso no esta totalmente creado al momento de la llamada, entonces por eso me pareció que era mas fácil con el hook ya que podes distinguir muy fácilmente entre una operación que no interesa y el proceso que realmente queres denegar, y en el caso de hacerlo, es igual de sencillo.
Igual la parte negativa del hook es que hay que hacer bastante trabajo extra para evitar que carguen otro driver indeseado y encima mantener el sistema lo mas estable posible, pero bueno, eso es otro tema.

Otro problema mas lo del integrity check, sobre todo en x64.




En línea

An expert is a man who has made all the mistakes which can be made, in a very narrow field.
Karman


Desconectado Desconectado

Mensajes: 673



Ver Perfil WWW
Re: ¿como detectar nuevos procesos en ejecucion?
« Respuesta #8 en: 23 Diciembre 2010, 05:18 am »

en cuanto a hooks tb tenes NtCreateThread o NtOpenFile que pueden ser usados con el mismo fin, pero fuera de eso, con el tema de las notificaciones con PsSetLoadImageNotifyRoutine y PsSetCreateThreadNotifyRoutine también se pueden hacer cosas interesantes, pero (dada la fima digital de drivers de x64) dentro del modo usuario creo que con los hooks cbt (creación de ventanas etc.) se pueden bloquear algunas cosas, yo para cosas simples con CreateToolhelp32Snapshot y buscando el ejecutable he logrado corromperlos antes que terminen de cargarse... (obviamente que hay un consumo extra de procesador, pero... es en modo usuario)

S2
« Última modificación: 23 Diciembre 2010, 05:23 am por Karman » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines