¿Cómo hacer ataques de escalada de privilegios locales en Windows para aplicar fuerza bruta en cuentas de administrador local?

Los ataques de escalada de privilegios representan un severo riesgo de ciberseguridad para toda clase de sistemas en organizaciones públicas y privadas. En estos ataques, los actores de amenazas explotan vulnerabilidades o errores de diseño en los sistemas operativos y aplicaciones de software para obtener un acceso ilegítimo a recursos que de otra manera estarían restringidos solo para los usuarios autorizados, lo que desencadenaría peligrosos escenarios de hacking.

Al igual que con otras variantes de hacking, la prevención se vuelve un tema fundamental, pues un sistema informático protegido y constantemente monitoreado y actualizado se verá menos expuesto a ataques de escalada de privilegios, por lo que es importante conocer este y otros métodos de ataque.

A continuación, especialistas del curso de concientización de ciberseguridad del Instituto Internacional de Seguridad Cibernética (IICS) le mostrarán una herramienta para el despliegue de ataques de escalada de privilegios locales en Windows. La herramienta, llamada localbrute.ps1, está escrita en PowerShell para aplicar fuerza bruta contra cuentas de administrador local de Windows.

Esta herramienta es ligera y no requiere ningún módulo de terceros, lo que la convierte en una gran adición a los métodos tradicionales de escalada de privilegios aplicables a varios escenarios de pentesting.

Riesgos de la escalada de privilegios

Un ataque a las cuentas administrativas locales puede ser un vector de ataque considerable, principalmente cuando falta una política de bloqueo de cuentas. Acorde a los expertos del curso de concientización de ciberseguridad, podemos intentar tantos intentos de inicio de sesión como queramos y, si logramos adivinar la contraseña, obtendremos el control total del sistema, permitiendo toda clase de tareas de hacking como:

  • Desactivar todas las funciones de seguridad del sistema
  • Extraer credenciales de acceso y otros detalles confidenciales
  • Crear paquetes de red sin procesar y ejecutar exploits para ataques posteriores

La herramienta realiza un ataque de fuerza bruta local en el sistema objetivo, por lo que su uso es muy específico. Esta herramienta puede ser útil en los casos en que existen credenciales de usuario con privilegios bajos y donde es posible ejecutar comandos.

Características de la herramienta

Según los expertos del curso de concientización de ciberseguridad, localbrute.ps1 realiza intentos de inicio de sesión localmente en el sistema utilizando funciones nativas del mismo sistema Windows. Entre las principales características destacan:

  • Tamaño reducido
  • Capaz de realizar intentos de inicio de sesión contra cualquier cuenta local seleccionada utilizando la lista de palabras determinada
  • Escrito en PowerShell puro
  • No se considera una herramienta maliciosa, por lo que no es detectada por herramientas antivirus

Existen dos versiones de localbrute.ps1, una versión normal y una más extensa. Veamos más a detalle el funcionamiento de la herramienta.

Uso de localbrute.ps1

Según los expertos del curso de concientización de ciberseguridad, lo primero que debemos considerar es definir qué es una cuenta de administrador en el sistema. Estas cuentas suelen incluir:

  • Miembros del grupo de administradores locales
  • La propia cuenta de administrador local

Así es como podemos encontrar las cuentas del grupo de Administradores locales:

net localgroup administrators

Ahora, ejecute localbrute:

Import-Module .\localbrute.ps1

Para continuar, ejecute el siguiente comando:

localbrute   [debug]

Por ejemplo:

localbrute Administrator .\rockyou.txt

Recuerde que un ataque de fuerza bruta puede tomar un tiempo considerable.

¿Cómo funciona?

La herramienta simplemente aplica fuerza bruta usando una lista de palabras para que el usuario intente autenticarse en el sistema. Este software utiliza las funciones internas de Windows DirectoryServices.AccountManagement en el contexto de la computadora local. A continuación hay un fragmento de código de PowerShell para verificar las credenciales localmente:

$u = 'Administrator'
$p = 'Pa$$w0rd!'
Add-Type -AssemblyName System.DirectoryServices.AccountManagement 
$t = [DirectoryServices.AccountManagement.ContextType]::Machine
$a = [DirectoryServices.AccountManagement.PrincipalContext]::new($t)
$a.ValidateCredentials($u,$p)

La versión extendida de la herramienta tiene algunas características adicionales para mejorar la usabilidad cuando se trabaja con listas de palabras grandes. Es decir, mantiene un archivo de estado (localbrute.state) en el directorio de trabajo actual para realizar un seguimiento del progreso, mencionan los especialistas del curso de concientización de ciberseguridad.

Después de un descanso (^ C), la herramienta escribirá la última contraseña encontrada de la lista de palabras dada para el nombre de usuario dado. Esto permite que el ataque continúe después de un reinicio.

El archivo de estado también almacena registros de cuentas que ya han sido pirateadas.

Puede habilitar el modo de depuración para ver la iteración en curso:

La velocidad es de aproximadamente 100 a 200 intentos de inicio de sesión por segundo, según el rendimiento del sistema objetivo. Este no es un proceso rápido, pero sigue siendo mucho más eficiente que otras herramientas similares. Ejecutar varias instancias del script localbrute en paralelo no acelerará la iteración, por lo que los expertos del curso de concientización de ciberseguridad no recomiendan implementar esta clase de métodos.

Recuerde que este artículo fue elaborado con fines exclusivamente informativos y no representa un llamado a la acción; IICS no es responsable del mal uso que pueda darse a la información aquí contenida.

Para conocer más sobre riesgos de seguridad informática, malware, vulnerabilidades, tecnologías de la información, y más información sobre el curso de concientización de ciberseguridad, no dude en ingresar al sitio web del Instituto Internacional de Seguridad Cibernética (IICS).