Lukavi malver napada WordPress sajtove

Zahvaljujući inovativnom pristupu, u stanju je da izbegne uobičajene tehnike detekcije!

Lukavi malver napada WordPress sajtove

Dva najčešća pristupa koja napadači koriste za ubacivanje SEO spama na sajtove sa CMS-om su:

  • Ubacivanje HTML koda sa skrivenim elementima u fajlove sa temama.
  • Ubacivanje lažnih spam postova u WordPress bazu podataka.

Prvi pristup se uglavnom otkriva pretragom termina koji su napadači ubacili u stranicu. Drugi pristup je još lakše otkriti – logovanjem u komandnu tablu i pretragom postova sa datim terminima. Uklanjanje je u oba slučaja brzo i lako – uklonite ubačeni sadržaj i podnesete zahtev da se sajt ponovo pregleda za blacklist odnosno za ponovno SEO indeksiranje.

Sa novim malverom situacija je drugačija. Malver cilja posetioce sajta koji pretražuju određene besplatne stvari za download (free download). U pitanju su pretrage na dva jezika – engleskom i korejskom. Takođe, na meti su samo neregistrovani posetioci sajtova. Napadači nedozvoljenim (black hat) SEO tehnikama ubacuju željene SEO termine (ključne reči) u kod sajta, na neuobičajenim mestima. Oni nisu vidljivi korisnicima, ali ih pretraživači vide i indeksiraju, čime podižu ranking stranice među rezultatima pretrage. Bolji ranking stranice u pretrazi znači veći broj poseta, a korisnici koji se uklope u zadate parametre, bivaju preusmereni na sumnjive sajtove koji najverovatnije služe za neku vrstu prevare (lažni oglasi, malver itd.). Sve ovo se događa bez znanja vlasnika sajta.

S obzirom na to da standardne pretrage ne daju rezultate, novi malver je detektovan kada je primećen sumnjivi kod blok na functions.php fajlu koji učitava sadržaj iz wp_options tabele. Sam kod je izgledao sumnjivo, jer tiho izvršava deo sadržaja preuzetog iz baze podataka. Pored toga, učitava theme_css opciju što nije uobičajen način učitavanja CSS-a u WP temu. Pretragom te opcije u bazi, malver je pronađen.

Malver obavlja dve funkcije:

  1. Dodaje skrivene linkove kako bi ih pretraživači indeksirali.
  2. Presreće određene zahteve na sajtu i preusmerava posetioce ka spam sadržaju.

Ovaj malver se izdvaja po načinu na koji čuva spam sadržaj na sajtu i načinu na koji ubacuje sadržaj u originalni odgovor koji šalje WordPress. Pravi lažne backup tabele u bazi sajta u kojima čuva spam postove (backupdb_prefix_posts) i informacije o korisnicima koji su se ulogovali (backupdb_prefix_lstat). Tabele koriste drugačiji prefiks (backupdbprefix) od originalnih WP tabela. Zbog toga se postovi ne učitavaju niti prikazuju na kontrolnoj tabli administratora sajta.

Preuzimanje konekcija baze podataka

Kako bi učitao sadržaj, malver dodaje filtere za WordPress “the_content“, “wp_header” i “wp_footer” hendlere koji preuzimaju WP konekcije baze podataka dok sajt obrađuje odgovor. Zatim preusmerava konekcije ka lažnim tabelama gde vuče linkove ka “alternativnim” spam postovima i dodaje ih legitimnom sadržaju pre nego što ih pošalje nazad posetiocu.

Pre nego što vrate kontrolu, napadači vraćaju konekciju baze podataka na default tabele, tako da na WP sajtu sve izgleda normalno. Posetioci sajta ne vide ubačene linkove, ali ih vide crawleri koje pretraživači šalju radi indeksiranja, tako da oni postaju deo rezultata pretrage.

Klikom na ubačene linkove, posetioci se preusmeravaju na druge stranice. To se događa zbog specijalnih JS linkova ubačenih u spam postove koji daju napadaču mogućnost da ubaci dodatni sadržaj u postove "u pokretu" (da preusmeri skripte). Za to koristi deo istog malicioznog koda koji je ubačen u functions.php i wp_options table.

Mitigacija

Vlasnici WP sajtova inficiranih ovim SEO spamom bi trebalo da urade sledeće:

  • Da pronađu i uklone maliciozni kod iz functions.php u temi.
  • Da pronađu i uklone opciju koja je pomenuta u malicioznom kodu (npr. themes_css, ali stvarno ime može biti drugačije).
  • Da provere da li u WP bazi postoje tabele sa nepoznatim prefiksima, npr. backupdbwp umesto wp_. Posebno treba obratiti pažnju na backupdb_wp_posts i backupdb_wp_lstat tabele. Pravo ime može da se razlikuje ukoliko se koristi prefiks za tabelu koji nije wp_.

Izvor: Sucuri Blog