Der Schweregrad der Lücke ergibt sich daraus, dass ein Angreifer ohne Berechtigung an den Admin-API-Schlüssel einer Seite gelangt. Dieser Schlüssel erlaubt es, die Admin-API von Ghost aufzurufen und veröffentlichte Beiträge direkt zu verändern. Laut XLab nutzten die Täter die Schwachstelle, um „den Admin-API-Schlüssel der Zielseite unbefugt zu erlangen und anschließend über die Ghost-Admin-API massenhaft Artikel zu manipulieren, indem sie am Seitenende schädliche JavaScript-Loader einschleusten, um gefälschte CAPTCHA-Angriffe zu unterstützen".
Nach Einschätzung des chinesischen Anbieters stehen mindestens zwei Angreifergruppen hinter der Kampagne, die einzelne Seiten teils innerhalb eines einzigen Tages mit Schadcode versahen. Dass dabei seriöse Webseiten kompromittiert wurden, dürfte laut XLab die Erfolgsquote der ClickFix-Angriffe zusätzlich erhöhen.
Der eingeschleuste Code arbeitet als zweistufiger Loader, der die eigentliche Schadlast zur Laufzeit von einer externen Domain („clo4shara[.]xyz/11z77u3.php") nachlädt. Diese Bauweise erlaubt es den Angreifern, die Nutzlast je nach Kriterium auszutauschen, während die Loader-Funktion auf den kompromittierten Seiten unverändert bleibt. Das PHP-Skript ist nach Angaben von XLab ein typisches Skript zur Traffic-Verteilung: Es sammelt Fingerabdruck-Informationen aus dem Browser des Nutzers, überträgt sie an den Server und führt je nach Antwort Weiterleitungen, Pop-ups oder Downloads aus. Angetrieben wird es vom kommerziellen Cloaking-Dienst Adspect.
Das Cloaking sorgt dafür, dass nur echte Opfer die tatsächliche Schadlast erhalten, während Sicherheitsscanner und Crawler lediglich eine harmlose Seite zu sehen bekommen. Das Skript unterstützt zudem 19 verschiedene Befehle, um beliebigen JavaScript-Code auszuführen und den Browser des Opfers fernzusteuern.
Ausgewählten Besuchern wird schließlich in einem iframe eine gefälschte CAPTCHA-Seite präsentiert. Damit beginnt der eigentliche ClickFix-Angriff: Die Nutzer werden angewiesen, einen Base64-codierten Befehl zu kopieren und in den Ausführen-Dialog von Windows einzufügen. Dieser Befehl lädt ein ZIP-Archiv herunter, entpackt daraus ein Windows-Batch-Skript und startet es. Das Skript führt einen PowerShell-Befehl aus, der eine DLL von einer entfernten Domain lädt, sie über „rundll32.exe" startet und zur Ablenkung eine gefälschte Webseite öffnet.
In späteren Varianten ersetzten die Angreifer die DLL durch eine JavaScript-Nutzlast. Unabhängig vom Typ ist das Ziel stets, eine ausführbare Windows-Datei abzulegen: Im Fall der DLL ist dies ein PuTTY-Client mit gültigem Code-Signing-Zertifikat, über JavaScript hingegen ein Inno-Setup-Installer für eine Electron-Anwendung. Diese Anwendung ist eine veränderte Version des quelloffenen Desktop-Clients Grape, die sich dauerhaft im System einnistet und alle 30 Sekunden einen entfernten Server („web-telegram[.]ug") abfragt, um Anweisungen des Angreifers — etwa das Ausführen von JavaScript-Code oder Dateien — zu verarbeiten.
Ghost-Nutzern wird geraten, ihre Instanzen auf die aktuelle Version zu aktualisieren, sämtliche Zugangsdaten zu erneuern, die Seiten zu bereinigen, Zugriffsprotokolle auf verdächtige Aktivitäten zu prüfen und Nutzer zu benachrichtigen, die die Seiten im betroffenen Zeitraum besucht haben könnten.
