Autenticación y Autorización en Windows
Last updated
Last updated
Autenticacion y credenciales en Windows
Cuando nosotros vamos a iniciar sesion en Windows
por detras ocurre esto, en este caso una autenticacion de forma local, lo que hace es que las credenciales que enviamos, junto con el paquete de autenticacion (Kerberos
) lo recibe el Servidro LSA
(Local Security Authority
) y este las valida mediante el protocolo NTLM
que estara en la base de datos dentro de este LSA
.
Basicamente si nosotros nos logeamos mediante un usuario de dominio, nosotros estaremos en la parte de Credential/Login Layer
una vez que le pasamos las credenciales sobre el usuario del dominio al LSA
este ve que es un usuario de dominio y ejecuta la dll
de kerberos
ya que el proceso de autenticacion tiene que ser con ese (kerberos.dll
) y haria todo el proceso de Kerberos
que ya vimos anteriormente, pero si nos logeamos con unas credenciales de un usuario local, lo que va hacer el LSA
es ejecutar la autenticacion NTLM
(Msv1_0.dll
) ya que no seria un usuario de dominio.
Para nosotros logearnos con un usuario local
lo que tendremos que poner en el nombre de usuario para que no nos invoque el CORP
sera .\username
(Donde username
es el usuario local) y asi automaticamente veremos abajo que estara pillando el nombre del equipo local.
LSA Logon Sessions
Cuando un usuario se autentica correctamente, el paquete de autenticacion
crea una logon session
y devuelve informacion a la autoridad de seguridad local
(LSA
)
El modulo LSA
usa esta informacion para crear un Access Token
para el nuevo usuario
Este token
incluye, entre otras cosas, un identificador unico local
(LUID
) para la logon session
, denominada identificador de inicio de sesion
URL = Info Logon Sessions
Interactive Authentication
La autenticacion es interactiva
cuando se solicita al usuario que proporcione informacion de inicio de sesion
La autoridad de seguridad local
(LSA
) realiza una autenticacion interactiva
cuando un usuario inicia sesion
a traves de la interfaz de usuario de GINA
.
Si la autenticacion
se realiza correctamente, comienza la logon session
del usuario y se guarda un conjunto de credenciales
de inicio de sesion
para futuras referencias
.
Basicamente este mecanisco es cuando iniciamos sesion en una interfaz normal de usuario y despues de hace todo este proceso anterior se queda un proceso en el sistema corriendo donde tiene las credenciales
guardadas en memoria
para poderlas reutilizar mas adelante. (Un vector de entrada obteniendo esas credenciales en memoria
)
URL = Info Interactive Authentication
NonInteractive Authentication
La autenticacion no interactiva
solo se puede usar despues de que se haya realizado una autenticacion interactiva
El usuario no introduce datos de inicio de sesion
; en su lugar, se usan las credenciales establecidas
y almacenadas previamente
Se utiliza para conectarse
a varias maquinas y servicios en red
sin tener que volver a introducir las credenciales
URL = Info NonInteractive Authentication
Cuando nosotros nos hemos autenticado en un Windows
podremos ver esas Logon Sessions
con una herramienta que nos porporciona el propio Microsoft
en el siguiente link:
URL = Download LogonSessions Tool
Vemos que se nos descarga un ZIP
, por lo que lo tendremos que descomprimir, una vez echo eso, tendremos una carpeta con unos ejecutables, el que nos interesa es el llamado logonsessions.exe
.
Abriremos un PowerShell
como Administrador
y lo ejecutaremos de la siguiente forma:
Nos abrira esto de aqui, le daremos Agree
y en la terminal veremos todas las logon sessions
:
Si ponemos:
Veremos todas las logon sessions
asociadas a los procesos de cada una.
Si esto lo ejecutamos con un usuario de dominio, lo que podremos ver sera algo de informacion diferentes, en vez de utiliza la autenticacion en NTLM
veremos que esta utilizando la de Kerberos
en los usuarios de dominio.
Si nosotros desde un equipo a otro en el dominio nos conectamos a otro mediante la terminal a un recurso compartido:
Y listamos las logon sessions
veremos que se autentico mediante kerberos
y es un logon type
de tipo Network
, de forma no interactiva, ya que no nos ha pedido ningun tipo de informacion.
Access Token (I)
Cuando un usuario inicia sesion
, el sistema comprueba la contraseña
del usuario comprobandolo con la informacion almacenada en una base de datos de seguridad
. Si se autentica correctamente, el sistema genera un token de acceso
. Cada proceso ejecutado en nombre de este usuario tiene una copia de este token de acceso
.
Un token de acceso
es un objeto que describe el contexto de seguridad
de un proceso
o subproceso
.
La informacion de un token
incluye la identidad y los privilegios
de la cuenta de usuario asociada al proceso
o subproceso
.
El sistema usa un token de acceso
para identificar
al usuario cuando un subproceso
interactua con un securable object
o intenta realizar una tarea del sistema que requiere privilegios
.
URL = Info Access Tokens
Access Token (II)
Cada proceso tiene un token principal
que describe el contexto de seguridad
de la cuenta de usuario asociada al proceso
.
De forma predeterminada, el sistema usa el token principal
cuando un subproceso
del proceso interactua con un securable object
.
Ademas, un subproceso
puede suplantar
una cuenta de cliente
. La suplantacion
permite que los subprocesos
interactue con secutable objetcs
mediante el contexto de seguridad del cliente
.
Un subproceso
que suplanta
a un cliente tiene un token
principal y un token
de suplantacion
Para poder ver los procesos de forma interna respecto a lo que estamos hablando, podremos hacerlo con una herramienta que nos proporciona Microsoft
:
URL = Download ProcessExplorer
Esto nos dara un ZIP
el cual tendremos que descomprimir y ejecutarlo desde PowerShell
siguiente el mismo procedimiento que la anterior herramienta.