Foro de elhacker.net

Seguridad Informática => Análisis y Diseño de Malware => Mensaje iniciado por: kub0x en 16 Junio 2014, 15:48 pm



Título: UAC Task Manager
Publicado por: kub0x en 16 Junio 2014, 15:48 pm
Muy buenas,

llevo mucho tiempo sumergiendome en el mundo de la escalación de privilegios. He publicado hace tiempo por el foro varias formas caseras de escalación de privilegios sin embargo hoy vengo a preguntar una cuestión en concreto.

Muchos habreis llegado a la conclusion de que para esquivar (bypass) UAC es necesario tocar el registro (HKLM), crear tareas que ejecuten nuestro software bajo SYSTEM o admin o bien tirar de ingeniería social (para que el user ejecute el software en modo admin.. propiedad asInvoker en los manifest).

Todos sabemos que el Administrador de tareas permite mostrar todos los procesos del sistema, por lo que necesita de los máximos privilegios del usuario en cuestión.

La pregunta es la siguiente: ¿Qué ocurre cuando pulsamos dicho botón? (http://s10.postimg.org/uxnhcw37d/ggg.png)

Este proceso no alerta al usuario de que la aplicación necesita de privilegios. ¿Cómo lo hace?

Un saludo!


Título: Re: UAC Task Manager
Publicado por: Karcrack en 17 Junio 2014, 04:53 am
Esto es debido a la configuración por defecto de UAC en Windows 7 y que ya estás logueado en una sesión de administrador, en Windows Vista si que te saltaría la ventana.

Por defecto el taskmgr es capaz de auto-elevarse. La verdad es que no sé qué procesos tienen esa capacidad, he visto que otros programas como mmc.exe también pueden.

Lectura interesante:
http://www.rohitab.com/discuss/topic/38607-disable-uac-elevation-dialog-by-patching-rtlqueryelevationflags-in-windows-explorer/


Título: Re: UAC Task Manager
Publicado por: x64core en 17 Junio 2014, 05:20 am
Muy buenas,

llevo mucho tiempo sumergiendome en el mundo de la escalación de privilegios. He publicado hace tiempo por el foro varias formas caseras de escalación de privilegios sin embargo hoy vengo a preguntar una cuestión en concreto.

Muchos habreis llegado a la conclusion de que para esquivar (bypass) UAC es necesario tocar el registro (HKLM), crear tareas que ejecuten nuestro software bajo SYSTEM o admin o bien tirar de ingeniería social (para que el user ejecute el software en modo admin.. propiedad asInvoker en los manifest).

Todos sabemos que el Administrador de tareas permite mostrar todos los procesos del sistema, por lo que necesita de los máximos privilegios del usuario en cuestión.

La pregunta es la siguiente: ¿Qué ocurre cuando pulsamos dicho botón? (http://s10.postimg.org/uxnhcw37d/ggg.png)

Este proceso no alerta al usuario de que la aplicación necesita de privilegios. ¿Cómo lo hace?

Un saludo!

Utiliza un objeto COM.
Fijate en este código:
http://sinowal.com/UAC.cpp
Una vez que ya sepas cómo funciona puedes reducir los requerimientos necesarios.


Título: Re: UAC Task Manager
Publicado por: Karcrack en 19 Junio 2014, 03:06 am
Aquí esta la lista de procesos que se pueden auto-elevar en Win7:
http://withinwindows.com/2009/02/05/list-of-windows-7-beta-build-7000-auto-elevated-binaries/
Si puedes inyectar código en alguno de esos procesos ya puedes hacer la llamada COM para copiar la DLL a la ruta protegida y haciendo DLL hijacking ejecutar tu código con privilegios elevados.

Aquí está todo el proceso detallado:
http://www.pretentiousname.com/misc/W7E_Source/win7_uac_poc_details.html

Ese cambio se hizo tras las quejas de lo molesto que era UAC en Windows Vista. Si cambias la configuración a protección máxima incluso los accesos de los procesos del listado harán saltar el prompt...


Título: Re: UAC Task Manager
Publicado por: kub0x en 19 Junio 2014, 04:14 am
Muchas gracias a los dos por contestar y por aportar este material tan valioso, os lo agradezco.

Hace tiempo que llevo experimentando en VMs el como ganar privilegios de forma casera, es decir, utilizando las propias herramientas del OS. Encontré varias cosillas que me permitían lidiar con toda la seguridad el sistema, eran indirectas, dependían del usuario, pero al final lograba mi cometido (SYSTEM).

Esto sinceramente es la bomba, sin problemas el código se entiende de maravilla. Lo más apropiado seria DLL Hijacking alterando el árbol de búsqueda de dependencias o bien reemplazando la DLL, como comentas Karcrack, así nos aseguramos de que siempre se ejecuta nuestro código aunque existen varias contramedidas fáciles de implementar contra este tipo de situaciones.

Supongo que inyectarias código en un proceso que se auto eleve para sobreescribir la DLL de OTRO proceso  no iniciado en este instante (ya que las DLL del servicio actual estarían en uso). Y acto seguido iniciarias el servicio en el cual sustituiste la dependencia. ¿Qué tal lo ves?

Se me ocurre otra: ¿Podría reiniciar el proceso  y dormir sus subprocesos/hilos en el arranque? ¿De esa forma podrías sobreescribir la DLL?

Sólo falta decir que con schtask te elevas a SYSTEM teniendo privilegios de Admin, por lo que alguno se iria al kernel land  :-X

Gracias amigos por vuestra ayuda,

Saludos!