
Peaaegu igaühel meist on online-poode kasutades risk, et ta võib saada JavaScript-snifferite ohvriks — spetsiaalne kood, mille pahatahtlikud kasutajad sisestavad veebisaidile, et varastada kasutajate pangakaardide, aadresside, logide ja paroolide andmeid.
Snifferite tõttu on juba kannatanud peaaegu 400 000 kasutajat British Airwaysi veebisaidilt ja mobiilirakendusest, samuti Briti spordigigandi FILA külastajad ja Ameerika pileti jaotaja Ticketmasteri külastajad. PayPal, Chase Paymenttech, USAePay, Moneris — need ja paljud teised maksesüsteemid on olnud nakatunud.
Threat Intelligence Group-IB analüütik Viktor Okorokov räägib, kuidas snifferid integreeruvad veebisaidi koodi ja varastavad makseteavet, samuti milliseid CRM-e nad ründavad.

„Peidetud oht“
Tundub, et kaua aega püsisid JS-snifferid viirusetõrjeanalüütikute tähelepanude alt väljas ning pangad ja maksesüsteemid ei pidanud neid tõsiseks ohuks. Ja täiesti asjata. Group-IB eksperdid 2440 nakatunud veebipoe, mille külastajate koguarv on umbes 1,5 miljonit inimest päevas, olid ohus kompromiteerimise tõttu. Ohvrite hulgas on mitte ainult kasutajad, vaid ka veebipoed, maksesüsteemid ja pangad, mis väljastasid kompromiteeritud kaarte.
Group-IB on esimesena uurinud tumeda võrgu snifferite turgu, nende infrastruktuuri ja monetiseerimise viise, mis toovad nende loojaile miljoneid dollareid. Oleme tuvastanud 38 snifferi perekonda, millest ainult 12 oli varem teadlastele tuntud.
Vaatame lähemalt nelja snifferi perekonda, mida uurimistöös käsitleti.
Perekond ReactGet
ReactGet perekutmise perede sniffereid kasutatakse pangakaarditeabe varastamiseks veebipoe saitidel. Sniffer suudab töötada paljude erinevate maksesüsteemidega, mida saidil kasutatakse: ühe parameetri väärtus vastab ühele maksesüsteemile, samas kui eraldi tuvastatud snifferite versioonid võivad olla mõeldud kasutajaandmete varastamiseks ning samuti pangakaarditeabe varastamiseks makseformaatidest mitmest maksesüsteemist, olles nii-öelda universaalne sniffer. On leitud, et teatud juhtudel korraldavad ründajad phishing-äktsioone veebipoodide administraatoritele, et saada juurdepääs saidi halduspaneelile.
Selle snifferite rikka kampaania algus leidis aset 2017. aasta mais, rünnaku alla sattusid CMS-i haldamise alla kuuluvad saidid ja platvormid nagu Magento, Bigcommerce, Shopify.
Kuidas ReactGet integreeritakse veebipoe koodiga
Lisaks klassikalisele skripti rakendamise meetodile lingi kaudu, kasutavad ReactGet perekonna sniffers eritehnikat: JavaScript-koodi abil kontrollitakse, kas kasutaja praegune aadress vastab teatud kriteeriumidele. Kahjulik kood käivitatakse ainult siis, kui praeguses URL-is on teatud alamsõne checkout või onestepcheckout, onepage/, out/onepag, checkout/one, ckout/one. Nii et snifferi kood käivitatakse just sel hetkel, kui kasutaja läheb ostude eest maksma ja sisestab makseteabe vormi saidil.

See sniffer kasutab mittestandartset tehnikat. Ohvri makse- ja isikuandmed kogutakse koos, kodeeritakse kasutades base64, ja seejärel kasutatakse saadud stringi parameetrina rünnakute jaoks saadetava päringu saatmiseks. Tavaliselt jäljendab see rada JavaScript-faili, näiteks resp.js, data.js ja nii edasi, kuid samuti kasutatakse linke pildifailidele, GIF ja JPG. Eristav joon on see, et sniffer loob 1x1 pikslise pildit objekti ja kasutab eelnevalt saadud linki parameetrina. src pildid. See tähendab, et kasutaja jaoks näeb selline päring välja nagu tavalise pildi päring. Sarnast tehnikat kasutati ImageID perekonna snifferite seas. Lisaks kasutatakse 1x1 piksli suuruse pildi tehnikat paljusid seaduslikke veebianalüütika skripte, mis võivad samuti kasutajat eksitada.

Versioonide analüüs
Aktiveeritud domeenide analüüs, mida kasutavad ReactGet snifferite operaatorid, võimaldas avastada palju erinevaid versioone selle perekonna snifferitest. Versioonid erinevad obfuskeerimise olemasolu või puudumise poolest ning lisaks on iga sniffer mõeldud konkreetse maksesüsteemi jaoks, mis töötleb krediitkaartide makseid veebipoode jaoks. Muutades parameetrit, mis vastab versiooni numbrile, said Group-IB spetsialistid täiendava nimekirja snifferite saadaval olevatest variatsioonidest ja määrasid maksesüsteemid, millele iga sniffer keskendub, lehe koodi otsitavate vormifildide nimede põhjal.
Snifferite ja vastavate maksesüsteemide nimekiri
| Snifferi URL | Makse süsteem |
|---|---|
| Authorize.Net | |
| Cardsave | |
| Authorize.Net | |
| Authorize.Net | |
| eWAY Rapid | |
| Authorize.Net | |
| Adyen | |
| USAePay | |
| Authorize.Net | |
| USAePay | |
| Authorize.Net | |
| Moneris | |
| USAePay | |
| PayPal | |
| Sage Pay | |
| Verisign | |
| PayPal | |
| Stripe | |
| Realex | |
| PayPal | |
| LinkPoint | |
| PayPal | |
| PayPal | |
| DataCash | |
| PayPal | |
| Authorize.Net | |
| Authorize.Net | |
| Authorize.Net | |
| Authorize.Net | |
| Verisign | |
| Authorize.Net | |
| Moneris | |
| Sage Pay | |
| USAePay | |
| Authorize.Net | |
| Authorize.Net | |
| ANZ eGate | |
| Authorize.Net | |
| Moneris | |
| Sage Pay | |
| Sage Pay | |
| Chase Paymentech | |
| Authorize.Net | |
| Adyen | |
| PsiGate | |
| CyberSource | |
| ANZ eGate | |
| Realex | |
| USAePay | |
| Authorize.Net | |
| Authorize.Net | |
| ANZ eGate | |
| PayPal | |
| PayPal | |
| Realex | |
| Sage Pay | |
| PayPal | |
| Verisign | |
| Authorize.Net | |
| Verisign | |
| Authorize.Net | |
| ANZ eGate | |
| PayPal | |
| CyberSource | |
| Authorize.Net | |
| Sage Pay | |
| Realex | |
| CyberSource | |
| PayPal | |
| PayPal | |
| PayPal | |
| Verisign | |
| eWAY Rapid | |
| Sage Pay | |
| Sage Pay | |
| Verisign | |
| Authorize.Net | |
| Authorize.Net | |
| First Data Global Gateway | |
| Authorize.Net | |
| Authorize.Net | |
| Moneris | |
| Authorize.Net | |
| PayPal | |
| Verisign | |
| USAePay | |
| USAePay | |
| Authorize.Net | |
| Verisign | |
| PayPal | |
| Authorize.Net | |
| Stripe | |
| Authorize.Net | |
| eWAY Rapid | |
| Sage Pay | |
| Authorize.Net | |
| Braintree | |
| Braintree | |
| PayPal | |
| Sage Pay | |
| Sage Pay | |
| Authorize.Net | |
| PayPal | |
| Authorize.Net | |
| Verisign | |
| PayPal | |
| Authorize.Net | |
| Stripe | |
| Authorize.Net | |
| eWAY Rapid | |
| Sage Pay | |
| Authorize.Net | |
| Braintree | |
| PayPal | |
| Sage Pay | |
| Sage Pay | |
| Authorize.Net | |
| PayPal | |
| Authorize.Net | |
| Verisign | |
| Authorize.Net | |
| Authorize.Net | |
| Authorize.Net | |
| Authorize.Net | |
| Sage Pay | |
| Sage Pay | |
| Westpac PayWay | |
| PayFort | |
| PayPal | |
| Authorize.Net | |
| Stripe | |
| First Data Global Gateway | |
| PsiGate | |
| Authorize.Net | |
| Authorize.Net | |
| Moneris | |
| Authorize.Net | |
| Sage Pay | |
| Verisign | |
| Moneris | |
| PayPal | |
| LinkPoint | |
| Westpac PayWay | |
| Authorize.Net | |
| Moneris | |
| PayPal | |
| Adyen | |
| PayPal | |
| Authorize.Net | |
| USAePay | |
| EBizCharge | |
| Authorize.Net | |
| Verisign | |
| Verisign | |
| Authorize.Net | |
| PayPal | |
| Moneris | |
| Authorize.Net | |
| PayPal | |
| PayPal | |
| Westpac PayWay | |
| Authorize.Net | |
| Authorize.Net | |
| Sage Pay | |
| Verisign | |
| Authorize.Net | |
| PayPal | |
| PayFort | |
| CyberSource | |
| PayPal Payflow Pro | |
| Authorize.Net | |
| Authorize.Net | |
| Verisign | |
| Authorize.Net | |
| Authorize.Net | |
| Sage Pay | |
| Authorize.Net | |
| Stripe | |
| Authorize.Net | |
| Authorize.Net | |
| Verisign | |
| PayPal | |
| Authorize.Net | |
| Authorize.Net | |
| Sage Pay | |
| Authorize.Net | |
| Authorize.Net | |
| PayPal | |
| Flint | |
| PayPal | |
| Sage Pay | |
| Verisign | |
| Authorize.Net | |
| Authorize.Net | |
| Stripe | |
| Fat Zebra | |
| Sage Pay | |
| Authorize.Net | |
| First Data Global Gateway | |
| Authorize.Net | |
| eWAY Rapid | |
| Adyen | |
| PayPal | |
| QuickBooks Merchant Services | |
| Verisign | |
| Sage Pay | |
| Verisign | |
| Authorize.Net | |
| Authorize.Net | |
| Sage Pay | |
| Authorize.Net | |
| eWAY Rapid | |
| Authorize.Net | |
| ANZ eGate | |
| PayPal | |
| CyberSource | |
| Authorize.Net | |
| Sage Pay | |
| Realex | |
| CyberSource | |
| PayPal | |
| PayPal | |
| PayPal | |
| Verisign | |
| eWAY Rapid | |
| Sage Pay | |
| Sage Pay | |
| Verisign | |
| Authorize.Net | |
| Authorize.Net | |
| First Data Global Gateway | |
| Authorize.Net | |
| Authorize.Net | |
| Moneris | |
| Authorize.Net | |
| PayPal |
Paroolide nuusutaja
Üks JavaScript-clientside nuusutajate eelistest on universaalsus: veebilehele sisestatud pahavara suudab varastada mis tahes tüüpi andmeid, sealhulgas makseandmeid ja kasutajakonto logi ning parooli. Group-IB eksperdid avastasid näidise nuusutajast, mis kuulub ReactGet perekonda, mõeldud kasutajate e-posti aadresside ja paroolide varastamiseks.

Ristumine nuusutajaga ImageID
Ühe nakatunud poe analüüsi käigus selgus, et selle veebileht on nakatunud kaks korda: peale pahavara koodi nuusutajast, mis kuulub ReactGet perekonda, avastati ka nuusutaja kood, mis kuulub ImageID perekonda. See ristumine võib viidata sellele, et mõlemat nuusutajat kasutavate operaatorite tehnikad pahavara koodi sisestamiseks on sarnased.

Universaalne nuusutaja
Ühe ReactGet'i nuhkvara infrastruktuuri kuuluva domeeninime analüüsi käigus selgus, et sama kasutaja on registreerinud kolm muud domeeninime. Need kolm domeeni jäljendasid tegelike veebisaitide domeene ja neid oli varem kasutatud nuhkvara majutamiseks. Kolme legitiimse veebisaidi koodi analüüsimisel leiti tundmatu nuhkvara, mille edasine analüüs näitas, et see on täiustatud versioon ReactGet'i nuhkvarast. Kõik varem jälgitud versioonid sellest perest olid suunatud konkreetsele maksesüsteemile, st iga maksesüsteemi jaoks oli vajalik spetsiaalne nuhkvara versioon. Kuid antud juhul leiti universaalne nuhkvara versioon, mis suudab varastada teavet vormidelt, mis on seotud 15 erineva maksesüsteemi ja ecommerce veebisaitide moodulitega veebimaksete tegemiseks.
Seega alustas nuhkvara oma tööd, otsides põhivormi välju, mis sisaldasid ohvri isiklikku teavet: täisnimi, füüsiline aadress, telefoninumber.

Seejärel otsis sniffija rohkem kui 15 erineva eelduse järgi, mis vastavad erinevatele maksesüsteemidele ja online-makse moodulitele.

Edasi koguti ohvri isikuandmed ja makseinfo kokku ning saadeti kurjategijale kuuluvale veebisaidile: antud juhul leiti kaks versiooni universaalset sniffijat ReactGet, mis asusid kahes erinevas häkitud saidis. Kuid mõlemad versioonid saatsid varastatud andmed ühele ja samale häkitud veebisaidile. zoobashop.com.

Sniffija kasutatud eelduse analüüs, mis otsis väljad, mis sisaldavad ohvri makseinfot, võimaldas tuvastada, et see sniffija eeskuju oli suunatud järgmistele maksesüsteemidele:
- Authorize.Net
- Verisign
- First Data
- USAePay
- Stripe
- PayPal
- ANZ eGate
- Braintree
- DataCash (MasterCard)
- Realex Payments
- PsiGate
- Heartland Payment Systems
Milliseid tööriistu kasutatakse makseinformatsiooni varastamiseks
Esimene tööriist, mis avastati ründajate infrastruktuuri analüüsi käigus, serveerib pahavara skriptide varjamiseks, mis vastutavad pangakaartide varastamise eest. Ühel ründajate hostidest leiti bash-skript, mis kasutas projekti CLI-d. koodi obfuskatsiooni automatiseerimiseks nuhkijatele.
![]()
Teine leitud tööriist on mõeldud koodi genereerimiseks, mis vastutab peamise nuhkija laadimise eest. See tööriist genereerib JavaScripti koodi, mis kontrollib, kas kasutaja on makselehel, otsides praegusest aadressist stringe checkout, cart ja nii edasi, ja kui tulemus on positiivne, laadib kood peamise nuhkija pahavara serverist. Kahjuliku tegevuse varjamiseks on kõik stringid, sealhulgas testi stringid makselehe määramiseks ja nuhkija link, kodeeritud kasutades base64.

Phishing rünnakud
Ründades ründajate võrguinfrastruktuuri analüüs, leiti, et sageli kasutavad kuritegelikud rühmad juurdepääsu saamiseks sihtmärgi veebipoe administraatori paneeli kalastust. Ründajad registreerivad domeeni, mis visuaalselt sarnaneb poe domeeniga, ja seejärel käivitavad nad vale Magento administraatori paneeli sisselogimise vormi. Edu korral saavad ründajad juurdepääsu CMS Magento administraatori paneeli, mis võimaldab neil redigeerida saidi komponente ja paigaldada andmevaraste süsteemi krediitkaartide andmete varastamiseks.

Infrastruktuur
| Domeen | Avastamise kuupäev |
|---|---|
| mediapack.info | 04.05.2017 |
| adsgetapi.com | 15.06.2017 |
| simcounter.com | 14.08.2017 |
| mageanalytics.com | 22.12.2017 |
| maxstatics.com | 16.01.2018 |
| reactjsapi.com | 19.01.2018 |
| mxcounter.com | 02.02.2018 |
| apitstatus.com | 01.03.2018 |
| orderracker.com | 20.04.2018 |
| tagstracking.com | 25.06.2018 |
| adsapigate.com | 12.07.2018 |
| trust-tracker.com | 15.07.2018 |
| fbstatspartner.com | 02.10.2018 |
| billgetstatus.com | 12.10.2018 |
| aldenmlilhouse.com | 20.10.2018 |
| balletbeautlful.com | 20.10.2018 |
| bargalnjunkie.com | 20.10.2018 |
| payselector.com | 21.10.2018 |
| tagsmediaget.com | 02.11.2018 |
| hs-payments.com | 16.11.2018 |
| ordercheckpays.com | 19.11.2018 |
| geisseie.com | 24.11.2018 |
| gtmproc.com | 29.11.2018 |
| livegetpay.com | 18.12.2018 |
| sydneysalonsupplies.com | 18.12.2018 |
| newrelicnet.com | 19.12.2018 |
| nr-public.com | 03.01.2019 |
| cloudodesc.com | 04.01.2019 |
| ajaxstatic.com | 11.01.2019 |
| livecheckpay.com | 21.01.2019 |
| asianfoodgracer.com | 25.01.2019 |
G-Analytics perekond
See perekond nuhkijaid kasutatakse klientide krediitkaartide varguseks veebipoodidest. Kõige esimene domeeninimi, mida grupp kasutas, registreeriti 2016. aasta aprillis, mis võib viidata grupi tegevuse algusele 2016. aasta keskel.
Praeguses kampaanias kasutab grupp domeeninimesid, mis imiteerivad reaalseid teenuseid, nagu Google Analytics ja jQuery, maskeerides nuhkijate tegevust legaalsete skriptide ja legaalsetele sarnaste domeeninimede kaudu. Rünnaku alla on sattunud saidid, mis kasutavad CMS Magento-d.
Kuidas G-Analytics integreeritakse veebipoe koodi
Selle perekonna tuntud omadus on mitmesuguste makseteabe vargusmeetodite rakendamine. Peale klassikalise JavaScript-koodi sisestamise kliendi poolele on kuritegelik grupp kasutanud ka koodi sisestamise tehnikat serveripoolsele osale, nimelt PHP-skripte, mis töötlevad kasutaja sisestatud andmeid. See tehnika on ohtlik, kuna see raskendab pahavara avastamist väliste teadlaste poolt. Group-IB spetsialistid avastasid PHP-koodis veebisaidile sisestatud nuhkvara versiooni, mis kasutab väravana domeeni dittm.org.

Samuti leiti varasem nuhkvara versioon, mis kasutas varastatud andmete kogumiseks sama domeeni dittm.org, kuid see versioon on mõeldud juba paigaldamiseks veebipoe kliendi poolele.

Hiljem muutis grupp oma taktikat ja hakkas rohkem tähelepanu pöörama pahatahtliku tegevuse varjamisele ja maskeeringule.
2017. aasta alguses hakkas grupp kasutama domeeni jquery-js.com, mis maskeerib end jQuery CDN-ina: üleminekul kurjategijate veebisaidile suunatakse kasutaja seaduslikule veebisaidile jquery.com.
2018. aasta keskel võttis grupp kasutusele domeeninime g-analytics.com ja hakkas peitma snifferi tegevust legitiimse teenusena, mida pakub Google Analytics.


Versioonide analüüs
Domeenide analüüsi käigus, mida kasutati snifferite koodi salvestamiseks, leiti, et saidil on suur hulk versioone, mis erinevad obfuskatsiooni olemasolu ja juurde lisatud koodi puudumise tõttu, mis on lisatud faili tähelepanu kõrvale juhtimiseks ja kahjustava koodi varjamiseks.
Kokku leiti saidilt jquery-js.com kuus snifferite versiooni. Varastatud andmed saadetakse aadressile, mis asub samas saidis nagu sniffer ise: hxxps://jquery-js[.]com/latest/jquery.min.js:
- hxxps://jquery-js[.]com/jquery.min.js
- hxxps://jquery-js[.]com/jquery.2.2.4.min.js
- hxxps://jquery-js[.]com/jquery.1.8.3.min.js
- hxxps://jquery-js[.]com/jquery.1.6.4.min.js
- hxxps://jquery-js[.]com/jquery.1.4.4.min.js
- hxxps://jquery-js[.]com/jquery.1.12.4.min.js
Uuem domeen g-analytics.com, mida grupp on kasutanud rünnakutes 2018. aasta keskpaigast alates, on rohkemate snifferite salvestamiseks. Kokku avastati 16 erinevat snifferi versiooni. Sel juhul on varastatud andmete saatmise värav maskeeritud pildilinki. GIF: hxxp://g-analytics[.]com/__utm.gif?v=1&_v=j68&a=98811130&t=pageview&_s=1&sd=24-bit&sr=2560×1440&vp=2145×371&je=0&_u=AACAAEAB~&jid=1841704724&gjid=877686936&cid
=1283183910.1527732071:
- hxxps://g-analytics[.]com/libs/1.0.1/analytics.js
- hxxps://g-analytics[.]com/libs/1.0.10/analytics.js
- hxxps://g-analytics[.]com/libs/1.0.11/analytics.js
- hxxps://g-analytics[.]com/libs/1.0.12/analytics.js
- hxxps://g-analytics[.]com/libs/1.0.13/analytics.js
- hxxps://g-analytics[.]com/libs/1.0.14/analytics.js
- hxxps://g-analytics[.]com/libs/1.0.15/analytics.js
- hxxps://g-analytics[.]com/libs/1.0.16/analytics.js
- hxxps://g-analytics[.]com/libs/1.0.3/analytics.js
- hxxps://g-analytics[.]com/libs/1.0.4/analytics.js
- hxxps://g-analytics[.]com/libs/1.0.5/analytics.js
- hxxps://g-analytics[.]com/libs/1.0.6/analytics.js
- hxxps://g-analytics[.]com/libs/1.0.7/analytics.js
- hxxps://g-analytics[.]com/libs/1.0.8/analytics.js
- hxxps://g-analytics[.]com/libs/1.0.9/analytics.js
- hxxps://g-analytics[.]com/libs/analytics.js
Varastatud andmete monetiseerimine
Kuritegelik grupp monetiseerib varastatud andmeid, müües kaarte spetsiaalselt loodud mustas poes, mis pakub teenuseid kaardijõhkratele. Rünnakute jaoks kasutatud domeenide analüüs võimaldas kindlaks teha, et google-analytics.cm oli registreeritud sama kasutaja poolt, kes registreeris domeeni cardz.vc. Domeen cardz.vc on seotud varastatud pangakaartide müügipoodiga Cardsurfs (Flysurfs), mis sai populaarseks juba varajastel aegadel mustal turul AlphaBay kui pangakaartide müügikoht, mis kasutas andmete kogumiseks sniffereid.

Analüüsides domeeni analytic.is, mis asub samal serveril kui domeenid, mida sniffereid kasutasid varastatud andmete kogumiseks, avastas Group-IB spetsialistid faili, mis sisaldas Cookie-stiili logisid, mis näib, et arendaja oli hiljem loobunud. Üks logi kanded sisaldas domeeni iozoz.com, mis oli varem kasutusel ühes sniffereis, mis oli aktiivne 2016. aastal. Eeldatavasti kasutas see domeen enne pahatahtlik isik varastatud kaardid kogumiseks sniffere õppides. See domeen registreeriti e-posti aadressile kts241@gmail.com, mis samuti kasutati domeenide registreerimiseks cardz.su ja cardz.vc, mis on seotud kaardipoega Cardsurfs.
Saadud andmete põhjal võib järeldada, et G-Analyticsi snifferite perekond ja varjatud pangakaartide müügipood Cardsurfs on hallatud samade isikute poolt ning poodi kasutatakse varastatud pangakaartide realiseerimiseks, mis on saadud snifferi abil.
Infrastruktuur
| Domeen | Avastamise kuupäev |
|---|---|
| iozoz.com | 08.04.2016 |
| dittm.org | 10.09.2016 |
| jquery-js.com | 02.01.2017 |
| g-analytics.com | 31.05.2018 |
| google-analytics.is | 21.11.2018 |
| analytic.to | 04.12.2018 |
| google-analytics.to | 06.12.2018 |
| google-analytics.cm | 28.12.2018 |
| analytic.is | 28.12.2018 |
| googlc-analytics.cm | 17.01.2019 |
Illumi perekond
Illum on snifferite perekond, mida kasutatakse rünnakuteks veebipoodide vastu, mis töötavad CMS Magento all. Lisaks pahavara koodi sisestamisele kasutavad selle snifferi operaatorid ka täielike vale maksevormide sisestamist, mis edastavad andmeid kurjategijate hallatavale väravale.
Võrgu infrastruktuuri analüüsimisel, mida kasutavad selle snifferi operaatorid, on täheldatud suurt hulka pahatahtlikke skripte, ekspluate, vale maksevorme ning kogumit näidiseid konkurentide pahavaraga snifferitest. Lähtudes domeeninimede ilmumise kuupäevade teabest, võib järeldada, et kampaania algas 2016. aasta lõpus.
Kuidas Illum integreeritakse veebipoe koodi
Esimesed tuvastatud snifferi versioonid integreeriti otse kompromiteeritud saidi koodis. Varastatud andmed saadeti aadressile cdn.illum[.]pw/records.php, ukses oli aga kodeeritud kasutades base64.

Hiljem avastati pakendatud snifferi versioon, mis kasutas teist uksesid — records.nstatistics[.]com/records.php.

Vastavalt Willem de Groot, sama hosti kasutati snifferis, mis oli integreeritud , mis kuulub Saksamaa poliitilisele parteile CSU.
Kurjategijate saidi analüüs
Group-IB spetsialistid avastasid ja analüüsisid saidi, mida kasutab see kuritegevusgrupp tööriistade ja varastatud teabe kogumiseks.

Ründavad tööriistad, mida leidus kurjategijate serveris, sisaldasid Linuxi OS-i privileegide tõstmise skripte ja ekspluiteerimisi: näiteks Linuxi Privilege Escalation Check Script, mille on koostanud Mike Czumak, ning eksploiteerimine CVE-2009-1185.
Otseselt rünnakuteks veebipoodidele kasutasid kurjategijad kahte eksploiteerimist: suudab sisestada pahatahtlikku koodi core_config_data kasutades CVE-2016-4010 ekspluateerimist, eksploiteerib RCE-tüüpi haavatavust CMS Magento pluginates, võimaldades täita suvalist koodi haavataval veebiserveris.

Samuti avastati serveri analüüsi käigus erinevad nuhkijate ja vale maksevormide malli, mida kurjategijad kasutasid rünnatud veebilehtede makseandmete kogumiseks. Nagu näha allolevast loendist, loodi mõned skriptid iga rünnatud veebilehe jaoks individuaalselt, samas kui teatud CMS-ide ja makseportaalide jaoks kasutati universaalseid lahendusi. Näiteks skriptid segapay_standart.js ja segapay_onpage.js on mõeldud sisestamiseks veebilehtedele, mis kasutavad makseportaalina Sage Pay.
Skriptide nimekiri erinevate makseportaalide jaoks
| Skript | Makseportaal |
|---|---|
| [.]pw/mjs_special/visiondirect.co.uk.js | //request.payrightnow[.]cf/checkpayment.php |
| [.]pw/mjs_special/topdierenshop.nl.js | //request.payrightnow[.]cf/alldata.php |
| [.]pw/mjs_special/tiendalenovo.es.js | //request.payrightnow[.]cf/alldata.php |
| [.]pw/mjs_special/pro-bolt.com.js | //request.payrightnow[.]cf/alldata.php |
| [.]pw/mjs_special/plae.co.js | //request.payrightnow[.]cf/alldata.php |
| [.]pw/mjs_special/ottolenghi.co.uk.js | //request.payrightnow[.]cf/alldata.php |
| [.]pw/mjs_special/oldtimecandy.com.js | //request.payrightnow[.]cf/checkpayment.php |
| [.]pw/mjs_special/mylook.ee.js | //cdn.illum[.]pw/records.php |
| [.]pw/mjs_special/luluandsky.com.js | //request.payrightnow[.]cf/checkpayment.php |
| [.]pw/mjs_special/julep.com.js | //cdn.illum[.]pw/records.php |
| [.]pw/mjs_special/gymcompany.es.js | //request.payrightnow[.]cf/alldata.php |
| [.]pw/mjs_special/grotekadoshop.nl.js | //request.payrightnow[.]cf/alldata.php |
| [.]pw/mjs_special/fushi.co.uk.js | //request.payrightnow[.]cf/checkpayment.php |
| [.]pw/mjs_special/fareastflora.com.js | //request.payrightnow[.]cf/checkpayment.php |
| [.]pw/mjs_special/compuindia.com.js | //request.payrightnow[.]cf/alldata.php |
| [.]pw/mjs/segapay_standart.js | //cdn.illum[.]pw/records.php |
| [.]pw/mjs/segapay_onpage.js | //cdn.illum[.]pw/records.php |
| [.]pw/mjs/replace_standart.js | //request.payrightnow[.]cf/checkpayment.php |
| [.]pw/mjs/all_inputs.js | //cdn.illum[.]pw/records.php |
| [.]pw/mjs/add_inputs_standart.js | //request.payrightnow[.]cf/checkpayment.php |
| [.]pw/magento/payment_standart.js | //cdn.illum[.]pw/records.php |
| [.]pw/magento/payment_redirect.js | //payrightnow[.]cf/?payment= |
| [.]pw/magento/payment_redcrypt.js | //payrightnow[.]cf/?payment= |
| [.]pw/magento/payment_forminsite.js | //paymentnow[.]tk/?payment= |
Host paymentnow[.]tk, kasutatud sissesõiduna skriptis payment_forminsite.js, avastati kui subjectAltName mitmes sertifikaadis, mis puudutavad CloudFlare'i teenust. Lisaks sellele oli hostis skript evil.js. Skripti nime kohaselt võis see olla kasutatud CVE-2016-4010 ärakasutamiseks, mis võimaldab sisestada pahavara saidi CMS Magento jalusesse. Sissesõiduna kasutas see skript hosti request.requestnet[.]tk, mis kasutab sama sertifikaati nagu host paymentnow[.]tk.
Vale maksevormid
Allpool näidatud kujundis on näide kaarditeabe sisestamise vormist. Seda vormi kasutati veebipoe saidile sissetoomiseks ja kaartide andmete varguseks.

Järgmise kujundina on näide vale PayPali maksevormist, mida kurjategijad kasutasid selle makseviisi saitidel sissetoomiseks.

Infrastruktuur
| Domeen | Avastamise kuupäev |
|---|---|
| cdn.illum.pw | 27/11/2016 |
| records.nstatistics.com | 06/09/2018 |
| request.payrightnow.cf | 25/05/2018 |
| paymentnow.tk | 16/07/2017 |
| payment-line.tk | 01/03/2018 |
| paymentpal.cf | 04/09/2017 |
| requestnet.tk | 28/06/2017 |
CoffeMokko perekond
CoffeMokko snifferite perekond, mis on mõeldud kasutajate pangakaartide vargusteks veebipoodidest, on olnud aktiivne vähemalt 2017. aasta maist. Eeldatavasti on selle snifferite perekonna operaatoriteks kuritegelik grupp Group 1, keda RiskIQ spetsialistid kirjeldasid 2016. aastal. Rünnakute ohvriks on langenud selliste CMS-ide hallatavad saidid nagu Magento, OpenCart, WordPress, osCommerce, Shopify.
Kuidas CoffeMokko integreerub veebipoe koodi
Selle perekonna operaatorid loovad iga nakatumise jaoks unikaalsed sniffereid: snifferi fail asub kurjategijate serveris. src või js Snifferi koodis on kõvasti kodeeritud vormi väli nimed, mille andmeid on vaja varastada. Samuti kontrollib sniffer, kas kasutaja on makselekke lehel, võrreldes võtmesõnade loetelu praeguse saidi aadressiga.

Koodis on kindlaks määratud, millised vormi väljad tuleb andmete varastamiseks sihtida. Lisaks kontrollib sniffer, kas kasutaja on maksehetkel, võrreldes võtmesõna nimekirja praeguse URL-iga.

Mõned leitud nuhkimistöötlusarvutid olid varjatud ja sisaldasid krüpteeritud stringi, kus hoiti põhivara massiivi: just seal olid erinevate maksesüsteemide vormide väljade nimed, samuti värav, kuhu tuleb varastatud andmed saata.

Varastatud makseinfo saadeti ründajate serveri skriptile teel /savePayment/index.php или /tr/index.php. Eeldatakse, et see skript teenib andmete saatmist väravast põhiserverisse, mis konsolideerib kõigi nuhkimisseadmete andmeid. Edastatavate andmete varjamiseks krüpteeritakse kogu ohvri makseinfo base64, ning seejärel toimub mitu sümbolite vahetust:
- sümbol «e» asendatakse «:»
- sümbol «w» asendatakse «+»
- sümbol «o» asendatakse «%»
- sümbol «d» asendatakse «#»
- sümbol «a» asendatakse «-»
- sümbol «7» asendatakse «^»
- sümbol «h» asendatakse «_»
- sümbol «T» asendatakse «@»
- sümbol «0» asendatakse «/»
- sümbol «Y» asendatakse «*»
Asenduste tulemusena, mille käigus kasutatakse base64 andmeid ei saa dekrüpteerida, kui ei tehta vastupidist muundamist.
See how a non-obfuscated sniffer code fragment looks:

Infrastruktuuri analüüs
Varasemates kampaanustes registreerisid kurjategijad domeeninimesid, mis sarnanesid seaduslike veebipoodide domeenidega. Nende domeen võis seaduslikust olla erinev vaid ühe tähe või mõne muu TLD-ga. Registreeritud domeene kasutati snifferi koodi hoidmiseks, mille link süstiti poe koodisse.
Selle rühma kasutatud domeeninimed meenutasid ka populaarsed jQuery pluginate nimesid (slickjs[.]org pluginat kasutavatele saitidele slick.js), makseväravate (sagecdn[.]org maksesüsteemi Sage Pay kasutavatele saitidele).
Hiljem hakkas rühm looma domeene, mille nimed ei olnud seotud ei poe domeeni ega poe temaatikaga.

Iga domeeni vastas sait, millelle loodi kataloog /js või /src. Selles kataloogis hoiti snifferite skripte: üks sniffer iga uue nakatumise kohta. Sniffer süstiti saidi koodisse otselingi kaudu, kuid harvadel juhtudel muutsid kurjategijad ühe saidi failidest ja lisasid sellele pahatahtlikku koodi.
Koodi analüüs
Esimene obfuskeermisalgrüüt
Mõnes selle perekonna nuhkijate avastatud näidises oli kood obfutseeritud ja sisaldas nuhkija tööks vajalikke krüpteeritud andmeid: sealhulgas nuhkija värava aadress, maksevormi väljade loetelu ning mõnel juhul vale maksevormi kood. Funktsiooni sees oli kood ressursside krüpteeritud kasutades XOR võtmega, mis anti selle sama funktsiooni argumendina.

Dekrüpteerides vastava võtmega, mis on iga näidise jaoks ainulaadne, saab kätte stringi, mis sisaldab kõiki nuhkija koodist stringe eraldustähega.

Teine obfuskeermisalgrüüt
Hiljem avastatud nuhkijate näidistes kasutati teist obfutseerimismehhanismi: sel juhul olid andmed krüpteeritud käsitsi kirjutatud algoritmi abil. String, mis sisaldas nuhkija tööks vajalikke krüpteeritud andmeid, edastati dekrüpteerimisfunktsiooni argumendina.

Brauseri konsooli abil on võimalik dekrüpteerida krüpteeritud andmed ja saada massiiv, mis sisaldab nuhkija ressursse.

Seos varasemate MageCart rünnakutega
Ühe domeeni analüüsi käigus, mida grupp kasutas varastatud andmete kogumiseks, avastati, et sellel domeenil on välja arendatud krediitkaartide varguse infrastruktuur, mis on identne sellega, mida kasutas Group 1 — üks esimesi gruppe, RiskIQ spetsialistide poolt.
CoffeMokko nuhkijate peres oli tuvastatud kaks faili:
- mage.js — fail, mis sisaldab Group 1 nuhkija koodi, mille värav on js-cdn.link
- mag.php — PHP-skripti, mis vastutab nuhkija poolt varastatud andmete kogumise eest
Содержимое файла mage.js 
Samuti selgus, et grupi, kes seisab CoffeMokko nuhkijate taga, varased domeenid registreeriti 17. mail 2017:
- link-js[.]link
- info-js[.]link
- track-js[.]link
- map-js[.]link
- smart-js[.]link
Nende domeenide nimede formaat vastab Group 1 domeeninimedele, mida kasutati 2016. aasta rünnakutes.
Tuvastatud faktide põhjal võib järeldada, et CoffeMokko nuhkide operaatorite ja kuritegeliku grupi Group 1 vahel on seos. Eeldatavasti on CoffeMokko operaatorid võtnud oma eelkäijatelt laenuks tööriistad ja tarkvara kaartide varastamiseks. Kuid tõenäolisem on, et CoffeMokko pereliigi nuhkide kasutamise taga on samad inimesed, kes viisid läbi rünnakud Group 1 tegevuse raames. Pärast kuritegeliku grupi tegevuse esimest aruannet blokeeriti kõik nende domeenide nimed ning tööriistu uuriti ja kirjeldati põhjalikult. Grupp pidi võtma pausi, et täiustada oma siseseid tööriistu ja ümber kirjutada nuhkide koodi, et jätkata rünnakuid ja jääda märkamatuks.
Infrastruktuur
| Domeen | Avastamise kuupäev |
|---|---|
| link-js.link | 17.05.2017 |
| info-js.link | 17.05.2017 |
| track-js.link | 17.05.2017 |
| map-js.link | 17.05.2017 |
| smart-js.link | 17.05.2017 |
| adorebeauty.org | 03.09.2017 |
| security-payment.su | 03.09.2017 |
| braincdn.org | 04.09.2017 |
| sagecdn.org | 04.09.2017 |
| slickjs.org | 04.09.2017 |
| oakandfort.org | 10.09.2017 |
| citywlnery.org | 15.09.2017 |
| dobell.su | 04.10.2017 |
| childsplayclothing.org | 31.10.2017 |
| jewsondirect.com | 05.11.2017 |
| shop-rnib.org | 15.11.2017 |
| closetlondon.org | 16.11.2017 |
| misshaus.org | 28.11.2017 |
| battery-force.org | 01.12.2017 |
| kik-vape.org | 01.12.2017 |
| greatfurnituretradingco.org | 02.12.2017 |
| etradesupply.org | 04.12.2017 |
| replacemyremote.org | 04.12.2017 |
| all-about-sneakers.org | 05.12.2017 |
| mage-checkout.org | 05.12.2017 |
| nililotan.org | 07.12.2017 |
| lamoodbighats.net | 08.12.2017 |
| walletgear.org | 10.12.2017 |
| dahlie.org | 12.12.2017 |
| davidsfootwear.org | 20.12.2017 |
| blackriverimaging.org | 23.12.2017 |
| exrpesso.org | 02.01.2018 |
| parks.su | 09.01.2018 |
| pmtonline.su | 12.01.2018 |
| ottocap.org | 15.01.2018 |
| christohperward.org | 27.01.2018 |
| coffetea.org | 31.01.2018 |
| energycoffe.org | 31.01.2018 |
| energytea.org | 31.01.2018 |
| teacoffe.net | 31.01.2018 |
| adaptivecss.org | 01.03.2018 |
| coffemokko.com | 01.03.2018 |
| londontea.net | 01.03.2018 |
| ukcoffe.com | 01.03.2018 |
| labbe.biz | 20.03.2018 |
| batterynart.com | 03.04.2018 |
| btosports.net | 09.04.2018 |
| chicksaddlery.net | 16.04.2018 |
| paypaypay.org | 11.05.2018 |
| ar500arnor.com | 26.05.2018 |
| authorizecdn.com | 28.05.2018 |
| slickmin.com | 28.05.2018 |
| bannerbuzz.info | 03.06.2018 |
| kandypens.net | 08.06.2018 |
| mylrendyphone.com | 15.06.2018 |
| freshchat.info | 01.07.2018 |
| 3lift.org | 02.07.2018 |
| abtasty.net | 02.07.2018 |
| mechat.info | 02.07.2018 |
| zoplm.com | 02.07.2018 |
| zapaljs.com | 02.09.2018 |
| foodandcot.com | 15.09.2018 |
| freshdepor.com | 15.09.2018 |
| swappastore.com | 15.09.2018 |
| verywellfitnesse.com | 15.09.2018 |
| elegrina.com | 18.11.2018 |
| majsurplus.com | 19.11.2018 |
| top5value.com | 19.11.2018 |
Allikas: habr.com
