Beveik kiekvienas iš mūsų naudojasi internetinių parduotuvių paslaugomis, o tai reiškia, kad anksčiau ar vėliau rizikuojame tapti „JavaScript“ šnipinėjimo auka – specialaus kodo, kurį užpuolikai įveda į svetainę, norėdami pavogti banko kortelių duomenis, adresus, vartotojo vardus ir slaptažodžius. .
Beveik 400 000 „British Airways“ svetainės ir mobiliosios programėlės vartotojų, taip pat Didžiosios Britanijos sporto milžinės FILA svetainės ir JAV bilietų platintojo „Ticketmaster“ lankytojai jau nukentėjo nuo uostelių. PayPal, Chase Paymenttech, USAePay, Moneris – šios ir daugelis kitų mokėjimo sistemų buvo užkrėstos.
Threat Intelligence Group-IB analitikas Viktoras Okorokovas pasakoja apie tai, kaip uostytojai įsiskverbia į svetainės kodą ir pavagia mokėjimo informaciją, taip pat apie tai, kokius CRM jie atakuoja.
"Paslėpta grėsmė"
Taip jau susiklostė, kad JS-sniffers ilgą laiką liko nuo antivirusinių analitikų akiračio, o bankai ir mokėjimo sistemos jų nematė kaip rimtos grėsmės. Ir visiškai veltui. IB grupės ekspertai
Išsamiai apsistokime ties keturiomis uostytojų šeimomis, tirtomis tyrimo metu.
„ReactGet“ šeima
„ReactGet“ šeimos snifferiai naudojami banko kortelių duomenims pavogti internetinėse prekybos svetainėse. Sniffer gali dirbti su daugybe skirtingų svetainėje naudojamų mokėjimo sistemų: viena parametro reikšmė atitinka vieną mokėjimo sistemą, o atskiros aptiktos uostiklio versijos gali būti naudojamos kredencialams pavogti, taip pat banko kortelių duomenims iš kelių mokėjimo sistemų mokėjimo formos vienu metu, pavyzdžiui, vadinamasis universalus snifferis. Nustatyta, kad kai kuriais atvejais užpuolikai vykdo sukčiavimo atakas prieš internetinių parduotuvių administratorius, siekdami gauti prieigą prie svetainės administracinio skydelio.
Kampanija naudojant šią uostytojų šeimą prasidėjo 2017 m. gegužės mėn. Buvo užpultos svetainės, kuriose veikia TVS ir platformos Magento, Bigcommerce, Shopify.
Kaip ReactGet įterpiamas į internetinės parduotuvės kodą
Be „klasikinio“ scenarijaus įvedimo nuoroda, „ReactGet“ šeimos sniffer operatoriai naudoja specialią techniką: naudodami „JavaScript“ kodą patikrina, ar dabartinis adresas, kuriame yra vartotojas, atitinka tam tikrus kriterijus. Kenkėjiškas kodas veiks tik tuo atveju, jei dabartiniame URL yra poeilutė išsiregistravimo laikas arba patikrinimas vienu žingsniu, vienas puslapis/, out/onepag, kasa/vienas, ckout/one. Taigi, šnipinėjimo kodas bus vykdomas tiksliai tuo metu, kai vartotojas mokės už pirkinius ir įveda mokėjimo informaciją į svetainės formą.
Šis uostiklis naudoja nestandartinę techniką. Mokėjimas ir nukentėjusiojo asmens duomenys renkami kartu, užkoduojami naudojant base64, o gauta eilutė naudojama kaip parametras siunčiant užklausą į kenkėjišką svetainę. Dažniausiai kelias į vartus imituoja, pavyzdžiui, JavaScript failą resp.js, duomenys.js ir pan., tačiau taip pat naudojamos nuorodos į vaizdo failus, Pagal GIF и JPG. Ypatumas yra tas, kad uostytojas sukuria vaizdo objektą, kurio dydis yra 1 x 1 pikselis, ir kaip parametrą naudoja anksčiau gautą nuorodą. src Vaizdai. Tai yra, vartotojui tokia užklausa sraute atrodys kaip įprastos nuotraukos užklausa. Panaši technika buvo naudojama „ImageID“ uostytojų šeimoje. Be to, 1x1 pikselio vaizdo technika naudojama daugelyje teisėtų internetinių analizės scenarijų, kurie taip pat gali suklaidinti vartotoją.
Versijos analizė
„ReactGet“ uostymo operatorių naudojamų aktyvių domenų analizė atskleidė daugybę skirtingų šios snifferių šeimos versijų. Versijos skiriasi tuo, ar yra ar nėra užtemimo, be to, kiekvienas snifferis yra skirtas konkrečiai mokėjimo sistemai, kuri apdoroja mokėjimus banko kortelėmis internetinėse parduotuvėse. Surūšiavę parametro reikšmę, atitinkančią versijos numerį, Grupės IB specialistai gavo visą galimų uostymo variantų sąrašą ir pagal formų laukų pavadinimus, kurių kiekvienas uostytojas ieško puslapio kode, nustatė mokėjimo sistemas. kad uostytojas taikosi.
Sniferių ir juos atitinkančių mokėjimo sistemų sąrašas
Sniffer URL | Mokėjimo sistema |
---|---|
|
Authorize.Net |
Cardsave | |
|
Authorize.Net |
Authorize.Net | |
|
eWAY Rapid |
Authorize.Net | |
Adyenas | |
|
USAePay |
Authorize.Net | |
USAePay | |
|
Authorize.Net |
Moneris | |
USAePay | |
PayPal | |
SagePay | |
"Verisign | |
PayPal | |
Juostelių | |
|
Realex |
PayPal | |
LinkPoint | |
PayPal | |
PayPal | |
Datacash | |
|
PayPal |
|
Authorize.Net |
|
Authorize.Net |
Authorize.Net | |
Authorize.Net | |
|
"Verisign |
|
Authorize.Net |
Moneris | |
|
SagePay |
|
USAePay |
|
Authorize.Net |
|
Authorize.Net |
|
ANZ eGate |
|
Authorize.Net |
|
Moneris |
|
SagePay |
SagePay | |
|
Chase Paymenttech |
|
Authorize.Net |
|
Adyenas |
PsiGate | |
Kibernetinis šaltinis | |
ANZ eGate | |
Realex | |
|
USAePay |
|
Authorize.Net |
|
Authorize.Net |
|
ANZ eGate |
|
PayPal |
|
PayPal |
Realex | |
|
SagePay |
|
PayPal |
|
"Verisign |
Authorize.Net | |
|
"Verisign |
Authorize.Net | |
|
ANZ eGate |
PayPal | |
Kibernetinis šaltinis | |
|
Authorize.Net |
|
SagePay |
Realex | |
|
Kibernetinis šaltinis |
PayPal | |
PayPal | |
|
PayPal |
|
"Verisign |
|
eWAY Rapid |
|
SagePay |
SagePay | |
|
"Verisign |
Authorize.Net | |
Authorize.Net | |
|
Pirmieji pasauliniai duomenų vartai |
Authorize.Net | |
Authorize.Net | |
Moneris | |
|
Authorize.Net |
|
PayPal |
|
"Verisign |
|
USAePay |
USAePay | |
Authorize.Net | |
"Verisign | |
PayPal | |
|
Authorize.Net |
Juostelių | |
|
Authorize.Net |
eWAY Rapid | |
|
SagePay |
Authorize.Net | |
|
Braintree |
|
Braintree |
|
PayPal |
|
SagePay |
|
SagePay |
|
Authorize.Net |
|
PayPal |
|
Authorize.Net |
"Verisign | |
|
PayPal |
|
Authorize.Net |
|
Juostelių |
|
Authorize.Net |
eWAY Rapid | |
SagePay | |
|
Authorize.Net |
Braintree | |
|
PayPal |
|
SagePay |
SagePay | |
|
Authorize.Net |
PayPal | |
Authorize.Net | |
|
"Verisign |
|
Authorize.Net |
|
Authorize.Net |
|
Authorize.Net |
|
Authorize.Net |
|
SagePay |
SagePay | |
|
Westpac PayWay |
|
užmokestis |
|
PayPal |
|
Authorize.Net |
|
Juostelių |
|
Pirmieji pasauliniai duomenų vartai |
|
PsiGate |
Authorize.Net | |
Authorize.Net | |
|
Moneris |
|
Authorize.Net |
SagePay | |
|
"Verisign |
Moneris | |
PayPal | |
|
LinkPoint |
|
Westpac PayWay |
Authorize.Net | |
|
Moneris |
|
PayPal |
Adyenas | |
PayPal | |
Authorize.Net | |
USAePay | |
EBizCharge | |
|
Authorize.Net |
|
"Verisign |
"Verisign | |
Authorize.Net | |
|
PayPal |
|
Moneris |
Authorize.Net | |
|
PayPal |
PayPal | |
Westpac PayWay | |
Authorize.Net | |
|
Authorize.Net |
SagePay | |
|
"Verisign |
|
Authorize.Net |
|
PayPal |
|
užmokestis |
Kibernetinis šaltinis | |
PayPal PayflowPro | |
|
Authorize.Net |
|
Authorize.Net |
"Verisign | |
|
Authorize.Net |
|
Authorize.Net |
SagePay | |
Authorize.Net | |
|
Juostelių |
|
Authorize.Net |
Authorize.Net | |
"Verisign | |
|
PayPal |
Authorize.Net | |
|
Authorize.Net |
SagePay | |
|
Authorize.Net |
|
Authorize.Net |
|
PayPal |
|
Titnagas |
|
PayPal |
SagePay | |
"Verisign | |
|
Authorize.Net |
|
Authorize.Net |
|
Juostelių |
|
Riebus zebras |
SagePay | |
|
Authorize.Net |
Pirmieji pasauliniai duomenų vartai | |
|
Authorize.Net |
|
eWAY Rapid |
Adyenas | |
|
PayPal |
„QuickBooks“ prekybininkų paslaugos | |
"Verisign | |
|
SagePay |
"Verisign | |
|
Authorize.Net |
|
Authorize.Net |
SagePay | |
|
Authorize.Net |
|
eWAY Rapid |
Authorize.Net | |
|
ANZ eGate |
|
PayPal |
Kibernetinis šaltinis | |
|
Authorize.Net |
SagePay | |
|
Realex |
Kibernetinis šaltinis | |
|
PayPal |
|
PayPal |
|
PayPal |
|
"Verisign |
eWAY Rapid | |
|
SagePay |
|
SagePay |
|
"Verisign |
Authorize.Net | |
|
Authorize.Net |
|
Pirmieji pasauliniai duomenų vartai |
Authorize.Net | |
Authorize.Net | |
|
Moneris |
|
Authorize.Net |
|
PayPal |
Slaptažodžio uostytojas
Vienas iš „JavaScript“ snifferių, veikiančių svetainės kliento pusėje, privalumų yra jos universalumas: svetainėje įterptas kenkėjiškas kodas gali pavogti bet kokio tipo duomenis, nesvarbu, ar tai būtų mokėjimo informacija, ar prisijungimo vardas ir slaptažodis iš vartotojo paskyros. Grupės IB specialistai aptiko „ReactGet“ šeimai priklausančio šnipinėjimo pavyzdį, skirtą pavogti svetainės vartotojų el. pašto adresus ir slaptažodžius.
Sankryža su ImageID sniffer
Atliekant vienos iš užkrėstų parduotuvių analizę, buvo nustatyta, kad jos svetainė buvo užkrėsta du kartus: be kenkėjiško „ReactGet“ šeimos snifferio kodo, rastas ir „ImageID“ šeimos snifferio kodas. Šis sutapimas gali būti įrodymas, kad operatoriai, dirbantys už abiejų uostytojų, naudoja panašius metodus, kad suleistų kenkėjišką kodą.
Universalus uostiklis
Analizuojant vieną iš domenų vardų, susijusių su ReactGet sniffer infrastruktūra, buvo nustatyta, kad tas pats vartotojas užregistravo dar tris domenų vardus. Šie trys domenai imitavo realių svetainių domenus ir anksčiau buvo naudojami uostytojų prieglobai. Analizuojant trijų teisėtų svetainių kodą, buvo rastas nežinomas snifferis, o tolesnė analizė parodė, kad tai yra patobulinta ReactGet sniffer versija. Visos anksčiau sektos šios snifferių šeimos versijos buvo skirtos vienai mokėjimo sistemai, tai yra, kiekvienai mokėjimo sistemai reikėjo specialios snifferio versijos. Tačiau šiuo atveju buvo aptikta universali sniffer versija, galinti pavogti informaciją iš formų, susijusių su 15 skirtingų mokėjimo sistemų ir elektroninės prekybos svetainių moduliais, skirtais mokėjimams internetu.
Taigi darbo pradžioje uostytojas ieškojo pagrindinių formos laukelių, kuriuose yra aukos asmeninė informacija: vardas, pavardė, fizinis adresas, telefono numeris.
Tada uostytojas ieškojo daugiau nei 15 skirtingų prefiksų, atitinkančių skirtingas mokėjimo sistemas ir internetinių mokėjimų modulius.
Tada aukos asmens duomenys ir mokėjimo informacija buvo surinkti kartu ir išsiųsti į užpuoliko valdomą svetainę: šiuo konkrečiu atveju dviejose skirtingose nulaužtose svetainėse buvo rastos dvi universalaus „ReactGet“ sniffer versijos. Tačiau abi versijos išsiuntė pavogtus duomenis į tą pačią svetainę, į kurią buvo įsilaužta. zoobashop.com.
Išanalizavus priešdėlių, kuriuos naudojo uostytojas, kad surastų laukelius, kuriuose yra aukos mokėjimo informacija, nustatyta, kad šis uostytojas buvo skirtas šioms mokėjimo sistemoms:
- Authorize.Net
- "Verisign
- "First Data"
- USAePay
- Juostelių
- PayPal
- ANZ eGate
- Braintree
- Data Cash (MasterCard)
- Realex mokėjimai
- PsiGate
- Heartland mokėjimo sistemos
Kokie įrankiai naudojami norint pavogti mokėjimo informaciją
Pirmasis įrankis, aptiktas analizuojant užpuolikų infrastruktūrą, yra skirtas užmaskuoti kenkėjiškus scenarijus, atsakingus už banko kortelių vagystes. Viename iš užpuolikų prieglobos buvo rastas „bash“ scenarijus, naudojant projekto CLI.
Antrasis atrastas įrankis skirtas generuoti kodą, atsakingą už pagrindinio sniferio įkėlimą. Šis įrankis generuoja JavaScript kodą, kuris patikrina, ar vartotojas yra atsiskaitymo puslapyje, ieškodamas eilučių dabartiniame vartotojo adresu išsiregistravimo laikas, į krepšelį ir t.t., o jei rezultatas teigiamas, tai kodas įkelia pagrindinį snifferį iš įsibrovėlio serverio. Norint paslėpti kenkėjišką veiklą, visos eilutės, įskaitant bandomąsias eilutes, skirtas mokėjimo puslapiui nustatyti, taip pat nuoroda į snifferį, yra užkoduotos naudojant base64.
Sukčiavimo atakos
Analizuojant užpuolikų tinklo infrastruktūrą, buvo nustatyta, kad nusikalstama grupuotė dažnai naudoja sukčiavimą, kad gautų prieigą prie tikslinės internetinės parduotuvės administracinio skydelio. Užpuolikai užregistruoja domeną, kuris atrodo kaip parduotuvės domenas, ir tada jame įdiegia netikrą Magento administratoriaus prisijungimo formą. Jei pasiseks, užpuolikai gaus prieigą prie Magento CMS administratoriaus skydelio, kuris suteikia jiems galimybę redaguoti svetainės komponentus ir įdiegti snifferį, kad pavogtų kredito kortelės duomenis.
Infrastruktūra
Домен | Atradimo / pasirodymo data |
---|---|
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 |
tagtracking.com | 25.06.2018 |
adsapigate.com | 12.07.2018 |
trusttracker.com | 15.07.2018 |
fbstatspartner.com | 02.10.2018 |
billgetstatus.com | 12.10.2018 |
www.aldenmlilhouse.com | 20.10.2018 |
baletbeautlful.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 šeima
Ši uostytojų šeima naudojama klientų kortelėms iš internetinių parduotuvių pavogti. Pats pirmasis grupės naudojamas domeno vardas buvo užregistruotas 2016 metų balandį, o tai gali rodyti grupės veiklos pradžią 2016 metų viduryje.
Dabartinėje kampanijoje grupė naudoja domenų pavadinimus, kurie imituoja realaus gyvenimo paslaugas, pvz., „Google Analytics“ ir „jQuery“, užmaskuodami uostymo veiklą teisėtais scenarijais ir teisėtai atrodančiais domenų pavadinimais. Buvo užpultos svetainės, kuriose veikia CMS Magento.
Kaip G-Analytics įdiegtas internetinės parduotuvės kode
Išskirtinis šios šeimos bruožas yra įvairių būdų, kaip pavogti vartotojo mokėjimo informaciją, naudojimas. Be klasikinio JavaScript įvedimo į svetainės kliento pusę, nusikalstama grupė taip pat naudojo kodo įvedimo į svetainės serverio pusę techniką, ty PHP scenarijus, kurie apdoroja vartotojo įvestį. Ši technika pavojinga tuo, kad trečiųjų šalių tyrėjams sunku aptikti kenkėjišką kodą. Grupės IB specialistai aptiko snifferio versiją, įterptą į svetainės PHP kodą, naudodami domeną kaip vartus. dittm.org.
Taip pat buvo aptikta ankstyva uostiklio versija, kuri naudoja tą patį domeną pavogtiems duomenims rinkti. dittm.org, tačiau ši versija jau skirta diegti internetinės parduotuvės kliento pusėje.
Vėliau grupuotė pakeitė taktiką ir pradėjo daugiau dėmesio skirti piktavališkos veiklos slėpimui bei maskavimuisi.
2017 m. pradžioje grupė pradėjo naudoti domeną jquery-js.commaskuojamas kaip CDN, skirtas jQuery: nukreipia vartotoją į teisėtą svetainę, kai jis patenka į kenkėjišką svetainę jquery.com.
2018 m. viduryje grupė priėmė domeno pavadinimą g-analytics.com ir ėmė maskuoti uostytojo veiklą kaip teisėtą Google Analytics paslaugą.
Versijos analizė
Analizuojant domenus, naudojamus saugoti šnipinėjimo kodą, buvo nustatyta, kad svetainėje yra daug versijų, kurios skiriasi tuo, kad yra užtemdymas, taip pat ar yra nepasiekiamas kodas, įtrauktas į failą, siekiant atitraukti dėmesį. ir paslėpti kenkėjišką kodą.
Iš viso svetainėje jquery-js.com buvo nustatytos šešios uostytojų versijos. Šie uostytojai siunčia pavogtus duomenis adresu, esančiu toje pačioje svetainėje kaip ir pats uostytojas: 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
Vėliau domenas g-analytics.com2018 m. vidurio grupė naudojo atakose ir yra daugiau uostytojų saugykla. Iš viso buvo aptikta 16 skirtingų uostiklio versijų. Šiuo atveju pavogtų duomenų siuntimo vartai buvo užmaskuoti kaip nuoroda į tokio formato vaizdą Pagal 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
Pajamų gavimas iš pavogtų duomenų
Nusikalstama grupuotė iš pavogtų duomenų užsidirba pinigų, parduodama korteles per specialiai sukurtą požeminę parduotuvę, kuri teikia paslaugas karšiams. Tą nustatyti leido atlikti užpuolikų naudojamų domenų analizė google-analytics.cm buvo užregistruotas to paties naudotojo kaip ir domeną cardz.vc. Domenas cardz.vc nurodo Cardsurfs (Flysurfs), vogtomis banko kortelėmis prekiaujančią parduotuvę, kuri išpopuliarėjo AlphaBay požeminėje prekyvietėje kaip parduotuvė, prekiaujanti banko kortelėmis, pavogtomis naudojant uostiklį.
Domeno analizė analitinis.is, esančiame tame pačiame serveryje, kaip ir domenai, kuriuos uostytojai naudoja vogtiems duomenims rinkti, Group-IB specialistai rado failą, kuriame buvo Cookie stealer žurnalai, kurių, panašu, vėliau kūrėjas atsisakė. Viename iš žurnalo įrašų buvo domenas iozoz.com, kuris anksčiau buvo naudojamas viename iš uostytojų, veikiančių 2016 m. Tikėtina, kad šį domeną užpuolikas anksčiau naudojo, kad surinktų korteles, pavogtas naudojant uostiklį. Šis domenas buvo užregistruotas el. pašto adresu [apsaugotas el. paštu], kuris taip pat buvo naudojamas domenams registruoti cardz.su и cardz.vcsusijusi su Cardsurfs karšimo parduotuve.
Remiantis gautais duomenimis, galima daryti prielaidą, kad „G-Analytics“ sniferių šeimai ir pogrindinei „Cardsurfs“ banko kortelių parduotuvei vadovauja tie patys asmenys, o parduotuvėje parduodamos naudojant sniferį pavogtos banko kortelės.
Infrastruktūra
Домен | Atradimo / pasirodymo data |
---|---|
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 |
analitinis.to | 04.12.2018 |
google-analytics.to | 06.12.2018 |
google-analytics.cm | 28.12.2018 |
analitinis.is | 28.12.2018 |
googlelc-analytics.cm | 17.01.2019 |
Illumų šeima
Illum yra uostytojų šeima, naudojama atakuoti internetines parduotuves, kuriose veikia Magento CMS. Be kenkėjiško kodo įvedimo, šio snifferio operatoriai taip pat naudoja pilnavertes netikras mokėjimo formas, kurios siunčia duomenis į užpuolikų valdomus vartus.
Analizuojant tinklo infrastruktūrą, kurią naudoja šio snifferio operatoriai, buvo pastebėta daug kenkėjiškų scenarijų, išnaudojimų, suklastotų mokėjimo formų, taip pat pavyzdžių su kenkėjiškais snifferiais konkurentais. Remiantis informacija apie grupės naudojamų domenų vardų atsiradimo datas, galima daryti prielaidą, kad akcijos pradžia patenka į 2016 metų pabaigą.
Kaip Illum įdiegtas internetinės parduotuvės kode
Pirmosios aptiktos snifferio versijos buvo įterptos tiesiai į pažeistos svetainės kodą. Pavogti duomenys buvo išsiųsti cdn.illum[.]pw/records.php, vartai buvo užkoduoti naudojant base64.
Vėliau, naudojant kitus vartus, buvo rasta supakuota uostiklio versija - records.nstatistics[.]com/records.php.
Pagal
Atakos svetainės analizė
Grupės IB specialistai aptiko ir išanalizavo svetainę, kurią ši nusikalstama grupė naudojo įrankiams saugoti ir vogtai informacijai rinkti.
Tarp užpuoliko serveryje rastų įrankių buvo rasti scenarijai ir išnaudojimai, skirti privilegijų eskalavimui Linux OS: pavyzdžiui, Linux Privilege Escalation Check Script, kurį sukūrė Mike'as Czumak, taip pat CVE-2009-1185 išnaudojimas.
Užpuolikai, norėdami atakuoti internetines parduotuves, panaudojo du išnaudojimus:
Taip pat, atliekant serverio analizę, buvo rasta įvairių uostytojų ir netikrų mokėjimo formų pavyzdžių, kuriuos užpuolikai naudojo rinkdami mokėjimo informaciją iš įsilaužtų svetainių. Kaip matote iš toliau pateikto sąrašo, kai kurie scenarijai buvo sukurti atskirai kiekvienai svetainei, į kurią buvo įsilaužta, o universalus sprendimas buvo naudojamas tam tikriems TVS ir mokėjimo šliuzams. Pavyzdžiui, scenarijai segapay_standard.js и segapay_onpage.js sukurtas įterpti į svetaines, kuriose naudojamas „Sage Pay“ mokėjimo šliuzas.
Įvairių mokėjimo šliuzų scenarijų sąrašas
Scenarijus | Mokėjimo vartai |
---|---|
|
//request.payrightnow[.]cf/checkpayment.php |
|
//request.payrightnow[.]cf/alldata.php |
|
//request.payrightnow[.]cf/alldata.php |
|
//request.payrightnow[.]cf/alldata.php |
|
//request.payrightnow[.]cf/alldata.php |
|
//request.payrightnow[.]cf/alldata.php |
|
//request.payrightnow[.]cf/checkpayment.php |
|
//cdn.illum[.]pw/records.php |
|
//request.payrightnow[.]cf/checkpayment.php |
|
//cdn.illum[.]pw/records.php |
|
//request.payrightnow[.]cf/alldata.php |
|
//request.payrightnow[.]cf/alldata.php |
//request.payrightnow[.]cf/checkpayment.php | |
|
//request.payrightnow[.]cf/checkpayment.php |
|
//request.payrightnow[.]cf/alldata.php |
|
//cdn.illum[.]pw/records.php |
|
//cdn.illum[.]pw/records.php |
|
//request.payrightnow[.]cf/checkpayment.php |
|
//cdn.illum[.]pw/records.php |
//request.payrightnow[.]cf/checkpayment.php | |
|
//cdn.illum[.]pw/records.php |
//payrightnow[.]cf/?payment= | |
|
//payrightnow[.]cf/?payment= |
|
//paymentnow[.]tk/?payment= |
Šeimininkas mokėjimas dabar[.]tk, naudojamas kaip vartai scenarijuje payment_forminsite.js, buvo atrastas kaip SubjectAltName keliuose su „CloudFlare“ paslauga susijusiuose sertifikatuose. Be to, scenarijus buvo pagrindiniame kompiuteryje blogis.js. Sprendžiant iš scenarijaus pavadinimo, jis galėjo būti naudojamas kaip CVE-2016-4010 išnaudojimo dalis, kurios dėka galima įterpti kenkėjišką kodą į svetainės, kurioje veikia Magento TVS, poraštę. Šis scenarijus naudojo šeimininką kaip vartus request.requestnet[.]tk, naudojant tą patį sertifikatą kaip ir priegloba mokėjimas dabar[.]tk.
Suklastotos mokėjimo formos
Žemiau esančiame paveikslėlyje parodytas kortelės duomenų įvedimo formos pavyzdys. Ši forma buvo naudojama norint įsiskverbti į internetinės parduotuvės svetainę ir pavogti kortelių duomenis.
Toliau pateiktame paveikslėlyje pateiktas netikros „PayPal“ mokėjimo formos, kurią užpuolikai naudojo norėdami įsiskverbti į svetaines naudodami šį mokėjimo metodą, pavyzdys.
Infrastruktūra
Домен | Atradimo / pasirodymo data |
---|---|
cdn.illum.pw | 27/11/2016 |
records.nstatistics.com | 06/09/2018 |
request.payrightnow.cf | 25/05/2018 |
mokėjimas dabar.tk | 16/07/2017 |
mokėjimo linija.tk | 01/03/2018 |
paypal.cf | 04/09/2017 |
requestnet.tk | 28/06/2017 |
CoffeeMokko šeima
„CoffeMokko“ uostelių šeima, skirta pavogti internetinių parduotuvių vartotojų banko korteles, buvo naudojama mažiausiai nuo 2017 m. gegužės mėn. Spėjama, kad 1 metais RiskIQ ekspertų aprašyta 2016 grupės nusikalstama grupuotė yra šios uostytojų šeimos operatorius. Buvo užpultos svetainės, kuriose veikia tokios TVS kaip Magento, OpenCart, WordPress, osCommerce, Shopify.
Kaip CoffeMokko įterpiamas į internetinės parduotuvės kodą
Šios šeimos operatoriai kiekvienai infekcijai sukuria unikalius uostiklius: sniffer failas yra kataloge src arba js užpuoliko serveryje. Diegimas į svetainės kodą atliekamas naudojant tiesioginę nuorodą į uostytoją.
Sniffer kodas griežtai koduoja formos laukų, iš kurių norite pavogti duomenis, pavadinimus. Sniffer taip pat patikrina, ar vartotojas yra atsiskaitymo puslapyje, patikrindamas raktinių žodžių sąrašą pagal dabartinį vartotojo adresą.
Kai kurios aptiktos uostyklės versijos buvo užtemdytos ir joje buvo užšifruota eilutė, kurioje buvo saugomas pagrindinis išteklių masyvas: joje buvo įvairių mokėjimo sistemų formų laukų pavadinimai, taip pat vartų, į kuriuos turi būti siunčiami pavogti duomenys, adresas.
Pavogta mokėjimo informacija buvo išsiųsta į scenarijų, esantį užpuoliko serveryje. /savePayment/index.php arba /tr/index.php. Tikėtina, kad šis scenarijus naudojamas duomenims iš vartų siųsti į pagrindinį serverį, kuris sujungia visų uostytojų duomenis. Norint paslėpti perduodamus duomenis, visa nukentėjusiojo mokėjimo informacija yra užkoduota naudojant base64, tada įvyksta keli simbolių keitimai:
- simbolis "e" pakeičiamas ":"
- simbolis "w" pakeičiamas "+"
- simbolis "o" pakeičiamas "%"
- simbolis "d" pakeičiamas "#"
- simbolis "a" pakeičiamas "-"
- simbolis "7" pakeičiamas "^"
- simbolis "h" pakeičiamas "_"
- simbolis "T" pakeičiamas "@"
- simbolis "0" pakeičiamas "/"
- simbolis "Y" pakeičiamas "*"
Dėl simbolių pakeitimų, užkoduotų su base64 duomenų negalima iššifruoti be atvirkštinės transformacijos.
Štai kaip atrodo neužtemdytas uostymo kodo fragmentas:
Infrastruktūros analizė
Ankstyvosiose kampanijose užpuolikai registravo domenų vardus, panašius į teisėtų internetinių apsipirkimo svetainių domenus. Jų domenas gali skirtis nuo teisėto vienu simboliu ar kitu ALD. Sniffer kodui saugoti buvo naudojami registruoti domenai, kurių nuoroda buvo įdėta parduotuvės kode.
Ši grupė taip pat naudojo domenų pavadinimus, primenančius populiarius jQuery įskiepius (slickjs[.]org svetainėms, kuriose naudojamas papildinys slick.js), mokėjimo šliuzai (sagecdn[.]org svetainėms, kuriose naudojama „Sage Pay“ mokėjimo sistema).
Vėliau grupė pradėjo kurti domenus, kurių pavadinimas neturėjo nieko bendra nei su parduotuvės domenu, nei su parduotuvės tema.
Kiekvienas domenas atitiko svetainę, kurioje buvo sukurtas katalogas /js arba / src. Šiame kataloge buvo saugomi uostymo scenarijai: po vieną uostymą kiekvienai naujai infekcijai. Sniferis buvo įvestas į svetainės kodą per tiesioginę nuorodą, tačiau retais atvejais užpuolikai pakeisdavo vieną iš svetainės failų ir pridėdavo prie jo kenksmingo kodo.
Kodo analizė
Pirmasis užmaskavimo algoritmas
Kai kuriuose šios šeimos šnipinėjimo pavyzdžiuose kodas buvo užmaskuotas ir jame buvo užšifruoti duomenys, būtini, kad uostytojas veiktų: visų pirma uostytojo vartų adresas, mokėjimo formos laukų sąrašas ir kai kuriais atvejais netikras mokėjimo formos kodas. Funkcijos viduje esančiame kode ištekliai buvo užšifruoti XOR raktu, kuris buvo perduotas kaip argumentas tai pačiai funkcijai.
Iššifravę eilutę atitinkamu raktu, unikaliu kiekvienam pavyzdžiui, galite gauti eilutę, kurioje yra visos sniffer kodo eilutės, atskirtos skiriamuoju simboliu.
Antrasis užmaskavimo algoritmas
Vėlesniuose šios uostytojų šeimos pavyzdžiuose buvo naudojamas kitoks užmaskavimo mechanizmas: šiuo atveju duomenys buvo šifruojami naudojant pačių parašytą algoritmą. Eilutė, kurioje yra šifruotų duomenų, reikalingų, kad snifferis veiktų, buvo perduota kaip argumentas iššifravimo funkcijai.
Naudodami naršyklės konsolę galite iššifruoti užšifruotus duomenis ir gauti masyvą, kuriame yra šnipinėjimo ištekliai.
Nuoroda į ankstyvąsias MageCart atakas
Išanalizavus vieną iš domenų, kuriuos grupė naudojo kaip vartus pavogtiems duomenims rinkti, buvo nustatyta, kad šiame domene buvo įdiegta kredito kortelių vagystės infrastruktūra, identiška tai, kurią naudoja 1 grupė, viena pirmųjų grupių,
CoffeMokko uostytojų šeimos šeimininke buvo rasti du failai:
- mage.js — failas, kuriame yra 1 grupės šnipinėjimo kodas su vartų adresu js-cdn.link
- mag.php - PHP scenarijus, atsakingas už uostytojo pavogtų duomenų rinkimą
Mage.js failo turinys
Taip pat nustatyta, kad anksčiausi CoffeMokko sniffer šeimos grupės naudojami domenai buvo užregistruoti 17 m. gegužės 2017 d.:
- link-js[.]nuoroda
- info-js[.]nuoroda
- track-js[.]nuoroda
- map-js[.]nuoroda
- smart-js[.] nuoroda
Šių domenų vardų formatas yra toks pat kaip 1 grupės domenų vardų, kurie buvo naudojami 2016 m. atakose.
Remiantis išaiškintais faktais, galima daryti prielaidą, kad tarp CoffeMokko uostymo operatorių ir 1-osios nusikalstamos grupuotės yra ryšys. Manoma, kad „CoffeMokko“ operatoriai galėjo pasiskolinti įrankius ir programinę įrangą, kad pavogtų korteles iš savo pirmtakų. Tačiau labiau tikėtina, kad CoffeMokko šeimyninius uostiklius panaudojusi nusikalstama grupuotė yra tie patys asmenys, kurie išpuolius įvykdė vykdydami 1 grupės veiklą. Paskelbus pirmąjį pranešimą apie nusikalstamos grupuotės veiklą, visi domenų vardai buvo užblokuoti, o įrankiai buvo išsamiai išnagrinėti ir aprašyti. Grupė buvo priversta padaryti pertrauką, sureguliuoti vidinius įrankius ir perrašyti uostymo kodą, kad galėtų tęsti atakas ir likti nepastebėta.
Infrastruktūra
Домен | Atradimo / pasirodymo data |
---|---|
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 |
saugumas-mokėjimas.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 |
childrensplayclothing.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 |
changemyremote.org | 04.12.2017 |
all-about-sneakers.org | 05.12.2017 |
mage-checkout.org | 05.12.2017 |
nililotan.org | 07.12.2017 |
lamoodbighat.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.com | 12.01.2018 |
otocap.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 |
verywellfitness.com | 15.09.2018 |
elegrina.com | 18.11.2018 |
Majsurplus.com | 19.11.2018 |
top5value.com | 19.11.2018 |
Šaltinis: www.habr.com