jueves, 3 de mayo de 2018

RID Hijacking en Windows 10: ¿Qué es y cómo aprovecharlo? #Metasploit #Pentesting

Compartir este artículo:
La técnica RID Hijacking permite a un pentester lograr persistencia en un Sistema con el máximo privilegio. Sin lugar a la duda, es una técnica necesaria de conocer, cuando se quiere lograr persistencia en un equipo y pasar de forma desapercibida.  En el pentestingpuede ser complejo mantener el acceso o lograr persistencia en algunos entornos. Sobre todo, si la creación de un usuario o la adición de un usuario a un grupo puede desencadenar en una nueva alerta en el sistema que alerte a un administrador. 

El RID Hijacking es una técnica sigilosay que permite a un usuario secuestrar el RIDRelative Identifier, de otro usuario, por ejemplo, el RIDdel usuario administrador. Esto es bastante potente, ya que se puede lograr que un usuario tenga como RID, el famoso número 500, pero este usuario no pertenezca al grupo administradores. Como se puede ver es una acción sigilosa. ¿Qué ocurre cuando el usuario inicia sesión? Para Windows es el usuario Administrador, el que inicia, ya que el RIDes el suyo. 

El ataque permite:

·     Asignar privilegios de la cuenta secuestrada a la cuenta del atacante, incluso si la cuenta secuestrada está deshabilitada.
·     Permite la autenticación con las credenciales de la cuenta del atacante, incluso de forma remota, y obtener acceso autorizado con la identidad del usuario que ha sido secuestrado.
·     Registrar cualquier operación que se ejecute en el registro de eventos como si fuera del usuario secuestrado, esta es una de las características más potentes. 

La técnica es muy eficiente y potente. En Metasploit ya se dispone de un módulo que permite automatizar esta técnica, para que sea mucho más sencillo y rápido utilizarla en un pentest


El módulo tiene una muy sencilla configuración por parte del pentester. Lógicamente, se necesitará una sesión remota en la máquina. El módulo dispone de varios atributos:

·   GETSYSTEM.Este atributo fuerza al módulo a intentar impersonarSYSTEM.La técnica requiere que seamos SYSTEMpara poder manipular elhive HKLMdel registro de Windows, dónde se almacena la información relativa a los RID de los usuarios. 
·     GUEST_ACCOUNT.Si se establece a true, se utilizará la cuenta de invitado como la cuenta del atacante.
·     RID.Se indica el RID que será asignado cuando se lleve a cabo el Hijacking. Por defecto, se muestra el RID con valor 500, perteneciente al Administrador “real” de la máquina.
·     USERNAME.Si es definido, este atributo indica el nombre de usuario al que se asignará el RID secuestrado.
·     PASSWORD. Si es definido, se establecerá esta contraseña a la cuenta de usuario indicada en USERNAME.

El ataque es funcional en diversos sistemas operativos Windows. Ha sido probado, según indica el creador del módulo, desde Windows XP, Windows Server 2003, Windows 8.1Windows 10. En este artículo veremos cómo funciona en Windows 10.

PoC: Jugando con RID Hijackingy la persistencia sigilosa

Partimos de la base de que tenemos una sesión remota en la máquina Windows 10. Para el ejemplo, digamos que tenemos una sesión remota, pero sin privilegio. Cuando utilicemos el módulo post/windows/manage/rid_hijackse observará que, al no tener privilegios de SYSTEM, el módulo fallará. 


La configuración del módulo es sencilla. El atributo USERNAMEes fundamental, y si se quiere cambiar la contraseña al usuario en cuestión también debe ser utilizado el atributo PASSWORD.

Para este ejemplo, no se tiene privilegio de SYSTEM, pero como el usuario que creó el proceso comprometido pertenece al grupo administradores se puede intentar un bypass de UAC. En este caso, se utiliza el módulo bypassuac_fodhelper. Esto nos recuerda al módulo que hicimosen ElevenPaths para UAC-A-Mola Framework. El bypassnos funciona, como se puede ver en la siguiente imagen, y obtener una nueva sesión, esta sí, ya con privilegios de SYSTEM


Volvemos al módulo de rid_hijack. Configuramos el módulo. Hay que fijarse en el atributo RID, PASSWORD,USERNAMESESSION. Configuramos el atributo USERNAMEcon el valor de la cuenta destino, en este caso es una cuenta denominada hacked. Como se puede ver la configuración del módulo es muy sencilla y no necesita más. El módulo trabajará en el hive HKLM\SAM, para realizar el secuestro. Por esta razón, es totalmente necesario que sea haya logrado privilegio de SYSTEM


Ejecutamos el comando runy obtener el secuestro del RID del usuario Administrador. En este momento, cuando iniciemos sesión con el usuario hacked, ya sea en local o en remoto, para Windows será como si hubiera iniciado sesión el usuario Administrador


Para ejemplificar lo comentado anteriormente, iniciamos sesión en la máquina Windows 10, abrimos una CMD.exe e intentamos crear un fichero en \Windows\System32. Como se puede ver en la imagen, podemos hacerlo, por lo que tenemos privilegios suficientes. Si mirásemos los grupos de los usuarios, veríamos cómo el usuario hackedsolo pertenece al grupo usersy no al de administradores. Además, no nos ha hecho falta saltar UAC, directamente la CMD.exe ha podido crear el fichero en una ruta protegida. 


Sin duda, una técnica muy interesante que está dando que hablar por la facilidad de su aprovechamiento y por las implicaciones que tiene. Una técnica nueva que aprender y llevar en la mochila del pentester

No hay comentarios:

Publicar un comentario