Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: kub0x en 16 Septiembre 2014, 23:08 pm



Título: SeDebugPrivilege y OpenProcess
Publicado por: kub0x en 16 Septiembre 2014, 23:08 pm
Muy buenas,

llevo un tiempo investigando sobre la suplantación de tokens, elevación de privilegios y la injección en procesos de sesiones y usuarios distintos.

El tema es que tengo que ejecutar mi aplicación en modo administrador para obtener el handle a un proceso ejecutado por un usuario ajeno (SYSTEM - winlogon.exe), ya que los privilegios del usuario normal no permiten la depuración de elementos del sistema.

Al ejecutarse, mi aplicación es capaz de obtener el handle, pero el privilegio SeDebugPrivilege está desactivado, cosa que podemos comprobar al iniciar cmd en modo admin si escribimos el comando "whoami /all".

He leído en muchos foros de programación que SeDebugPrivilege debe de estar activo para poder interactuar con los elementos descritos al principio del post, pero no entiendo porque me deja acceder a un handle de un proceso de otro usuario cuando en el cmd me dice que el privilegio esta desactivado.

La pregunta es:

¿Si corres una aplicación en modo administrador es necesario activar el privilegio SeDebugPrivilege para obtener un handle de un proceso lanzado por otro usuario?

Gracias y saludos!


Título: Re: SeDebugPrivilege y OpenProcess
Publicado por: Eternal Idol en 17 Septiembre 2014, 01:15 am
OpenProcess function (http://msdn.microsoft.com/en-us/library/windows/desktop/ms684320%28v=vs.85%29.aspx)

dwDesiredAccess [in]
The access to the process object. This access right is checked against the security descriptor for the process. This parameter can be one or more of the process access rights.

If the caller has enabled the SeDebugPrivilege privilege, the requested access is granted regardless of the contents of the security descriptor.

Remarks
To open a handle to another local process and obtain full access rights, you must enable the SeDebugPrivilege privilege.


Título: Re: SeDebugPrivilege y OpenProcess
Publicado por: kub0x en 17 Septiembre 2014, 01:24 am

If the caller has enabled the SeDebugPrivilege privilege, the requested access is granted regardless of the contents of the security descriptor.

Remarks
To open a handle to another local process and obtain full access rights, you must enable the SeDebugPrivilege privilege.
Gracias por el dato pero eso era bien sabido, me muevo bien por la WinAPI y msdn.

Es raro que sin activar el privilegio pueda utilizar OpenProcess sobre un proceso SYSTEM corriendo la aplicación en modo administrador. De todas formas activaré el privilegio por si causa errores en otros OS.

Saludos!


Título: Re: SeDebugPrivilege y OpenProcess
Publicado por: Eternal Idol en 17 Septiembre 2014, 01:36 am
Gracias por el dato pero eso era bien sabido, me muevo bien por la WinAPI y msdn.

Es raro que sin activar el privilegio pueda utilizar OpenProcess sobre un proceso SYSTEM corriendo la aplicación en modo administrador. De todas formas activaré el privilegio por si causa errores en otros OS.

Si es sabido entonces no es comprendido completamente, no hay nada raro, lo dice con claridad: sin el privilegio SeDebugPrivilege dependes del SECURITY_DESCRIPTOR del proceso. Supongo que estaras probando con alguna version antigua de Windows, en 7 x64 no abre sin SeDebugPrivilege habilitado ...


Título: Re: SeDebugPrivilege y OpenProcess
Publicado por: kub0x en 17 Septiembre 2014, 01:40 am
[..] Supongo que estaras probando con alguna version antigua de Windows, en 7 x64 no abre sin SeDebugPrivilege habilitado ...

Una máquina virtual con Windows 7 recien instalado x64 y otra x86. Supongo que será eso, si me he hecho estas preguntas es porque entiendo que el privilegio sirve para poder interactuar con procesos de sesiones distintas :D

Puedes dar el tema como resuelto, gracias por la ayuda!