Atacul de phishing ascunde JavaScript folosind un truc Unicode invizibil

O nouă metodă de ofuscare a JavaScript care utilizează caractere Unicode invizibile pentru a reprezenta valori binare este utilizată în mod activ în atacuri de phishing care vizează afiliații unui comitet american de acțiune politică (PAC).

Juniper Threat Labs care a reperat atacul raportează că acesta a avut loc la începutul lunii ianuarie 2025 și prezintă semne de sofisticare, cum ar fi utilizarea:

  • informații nepublice personalizate pentru a viza victimele,
  • puncte de întrerupere ale depanatorului și verificări de sincronizare pentru a eluda detectarea,
  • legături de urmărire Postmark învelite recursiv pentru a ascunde destinațiile finale de phishing.

Dezvoltatorul JavaScript Martin Kleppe a dezvăluit pentru prima dată tehnica de ofuscare în octombrie 2024. Adoptarea sa rapidă în atacuri reale evidențiază rapiditatea cu care noile cercetări devin arme.

Facerea „invizibilă” a sarcinilor utile JS

Noua tehnică de ofuscare exploatează caractere Unicode invizibile, în special Hangul half-width (U+FFA0) și Hangul full-width (U+3164).

Fiecare caracter ASCII din sarcina utilă JavaScript este convertit într-o reprezentare binară pe 8 biți. Valorile binare (unu și zero) din acesta sunt înlocuite cu caractere invizibile Hangul.

Codul ofuscat este stocat ca o proprietate într-un obiect JavaScript. Deoarece caracterele de umplutură Hangul sunt redate ca spațiu gol, sarcina utilă din script pare goală. Vezi cum arată spațiul gol de la sfârșitul imaginii de mai jos.

White space hiding malicious code
White space hiding malicious code. Source: Juniper

Un scurt script bootstrap recuperează sarcina utilă ascunsă utilizând un JavaScript Proxy „get() trap”. Atunci când proprietatea ascunsă este accesată, Proxy-ul convertește caracterele invizibile de umplutură Hangul înapoi în binar și reconstruiește codul JavaScript original.

Analiștii Juniper raportează că atacatorii folosesc pași suplimentari de ascundere în plus față de cei de mai sus. O metodă ar fi codificarea scriptului cu base64 și utilizarea verificărilor anti-debugging pentru a eluda analiza.

Base64 encoding of a sequence of Hangul filler characters. Source: Juniper

„Atacurile erau foarte personalizate, incluzând informații nepublice, iar JavaScript-ul inițial încerca să invoce un punct de întrerupere a depanării în cazul în care era analizat, detecta o întârziere și apoi abandona atacul prin redirecționarea către un site web benign”, explică Juniper.

Atacurile sunt greu de detectat, deoarece spațiile albe goale reduc probabilitatea ca și scanerele de securitate să le semnaleze ca fiind malițioase.

Deoarece payload-ul este doar o proprietate a unui obiect, acesta ar putea fi injectat în scripturi legitime fără a ridica suspiciuni. În plus, întregul proces de codificare este ușor de implementat și nu necesită cunoștințe avansate.

Juniper spune că două dintre domeniile utilizate în această campanie au fost anterior legate de kitul de phishing Tycoon 2FA.

Dacă este așa, probabil că vom vedea această metodă de ofuscare invizibilă adoptată de o gamă mai largă de atacatori în viitor.

Pentru mai multe știri și sfaturi despre lumea IT, recomandă blogul meu și nu uita să te aboneazi la newsletter!

Poți ajuta distribuind sau recomandând acest articol.