
Praticamente ognuno di noi utilizza servizi di negozio online, il che significa che prima o poi rischia di diventare vittima di JavaScript sniffer: un codice speciale che i malintenzionati inseriscono nel sito per rubare i dati delle carte di credito, indirizzi, nomi utente e password degli utenti.
Quasi 400.000 utenti del sito e dell'app mobile della compagnia aerea British Airways hanno già subito danni a causa di sniffer, così come i visitatori del sito britannico del gigante sportivo FILA e del distributore americano di biglietti Ticketmaster. PayPal, Chase Paymenttech, USAePay, Moneris: questi e molti altri sistemi di pagamento sono stati compromessi.
L'analista del Threat Intelligence Group-IB, Viktor Okorokov, parla di come gli sniffer si infiltrano nel codice del sito e rubano informazioni di pagamento, e di quali CRM attaccano.

«Minaccia nascosta»
È successo che gli sniffer JS siano rimasti per lungo tempo sotto il radar degli analisti antivirus, mentre le banche e i sistemi di pagamento non li hanno considerati una minaccia seria. E a ragione. Gli esperti di Group-IB 2440 negozi online compromessi, con visitatori che, complessivamente, raggiungono circa 1,5 milioni di persone al giorno, sono stati esposti al rischio di compromissione. Tra le vittime figurano non solo gli utenti, ma anche i negozi online, i sistemi di pagamento e le banche che hanno emesso carte compromesse.
Group-IB è stata la prima ricerca sul mercato darknet degli sniffers, la loro infrastruttura e i metodi di monetizzazione che fruttano milioni di dollari ai loro creatori. Abbiamo identificato 38 famiglie di sniffers, di cui solo 12 erano precedentemente conosciute dai ricercatori.
Analizziamo in dettaglio quattro famiglie di sniffers esaminate durante lo studio.
Famiglia ReactGet
I sniffatori della famiglia ReactGet vengono utilizzati per rubare dati di carte di credito sui siti di e-commerce. Lo sniffatore può funzionare con un'ampia gamma di sistemi di pagamento diversi utilizzati sul sito: un valore di parametro corrisponde a un sistema di pagamento, e versioni separate dello sniffatore possono essere utilizzate per rubare sia le credenziali che i dati delle carte di credito dai moduli di pagamento di diversi sistemi di pagamento, come un cosiddetto sniffatore universale. È stato accertato che in alcuni casi gli aggressori conducono attacchi di phishing contro gli amministratori dei negozi online per ottenere accesso al pannello di amministrazione del sito.
La campagna che utilizza questa famiglia di sniffatori è iniziata a maggio 2017, con siti basati su CMS e piattaforme come Magento, Bigcommerce, Shopify che sono stati presi di mira.
Come ReactGet viene integrato nel codice del negozio online
Oltre all'implementazione 'classica' dello script tramite link, gli operatori di sniffing della famiglia ReactGet utilizzano una tecnica particolare: attraverso codice JavaScript, viene verificato se l'URL attuale su cui si trova l'utente soddisfa determinati criteri. Il codice malevolo verrà eseguito solo se nell'URL corrente è presente una sottostringa checkout o onestepcheckout, onepage/, out/onepag, checkout/one, ckout/one. In questo modo, il codice dello sniffing si attiverà proprio nel momento in cui l'utente procederà al pagamento e inserirà le informazioni di pagamento nel modulo sul sito.

Questo sniffere utilizza una tecnica non standard. I dati di pagamento e personali della vittima vengono raccolti insieme, codificati con base64, e quindi la stringa risultante viene utilizzata come parametro per inviare una richiesta al sito degli aggressori. Spesso il percorso verso il gateway imita un file JavaScript, ad esempio resp.js, data.js e così via, ma vengono anche utilizzati collegamenti a file immagine, GIF e JPG. La particolarità è che lo sniffere crea un oggetto immagine di dimensione 1x1 pixel e utilizza il link ottenuto in precedenza come parametro src immagini. Quindi, per l'utente, tale richiesta nel traffico apparirà come una richiesta di un'immagine normale. Una tecnica simile è stata utilizzata negli sniffers della famiglia ImageID. Inoltre, la tecnica che utilizza un'immagine delle dimensioni di 1 su 1 pixel viene applicata in molti script legittimi di analisi online, il che può anche confondere l'utente.

Analisi delle versioni
L'analisi dei domini attivi utilizzati dagli operatori degli sniffers ReactGet ha rivelato molte diverse versioni di questi sniffers. Le versioni si differenziano per la presenza o meno di offuscamento, e inoltre, ogni sniffer è destinato a un determinato sistema di pagamento che elabora transazioni con carte di credito per negozi online. Esaminando il valore del parametro corrispondente al numero di versione, gli esperti di Group-IB hanno ottenuto un elenco completo delle variazioni disponibili degli sniffers, e in base ai nomi dei campi dei moduli che ogni sniffer cerca nel codice della pagina, hanno identificato i sistemi di pagamento ai quali è mirato lo sniffer.
Elenco degli sniffers e dei relativi sistemi di pagamento
| URL dello sniffer | Sistema di pagamento |
|---|---|
| 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 |
Sniffer di password
Uno dei vantaggi degli sniffer JavaScript in esecuzione sul lato client è la loro versatilità: il codice maligno integrato nel sito è in grado di rubare qualsiasi tipo di dati, siano essi dati di pagamento o login e password dell'account utente. Gli esperti di Group-IB hanno scoperto un campione di sniffer appartenente alla famiglia ReactGet, progettato per rubare indirizzi email e password degli utenti del sito.

Intersezione con lo sniffer ImageID
Durante l'analisi di uno dei negozi compromessi, è stato stabilito che il suo sito era stato infettato due volte: oltre al codice maligno dello sniffer della famiglia ReactGet, è stato trovato anche codice dello sniffer della famiglia ImageID. Questa intersezione potrebbe essere prova del fatto che gli operatori dietro l'uso di entrambi gli sniffer utilizzano tecniche simili per integrare il codice maligno.

Sniffer universale
Durante l'analisi di uno dei nomi di dominio associati all'infrastruttura degli sniffer ReactGet, è stato stabilito che lo stesso utente aveva registrato altri tre nomi di dominio. Questi tre domini imitavano quelli di siti reali e venivano utilizzati in precedenza per ospitare sniffer. Analizzando il codice di tre siti legittimi, è stata trovata una versione sconosciuta di uno sniffer, e ulteriori analisi hanno rivelato che si trattava di una versione avanzata dello sniffer ReactGet. Tutte le versioni precedentemente tracciate di sniffer di questa famiglia erano mirate a un singolo sistema di pagamento, il che significa che per ciascun sistema di pagamento era necessaria una versione speciale dello sniffer. Tuttavia, in questo caso, è stata trovata una versione universale dello sniffer, in grado di rubare informazioni da moduli relativi a 15 diversi sistemi di pagamento e moduli di siti ecommerce per effettuare pagamenti online.
All'inizio della sua attività, lo sniffer cercava i campi di base del modulo contenenti le informazioni personali della vittima: nome completo, indirizzo fisico, numero di telefono.

Successivamente, lo sniffer cercava in oltre 15 diversi prefissi, corrispondenti a vari sistemi di pagamento e moduli per pagamenti online.

In seguito, i dati personali della vittima e le informazioni di pagamento venivano raccolti e inviati a un sito controllato dall'attaccante: in questo caso specifico sono state trovate due versioni dello sniffer universale ReactGet, ospitate su due diversi siti compromessi. Tuttavia, entrambe le versioni inviavano i dati rubati allo stesso sito compromesso. zoobashop.com.

L'analisi dei prefissi utilizzati dallo sniffer per cercare i campi contenenti informazioni di pagamento della vittima ha rivelato che questo campione di sniffer era mirato ai seguenti sistemi di pagamento:
- Authorize.Net
- Verisign
- First Data
- USAePay
- Stripe
- PayPal
- ANZ eGate
- Braintree
- DataCash (MasterCard)
- Realex Payments
- PsiGate
- Heartland Payment Systems
Quali strumenti vengono utilizzati per rubare le informazioni di pagamento
Il primo strumento scoperto durante l'analisi dell'infrastruttura degli aggressori serve per offuscare script dannosi responsabili del furto delle carte bancarie. Su uno degli host degli aggressori è stato rinvenuto uno script bash che utilizza il CLI del progetto per automatizzare l'offuscamento del codice dei sniffatori.
![]()
Il secondo strumento individuato è progettato per generare il codice responsabile del caricamento dello sniffatore principale. Questo strumento genera codice JavaScript che verifica se l'utente si trova sulla pagina di pagamento, cercando nell'indirizzo attuale dell'utente le stringhe checkout, carrello e così via, e se il risultato è positivo, il codice carica lo sniffatore principale dal server dell'attaccante. Per nascondere l'attività dannosa, tutte le stringhe, comprese le stringhe di test per determinare la pagina di pagamento, così come il link allo sniffatore, sono codificate utilizzando base64.

Attacchi di phishing
Durante l'analisi dell'infrastruttura di rete degli aggressori, è emerso che spesso per ottenere accesso al pannello di amministrazione del negozio online target, il gruppo criminale utilizza il phishing. Gli attaccanti registrano un dominio visivamente simile a quello del negozio, per poi implementare una falsa pagina di accesso al pannello di amministrazione Magento. In caso di successo, gli aggressori otterranno accesso al pannello di amministrazione del CMS Magento, consentendo loro di modificare i componenti del sito e inserire uno sniffer per rubare i dati delle carte di credito.

Infrastruttura
| Dominio | Data di rilevamento/apparizione |
|---|---|
| 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 |
Famiglia G-Analytics
Questa famiglia di sniffer è utilizzata per rubare le informazioni delle carte dei clienti dai negozi online. Il primo dominio registrato dal gruppo è stato registrato nell'aprile del 2016, il che potrebbe indicare l'inizio delle attività del gruppo a metà del 2016.
Nella campagna attuale, il gruppo utilizza nomi di dominio che imitano servizi realmente esistenti, come Google Analytics e jQuery, camuffando l'attività degli sniffer con script legittimi e nomi di dominio simili a quelli legittimi. Siti che operano sotto CMS Magento sono stati colpiti dall'attacco.
Come viene integrato G-Analytics nel codice del negozio online
Una caratteristica distintiva di questa famiglia è l'uso di vari metodi per il furto delle informazioni di pagamento dell'utente. Oltre all'inserimento classico di codice JavaScript nella parte client del sito, il gruppo criminale ha anche utilizzato la tecnica di inserimento del codice nella parte server del sito, in particolare nei script PHP che elaborano i dati immessi dagli utenti. Questa tecnica è pericolosa perché rende difficile il rilevamento del codice dannoso da parte di ricercatori indipendenti. Gli specialisti di Group-IB hanno scoperto una versione di uno sniffer inserito nel codice PHP del sito, che utilizza come gateway il dominio dittm.org.

È stata inoltre scoperta una versione precedente dello sniffer che utilizza lo stesso dominio per raccogliere dati rubati dittm.org, ma questa versione è già progettata per essere installata sul lato client del negozio online.

Successivamente, il gruppo ha cambiato la propria tattica, iniziando a prestare maggiore attenzione al nascondimento delle attività malevole e all'occultamento.
All'inizio del 2017, il gruppo ha iniziato a utilizzare il dominio jquery-js.com, che si maschera da CDN per jQuery: quando l'utente visita il sito degli aggressori, viene reindirizzato a un sito legittimo jquery.com.
Nel mezzo del 2018, il gruppo ha acquisito il nome di dominio g-analytics.com e ha iniziato a mascherare l'attività dello sniffer come un servizio legittimo di Google Analytics.


Analisi delle versioni
Durante l'analisi dei domini utilizzati per ospitare il codice degli sniffer, è stato riscontrato che sul sito erano presenti molte versioni che si differenziano per la presenza di offuscamento, nonché per la presenza o l'assenza di codice inaccessibile aggiunto al file per deviare l'attenzione e nascondere il codice dannoso.
Complessivamente sul sito jquery-js.com sono state scoperte sei versioni degli sniffer. I dati rubati da questi sniffer vengono inviati a un indirizzo situato sullo stesso sito dello sniffer stesso: 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
Un dominio successivo g-analytics.com, utilizzato dal gruppo negli attacchi a partire dalla metà del 2018, funge da deposito per un numero maggiore di sniffer. In totale, sono state trovate 16 versioni diverse dello sniffer. In questo caso, il gate per l'invio dei dati rubati era mascherato da un link a un'immagine in formato 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
Monetizzazione dei dati rubati
Un gruppo criminoso monetizza i dati rubati vendendo carte attraverso un negozio clandestino appositamente creato, fornendo servizi ai carder. L'analisi dei domini utilizzati dagli attaccanti ha permesso di determinare che google-analytics.cm è stato registrato dallo stesso utente che ha registrato il dominio cardz.vc. Il dominio cardz.vc è associato al negozio di vendita di carte bancarie rubate Cardsurfs (Flysurfs), che ha guadagnato popolarità ai tempi dell'attività del mercato nero AlphaBay come negozio di carte bancarie rubate tramite sniffer.

Analizzando il dominio analytic.is, situato sullo stesso server dei domini utilizzati dagli sniffer per raccogliere dati rubati, i specialisti di Group-IB hanno scoperto un file contenente i log del Cookie-stiller, che sembra essere stato successivamente abbandonato dallo sviluppatore. Una delle voci nel log conteneva il dominio iozoz.com, che era stato precedentemente utilizzato in uno degli sniffer attivi nel 2016. Si presume che questo dominio fosse utilizzato in precedenza da un attaccante per raccogliere carte rubate tramite sniffer. Questo dominio è stato registrato sull'indirizzo email kts241@gmail.com, utilizzato anche per la registrazione dei domini cardz.su e cardz.vc, relativo al negozio di carte Cardsurfs.
Sulla base dei dati ricevuti, si può ipotizzare che la famiglia di sniffer G-Analytics e il negozio sotterraneo di carte bancarie Cardsurfs siano gestiti dalle stesse persone, e che il negozio venga utilizzato per la vendita di carte bancarie rubate tramite lo sniffer.
Infrastruttura
| Dominio | Data di rilevamento/apparizione |
|---|---|
| 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 |
Famiglia Illum
Illum è una famiglia di sniffer utilizzati per attacchi a negozi online che operano con CMS Magento. Oltre all'inserimento di codice dannoso, gli operatori di questo sniffer utilizzano anche moduli di pagamento falsi che inviano dati a gateway controllati dai malintenzionati.
Nell'analisi dell'infrastruttura di rete utilizzata dagli operatori di questo sniffer, è stata notata una grande quantità di script dannosi, exploit, moduli di pagamento falsi, così come una raccolta di esempi di sniffer dannosi dei concorrenti. Basandosi sulle informazioni sulle date di registrazione dei nomi di dominio utilizzati dal gruppo, si può supporre che l'inizio della campagna risalga alla fine del 2016.
Come Illum si integra nel codice del negozio online
Le prime versioni dello sniffer rilevate venivano integrate direttamente nel codice del sito compromesso. I dati rubati venivano inviati all'indirizzo cdn.illum[.]pw/records.php, mentre il gateway era codificato utilizzando base64.

Successivamente è stata trovata una versione impacchettata dello sniffer che usava un altro gateway — records.nstatistics[.]com/records.php.

Secondo Willem de Groot, lo stesso host era utilizzato nello sniffer che era stato integrato nel , appartenente al partito politico tedesco CSU.
Analisi del sito degli aggressori
Gli esperti di Group-IB hanno scoperto e analizzato il sito utilizzato da questo gruppo criminale per immagazzinare strumenti e raccogliere informazioni rubate.

Tra gli strumenti rinvenuti nel server degli aggressori, c'erano script ed exploit per l'escalation dei privilegi su sistemi operativi Linux: per esempio, il Linux Privilege Escalation Check Script, sviluppato da Mike Czumak, e un exploit per CVE-2009-1185.
Direttamente per gli attacchi ai negozi online, gli aggressori hanno utilizzato due exploit: è in grado di iniettare codice dannoso in core_config_data attraverso l'exploit CVE-2016-4010, sfrutta una vulnerabilità di tipo RCE nei plugin per CMS Magento, permettendo di eseguire codice arbitrario sul server web vulnerabile.

Durante l'analisi del server sono stati rinvenuti anche vari campioni di sniffer e moduli di pagamento falsi utilizzati dagli aggressori per raccogliere informazioni di pagamento dai siti compromessi. Come si può notare dall'elenco sottostante, alcuni script sono stati creati su misura per ciascun sito compromesso, mentre per determinate CMS e gateway di pagamento sono state utilizzate soluzioni universali. Per esempio, gli script segapay_standart.js e segapay_onpage.js sono progettati per l'inserimento nei siti che utilizzano il gateway di pagamento Sage Pay.
Elenco degli script per vari gateway di pagamento
| Script | Gateway di pagamento |
|---|---|
| [.]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, utilizzato come gate nello script payment_forminsite.js, è stato rilevato come subjectAltName in diversi certificati relativi al servizio CloudFlare. Inoltre, sul server era presente uno script evil.js. A giudicare dal nome dello script, potrebbe essere stato utilizzato per sfruttare la CVE-2016-4010, che consente di inserire codice dannoso nel footer di un sito gestito da CMS Magento. Come gate, questo script ha applicato l'host request.requestnet[.]tk, utilizzando lo stesso certificato dell'host paymentnow[.]tk.
Moduli di pagamento falsi
Di seguito è riportato un esempio di modulo per l'inserimento dei dati della carta. Questo modulo è stato utilizzato per l'inserimento nel sito di un negozio online e per il furto dei dati delle carte.

Nell'immagine successiva è un esempio di modulo di pagamento falso di PayPal, utilizzato dagli aggressori per l'inserimento su siti che utilizzano questo metodo di pagamento.

Infrastruttura
| Dominio | Data di rilevamento/apparizione |
|---|---|
| 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 |
Famiglia CoffeMokko
La famiglia di sniffer CoffeMokko, progettata per rubare le carte di credito degli utenti dei negozi online, è attiva almeno dal maggio 2017. Si presume che gli operatori di questa famiglia di sniffer siano un gruppo criminale noto come Group 1, descritto dagli esperti di RiskIQ nel 2016. Gli attacchi hanno colpito siti gestiti da CMS come Magento, OpenCart, WordPress, osCommerce, Shopify.
Come CoffeMokko si integra nel codice del negozio online
Gli operatori di questa famiglia creano sniffer unici per ogni infezione: il file dello sniffer si trova nella directory src o js sul server degli aggressori. L'integrazione nel codice del sito avviene tramite un link diretto allo sniffer.

Nel codice dello sniffer sono codificati i nomi dei campi del modulo da cui devono essere rubati i dati. Inoltre, lo sniffer verifica se l'utente si trova sulla pagina di pagamento confrontando l'elenco delle parole chiave con l'indirizzo attuale dell'utente.

Alcune versioni del sniffatore rilevate erano offuscate e contenevano una stringa criptata in cui era memorizzato l'array principale delle risorse: lì erano inclusi i nomi dei campi dei moduli per vari sistemi di pagamento, così come l'indirizzo della porta per inviare i dati rubati.

Le informazioni di pagamento rubate venivano inviate a uno script sul server degli aggressori tramite /savePayment/index.php или /tr/index.php. Si presume che questo script serva a inviare i dati dalla porta al server principale, che consolida i dati da tutti gli sniffatori. Per nascondere i dati trasmessi, tutte le informazioni di pagamento della vittima vengono codificate utilizzando base64, e poi avvengono diverse sostituzioni di caratteri:
- il simbolo «e» viene sostituito da «:»
- il simbolo «w» viene sostituito da «+»
- il simbolo «o» viene sostituito da «%»
- il simbolo «d» viene sostituito da «#»
- il simbolo «a» viene sostituito da «-»
- il simbolo «7» viene sostituito da «^»
- il simbolo «h» viene sostituito da «_»
- il simbolo «T» viene sostituito da «@»
- il simbolo «0» viene sostituito da «/»
- il simbolo «Y» viene sostituito da «*»
A causa delle sostituzioni di caratteri, è impossibile decodificare i dati senza effettuare la trasformazione inversa. base64 данные невозможно декодировать, не проведя обратного преобразования.
Ecco un frammento di codice di uno sniffer che non è stato offuscato:

Analisi dell'infrastruttura
In campagne precedenti, gli aggressori registravano nomi di dominio simili a quelli di siti legittimi di e-commerce. Il loro dominio poteva differire da quello legittimo di un solo carattere o da un altro TLD. I domini registrati venivano utilizzati per ospitare il codice dello sniffer, il cui link veniva incorporato nel codice del negozio.
Questa gruppo usava anche nomi di dominio che assomigliavano ai nomi di popolari plugin per jQuery (slickjs[.]org per i siti che utilizzano il plugin slick.js), gateway di pagamento (sagecdn[.]org per i siti che utilizzano il sistema di pagamento Sage Pay).
Successivamente, il gruppo ha iniziato a creare domini il cui nome non aveva nulla a che fare né con il dominio del negozio né con la sua tematica.

Ogni dominio corrispondeva a un sito su cui veniva creata una directory /js o /src. In questa directory venivano conservati gli script degli sniffer: uno sniffer per ogni nuova infezione. Lo sniffer veniva integrato nel codice del sito tramite un link diretto, ma in rari casi gli aggressori modificavano uno dei file del sito e vi aggiungevano codice malevolo.
Analisi del codice
Il primo algoritmo di offuscamento
In alcuni campioni rilevati di questo tipo di sniffers, il codice era stato offuscato e conteneva dati criptati, necessari per il funzionamento dello sniffer: in particolare, l'indirizzo del gateway dello sniffer, l'elenco dei campi del modulo di pagamento e, in alcuni casi, il codice di un modulo di pagamento falsificato. Nel codice all'interno della funzione, le risorse erano state criptate tramite XOR con una chiave che veniva passata come argomento della stessa funzione.

Decifrando la stringa con la chiave corrispondente, unica per ogni campione, si può ottenere una stringa contenente tutte le stringhe dal codice dello sniffer separate da un carattere delimitatore.

Il secondo algoritmo di offuscamento
Nei campioni più recenti di questo tipo di sniffers è stato utilizzato un altro meccanismo di offuscamento: in questo caso, i dati erano stati criptati tramite un algoritmo personalizzato. La stringa contenente i dati criptati, necessari per il funzionamento dello sniffer, veniva passata come argomento alla funzione di decifratura.

Utilizzando la console del browser è possibile decifrare i dati criptati e ottenere un array contenente le risorse dello sniffer.

Collegamento con i precedenti attacchi MageCart
Durante l'analisi di uno dei domini utilizzati dal gruppo come gateway per raccogliere dati rubati, è stato accertato che su questo dominio è stata implementata un'infrastruttura per il furto di carte di credito, identica a quella utilizzata dal Gruppo 1 — uno dei primi gruppi, dagli esperti di RiskIQ.
Sul host della famiglia di sniffers CoffeMokko sono stati trovati due file:
- mage.js — un file contenente il codice dello sniffer del Gruppo 1 con l'indirizzo del gateway js-cdn.link
- mag.php — uno script PHP responsabile della raccolta dei dati rubati dallo sniffer
Содержимое файла mage.js 
È stato inoltre accertato che i primi domini utilizzati dal gruppo dietro la famiglia di sniffers CoffeMokko sono stati registrati il 17 maggio 2017:
- link-js[.]link
- info-js[.]link
- track-js[.]link
- map-js[.]link
- smart-js[.]link
Il formato di questi nomi di dominio corrisponde a quello dei nomi di dominio del Gruppo 1, utilizzati negli attacchi del 2016.
Sulla base dei fatti riscontrati, si può supporre che ci sia un legame tra gli operatori di sniffer CoffeMokko e il gruppo criminale Group 1. È probabile che gli operatori di CoffeMokko abbiano preso in prestito strumenti e software dai loro predecessori per rubare carte. Tuttavia, è più probabile che il gruppo criminale responsabile dell'uso degli sniffer della famiglia CoffeMokko sia composto dalle stesse persone che hanno effettuato attacchi nell'ambito delle attività del Group 1. Dopo la pubblicazione del primo rapporto sulle attività del gruppo criminale, tutti i loro nomi di dominio sono stati bloccati e gli strumenti sono stati esaminati e descritti in dettaglio. Il gruppo è stato costretto a prendersi una pausa, a perfezionare i propri strumenti interni e a riscrivere il codice degli sniffer per continuare i propri attacchi e rimanere inosservati.
Infrastruttura
| Dominio | Data di rilevamento/apparizione |
|---|---|
| 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 |
Fonte: habr.com
