Skoči na vsebino

Okužba spletnih mest z EITest kodo

Opis

Na SI-CERT smo bili pred časom obveščeni o okuženih slovenskih spletnih mestih z zlonamerno kodo EITest. Ta je bila prvič zaznana že v letu 2011, njen namen pa je preusmeritev obiskovalcev spletne strani na druga zlonamerna mesta, ki poskušajo računalnike okužiti z virusom (t.i. drive-by-download). V večini primerov gre za poskuse okužbe z bodisi enim od izsiljevalskih virusov ali bančnim trojancem. EITest napadalci lahko uporabljajo tudi za druge napade, npr. phishing. O vseh primerih smo že obvestili administratorje zlorabljenih spletnih mest.

Okužba spletnega mesta

Napadalci v spletno mesto največkrat vdrejo preko javno znane ranljivosti CMS sistema ali katerega od nameščenih vtičnikov, ali pa pridobijo administrativni dostop do sistema, npr. preko kraje gesla ali pa s poskušanjem različnih kombinacij up. imen in gesel. Po vdoru v php datoteke s pomočjo skripte vstavijo močno zamaskirano php kodo.

Zamaskirana php koda
Zamaskirana php koda

Analiza kode

Zlonamerno kodo lahko analiziramo na dva načina. Dinamična analiza pomeni, da kodo zaženemo v nadzorovanem okolju, in iz zaznave in analize dogodkov, ki jih izvajanje kode povzroči, skušamo sklepati na njeno delovanje. Taka vrsta analize je precej hitra, lahko se jo opravi s specializiranimi avtomatskimi orodji, vendar pa se pri njej lahko zgodi, da spregledamo kakšno pomembno informacijo. Pri statični analizi pa delovanje zlonamernega programa poskušamo razumeti s pregledom in analizo same programske kode. V primeru zlonamernih programov je programska koda skoraj vedno zamaskirana s posebnimi tehnikami, ki analizo močno otežijo. Zato se vsaka statična analiza kode začne s t.i. odmaskiranjem (ang. deobfuscation).

Odmaskiranje EITest kode

Za odmaskiranje kode je potrebnih kar nekaj korakov. V prvem koraku pretvorimo hex vrednosti v berljivo tekstovno obliko.

Pretvorba hex vrednosti v tekstovno obliko
Pretvorba hex vrednosti v tekstovno obliko

Določeni deli kode se pojavijo že sedaj. Iz prvega dela razberemo, da se v spremenljivki $ua = strtolower($_SERVER[“HTTP_USER_AGENT”]) preveri spletni brskalnik, iz katerega uporabnik dostopa do okužene spletne strani: ali gre za Mozilla Firefox (!strstr($ua, “rv:11”)) ali Internet Explorer (!strstr($ua, “msie”)).

Srednji del kode je še vedno zelo zamaskiran, zato pregledamo zadnji del kode iz katerega lahko razberemo vrednosti nekaterih spremenljivk.

Zadnji del kode
Zadnji del kode

Spodnji del kode vrne regulani izraz /(.*)/e

$mphnqrcefq=substr($vxhofewdyq,(38860-28754),(47-40));

V spremenljivko $yifnlofxzi se shrani vsebina, ki jo dobimo iz funkcije ybhxizuhwj(), ki s pomočjo zanke zamenja določene znake vhodnemu parametru, v tem primeru je to zamaskiran tekst v spremenljivki $vxhofewdyq.

Spremenljivka $bavbobaqud dobi vrednost preg_replace

$bavbobaqud = substr($vxhofewdyq, (51350 – 41237), (66 – 54));

Z izvedbo sledeče vrstice kode $bavbobaqud($mphnqrcefq, $yifnlofxzi, NULL); pa potem dobimo naslednjo delno odmaskirano kodo.

Delno odmaskirana koda
Delno odmaskirana koda

Nad zamaskirano kodo izvedemo več preg_replace ukazov, ki v besedilu zamenja znake na podlagi podanega regularnega izraza.

Z zadnjim preg_replace ukazom oz. $ll($w9, $syv.'(“O”,”P”,”A”,”S”,”D”,”F”,”G”,”H”,”J”,”K”,”L”,”Z”,”X”,”C”,”V”,”B”,”N”,”M”)’.$ji9, NULL);pridemo že skoraj do končne kode. V zadnjem koraku prek spremenljivke $v_ v for zanki pridemo do končne odmaskirane kode:

Končna odmaskirana koda
Končna odmaskirana koda

Delovanje EITest kode

Odmaskirana koda vsebuje spremenljivko $url = “http://” . cqq(“.com”) . “/” . $g4; , ki vsebuje spletni naslov, na katerega se povezuje.

Funkicja cqq(“.com”) naključno vrne dve domeni: e108dfcb.com ali 32f988f6.com. Celotnemu spletnemu naslovu pa se dodajo še parametri:

$a = check212(“HTTP_USER_AGENT”);
$b = check212(“HTTP_REFERER”);
$c = check212(“REMOTE_ADDR”);
$d = check212(“HTTP_HOST”);
$e = check212(“PHP_SELF”);

V primeru, da je kateri koli od spodnjih pogojev resničen, potem se zlonamerna koda ne bo izvedla:
– USER_AGENT ni definiran
– IP naslov žrtve ni naveden
– HTTP_HOST ni naveden
– Trenutno okužena datoteka vsebuje besedo admin
– USER_AGENT se ujema z znanim iskalniškim pajkom (ang. Crawler) – Google, Slurp, MsnBot, IE_Archiver, Yandex, Rambler).

if (($a == “non”) or ($c == “non”) or ($d == “non”) or strrpos(strtolower($e) , “admin”) or (preg_match(“/” . implode(“|”, array(“google”,”slurp”,”msnbot”,”ia_archiver”,”yandex”,”rambler”))

Če se postopek preverjanja konča brez napak, potem se sproži zahteva za tovor (ang. »payload«). V nasprotnem primeru se zlonamerna koda na okuženo spletno stran ne naloži.

Identifikacija kode na spletnem mestu in zaščita zlorabljenih sistemov

EITest koda se na nekaterih spletnih mestih lahko nahaja tudi po več let. Običajno se jo lahko z iskanjem znakovnega niza “= explode(chr((” v php datotekah, npr. z ukazom:

# find /var/www -type f -name "*.php" -print0 | xargs -0 grep -li "= explode(chr(("

Ko se identificira php datoteke z vstavljeno kodo, je najprej potrebno zabeležiti čas zadnje spremembe datotek, nato pa vstavljeno kodo odstraniti, bodisi ročno, ali pa z restavracijo datotek iz čiste varnostne kopije. V času, ko so bile datoteke spremenjene, je potrebno natančno preučiti dnevniške datoteke spletnega strežnika. Iz njih se običajno da razbrati, na kakšen način je napadalec vstavil kodo.To varnostno luknjo je nato potrebno čimprej zakrpati. Zgolj izbris vstavljene kode iz php datotek ni ustrezen ukrep, saj se s tem ne zaščiti sistema pred ponovno zlorabo. Skrbnikom spletnih mest svetujemo, da obvestila prejeta s strani SI-CERT obravnavajo odgovorno in ukrepajo po danih navodilih.

Preberite tudi

5 varnostnih nasvetov, ki naj v 2025 gredo v pozabo

Pripravili smo pregled nekaj varnostnih nasvetov, ki naj v 2025 gredo v pozabo, saj gre za prakse, ki več ne ustrezajo sodobnim varnostnim zahtevam.
Več

Kaj nas je naučilo leto 2024?

Iztekajoče leto 2024 so zaznamovali tako odmevnejši kibernetski napadi na velike organizacije, ki so pritegnili veliko medijske pozornosti, kot tudi veliko število incidentov v manjših podjetjih, predvsem prevar z vrivanjem v poslovno komunikacijo (t.i. BEC prevara) in okužb z zlonamerno kodo (t.i. infostealers). 
Več

Konferenca o ozaveščanju o kibernetski varnosti

Agencija EU za kibernetsko varnost ENISA je v partnerstvu s SI-CERT organizirala prvo mednarodno konferenco o ozaveščanju o kibernetski varnosti. Dogodek je 27. novembra 2024, v Klubu Cankarjevega doma, gostil …
Več