La técnica RID Hijacking permite a un pentester lograr persistencia en un sistema Windows 10 con el máximo privilegio. Sin lugar a la duda, es una técnica necesaria de conocer, cuando en un proyecto de Ethical Hacking se quiere lograr persistencia en un equipo y pasar de forma desapercibida.
Durante un pentesting puede 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 informe a un administrador o responsable de seguridad.
RID Hijacking es una técnica sigilosa y que permite a un usuario secuestrar el RID, Relative Identifier, de otro usuario, por ejemplo, el RID del 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 los sistemas Microsoft Windows 10 es el usuario Administrador, el que inicia, ya que el RID es el suyo. El ataque permite:
Configuración del módulo de RID Hijacking
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:
PoC: Jugando con RID Hijacking y 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_hijack se observará que, al no tener privilegios de SYSTEM, el módulo fallará.
La configuración del módulo es sencilla. El atributo USERNAME es 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 hicimos en ElevenPaths para UAC-A-Mola Framework. El bypass nos funciona, como se puede ver en la siguiente imagen, y obtener una nueva sesión, esta sí, ya con privilegios de SYSTEM.
Volvemos ahora al módulo de rid_hijack para configurarlo. Hay que fijarse en el atributo RID, PASSWORD, USERNAME o SESSION. Configuramos el atributo USERNAME con 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 run y 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 10 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 hacked solo pertenece al Grupo Users y 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.
Autor: Pablo González Pérez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters", "Hacking con Metasploit: Advance Pentesting" "Hacking Windows", "Ethical Hacking", "Got Root" y “Pentesting con Powershell”, Microsoft MVP en Seguridad y Security Researcher en ElevenPaths
Figura 1: RID Hijacking en Windows 10: Cómo conseguir persistencia en MS Windows 10 durante un Pentesting con Metasploit |
Durante un pentesting puede 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 informe a un administrador o responsable de seguridad.
Figura 2: RID Hijacking en Windows |
RID Hijacking es una técnica sigilosa y que permite a un usuario secuestrar el RID, Relative Identifier, de otro usuario, por ejemplo, el RID del 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 los sistemas Microsoft Windows 10 es el usuario Administrador, el que inicia, ya que el RID es 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 Ethical Hacking.
Configuración del módulo de RID Hijacking
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.
Figura 3: Módulo de RID Hijacking en Metasploit |
El módulo dispone de varios atributos:
• GETSYSTEM. Este atributo fuerza al módulo a intentar impersonar a SYSTEM. La técnica requiere que seamos SYSTEM para poder manipular el hive HKLM del 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.1 y Windows 10. En este artículo veremos cómo funciona en sistemas Windows 10.
PoC: Jugando con RID Hijacking y 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_hijack se observará que, al no tener privilegios de SYSTEM, el módulo fallará.
Figura 4: El módulo falla por falta de privilegios |
La configuración del módulo es sencilla. El atributo USERNAME es 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 hicimos en ElevenPaths para UAC-A-Mola Framework. El bypass nos funciona, como se puede ver en la siguiente imagen, y obtener una nueva sesión, esta sí, ya con privilegios de SYSTEM.
Figura 5: Bypass UAC para obtención privilegios de SYSTEM |
Volvemos ahora al módulo de rid_hijack para configurarlo. Hay que fijarse en el atributo RID, PASSWORD, USERNAME o SESSION. Configuramos el atributo USERNAME con 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.
Figura 6: Opciones del módulo de rid_hijack |
Ejecutamos el comando run y 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 10 será como si hubiera iniciado sesión el usuario Administrador.
Figura 7: Usuario Hacked creado con RID Hijacking del 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.
Figura 8: El usuario hacked tiene privilegios |
Si mirásemos los grupos de los usuarios, veríamos cómo el usuario hacked solo pertenece al Grupo Users y 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.
Figura 9: PoC de RID Hijacking con Metasploit
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.
Autor: Pablo González Pérez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters", "Hacking con Metasploit: Advance Pentesting" "Hacking Windows", "Ethical Hacking", "Got Root" y “Pentesting con Powershell”, Microsoft MVP en Seguridad y Security Researcher en ElevenPaths
saludos estoy haciendo auditorias a windows 10 con veil y empire y metasploit y no logro conseguir un shell defender los detecta pueden ayudarme que exploit utilizaron para esta demostracion
ResponderEliminar¿Es posible con una cuenta de usuario normal, sin ningún tipo de privilegios y fuera del grupo de administradores averiguar el usuario y la contraseña del administrador, crearse una cuenta de administrador, obtener privilegios, etc?
ResponderEliminarTengo acceso físico al ordenador y me parece que existe una red de área local entre los ordenadores pero no sé cómo es ésta.
Graciaas.