e-commerce

Malware-ul care revenea după fiecare curățare

Client
Magazin online din România
Platformă
WordPress (magazin online)
Infecție
Backdoor EtherHiding (comandă prin blockchain)
Durată
o zi lucrătoare
Downtime
zero

Un magazin online din România ne-a cerut o a doua opinie: site-ul fusese „curățat” de o infecție cu puțin timp în urmă, dar simptomele reveneau. La verificarea de control am constatat că infecția era încă activă — iar atacatorul avea sesiuni de lucru deschise pe site chiar în timpul analizei noastre.

De ce nu funcționase curățarea anterioară

Curățarea inițială eliminase partea vizibilă a malware-ului: fișierele infectate. Ce nu atinsese era mecanismul de regenerare. Malware-ul păstra în baza de date o copie completă, comprimată, a propriului cod, împreună cu lista fișierelor pe care trebuia să le recreeze.

Practic, ștergerea fișierelor trata doar simptomul. La următoarea rulare a sarcinii programate, malware-ul se rescria singur pe disc, pornind de la copia din baza de date. În momentul verificării noastre, sarcina de reinfectare era activă și urma să ruleze în aceeași zi.

Concluzia, valabilă pentru orice site: o curățare care nu verifică și baza de date este, în cel mai bun caz, temporară.

Ce este EtherHiding — și de ce nu poate fi „blocat”

Backdoor-ul găsit face parte din familia EtherHiding, un tip avansat de malware care își primește comenzile prin blockchain-ul Ethereum, nu de la un server clasic de comandă și control. Detaliul e important: fiindcă nu există un server sau un domeniu de blocat, firewall-ul și listele de domenii blocate nu au niciun efect asupra lui. De aceea reapărea după fiecare ștergere.

Ce am găsit în site

Un plugin fals, criptat — backdoor-ul principal

În directorul de plugin-uri se afla haven-conductor-lite, un plugin care se dădea drept legitim, cu un autor inventat („Liam Clark”). Un singur fișier de 504 KB, complet criptat ca să nu poată fi citit sau detectat de scannerele automate. Antetul plugin-ului era umplut cu spații — o tehnică folosită special pentru a induce în eroare programele de scanare.

Cod injectat în tema site-ului

În fișierul functions.php al temei active, liniile 75–121 conțineau componenta care pornea backdoor-ul la fiecare încărcare a paginii. Data de modificare a fișierului fusese falsificată intenționat, ca fișierul să pară neatins de luni de zile.

Un cont de administrator creat de atacator

Contul backup_1a9161b6cc — numele imită un cont de backup, ca să nu atragă atenția — avea drepturi complete de administrator și 4 sesiuni active în momentul analizei. Cu alte cuvinte, atacatorul era conectat la site în timp ce îl investigam.

Persistență în baza de date — cauza reinfectării

Am găsit 19 înregistrări ascunse, cu nume aleatorii, printre care copia comprimată integrală a backdoor-ului și lista fișierelor de recreat. La ele se adăugau două sarcini programate care reactivau periodic malware-ul și un fișier rămas de la o infecție mai veche, nedetectată la vremea ei.

Ce putea face acest malware

Am decriptat codul și i-am analizat capabilitățile. Printre ele:

  • extrăgea numele de utilizator, adresele de e-mail și parolele criptate ale tuturor utilizatorilor din baza de date;
  • genera cookie-uri de autentificare valide — acces de administrator fără a cunoaște vreo parolă;
  • se ascundea din lista de plugin-uri din panoul de administrare;
  • se reinstala automat pe mai multe căi simultan, dacă era șters parțial;
  • putea injecta cod în paginile văzute de vizitatori și trimitea date către serverele atacatorului.

Implicația practică pentru client: toate parolele conturilor de pe site au trebuit considerate compromise, chiar dacă erau stocate criptat.

Curățarea, pas cu pas

Înainte de orice modificare am realizat o copie forensică a tuturor elementelor infectate, păstrată în afara zonei publice a site-ului, pentru eventuale verificări ulterioare. Apoi:

  1. am șters complet plugin-ul backdoor;
  2. am curățat codul injectat din fișierul temei și am verificat sintactic restul fișierului;
  3. am eliminat cele 19 înregistrări malițioase din baza de date, inclusiv copia comprimată a malware-ului;
  4. am eliminat cele două sarcini programate malițioase;
  5. am șters contul fals de administrator și toate sesiunile lui active;
  6. am șters fișierul rămas de la infecția anterioară;
  7. am eliminat din .htaccess o regulă suspectă care masca extensiile reale ale fișierelor.

Totul fără nicio secundă de întrerupere: magazinul a funcționat și a vândut normal pe toată durata intervenției.

Verificările de la final

O curățare e completă doar dacă poate fi demonstrată. Verificările noastre, toate trecute:

  • 0 fișiere WordPress modificate față de versiunea oficială
  • 0 semnături malware pe disc
  • 0 înregistrări malițioase în baza de date
  • 46 de sarcini programate verificate, 0 malițioase
  • un singur cont de administrator — cel legitim
  • 0 erori PHP; paginile și autentificarea funcționează normal

Am verificat separat și fișierul de configurare, conținutul articolelor și paginilor, folderul de încărcări și celelalte plugin-uri — toate curate. Nicio contaminare către alte site-uri de pe același cont de găzduire.

Ce i-am recomandat clientului

  • Rotirea cheilor de securitate și resetarea parolelor. Malware-ul putea genera cookie-uri de autentificare folosind cheile secrete ale site-ului; câtă vreme acestea rămân neschimbate, atacatorul poate reveni chiar și fără contul lui. Operațiunea deconectează toți utilizatorii logați, așa că pe un magazin live se programează noaptea, într-un interval cu trafic redus.
  • Actualizarea plugin-urilor cu istoric de vulnerabilități — cea mai probabilă cale de intrare inițială (de exemplu revslider sau js_composer, livrate la pachet cu multe teme comerciale și rar actualizate).
  • Monitorizare 48–72 de ore, cu semne concrete de urmărit: reapariția unor fișiere de sistem cunoscute ca vehicul de malware, înregistrări noi cu nume aleatorii în baza de date, orice cont nou de administrator.

Anexă tehnică — indicatori de compromitere

Pentru administratorii și colegii din industrie care vor să-și verifice propriile site-uri:

Familie malware
EtherHiding (C2 prin blockchain Ethereum)
Plugin fals
haven-conductor-lite.php (504.914 octeți, autor fals „Liam Clark”)
Marcaje în temă
SC_TH_BEGIN / SC_TH_END, versiune 4.0.3
Cont neautorizat
backup_1a9161b6cc
Cron-uri
sc_cron_fetch, x_1v85bej4ngwv2jvo5
Contracte ETH
0x9A4752cAA1C15868487A0ACb691F81bfA901E063 · 0x839d1cE5c3F259e8d3D17114d7186EDabdbeA94b · 0x6d2c5435EF70196740a48904B69377935D50abBB

Site-ul tău trece prin ceva similar?

Îl curățăm și îl securizăm într-o singură intervenție, de la 250 lei, cu garanție 30 de zile. Diagnosticul e gratuit, fără obligații.

Cere diagnostic gratuit

Alte studii de caz

Citește și