Apuntes Ciberseguridad (Cibaism)
HTBGitHubLinkedInNotion (Writeups)
  • Welcome to My Digital Garden
  • About me
  • Hacking notes (Personal)
    • Tratamiento TTY
    • Hacking Web Tecniques
      • File Inclusion
    • Linux Privilage Escalation
    • Arreglar bloodhound
  • Hacking Notes (Learning Path)
    • (HTB) Penetration Tester
      • Getting Started
        • Common Terms
          • Tipos de Shell
          • Puertos importantes
          • OWASP Top 10
        • Service Scanning
          • Nmap
          • Attacking Network Services
            • Captura de banners
            • FTP
            • SMB
            • SNMP
        • Web Enumeration
        • Public exploits
          • Encontrar exploits públicos
          • Introducción a Metasploit
        • Types of Shells
          • Reverse Shell
          • Bind Shell
          • Web Shell
        • Privilage escalation
        • Transferring Files
      • Footprinting
        • Infrastructura Based Enumeration
          • Domain Information
          • Cloud Resources
          • Staff
        • Host Based Enumeration
          • FTP
          • SMB
          • NFS
          • DNS
          • SMTP
          • IMAP / POP3
          • SNMP
          • MySQL
          • MSSQL
          • Oracle TNS
          • IPMI
          • Protocolos de administración remota de Linux
          • Protocolos de administración remota de Windows
      • Introduction to Active Directory Enumeration & Attacks
        • Tools of the Trade
        • Initial enumeration
          • External Recon and Enumeration Principles
          • Initial Enumeration of the Domain
        • Sniffing out a Foothold
          • LLMNR/NBT-NS Poisoning - from Linux
          • LLMNR/NBT-NS Poisoning - from Windows
        • Sighting In, Hunting For A User
          • Password Spraying Overview
          • Enumerating & Retrieving Password Policies
          • Password Spraying - Making a Target User List
        • Spray Responsibly
          • Internal Password Spraying - from Linux
      • File Inclusion
        • File Disclousure
          • Local File Inclusion (LFI)
          • Basic Bypasses
          • PHP Filters
        • Remote Code Execution
          • PHP Wrappers
    • (CRTA) Red Team Analyst
      • (CRTA) Red Team Analyst - Lab
    • (eJPT) Junior Penetration Tester
      • Assessment Methodologies
        • Assessment Methodologies: Footprinting & Scanning
          • Windows Recon: Nmap Host Discovery
          • Scan the Server 1
          • Windows Recon: SMB Nmap Scripts
        • Assessment Methodologies: Enumeration
          • Importing Nmap Scan Results Into MSF
          • T1046 : Network Service Scanning
          • FTP Enumeration
          • Samba Recon: Basics
          • Apache Enumeration
          • MySQL Enumeration
          • SSH Login
          • Postfix Recon: Basics
        • Assessment Methodologies: Vulnerability Assessment
          • Windows: IIS Server DAVTest
          • Shellshock
          • Web App Vulnerability Scanning With WMAP
      • Host & Network Penetration Testing
        • Host & Network Penetration Testing: System/Host Based Attacks
          • Windows
            • Windows: IIS Server: WebDav Metasploit
            • Windows: SMB Server PSexec
            • Windows: Insecure RDP Service
            • WinRM: Exploitation with Metasploit
            • UAC Bypass: UACMe
            • Privilege Escalation: Impersonate
            • Unattended Installation
            • Windows: Meterpreter: Kiwi Extension
          • Linux
            • ProFTP Recon: Basics
            • Samba Recon: Dictionary Attack
            • Cron Jobs Gone Wild II
            • Exploiting Setuid Programs
            • Password Cracker: Linux
        • Host & Network Penetration Testing: Network-Based Attacks
          • NetBIOS Hacking
          • SNMP Analysis
          • DNS & SMB Relay Attack
        • Host & Network Penetration Testing: The Metasploit Framework (MSF)
          • Windows: Java Web Server
          • Windows: HTTP File Server
          • Vulnerable FTP Server
          • Vulnerable File Sharing Service
          • Vulnerable SSH server
          • Vulnerable SMTP Server
          • Meterpreter Basics
          • Upgrading Command Shells To Meterpreter Shells
          • Windows Post Exploitation Modules
          • UAC Bypass: Memory Injection (Metasploit)
          • Exploiting SMB With PsExec
          • Windows: Enabling Remote Desktop
          • Clearing Windows Event Logs
          • Pivoting
  • Blue team notes
    • Digital Forensics
      • Malware Analysis with VirusTotal
      • Wireshark
    • (Falcon) CrowdStrike
      • FALCON 104: Getting Started with the Endpoint Security Module
      • FALCON 106: Customizing Dashboards in Falcon
      • FALCON 180: Falcon Forensics Fundamentals
  • Programming
    • Powershell
Powered by GitBook
On this page
  • Detailed User Enumeration
  • SMB NULL Session to Pull User List
  • Using enum4linux
  • Using rpcclient
  • Using CrackMapExec --users Flag
  • Gathering Users with LDAP Anonymous
  • Using ldapsearch
  • Using Windapsearch
  • Enumerating Users with Kerbrute
  • Kerbrute User Enumeration
  • Credentialed Enumeration to Build our User List
  • Using CrackMapExec with Valid Credentials
  1. Hacking Notes (Learning Path)
  2. (HTB) Penetration Tester
  3. Introduction to Active Directory Enumeration & Attacks
  4. Sighting In, Hunting For A User

Password Spraying - Making a Target User List

PreviousEnumerating & Retrieving Password PoliciesNextSpray Responsibly

Last updated 14 days ago

Detailed User Enumeration

Para ejecutar un ataque de rociado de contraseñas con éxito, primero necesitamos una lista de usuarios válidos del dominio con los que intentar autenticarnos. Hay varias maneras de obtener una lista objetivo de usuarios válidos:

  • Aprovechando una sesión SMB NULL para recuperar una lista completa de usuarios del dominio desde el controlador de dominio

  • Utilizar un enlace anónimo LDAP para consultar LDAP de forma anónima y extraer la lista de usuarios del dominio

  • Usar una herramienta como, por ejemplo, Kerbrutevalidar usuarios utilizando una lista de palabras de una fuente como el repositorio de GitHub , o recopiladas mediante una herramienta como para crear una lista de usuarios potencialmente válidos

  • Utilizando un conjunto de credenciales de un sistema de ataque Linux o Windows proporcionado por nuestro cliente u obtenido a través de otros medios, como el envenenamiento de respuesta LLMNR/NBT-NS Respondero incluso una pulverización de contraseñas exitosa utilizando una lista de palabras más pequeña

Independientemente del método que elijamos, también es fundamental considerar la política de contraseñas del dominio. Si tenemos una sesión SMB nula, un enlace anónimo LDAP o un conjunto de credenciales válidas, podemos enumerar la política de contraseñas. Tener esta política a mano es muy útil, ya que la longitud mínima de la contraseña y la habilitación de la complejidad de la contraseña nos ayudan a definir la lista de contraseñas que probaremos en nuestros intentos de rociado. Conocer el umbral de bloqueo de cuentas y el temporizador de contraseñas incorrectas nos indicará cuántos intentos de rociado podemos realizar simultáneamente sin bloquear ninguna cuenta y cuántos minutos debemos esperar entre intentos.

De nuevo, si desconocemos la política de contraseñas, siempre podemos preguntarle a nuestro cliente y, si no nos la proporciona, podemos intentar un rociado de contraseñas muy selectivo como medida de salvaguardia si se han agotado todas las demás opciones. También podríamos intentar un rociado cada pocas horas para intentar no bloquear ninguna cuenta. Independientemente del método que elijamos, y tengamos o no la política de contraseñas, siempre debemos mantener un registro de nuestras actividades, incluyendo, entre otras:

  • Las cuentas atacadas

  • Controlador de dominio utilizado en el ataque

  • Hora del spray

  • Fecha de la pulverización

  • Contraseña(s) intentadas

Esto nos ayudará a garantizar que no dupliquemos esfuerzos. Si se produce un bloqueo de cuenta o nuestro cliente detecta intentos de inicio de sesión sospechosos, podemos proporcionarle nuestras notas para que las compare con sus sistemas de registro y se asegure de que no haya actividad maliciosa en la red.

SMB NULL Session to Pull User List

Si está en una máquina interna pero no tiene credenciales de dominio válidas, puede buscar sesiones SMB nulas o enlaces LDAP anónimos en los controladores de dominio. Cualquiera de estas opciones le permitirá obtener una lista precisa de todos los usuarios de Active Directory y la política de contraseñas. Si ya tiene credenciales para un usuario de dominio o SYSTEMacceso en un host Windows, puede consultar fácilmente Active Directory para obtener esta información.

Es posible hacerlo usando la cuenta SYSTEM, ya que puede acceder impersonateal equipo. Un objeto de equipo se trata como una cuenta de usuario de dominio (con algunas diferencias, como la autenticación entre confianzas de bosque). Si no tiene una cuenta de dominio válida y no son posibles las sesiones SMB nulas ni los enlaces anónimos LDAP, puede crear una lista de usuarios utilizando recursos externos como la recopilación de correo electrónico y LinkedIn. Esta lista de usuarios no será tan completa, pero podría ser suficiente para proporcionarle acceso a Active Directory.

Using enum4linux

enum4linux -U <ip>  | grep "user:" | cut -f2 -d"[" | cut -f1 -d"]"

Podemos utilizar el enumdomuserscomando después de conectarnos anónimamente usando rpcclient.

Using rpcclient

rpcclient -U "" -N <ip> -c enumdomusers

Finalmente, podemos usar CrackMapExecla --usersbandera. Esta herramienta útil también muestra los badpwdcountintentos de inicio de sesión no válidos, lo que nos permite eliminar cualquier cuenta de nuestra lista que esté cerca del umbral de bloqueo. También muestra la baddpwdtimefecha y hora del último intento de contraseña incorrecta, lo que nos permite ver cuánto falta para que se restablezca una cuenta badpwdcount. En un entorno con varios controladores de dominio, este valor se mantiene por separado para cada uno. Para obtener un total preciso de los intentos de contraseña incorrecta de la cuenta, tendríamos que consultar cada controlador de dominio y usar la suma de los valores, o consultar el controlador de dominio con el rol FSMO del emulador PDC.

Using CrackMapExec --users Flag

crackmapexec smb <ip> --users

Gathering Users with LDAP Anonymous

Using ldapsearch

ldapsearch -h <ip> -x -b "<base del domino>" -s sub "(&(objectclass=user))"  | grep sAMAccountName: | cut -f2 -d" "

Herramientas como windapsearchestas facilitan esto (aunque aún debemos entender cómo crear nuestros propios filtros de búsqueda LDAP). Aquí podemos especificar el acceso anónimo proporcionando un nombre de usuario en blanco con la -ubandera y la -Ubandera para indicarle a la herramienta que solo recupere usuarios.

Using Windapsearch

./windapsearch.py --dc-ip <ip> -u "" -U

Enumerating Users with Kerbrute

Como se menciona en la Initial Enumeration of The Domainsección, si no tenemos ningún acceso desde nuestra posición en la red interna, podemos utilizar Kerbrutepara enumerar cuentas de AD válidas y para rociar contraseñas.

Kerbrute User Enumeration

kerbrute userenum -d <dominio> --dc <ip> <diccionario de usuarios>

Credentialed Enumeration to Build our User List

Con credenciales válidas, podemos usar cualquiera de las herramientas mencionadas anteriormente para crear una lista de usuarios. Una forma rápida y sencilla es usar CrackMapExec.

Using CrackMapExec with Valid Credentials

crackmapexec smb 172.16.5.5 -u <user> -p <pass> --users

Algunas herramientas que pueden aprovechar las sesiones SMB NULL y los enlaces anónimos LDAP incluyen , y , entre otras. Independientemente de la herramienta, tendremos que aplicar un poco de filtrado para limpiar la salida y obtener una lista que incluya solo nombres de usuario, uno en cada línea. Podemos hacerlo con enum4linuxla -Ubandera.

Podemos usar varias herramientas para recopilar usuarios al encontrar un enlace LDAP anónimo. Algunos ejemplos son y . Si optamos por usarlas, ldapsearchnecesitaremos especificar un filtro de búsqueda LDAP válido. Podemos obtener más información sobre estos filtros de búsqueda en el módulo .

Esta herramienta utiliza , una forma mucho más rápida y potencialmente más discreta de rociar contraseñas. Este método no genera el ID de evento de Windows (Error al iniciar sesión en una cuenta) ni un error de inicio de sesión, que suele monitorizarse. La herramienta envía solicitudes TGT al controlador de dominio sin autenticación previa Kerberos para enumerar el nombre de usuario. Si el KDC responde con el error PRINCIPAL UNKNOWN, el nombre de usuario no es válido. Siempre que el KDC solicita la autenticación previa Kerberos, indica que el nombre de usuario existe y la herramienta lo marca como válido. Este método de enumeración de nombre de usuario no causa errores de inicio de sesión ni bloquea las cuentas. Sin embargo, una vez que tengamos una lista de usuarios válidos y empecemos a usar esta herramienta para rociar contraseñas, los intentos fallidos de autenticación previa Kerberos se contabilizarán en las cuentas con inicio de sesión fallido y pueden provocar el bloqueo de la cuenta, por lo que debemos ser precavidos independientemente del método elegido.

Probemos este método usando la lista de palabras con 48,705 posibles nombres de usuario comunes en el formato flast. El repositorio de GitHub es un excelente recurso para este tipo de ataque y contiene diversas listas de nombres de usuario que podemos usar para enumerar nombres de usuario válidos usando Kerbrute.

Hemos revisado más de 48.000 nombres de usuario en poco más de 12 segundos y hemos descubierto más de 50 válidos. El uso de Kerbrute para la enumeración de nombres de usuario generará el ID de evento . Esto solo se activará si está habilitado mediante la directiva de grupo. Los defensores pueden ajustar sus herramientas SIEM para detectar una afluencia de este ID de evento, lo que podría indicar un ataque. Si tenemos éxito con este método durante una prueba de penetración, esta puede ser una excelente recomendación para añadir a nuestro informe.

Si no podemos crear una lista de nombres de usuario válida utilizando ninguno de los métodos destacados anteriormente, podríamos recurrir a la recopilación de información externa y buscar direcciones de correo electrónico de la empresa o utilizar una herramienta como para combinar posibles nombres de usuario de la página de LinkedIn de una empresa.

de nombres de usuario estadísticamente probables
linkedin2username
enum4linux
rpcclient
CrackMapExec
windapsearch
ldapsearch
LDAP de Active Directory
la autenticación previa Kerberos
4625: An account failed to log on
jsmith.txt
con nombres de usuario estadísticamente probables
4768: Se solicitó un ticket de autenticación Kerberos (TGT)
el registro de eventos de Kerberos
linkedin2username