Analiză tehnică: deconstrucția backdoor-ului „Emotional Haversack”

Acest articol prezintă o analiză tehnică a unui malware complex pentru WordPress, deghizat în mai multe pluginuri cu nume generate automat cum ar fi:

  •  Pouros, Bechtelar and Treutel, identificat intern prin text-domain-ul emotional-haversack
  • Schowalter, Corkery and Krajcik, identificat prin forceful_premise
  • alt plugin, identificat prin certain-trigger-stable

Este posibil să existe și alte variante, vom actualiza acest articol cu noi informații dacă va fi cazul.

Acest lucru a confirmat că nu aveam de-a face cu un singur malware, ci cu o întreagă familie generată de același set de instrumente malițioase.

Malware-ul implementează o strategie multi-stratificată pentru infecție, persistență și camuflare. Punctele cheie includ:

  • un backdoor de autentificare fără parolă,
  • mecanisme avansate de ascundere atât în backend (lista de pluginuri), cât și în frontend (cloaking bazat pe IP-ul administratorilor),
  • și o rutină de instalare care modifică timestamp-urile fișierelor pentru a evita detecția.

Payload-ul final este livrarea unui script JavaScript malițios de pe un server extern, activat doar pentru vizitatorii non-admini. Întreaga structură este înconjurată de un volum mare de cod și fișiere „zgomot” (noise) pentru a îngreuna analiza.

Emotional Haversack

1. Descoperire și vectorul inițial

Cazul de față a început cu două tichete de suport de la clienți.

Primul tichet raporta o eroare critică: site-ul web al clientului era complet nefuncțional, afișând o eroare PHP.

Detaliul bizar, însă, era că problema dispărea ca prin minune atunci când administratorul se loga în panoul de control. Pentru el, site-ul funcționa perfect.

Al doilea tichet semnala o problemă diferită: apariția constantă a unor pluginuri necunoscute, cu nume ciudate (precum forceful_premise sau emotional_haversack), care nu fuseseră instalate de nimeni din echipa clientului și care cauzau erori fatale PHP.

Investigația pe server a relevat că soluția de securitate automată identifica în mod corect codul malițios și ștergea conținutul fișierelor, lăsând în urmă fișiere goale (0 KB).

Imunify360

Rezultatul era că fișierul principal al pluginului încerca să includă aceste componente acum goale, ceea ce ducea inevitabil la un crash. Eroarea fatală nu era malware-ul în sine, ci cicatricea lăsată de o curățare automată.

Aceste „cicatrici” au fost firul de care am tras pentru a scoate la lumină o întreagă familie de malware, o amenințare polimorfică, invizibilă și excepțional de bine concepută.

Punctul de intrare: o parolă compromisă

Deși multe infecții se bazează pe vulnerabilități software, log-urile serverului în acest caz au dezvăluit un punct de intrare mult mai direct: compromiterea credențialelor de administrator. Atacatorul pur și simplu „a intrat pe ușa din față” folosind o cheie furată.

Analiza log-urilor a arătat un tipar clar:

  1. [10:59:39] – Autentificarea: O cerere POST către /wp-login.php de pe IP-ul atacatorului (140.235.170.168) se soldează cu un redirect, indicând un login reușit.
  2. [11:00:22] – Încărcarea: La mai puțin de un minut, atacatorul folosește funcționalitatea legitimă a WordPress pentru a încărca un plugin sub formă de arhivă ZIP (update.php?action=upload-plugin).
  3. [11:00:33] – Activarea: Imediat după încărcare, pluginul (emotional_haversack) este activat, declanșând întregul lanț de acțiuni malițioase.

Acest detaliu este esențial: oricât de securizată ar fi infrastructura, o parolă slabă sau compromisă anulează multe dintre straturile de protecție.

Deconstrucția malware-ului: un inamic cu mai multe fețe

Investigația a confirmat că nu avem de-a face cu un singur plugin, ci cu o familie de malware care folosește generarea procedurală pentru a se deghiza.

Un plugin polimorfic

Am analizat două variante, emotional_haversack și forceful_premise, și am descoperit ADN-ul lor comun.

  • Ce este identic: Structura de directoare, logica de bază (loader, backdoor, cloaking), și strategia de ofuscare.
  • Ce este diferit: Absolut toate numele. Folderul principal, fișierele PHP/JS/CSS, funcțiile interne, numele pluginului din header și, cel mai important, Text Domain-ul, sunt unice pentru fiecare variantă. Asta înseamnă că o căutare după un nume static este inutilă; amenințarea trebuie identificată după tiparul comportamental.

Faza 1: Activarea – cum se ascunde la vedere

La activare, malware-ul execută o rutină de instalare pentru a-și asigura persistența și a se camufla.

  • Camuflaj temporal: Printr-o funcție ingenioasă, malware-ul își modifică datele de creare/modificare ale tuturor fișierelor pentru a se potrivi cu cele ale celui mai vechi plugin legitim de pe site. Astfel, la o inspecție FTP, nu apare ca fiind nou instalat.
  • Golirea agresivă a cache-ului: O altă funcție de activare golește complet cache-ul site-ului (vizând pluginuri populare ca WP Rocket, W3TC, etc.) pentru a garanta că payload-ul său va fi livrat imediat, nefiind servită o versiune veche a paginii.

Faza 2: Persistența și evaziunea – cheia universală și mantia de invizibilitate

  • Backdoor de autentificare: Malware-ul implementează un backdoor care permite atacatorului să se logheze ca orice utilizator (inclusiv admin) fără parolă, doar vizitând un URL cu doi parametri secreți.
  • Ascunderea în backend: Printr-un filtru pe all_plugins, pluginul se elimină singur din lista vizibilă în panoul de administrare, devenind o „fantomă”.

Faza 3: Payload-ul final – momeala și capcana (atacul de tip Pastejacking)

Aici este punctul culminant al atacului, care vizează direct vizitatorii site-ului.

Cloaking-ul: de ce administratorii nu văd problema

Malware-ul folosește o funcție de recunoaștere pentru a extrage din baza de date IP-urile tuturor administratorilor și editorilor logați.

Când un vizitator accesează site-ul, funcția de livrare a payload-ului îi verifică IP-ul. Dacă IP-ul se potrivește cu unul din lista de admini, payload-ul este suprimat. Acesta este motivul pentru care site-ul funcționa perfect pentru clientul logat.

Pagina falsă de verificare

Pentru un vizitator normal, site-ul original este complet anihilat de scriptul JavaScript injectat. Conținutul paginii este șters și înlocuit cu o pagină falsă de verificare, care imită design-ul Cloudflare și afișează un mesaj alarmant: „Unusual Web Traffic Detected”.

Arma crimei: comanda din clipboard

Pagina falsă instruiește utilizatorul să-și verifice identitatea printr-un proces bizar: să copieze un text și să-l ruleze în Terminal (pe Mac) sau PowerShell (pe Windows). Aceasta este o capcană de „pastejacking”.

Textul afișat pe ecran este inofensiv: 'I am not a robot: Cloudflare Verification ID: 715921'

Însă, comanda reală copiată în clipboard este: 

Comanda

Odată decodată, comanda este: 

Comanda reală

Această comandă, odată rulată de victimă, descarcă silențios un script malițios de pe serverul atacatorului și îl execută în fundal pe computerul utilizatorului, asigurându-i persistența chiar și după închiderea terminalului.

Site-ul WordPress compromis devine astfel o simplă momeală pentru a lansa un atac direct și periculos asupra vizitatorilor săi.

Ghid complet de remediere și prevenție

Căutați tiparele descrise mai sus, nu nume de fișiere statice.

Fiți atenți la pluginuri cu nume corporative/generate procedural și descrieri în latină. O eroare fatală PHP care face referire la un fișier lipsă dintr-un astfel de plugin este un semnal de alarmă major.

Verificați secțiunile de carantină ale soluțiilor de securitate (ex: Imunify360 din cPanel).

Eliminare

  1. Ștergeți directorul pluginului: Eliminați complet folderul malițios din wp-content/plugins/ prin FTP sau managerul de fișiere.
  2. Inspectați baza de date: Verificați tabela wp_users pentru orice cont de administrator suspect pe care nu-l recunoașteți.
  3. Verificați fișierele core: Inspectați wp-config.php și .htaccess pentru modificări suspecte. Căutați fișiere PHP necunoscute în wp-content/uploads/.

Securizare

  1. Resetați imediat toate parolele: Utilizatori WordPress (în special admini), baza de date, FTP/SFTP, și contul de găzduire.
  2. Actualizați tot: Asigurați-vă că nucleul WordPress, toate temele și toate pluginurile rămase sunt la ultima versiune.
  3. Implementați măsuri suplimentare: Activați Two-Factor Authentication (2FA) pentru toți utilizatorii admin.

Prevenție

  • NU folosiți NICIODATĂ teme sau pluginuri piratate („nulled”). Acesta este principalul vector de infecție pentru astfel de amenințări.
  • Mențineți o politică strictă de actualizări.
  • Folosiți o igienă digitală corectă cum ar fi parole puternice, 2FA, logout de pe site după terminarea lucrului, antivirus și antimalware pe dispozitiv etc.

Concluzii

Malware-ul „Emotional Haversack” este un exemplu elocvent al modului în care amenințările evoluează.

Nu mai este suficient ca un malware să fie funcțional; pentru a supraviețui, trebuie să fie și invizibil. Acest caz demonstrează importanța unei strategii de securitate în profunzime.

Securitatea automată de la nivelul serverului este o primă linie de apărare esențială, capabilă să neutralizeze codul periculos. Însă, securitatea completă este o responsabilitate comună. Găzduirea proactivă și securizată trebuie combinată cu practici responsabile din partea utilizatorilor.

Vom reveni în curând cu un ghid de securitate complet și gratuit.

Avatar Andrei Chira

Comentarii

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *