Foro de elhacker.net

Seguridad Informática => Hacking => Mensaje iniciado por: Kaxperday en 4 Noviembre 2015, 20:20 pm



Título: Inyección de DLL con permisos administrador
Publicado por: Kaxperday en 4 Noviembre 2015, 20:20 pm
Buenas, tengo una duda y es la siguiente:

Si creo una dll que muestra un mensaje, y la inyecto a un proceso ¿necesito solo el pid del proceso no?, en plan creo una dll que dice "hola mundo", la inyecto en svchost.exe ¿y listo?, ¿o tengo que hacer ingeniería inversa de svchost.exe?.

Si svchost.exe corre como system, el programa que ejecuto en mi dll correría como system?, puedo conseguir que lo haga a través del token de svchost.exe? ya que se supone lo ejecuta ese proceso si la inyecto a el.

La idea es saber si con este proceso podré tener permisos de administrador (o system que son como los de administrador pero con más opciones aún  si no me equivoco) siempre para mi dll, pues mi dll necesita permisos de administrador siempre.

¿Con inyección de dll puedo conseguir permisos de administrador sin que salga el uac para siempre?, es decir windows se reiniciaría y el programa de mi dll correría en system sin mensajes ni nada, ¿no?.

Un saludo.


Título: Re: Inyección de DLL con permisos administrador
Publicado por: Miseryk en 24 Noviembre 2015, 16:05 pm
Buenas, tengo una duda y es la siguiente:

Si creo una dll que muestra un mensaje, y la inyecto a un proceso ¿necesito solo el pid del proceso no?, en plan creo una dll que dice "hola mundo", la inyecto en svchost.exe ¿y listo?, ¿o tengo que hacer ingeniería inversa de svchost.exe?.

Si svchost.exe corre como system, el programa que ejecuto en mi dll correría como system?, puedo conseguir que lo haga a través del token de svchost.exe? ya que se supone lo ejecuta ese proceso si la inyecto a el.

La idea es saber si con este proceso podré tener permisos de administrador (o system que son como los de administrador pero con más opciones aún  si no me equivoco) siempre para mi dll, pues mi dll necesita permisos de administrador siempre.

¿Con inyección de dll puedo conseguir permisos de administrador sin que salga el uac para siempre?, es decir windows se reiniciaría y el programa de mi dll correría en system sin mensajes ni nada, ¿no?.

Un saludo.

Lo que hacés cuando inyectás es escribir memoria (openprocess, necesitás el handle del proceso) en el proceso target y luego con CreateRemoteThread "ejecutás" desde esa posición de memoria que escribiste, para poder inyectar una dll a un proceso system hay que hacer algunas cosas bastante complicadas, la dll no necesita permisos, el inyector necesita esos permisos, una vez que estás adentro podés tomar el control de todo el proceso con el nivel que quieras.


Título: Re: Inyección de DLL con permisos administrador
Publicado por: Kaxperday en 24 Noviembre 2015, 16:17 pm
Una pregunta, ¿cuantas veces necesito inyectar mi DLL en la memoria?, ¿una vez solo, la primera vez?... ¿o todas las veces que vaya a ejecutar mi programa?.

Ejemplo me infecto un proceso con mi dll, reinicio el ordenador, ese proceso ya no está infectado ¿no?, necesitaria anclar al registro un ejecutable que se inyecte en el proceso cada vez que se reinicia, ¿no?.

De ser así, se podría hacer, pero me preocupa eso de los procesos. Pensaba que una vez inyectado en un proceso, podías coger su "token" y obtener los privilegios de este, ¿no es así?.

Bueno, de todas formas gracias por la respuesta. Un saludo.


Título: Re: Inyección de DLL con permisos administrador
Publicado por: MCKSys Argentina en 24 Noviembre 2015, 17:06 pm
Una pregunta, ¿cuantas veces necesito inyectar mi DLL en la memoria?, ¿una vez solo, la primera vez?... ¿o todas las veces que vaya a ejecutar mi programa?.

Ejemplo me infecto un proceso con mi dll, reinicio el ordenador, ese proceso ya no está infectado ¿no?, necesitaria anclar al registro un ejecutable que se inyecte en el proceso cada vez que se reinicia, ¿no?.

De ser así, se podría hacer, pero me preocupa eso de los procesos. Pensaba que una vez inyectado en un proceso, podías coger su "token" y obtener los privilegios de este, ¿no es así?.

Bueno, de todas formas gracias por la respuesta. Un saludo.

Por definición, la inyección es hasta reiniciar el PC (o hasta que muera el proceso en el que te has inyectado). Si quieres lograr persistencia, vas a tener que buscar un método de hacerlo (de los muchos que hay). Por ej., usando el registro (método que puede ocultarse muy bien).

Normalmente, el mejor lugar para inyectarse es el lsass.exe. El tema es que las nuevas versiones de Windows no permiten hacerlo "directamente". Un ejemplo: CreateRemoteThread no te funcionará muy bien en lsass a partir de win8 (aún teniendo permisos de debug); pero sí te funionará RtlCreateUserThread, una API no documentada.

Los AV son tema aparte, pero interfieren en éstos temas...  :)

Saludos!