🔑Password Attacks
En este sección abordaré algunas de las técnicas más conocidas y utilizadas para realizar ataques de contraseñas en organizaciones.
Nota: Este tipo de técnicas son muy invasivas, ya que vamos a conseguir contraseñas de un usuario y acceder a sistemas, por lo que no podemos utilizar estas técnicas sin un consentimiento o aprobación por parte del objetivo o en un entorno controlado.
Autenticación
La autenticación, en esencia, es la validación de su identidad presentando una combinación de tres factores principales a un mecanismo de validación. Ellos son;
Algo que sabes (una contraseña, código de acceso, pin, etc.).
Algo que tienes (una tarjeta de identificación, una clave de seguridad u otras herramientas MFA).
Algo que eres (tu yo físico, nombre de usuario, dirección de correo electrónico u otros identificadores).
Almacenamiento de credenciales
Cada aplicación que admite mecanismos de autenticación compara las entradas/credenciales proporcionadas con bases de datos locales o remotas. En el caso de bases de datos locales, estas credenciales se almacenan localmente en el sistema. Las aplicaciones web suelen ser vulnerables a las inyecciones de SQL, lo que puede llevar al peor de los casos a que los atacantes vean la totalidad de los datos de una organización en texto sin formato.
Hay muchas listas de palabras diferentes que contienen las contraseñas más utilizadas. Un ejemplo de una de estas listas es rockyou.txt
. Esta lista incluye alrededor de 14 millones de contraseñas únicas y se creó después de una violación de datos de la empresa RockYou, que contenía un total de 32 millones de cuentas de usuario. La empresa RockYou almacenó todas las credenciales en texto plano en su base de datos, que los atacantes podían ver después de un ataque exitoso de inyección SQL.
También sabemos que todos los sistemas operativos admiten este tipo de mecanismos de autenticación. Por tanto, las credenciales almacenadas se almacenan localmente. Veamos con más detalle cómo se crean, almacenan y administran los sistemas basados en Windows y Linux.
Linux
Como ya sabemos, los sistemas basados en Linux manejan todo en forma de archivo. En consecuencia, las contraseñas también se almacenan cifradas en un archivo. Este archivo se llama shadow
y se encuentra /etc/shadow
y forma parte del sistema de gestión de usuarios de Linux. Además, estas contraseñas suelen almacenarse en formato hashes
. Un ejemplo puede verse así:
Archivo etc/shadow
El archivo /etc/shadow
tiene un formato único en el que las entradas se ingresan y guardan cuando se crean nuevos usuarios.
El cifrado de la contraseña en este archivo tiene el siguiente formato:
El tipo ( id
) es el método hash criptográfico utilizado para cifrar la contraseña. En el pasado se utilizaron muchos métodos hash criptográficos diferentes y algunos sistemas todavía los utilizan en la actualidad.
Sin embargo, algunos archivos más pertenecen al sistema de gestión de usuarios de Linux. Los otros dos archivos son /etc/passwd
y /etc/group
. En el pasado, la contraseña cifrada se almacenaba junto con el nombre de usuario en el archivo /etc/passwd
, pero esto se reconocía cada vez más como un problema de seguridad porque todos los usuarios del sistema pueden ver el archivo y debe ser legible. El archivo /etc/shadow
sólo puede ser leído por el usuario root
.
Archivo etc/passwd
El campo x
de contraseña indica que la contraseña cifrada está en el archivo /etc/shadow
. Sin embargo, la redirección al archivo /etc/shadow
no hace que los usuarios del sistema sean invulnerables porque si los derechos de este archivo se configuran incorrectamente, el archivo puede manipularse de modo que el usuario root
no necesite escribir una contraseña para iniciar sesión. El campo vacío significa que podemos iniciar sesión con el nombre de usuario sin ingresar una contraseña.
Windows
El proceso de autenticación de clientes de Windows a menudo puede ser más complicado que con los sistemas Linux y consta de muchos módulos diferentes que realizan todos los procesos de inicio de sesión, recuperación y verificación. Además, existen muchos procedimientos de autenticación diferentes y complejos en el sistema Windows, como la autenticación Kerberos. La Autoridad de Seguridad Local ( LSA
) es un subsistema protegido que autentica a los usuarios y los registra en la computadora local. Además, la LSA mantiene información sobre todos los aspectos de la seguridad local en una computadora. También proporciona varios servicios para traducir entre nombres e identificaciones de seguridad ( SIDs
).
El subsistema de seguridad realiza un seguimiento de las políticas y cuentas de seguridad que residen en un sistema informático. En el caso de un Controlador de Dominio, estas políticas y cuentas se aplican al dominio donde se encuentra el Controlador de Dominio. Estas políticas y cuentas se almacenan en Active Directory. Además, el subsistema LSA proporciona servicios para verificar el acceso a objetos, verificar los permisos de los usuarios y generar mensajes de monitoreo.
Diagrama del proceso de autenticación de Windows
El inicio de sesión interactivo local se realiza mediante la interacción entre el proceso de inicio de sesión ( WinLogon ), el proceso de interfaz de usuario de inicio de sesión (LogonUI
), los proveedores de credenciales, LSASS
, uno o más paquetes de autenticación
y SAM
o Active Directory
. Los paquetes de autenticación, en este caso, son las bibliotecas de vínculos dinámicos (DLL
) que realizan comprobaciones de autenticación. Por ejemplo, para inicios de sesión interactivos y no unidos a un dominio, se utiliza el paquete de autenticación Msv1_0.dll
Winlogon
es un proceso confiable responsable de gestionar las interacciones de los usuarios relacionadas con la seguridad. Éstas incluyen:
Iniciar LogonUI para ingresar contraseñas al iniciar sesión
Cambiar contraseñas
Bloquear y desbloquear la estación de trabajo
Depende de los proveedores de credenciales instalados en el sistema para obtener el nombre de cuenta o la contraseña de un usuario. Los proveedores de credenciales son objetos COM
que se encuentran en archivos DLL.
Winlogon es el único proceso que intercepta las solicitudes de inicio de sesión desde el teclado enviadas mediante un mensaje RPC desde Win32k.sys. Winlogon inicia inmediatamente la aplicación LogonUI al iniciar sesión para mostrar la interfaz de usuario para iniciar sesión. Después de que Winlogon obtiene un nombre de usuario y una contraseña de los proveedores de credenciales, llama a LSASS para autenticar al usuario que intenta iniciar sesión.
LSASS
Local Security Authority Subsystem Service (LSASS
) es una colección de muchos módulos y tiene acceso a todos los procesos de autenticación que se pueden encontrar en %SystemRoot%\System32\Lsass.exe
. Este servicio es responsable de la política de seguridad del sistema local, la autenticación de usuarios y el envío de registros de auditoría de seguridad al archivo Event log
. En otras palabras, es la bóveda para los sistemas operativos basados en Windows, y podemos encontrar una ilustración más detallada de la arquitectura LSASS aquí .
Fuente: Documentos de Microsoft .
Cada sesión de inicio de sesión interactiva crea una instancia separada del servicio Winlogon. La arquitectura de identificación y autenticación gráfica ( GINA
) se carga en el área de proceso utilizada por Winlogon, recibe y procesa las credenciales e invoca las interfaces de autenticación a través de la función LSALogonUser .
Base de datos SAM
El Security Account Manager (SAM
) es un archivo de base de datos en los sistemas operativos Windows que almacena las contraseñas de los usuarios. Se puede utilizar para autenticar usuarios locales y remotos. SAM utiliza medidas criptográficas para evitar que usuarios no autenticados accedan al sistema. Las contraseñas de usuario se almacenan en formato hash en una estructura de registro como LM
hash o NTLM
hash. Este archivo se encuentra en la ruta %SystemRoot%/system32/config/SAM
y está montado en HKLM/SAM. Se requieren permisos a nivel de SISTEMA para verlo.
Los sistemas Windows se pueden asignar a un grupo de trabajo o a un dominio durante la instalación. Si el sistema ha sido asignado a un grupo de trabajo, maneja la base de datos SAM localmente y almacena a todos los usuarios existentes localmente en esta base de datos. Sin embargo, si el sistema se ha unido a un dominio, el Controlador de Dominio ( DC
) debe validar las credenciales de la base de datos de Active Directory ( ntds.dit
), que está almacenada en %SystemRoot%\ntds.dit
.
Microsoft introdujo una característica de seguridad en Windows NT 4.0 para ayudar a mejorar la seguridad de la base de datos SAM contra el pirateo de software fuera de línea. Esta es la característica SYSKEY
( syskey.exe
), que, cuando está habilitada, cifra parcialmente la copia del disco duro del archivo SAM para que los valores hash de contraseña para todas las cuentas locales almacenadas en el SAM se cifren con una clave.
Administrador de Credenciales
Fuente: Documentos de Microsoft .
Credential Manager es una función integrada en todos los sistemas operativos Windows que permite a los usuarios guardar las credenciales que utilizan para acceder a diversos recursos de red y sitios web. Las credenciales guardadas se almacenan según los perfiles de usuario en el archivo Credential Locker
. Las credenciales se cifran y almacenan en la siguiente ubicación:
Existen varios métodos para descifrar las credenciales guardadas con Credential Manager. Practicaremos prácticas con algunos de estos métodos en este módulo.
NTDS
Es muy común encontrarnos con entornos de red donde los sistemas Windows están unidos a un dominio de Windows. Esto es común porque facilita a los administradores la gestión de todos los sistemas propiedad de sus respectivas organizaciones (administración centralizada). En estos casos, los sistemas Windows enviarán todas las solicitudes de inicio de sesión a controladores de dominio que pertenecen al mismo bosque de Active Directory. Cada controlador de dominio aloja un archivo llamado NTDS.dit
que se mantiene sincronizado en todos los controladores de dominio con la excepción de los controladores de dominio de solo lectura . NTDS.dit es un archivo de base de datos que almacena los datos en Active Directory, que incluye, entre otros:
Cuentas de usuario (hash de nombre de usuario y contraseña)
Cuentas grupales
cuentas de computadora
Objetos de política de grupo
Practicaremos métodos que nos permitan extraer credenciales del archivo NTDS.dit más adelante en este módulo.
Ahora que hemos repasado los conceptos de almacenamiento de credenciales, estudiemos los diversos ataques que podemos realizar para extraer credenciales y ampliar nuestro acceso durante las evaluaciones.
Última actualización