Cztery sniffery JavaScript, które czekają na ciebie w sklepach internetowych

Cztery sniffery JavaScript, które czekają na ciebie w sklepach internetowych

Praktycznie każdy z nas korzysta z usług sklepów internetowych, więc prędzej czy później ryzykujemy, że zostaniemy ofiarą snifferów JavaScript – specjalnego kodu, który przestępcy wprowadzają na stronę w celu kradzieży danych kart bankowych, adresów, loginów i haseł użytkowników.

Sniffery już dotknęły prawie 400 000 użytkowników witryny oraz aplikacji mobilnej linii lotniczych British Airways, a także odwiedzających brytyjską stronę sportowego giganta FILA i amerykańskiego dystrybutora biletów Ticketmaster. PayPal, Chase Paymenttech, USAePay, Moneris – te i wiele innych systemów płatności zostało zainfekowanych.

Analityk Threat Intelligence Group-IB Wiktor Okorokow opowiada o tym, jak sniffery są wprowadzane w kod strony i kradną informacje płatnicze, a także które systemy CRM atakują.

Cztery sniffery JavaScript, które czekają na ciebie w sklepach internetowych

„Ukryte zagrożenie”

Tak się złożyło, że przez długi czas sniffery JS pozostawały poza zasięgiem analityków antywirusowych, a banki i systemy płatności nie postrzegały ich jako poważne zagrożenie. I to zupełnie niesłusznie. Eksperci Group-IB przeanalizowali 2440 zainfekowanych sklepów internetowych, których odwiedzający – łącznie około 1,5 miliona ludzi dziennie – byli narażeni na ryzyko kompromitacji. Wśród poszkodowanych znaleźli się nie tylko użytkownicy, ale także sklepy internetowe, systemy płatności i banki, które wydały skompromitowane karty.

Raport Group-IB był pierwszym badaniem rynku snifferów w darknecie, ich infrastruktury i sposobów monetyzacji, które przynoszą ich twórcom miliony dolarów. Zidentyfikowaliśmy 38 rodzin snifferów, z których tylko 12 było wcześniej znanych badaczom.

Szczegółowo omówimy cztery rodziny snifferów, które były badane w trakcie badania.

Rodzina ReactGet

Sniffery z rodziny ReactGet są wykorzystywane do kradzieży danych kart bankowych na stronach internetowych sklepów online. Sniffer może działać z wieloma różnymi systemami płatności używanymi na stronie: jedna wartość parametru odpowiada jednemu systemowi płatności, a poszczególne wykryte wersje sniffera mogą być używane do kradzieży danych logowania oraz danych kart bankowych z formularzy płatniczych kilku różnych systemów płatności, jako tzw. uniwersalny sniffer. Ustalono, że w niektórych przypadkach atakujący przeprowadzają ataki phishingowe na administratorów sklepów online w celu uzyskania dostępu do panelu administracyjnego strony.

Kampania z użyciem tej rodziny snifferów rozpoczęła się w maju 2017 roku, atakowi uległy strony zarządzane przez systemy CMS oraz platformy Magento, Bigcommerce, Shopify.

Jak ReactGet jest wprowadzany do kodu sklepu online

Oprócz «klasycznego» wstrzykiwania skryptu przez link, operatorzy snifferów z rodziny ReactGet używają specjalnej techniki: za pomocą kodu JavaScript sprawdzają, czy aktualny adres, na którym znajduje się użytkownik, odpowiada określonym kryteriom. Złośliwy kod zostanie uruchomiony tylko wtedy, gdy w bieżącym adresie URL znajduje się podciąg checkout lub onestepcheckout, onepage/, out/onepag, checkout/one, ckout/one. W ten sposób kod sniffera zostanie wykonany dokładnie w momencie, gdy użytkownik przechodzi do płatności i wprowadza dane płatnicze w formularzu na stronie.

Cztery sniffery JavaScript, które czekają na ciebie w sklepach internetowych
Ten sniffer wykorzystuje niestandardową technikę. Dane płatnicze i osobowe ofiary są zbierane razem, kodowane za pomocą base64, a następnie uzyskany ciąg jest używany jako parametr do wysłania żądania na stronę przestępców. Najczęściej ścieżka do bramy imituje plik JavaScript, na przykład resp.js, data.js i tym podobnie, ale używane są również linki do plików obrazów, GIF i JPG. Ciekawostką jest to, że sniffer tworzy obiekt obrazu o wymiarach 1 na 1 piksel i wykorzystuje wcześniej uzyskany link jako parametr. src Obrazy. Oznacza to, że dla użytkownika takie zapytanie w ruchu będzie wyglądać jak zapytanie o zwykły obrazek. Podobną technikę zastosowano w snifferach rodziny ImageID. Ponadto technika używająca obrazu o wymiarach 1 na 1 piksel jest stosowana w wielu legalnych skryptach analityki internetowej, co także może wprowadzić użytkownika w błąd.

Cztery sniffery JavaScript, które czekają na ciebie w sklepach internetowych

Analiza wersji

Analiza aktywnych domen używanych przez operatorów snifferów ReactGet ujawniła wiele różnych wersji snifferów tej rodziny. Wersje różnią się obecnością lub brakiem obfuskacji, a każdy sniffer jest zaprojektowany do obsługi określonej systemu płatności, który przetwarza płatności kartą bankową do sklepów internetowych. Przeanalizowawszy wartość parametru odpowiadającego numerowi wersji, specjaliści Group-IB uzyskali pełną listę dostępnych wariacji snifferów, a na podstawie nazw pól formularzy, które każdy sniffer wyszukuje w kodzie strony, określili systemy płatności, na które jest skierowany sniffer.

Lista snifferów i odpowiadających im systemów płatności

URL snifferaSystem płatności
reactjsapi.com/react.js Authorize.Net
ajaxstatic.com/api.js?v=2.1.1 Cardsave
ajaxstatic.com/api.js?v=2.1.2 Authorize.Net
ajaxstatic.com/api.js?v=2.1.3 Authorize.Net
ajaxstatic.com/api.js?v=2.1.4eWAY Rapid
ajaxstatic.com/api.js?v=2.1.5 Authorize.Net
ajaxstatic.com/api.js?v=2.1.6 Adyen
ajaxstatic.com/api.js?v=2.1.7USAePay
ajaxstatic.com/api.js?v=2.1.9 Authorize.Net
apitstatus.com/api.js?v=2.1.1 USAePay
apitstatus.com/api.js?v=2.1.2 Authorize.Net
apitstatus.com/api.js?v=2.1.3Moneris
apitstatus.com/api.js?v=2.1.5 USAePay
apitstatus.com/api.js?v=2.1.6PayPal
apitstatus.com/api.js?v=2.1.7Sage Pay
apitstatus.com/api.js?v=2.1.8Verisign
apitstatus.com/api.js?v=2.1.9PayPal
apitstatus.com/api.js?v=2.3.0Stripe
apitstatus.com/api.js?v=3.0.2Realex
apitstatus.com/api.js?v=3.0.3PayPal
apitstatus.com/api.js?v=3.0.4 LinkPoint
apitstatus.com/api.js?v=3.0.5 PayPal
apitstatus.com/api.js?v=3.0.7 PayPal
apitstatus.com/api.js?v=3.0.8DataCash
apitstatus.com/api.js?v=3.0.9 PayPal
asianfoodgracer.com/footer.js Authorize.Net
billgetstatus.com/api.js?v=1.2 Authorize.Net
billgetstatus.com/api.js?v=1.3Authorize.Net
billgetstatus.com/api.js?v=1.4 Authorize.Net
billgetstatus.com/api.js?v=1.5Verisign
billgetstatus.com/api.js?v=1.6 Authorize.Net
billgetstatus.com/api.js?v=1.7 Moneris
billgetstatus.com/api.js?v=1.8 Sage Pay
billgetstatus.com/api.js?v=2.0 USAePay
billgetstatus.com/react.jsAuthorize.Net
cloudodesc.com/gtm.js?v=1.2 Authorize.Net
cloudodesc.com/gtm.js?v=1.3ANZ eGate
cloudodesc.com/gtm.js?v=2.3Authorize.Net
cloudodesc.com/gtm.js?v=2.4 Moneris
cloudodesc.com/gtm.js?v=2.6 Sage Pay
cloudodesc.com/gtm.js?v=2.7 Sage Pay
cloudodesc.com/gtm.js?v=2.8 Chase Paymentech
cloudodesc.com/gtm.js?v=2.9Authorize.Net
cloudodesc.com/gtm.js?v=2.91 Adyen
cloudodesc.com/gtm.js?v=2.92 PsiGate
cloudodesc.com/gtm.js?v=2.93CyberSource
cloudodesc.com/gtm.js?v=2.95 ANZ eGate
cloudodesc.com/gtm.js?v=2.97Realex
geisseie.com/gs.js USAePay
gtmproc.com/age.jsAuthorize.Net
gtmproc.com/gtm.js?v=1.2 Authorize.Net
gtmproc.com/gtm.js?v=1.3 ANZ eGate
gtmproc.com/gtm.js?v=1.5PayPal
gtmproc.com/gtm.js?v=1.6 PayPal
gtmproc.com/gtm.js?v=1.7 Realex
livecheckpay.com/api.js?v=2.0 Sage Pay
livecheckpay.com/api.js?v=2.1 PayPal
livecheckpay.com/api.js?v=2.2 Verisign
livecheckpay.com/api.js?v=2.3Authorize.Net
livecheckpay.com/api.js?v=2.4Verisign
livecheckpay.com/react.jsAuthorize.Net
livegetpay.com/pay.js?v=2.1.2 ANZ eGate
livegetpay.com/pay.js?v=2.1.3 PayPal
livegetpay.com/pay.js?v=2.1.5CyberSource
livegetpay.com/pay.js?v=2.1.7 Authorize.Net
livegetpay.com/pay.js?v=2.1.8 Sage Pay
livegetpay.com/pay.js?v=2.1.9 Realex
livegetpay.com/pay.js?v=2.2.0 CyberSource
livegetpay.com/pay.js?v=2.2.1PayPal
livegetpay.com/pay.js?v=2.2.2 PayPal
livegetpay.com/pay.js?v=2.2.3 PayPal
livegetpay.com/pay.js?v=2.2.4 Verisign
livegetpay.com/pay.js?v=2.2.5 eWAY Rapid
livegetpay.com/pay.js?v=2.2.7 Sage Pay
livegetpay.com/pay.js?v=2.2.8 Sage Pay
livegetpay.com/pay.js?v=2.2.9Verisign
livegetpay.com/pay.js?v=2.3.0 Authorize.Net
livegetpay.com/pay.js?v=2.3.1Authorize.Net
livegetpay.com/pay.js?v=2.3.2First Data Global Gateway
livegetpay.com/pay.js?v=2.3.3 Authorize.Net
livegetpay.com/pay.js?v=2.3.4Authorize.Net
livegetpay.com/pay.js?v=2.3.5 Moneris
livegetpay.com/pay.js?v=2.3.6 Authorize.Net
livegetpay.com/pay.js?v=2.3.8 PayPal
livegetpay.com/pay.js?v=2.4.0Verisign
maxstatics.com/site.js USAePay
mediapack.info/track.js?d=funlove.com USAePay
mediapack.info/track.js?d=qbedding.comAuthorize.Net
mediapack.info/track.js?d=vseyewear.com Verisign
mxcounter.com/c.js?v=1.2 PayPal
mxcounter.com/c.js?v=1.3 Authorize.Net
mxcounter.com/c.js?v=1.4 Stripe
mxcounter.com/c.js?v=1.6 Authorize.Net
mxcounter.com/c.js?v=1.7eWAY Rapid
mxcounter.com/c.js?v=1.8 Sage Pay
mxcounter.com/c.js?v=2.0 Authorize.Net
mxcounter.com/c.js?v=2.1Braintree
mxcounter.com/c.js?v=2.10 Braintree
mxcounter.com/c.js?v=2.2 PayPal
mxcounter.com/c.js?v=2.3 Sage Pay
mxcounter.com/c.js?v=2.31 Sage Pay
mxcounter.com/c.js?v=2.32 Authorize.Net
mxcounter.com/c.js?v=2.33PayPal
mxcounter.com/c.js?v=2.34Authorize.Net
mxcounter.com/c.js?v=2.35 Verisign
mxcounter.com/click.js?v=1.2 PayPal
mxcounter.com/click.js?v=1.3 Authorize.Net
mxcounter.com/click.js?v=1.4 Stripe
mxcounter.com/click.js?v=1.6 Authorize.Net
mxcounter.com/click.js?v=1.7 eWAY Rapid
mxcounter.com/click.js?v=1.8Sage Pay
mxcounter.com/click.js?v=2.0Authorize.Net
mxcounter.com/click.js?v=2.1 Braintree
mxcounter.com/click.js?v=2.2PayPal
mxcounter.com/click.js?v=2.3 Sage Pay
mxcounter.com/click.js?v=2.31Sage Pay
mxcounter.com/click.js?v=2.32Authorize.Net
mxcounter.com/click.js?v=2.33PayPal
mxcounter.com/click.js?v=2.34 Authorize.Net
mxcounter.com/click.js?v=2.35 Verisign
mxcounter.com/cnt.jsAuthorize.Net
mxcounter.com/j.jsAuthorize.Net
newrelicnet.com/api.js?v=1.2Authorize.Net
newrelicnet.com/api.js?v=1.4 Authorize.Net
newrelicnet.com/api.js?v=1.8 Sage Pay
newrelicnet.com/api.js?v=4.5 Sage Pay
newrelicnet.com/api.js?v=4.6 Westpac PayWay
nr-public.com/api.js?v=2.0PayFort
nr-public.com/api.js?v=2.1 PayPal
nr-public.com/api.js?v=2.2 Authorize.Net
nr-public.com/api.js?v=2.3Stripe
nr-public.com/api.js?v=2.4First Data Global Gateway
nr-public.com/api.js?v=2.5 PsiGate
nr-public.com/api.js?v=2.6 Authorize.Net
nr-public.com/api.js?v=2.7Authorize.Net
nr-public.com/api.js?v=2.8 Moneris
nr-public.com/api.js?v=2.9 Authorize.Net
nr-public.com/api.js?v=3.1 Sage Pay
nr-public.com/api.js?v=3.2 Verisign
nr-public.com/api.js?v=3.3Moneris
nr-public.com/api.js?v=3.5 PayPal
nr-public.com/api.js?v=3.6 LinkPoint
nr-public.com/api.js?v=3.7Westpac PayWay
nr-public.com/api.js?v=3.8 Authorize.Net
nr-public.com/api.js?v=4.0Moneris
nr-public.com/api.js?v=4.0.2 PayPal
nr-public.com/api.js?v=4.0.3 Adyen
nr-public.com/api.js?v=4.0.4PayPal
nr-public.com/api.js?v=4.0.5Authorize.Net
nr-public.com/api.js?v=4.0.6USAePay
nr-public.com/api.js?v=4.0.7 EBizCharge
nr-public.com/api.js?v=4.0.8 Authorize.Net
nr-public.com/api.js?v=4.0.9 Verisign
nr-public.com/api.js?v=4.1.2 Verisign
ordercheckpays.com/api.js?v=2.11Authorize.Net
ordercheckpays.com/api.js?v=2.12 PayPal
ordercheckpays.com/api.js?v=2.13Moneris
ordercheckpays.com/api.js?v=2.14Authorize.Net
ordercheckpays.com/api.js?v=2.15PayPal
ordercheckpays.com/api.js?v=2.16PayPal
ordercheckpays.com/api.js?v=2.17Westpac PayWay
ordercheckpays.com/api.js?v=2.18 Authorize.Net
ordercheckpays.com/api.js?v=2.19 Authorize.Net
ordercheckpays.com/api.js?v=2.21 Sage Pay
ordercheckpays.com/api.js?v=2.22 Verisign
ordercheckpays.com/api.js?v=2.23Authorize.Net
ordercheckpays.com/api.js?v=2.24 PayPal
ordercheckpays.com/api.js?v=2.25 PayFort
ordercheckpays.com/api.js?v=2.29 CyberSource
ordercheckpays.com/api.js?v=2.4 PayPal Payflow Pro
ordercheckpays.com/api.js?v=2.7Authorize.Net
ordercheckpays.com/api.js?v=2.8 Authorize.Net
ordercheckpays.com/api.js?v=2.9 Verisign
ordercheckpays.com/api.js?v=3.1 Authorize.Net
ordercheckpays.com/api.js?v=3.2 Authorize.Net
ordercheckpays.com/api.js?v=3.3Sage Pay
ordercheckpays.com/api.js?v=3.4 Authorize.Net
ordercheckpays.com/api.js?v=3.5Stripe
ordercheckpays.com/api.js?v=3.6Authorize.Net
ordercheckpays.com/api.js?v=3.7 Authorize.Net
ordercheckpays.com/api.js?v=3.8 Verisign
ordercheckpays.com/api.js?v=3.9PayPal
ordercheckpays.com/api.js?v=4.0 Authorize.Net
ordercheckpays.com/api.js?v=4.1Authorize.Net
ordercheckpays.com/api.js?v=4.2 Sage Pay
ordercheckpays.com/api.js?v=4.3Authorize.Net
reactjsapi.com/api.js?v=0.1.0 Authorize.Net
reactjsapi.com/api.js?v=0.1.1PayPal
reactjsapi.com/api.js?v=4.1.2 Flint
reactjsapi.com/api.js?v=4.1.4PayPal
reactjsapi.com/api.js?v=4.1.5Sage Pay
reactjsapi.com/api.js?v=4.1.51 Verisign
reactjsapi.com/api.js?v=4.1.6Authorize.Net
reactjsapi.com/api.js?v=4.1.7Authorize.Net
reactjsapi.com/api.js?v=4.1.8 Stripe
reactjsapi.com/api.js?v=4.1.9 Fat Zebra
reactjsapi.com/api.js?v=4.2.0Sage Pay
reactjsapi.com/api.js?v=4.2.1 Authorize.Net
reactjsapi.com/api.js?v=4.2.2 First Data Global Gateway
reactjsapi.com/api.js?v=4.2.3 Authorize.Net
reactjsapi.com/api.js?v=4.2.4 eWAY Rapid
reactjsapi.com/api.js?v=4.2.5 Adyen
reactjsapi.com/api.js?v=4.2.7PayPal
reactjsapi.com/api.js?v=4.2.8 QuickBooks Merchant Services
reactjsapi.com/api.js?v=4.2.9Verisign
reactjsapi.com/api.js?v=4.2.91 Sage Pay
reactjsapi.com/api.js?v=4.2.92Verisign
reactjsapi.com/api.js?v=4.2.94Authorize.Net
reactjsapi.com/api.js?v=4.3.97Authorize.Net
reactjsapi.com/api.js?v=4.5Sage Pay
reactjsapi.com/react.jsAuthorize.Net
sydneysalonsupplies.com/gtm.jseWAY Rapid
tagsmediaget.com/react.jsAuthorize.Net
tagstracking.com/tag.js?v=2.1.2ANZ eGate
tagstracking.com/tag.js?v=2.1.3PayPal
tagstracking.com/tag.js?v=2.1.5CyberSource
tagstracking.com/tag.js?v=2.1.7Authorize.Net
tagstracking.com/tag.js?v=2.1.8Sage Pay
tagstracking.com/tag.js?v=2.1.9Realex
tagstracking.com/tag.js?v=2.2.0CyberSource
tagstracking.com/tag.js?v=2.2.1 PayPal
tagstracking.com/tag.js?v=2.2.2PayPal
tagstracking.com/tag.js?v=2.2.3PayPal
tagstracking.com/tag.js?v=2.2.4Verisign
tagstracking.com/tag.js?v=2.2.5eWAY Rapid
tagstracking.com/tag.js?v=2.2.7Sage Pay
tagstracking.com/tag.js?v=2.2.8Sage Pay
tagstracking.com/tag.js?v=2.2.9Verisign
tagstracking.com/tag.js?v=2.3.0Authorize.Net
tagstracking.com/tag.js?v=2.3.1Authorize.Net
tagstracking.com/tag.js?v=2.3.2First Data Global Gateway
tagstracking.com/tag.js?v=2.3.3Authorize.Net
tagstracking.com/tag.js?v=2.3.4Authorize.Net
tagstracking.com/tag.js?v=2.3.5Moneris
tagstracking.com/tag.js?v=2.3.6Authorize.Net
tagstracking.com/tag.js?v=2.3.8PayPal

Sniffer haseł

Jedną z zalet snifferów JavaScript działających po stronie klienta jest ich uniwersalność: zainstalowany na stronie złośliwy kod może kraść dane każdego rodzaju, zarówno dane płatnicze, jak i login oraz hasło do konta użytkownika. Specjaliści Group-IB odkryli próbkę sniffera z rodziny ReactGet, zaprojektowaną do kradzieży adresów e-mail i haseł użytkowników strony.

Cztery sniffery JavaScript, które czekają na ciebie w sklepach internetowych

Przecięcie z snifferem ImageID

W trakcie analizy jednego z zainfekowanych sklepów ustalono, że jego strona została zainfekowana dwukrotnie: oprócz złośliwego kodu sniffera z rodziny ReactGet, odkryto kod sniffera z rodziny ImageID. To przecięcie może być świadectwem, że operatorzy stojący za wykorzystaniem obu snifferów stosują podobne techniki do wprowadzenia złośliwego kodu.

Cztery sniffery JavaScript, które czekają na ciebie w sklepach internetowych

Uniwersalny sniffer

W trakcie analizy jednej z nazw domen powiązanych z infrastrukturą snifferów ReactGet ustalono, że ta sama osoba zarejestrowała trzy inne nazwy domen. Te trzy domeny imitowały domeny rzeczywiście istniejących stron i wcześniej były wykorzystywane do hostowania snifferów. Analiza kodu trzech legalnych witryn ujawniła nieznany sniffer, a dalsza analiza pokazała, że to ulepszona wersja sniffera ReactGet. Wszystkie wcześniej śledzone wersje snifferów z tej rodziny były skierowane na konkretny system płatności, co oznacza, że dla każdego systemu płatności potrzebna była specjalna wersja sniffera. W tym przypadku jednak odkryto uniwersalną wersję sniffera, zdolną do kradzenia informacji z formularzy związanych z 15 różnymi systemami płatności i modułami ecommerce do przeprowadzania płatności online.

Na początku pracy sniffera poszukiwał podstawowych pól formularza zawierających dane osobowe ofiary: imię i nazwisko, adres fizyczny, numer telefonu.

Cztery sniffery JavaScript, które czekają na ciebie w sklepach internetowych
Następnie sniffer przeszukiwał ponad 15 różnych prefiksów, odpowiadających różnym systemom płatności i modułom do płatności online.

Cztery sniffery JavaScript, które czekają na ciebie w sklepach internetowych
Dane osobowe ofiary oraz informacje o płatnościach były zbierane w całość i wysyłane na kontrolowaną przez przestępcę stronę: w tym konkretnym przypadku odkryto dwie wersje uniwersalnego sniffera ReactGet, umiejscowione na dwóch różnych zhakowanych stronach. Obie wersje wysyłały jednak skradzione dane na tę samą zhakowaną stronę. zoobashop.com.

Cztery sniffery JavaScript, które czekają na ciebie w sklepach internetowych
Analiza prefiksów używanych przez sniffera do wyszukiwania pól zawierających informacje dotyczące płatności ofiary pozwoliła określić, że ten wzór sniffera był skierowany na następujące systemy płatności:

  • Authorize.Net
  • Verisign
  • First Data
  • USAePay
  • Stripe
  • PayPal
  • ANZ eGate
  • Braintree
  • DataCash (MasterCard)
  • Realex Payments
  • PsiGate
  • Heartland Payment Systems

Jakie narzędzia są używane do kradzieży informacji o płatnościach

Pierwszym narzędziem odkrytym w trakcie analizy infrastruktury atakujących jest narzędzie do obfuskacji złośliwych skryptów odpowiedzialnych za kradzież kart bankowych. Na jednym z hostów atakujących znaleziono skrypt bash, który wykorzystuje CLI projektu javascript-obfuscator do automatyzacji obfuskacji kodu snifferów.

Cztery sniffery JavaScript, które czekają na ciebie w sklepach internetowych
Drugie odkryte narzędzie służy do generowania kodu odpowiedzialnego za załadowanie głównego sniffera. To narzędzie generuje kod JavaScript, który sprawdza, czy użytkownik znajduje się na stronie płatności, poprzez wyszukiwanie w bieżącym adresie URL użytkownika ciągów checkout, cart i tak dalej, a jeśli wynik jest pozytywny, to kod ładuje główny sniffer z serwera przestępców. W celu ukrycia złośliwej aktywności wszystkie ciągi, w tym testowe ciągi do określenia strony płatności, jak również link do sniffera, są kodowane przy użyciu base64.

Cztery sniffery JavaScript, które czekają na ciebie w sklepach internetowych

Ataki phishingowe

Podczas analizy infrastruktury sieciowej atakujących ustalono, że często w celu uzyskania dostępu do panelu administracyjnego docelowego sklepu internetowego, grupa przestępcza wykorzystuje phishing. Atakujący rejestrują domenę wizualnie podobną do domeny sklepu, a następnie uruchamiają na niej fałszywą formę logowania do panelu administracyjnego Magento. W przypadku sukcesu atakujący uzyskają dostęp do panelu administracyjnego CMS Magento, co daje im możliwość edytowania komponentów strony i wprowadzenia sniffera do kradzieży danych kart kredytowych.

Cztery sniffery JavaScript, które czekają na ciebie w sklepach internetowych
Infrastruktura

DomenaData odkrycia/pojawienia się
mediapack.info04.05.2017
adsgetapi.com15.06.2017
simcounter.com14.08.2017
mageanalytics.com22.12.2017
maxstatics.com16.01.2018
reactjsapi.com19.01.2018
mxcounter.com02.02.2018
apitstatus.com01.03.2018
orderracker.com20.04.2018
tagstracking.com25.06.2018
adsapigate.com12.07.2018
trust-tracker.com15.07.2018
fbstatspartner.com02.10.2018
billgetstatus.com12.10.2018
aldenmlilhouse.com20.10.2018
balletbeautlful.com20.10.2018
bargalnjunkie.com20.10.2018
payselector.com21.10.2018
tagsmediaget.com02.11.2018
hs-payments.com16.11.2018
ordercheckpays.com19.11.2018
geisseie.com24.11.2018
gtmproc.com29.11.2018
livegetpay.com18.12.2018
sydneysalonsupplies.com18.12.2018
newrelicnet.com19.12.2018
nr-public.com03.01.2019
cloudodesc.com04.01.2019
ajaxstatic.com11.01.2019
livecheckpay.com21.01.2019
asianfoodgracer.com25.01.2019

Rodzina G-Analytics

Ta rodzina snifferów jest wykorzystywana do kradzieży kart klientów sklepów internetowych. Pierwsza domena używana przez grupę została zarejestrowana w kwietniu 2016 roku, co może świadczyć o rozpoczęciu działalności grupy w połowie 2016 roku.

W bieżącej kampanii grupa używa nazw domen imitujących rzeczywiste usługi, takie jak Google Analytics i jQuery, maskując aktywność snifferów legalnymi skryptami oraz podobnymi do legalnych nazwami domen. Atakowane były strony działające na CMS Magento.

Jak G-Analytics jest wdrażany w kodzie sklepu internetowego

Cechą wyróżniającą tej grupy jest wykorzystanie różnych metod kradzieży informacji o płatnościach użytkowników. Oprócz klasycznej techniki wstrzykiwania kodu JavaScript w część klienta strony, grupa przestępcza stosowała również technikę wstrzykiwania kodu w część serwerową strony, mianowicie w skrypty PHP przetwarzające dane wprowadzane przez użytkowników. Ta metoda jest niebezpieczna, ponieważ utrudnia wykrycie złośliwego kodu przez zewnętrznych badaczy. Specjaliści Group-IB odkryli wersję sniffera wstrzykniętego w kod PHP strony, wykorzystującą jako bramę domenę dittm.org.

Cztery sniffery JavaScript, które czekają na ciebie w sklepach internetowych
Została również odkryta wczesna wersja sniffera, wykorzystująca do zbierania skradzionych danych tę samą domenę dittm.org, ale ta wersja jest już przeznaczona do instalacji po stronie klienta sklepu internetowego.

Cztery sniffery JavaScript, które czekają na ciebie w sklepach internetowych
Później grupa zmieniła swoją taktykę i zaczęła zwracać większą uwagę na ukrywanie złośliwej aktywności i maskowanie.

Na początku 2017 roku grupa zaczęła używać domeny jquery-js.com, udającej CDN dla jQuery: po przejściu na stronę przestępców użytkownik jest przekierowywany na legitną stronę jquery.com.

A w połowie 2018 roku grupa przyjęła nazwę domeny g-analytics.com i zaczęła maskować działalność sniffera jako legitimaną usługę Google Analytics.

Cztery sniffery JavaScript, które czekają na ciebie w sklepach internetowych
Cztery sniffery JavaScript, które czekają na ciebie w sklepach internetowych

Analiza wersji

W trakcie analizy domen używanych do przechowywania kodu snifferów ustalono, że na stronie znajduje się wiele wersji, które różnią się obecnością obfuskacji, a także obecnością lub brakiem niedostępnego kodu dodanego do pliku w celu odwrócenia uwagi i ukrycia złośliwego kodu.

Ostatecznie na stronie jquery-js.com zidentyfikowano sześć wersji snifferów. Skradzione dane te sniffery wysyłają na adres znajdujący się na tej samej stronie co sam sniffer: 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

Późniejsza domena g-analytics.com, używana przez grupę w atakach od połowy 2018 roku, służy jako magazyn dla większej liczby snifferów. Ostatecznie wykryto 16 różnych wersji sniffera. W tym przypadku brama do wysyłania skradzionych danych została zamaskowana jako link do obrazu o formacie 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

Monetyzacja skradzionych danych

Grupa przestępcza monetyzuje skradzione dane, sprzedając karty za pośrednictwem specjalnie stworzonego podziemnego sklepu, który świadczy usługi dla koderów. Analiza domen używanych przez atakujących pozwoliła ustalić, że google-analytics.cm został zarejestrowany przez tego samego użytkownika, co domena cardz.vc. Domena cardz.vc dotyczy sklepu sprzedającego skradzione karty bankowe Cardsurfs (Flysurfs), który zyskał popularność jeszcze w czasach aktywności podziemnej giełdy AlphaBay jako sklep sprzedający karty bankowe, skradzione za pomocą sniffera.

Cztery sniffery JavaScript, które czekają na ciebie w sklepach internetowych
Analizując domenę analytic.is, znajdującą się na tym samym serwerze co domeny używane przez sniffery do zbierania skradzionych danych, specjaliści Group-IB odkryli plik zawierający logi Cookie-stealera, który najwyraźniej został później porzucony przez twórcę. Jeden z wpisów w logach zawierał domenę iozoz.com, która wcześniej była używana w jednym z snifferów aktywnych w 2016 roku. Przypuszczalnie ta domena była wcześniej używana przez cyberprzestępcę do zbierania skradzionych danych za pomocą sniffera. Ta domena została zarejestrowana na adres e-mail kts241@gmail.com, który również był używany do rejestracji domen cardz.su i cardz.vc, związanych z kategorią sklepów Cardsurfs.

Na podstawie zebranych danych można przypuszczać, że rodzina snifferów G-Analytics i podziemny sklep ze skradzionymi kartami bankowymi Cardsurfs są zarządzane przez te same osoby, a sklep jest używany do sprzedaży kart bankowych skradzionych za pomocą sniffera.

Infrastruktura

DomenaData odkrycia/pojawienia się
iozoz.com08.04.2016
dittm.org10.09.2016
jquery-js.com02.01.2017
g-analytics.com31.05.2018
google-analytics.is21.11.2018
analytic.to04.12.2018
google-analytics.to06.12.2018
google-analytics.cm28.12.2018
analytic.is28.12.2018
googlc-analytics.cm17.01.2019

Rodzina Illum

Illum to rodzina snifferów stosowanych do ataków na sklepy internetowe działające na CMS Magento. Oprócz wprowadzania złośliwego kodu, operatorzy tego sniffera również korzystają z wprowadzania pełnych fałszywych formularzy płatności, które wysyłają dane do kontrolowanych przez przestępców bramek.

Podczas analizy infrastruktury sieciowej używanej przez operatorów tego sniffera, zauważono dużą ilość złośliwych skryptów, exploitów, fałszywych formularzy płatności, a także zbiorczek wzorców złośliwych snifferów konkurencji. Z informacji dotyczących dat pojawiania się nazw domen używanych przez grupę można przypuszczać, że początek kampanii przypada na koniec 2016 roku.

Jak Illum wprowadza się w kod sklepu internetowego

Pierwsze wykryte wersje sniffera były wprowadzane bezpośrednio do kodu skompromitowanej strony. Skradzione dane były wysyłane na adres cdn.illum[.]pw/records.php, a brama była zakodowana za pomocą base64.

Cztery sniffery JavaScript, które czekają na ciebie w sklepach internetowych
Później odkryto spakowaną wersję sniffera, używającą innej bramy — records.nstatistics[.]com/records.php.

Cztery sniffery JavaScript, które czekają na ciebie w sklepach internetowych
Zgodnie z raportu Willem de Groot, ten sam host był używany w snifferze, który został wdrożony na stronie sklepu, należącego do niemieckiej partii politycznej CSU.

Analiza strony przestępców

Specjaliści Group-IB odkryli i przeanalizowali stronę, używaną przez tę grupę przestępczą do przechowywania narzędzi i zbierania skradzionych informacji.

Cztery sniffery JavaScript, które czekają na ciebie w sklepach internetowych
Wśród narzędzi odkrytych na serwerze przestępców znaleziono skrypty i exploity do podwyższania uprawnień w systemie Linux: na przykład, Linux Privilege Escalation Check Script, opracowany przez Mike'a Czumaka, oraz exploit dla CVE-2009-1185.

Bezpośrednio do ataków na sklepy internetowe przestępcy użyli dwóch exploitów: pierwszy zdolny do wstrzyknięcia złośliwego kodu w core_config_data przy wykorzystaniu eksploatacji CVE-2016-4010, drugi eksploatuje podatność RCE w wtyczkach CMS Magento, pozwalając na wykonanie dowolnego kodu na podatnym serwerze WWW.

Cztery sniffery JavaScript, które czekają na ciebie w sklepach internetowych
Podczas analizy serwera odkryto również różne próbki snifferów i fałszywych formularzy płatności, używanych przez przestępców do zbierania informacji płatniczych z hakowanych stron. Jak można zauważyć z poniższej listy, niektóre skrypty były indywidualnie tworzone dla każdej hakowanej strony, podczas gdy dla określonych CMS i bramek płatności używano uniwersalnego rozwiązania. Na przykład, skrypty segapay_standart.js i segapay_onpage.js są przeznaczone do wstrzykiwania na strony korzystające z bramki płatności Sage Pay.

Lista skryptów dla różnych bramek płatności

SkryptBramka płatności
sr.illum[.]pw/mjs_special/visiondirect.co.uk.js//request.payrightnow[.]cf/checkpayment.php
sr.illum[.]pw/mjs_special/topdierenshop.nl.js//request.payrightnow[.]cf/alldata.php
sr.illum[.]pw/mjs_special/tiendalenovo.es.js//request.payrightnow[.]cf/alldata.php
sr.illum[.]pw/mjs_special/pro-bolt.com.js//request.payrightnow[.]cf/alldata.php
sr.illum[.]pw/mjs_special/plae.co.js//request.payrightnow[.]cf/alldata.php
sr.illum[.]pw/mjs_special/ottolenghi.co.uk.js//request.payrightnow[.]cf/alldata.php
sr.illum[.]pw/mjs_special/oldtimecandy.com.js//request.payrightnow[.]cf/checkpayment.php
sr.illum[.]pw/mjs_special/mylook.ee.js//cdn.illum[.]pw/records.php
sr.illum[.]pw/mjs_special/luluandsky.com.js//request.payrightnow[.]cf/checkpayment.php
sr.illum[.]pw/mjs_special/julep.com.js//cdn.illum[.]pw/records.php
sr.illum[.]pw/mjs_special/gymcompany.es.js//request.payrightnow[.]cf/alldata.php
sr.illum[.]pw/mjs_special/grotekadoshop.nl.js//request.payrightnow[.]cf/alldata.php
sr.illum[.]pw/mjs_special/fushi.co.uk.js//request.payrightnow[.]cf/checkpayment.php
sr.illum[.]pw/mjs_special/fareastflora.com.js//request.payrightnow[.]cf/checkpayment.php
sr.illum[.]pw/mjs_special/compuindia.com.js//request.payrightnow[.]cf/alldata.php
sr.illum[.]pw/mjs/segapay_standart.js//cdn.illum[.]pw/records.php
sr.illum[.]pw/mjs/segapay_onpage.js//cdn.illum[.]pw/records.php
sr.illum[.]pw/mjs/replace_standart.js//request.payrightnow[.]cf/checkpayment.php
sr.illum[.]pw/mjs/all_inputs.js//cdn.illum[.]pw/records.php
sr.illum[.]pw/mjs/add_inputs_standart.js//request.payrightnow[.]cf/checkpayment.php
sr.illum[.]pw/magento/payment_standart.js//cdn.illum[.]pw/records.php
sr.illum[.]pw/magento/payment_redirect.js//payrightnow[.]cf/?payment=
sr.illum[.]pw/magento/payment_redcrypt.js//payrightnow[.]cf/?payment=
sr.illum[.]pw/magento/payment_forminsite.js//paymentnow[.]tk/?payment=

Host paymentnow[.]tk, używana jako brama w skrypcie payment_forminsite.js, została odkryta jako subjectAltName w kilku certyfikatach związanych z usługą CloudFlare. Ponadto na hoście znajdował się skrypt evil.js. Sądząc po nazwie skryptu, mógł on być użyty w ramach eksploatacji CVE-2016-4010, dzięki czemu można wstrzyknąć złośliwy kod do stopki strony zarządzanej przez CMS Magento. Jako bramę ten skrypt wykorzystał host request.requestnet[.]tk, używający tego samego certyfikatu, co host paymentnow[.]tk.

Fałszywe formularze płatności

Poniżej na rysunku pokazano przykład formularza do wprowadzenia danych karty. Ten formularz był używany do wstrzyknięcia na stronę sklepu internetowego i kradzieży danych kart.

Cztery sniffery JavaScript, które czekają na ciebie w sklepach internetowych
Na następnym rysunku znajduje się przykład fałszywego formularza płatności PayPal, który był wykorzystywany przez cyberprzestępców do infiltracji stron korzystających z tej metody płatności.
Cztery sniffery JavaScript, które czekają na ciebie w sklepach internetowych
Infrastruktura

DomenaData odkrycia/pojawienia się
cdn.illum.pw27/11/2016
records.nstatistics.com06/09/2018
request.payrightnow.cf25/05/2018
paymentnow.tk16/07/2017
payment-line.tk01/03/2018
paymentpal.cf04/09/2017
requestnet.tk28/06/2017

Rodzina CoffeMokko

Rodzina snifferów CoffeMokko, przeznaczonych do kradzieży danych kart bankowych użytkowników sklepów internetowych, jest używana co najmniej od maja 2017 roku. Prawdopodobnie operatorami tej rodziny snifferów jest grupa przestępcza Group 1, opisana przez specjalistów RiskIQ w 2016 roku. Ataki miały miejsce na stronach działających na takich CMS-ach jak Magento, OpenCart, WordPress, osCommerce, Shopify.

Jak CoffeMokko infiltruje kod sklepu internetowego

Operatorzy tej rodziny tworzą unikalne sniffery dla każdego zainfekowania: plik sniffera znajduje się w katalogu src lub js na serwerze cyberprzestępców. Infiltracja kodu strony odbywa się poprzez bezpośredni link do sniffera.

Cztery sniffery JavaScript, które czekają na ciebie w sklepach internetowych
W kodzie sniffera są sztywno zakodowane nazwy pól formularza, z których należy ukraść dane. Sniffer sprawdza również, czy użytkownik znajduje się na stronie płatności, porównując listę słów kluczowych z bieżącym adresem użytkownika.

Cztery sniffery JavaScript, które czekają na ciebie w sklepach internetowych
Niektóre wykryte wersje sniffera były zablokowane i zawierały szyfrowany ciąg, w którym przechowywana była główna tablica zasobów: to w niej znajdowały się nazwy pól formularzy dla różnych systemów płatności, a także adres bramki, na który należało wysyłać skradzione dane.

Cztery sniffery JavaScript, które czekają na ciebie w sklepach internetowych
Skradzione informacje płatnicze były wysyłane do skryptu na serwerze cyberprzestępców przez /savePayment/index.php или /tr/index.php. Prawdopodobnie ten skrypt służy do przekazywania danych z bramki na główny serwer, który konsoliduje dane ze wszystkich snifferów. Aby ukryć przesyłane dane, cała informacja płatnicza ofiary jest szyfrowana przy użyciu base64, a następnie następuje kilka zamian symboli:

  • symbol «e» zamieniany jest na «:»
  • symbol «w» zamieniany jest na «+»
  • symbol «o» zamieniany jest na «%»
  • symbol «d» zamieniany jest na «#»
  • symbol «a» zamieniany jest na «-»
  • symbol «7» zamieniany jest na «^»
  • symbol «h» zamieniany jest na «_»
  • symbol «T» zamieniany jest na «@»
  • symbol «0» zamieniany jest na «/»
  • symbol «Y» zamieniany jest na «*»

W wyniku zamian symboli zakodowane przy użyciu base64 dane są niemożliwe do dekodowania, nie przeprowadzając odwrotnej konwersji.

Oto fragment kodu sniffera, który nie był poddany obfuskacji:

Cztery sniffery JavaScript, które czekają na ciebie w sklepach internetowych

Analiza infrastruktury

W wcześniejszych kampaniach przestępcy rejestrowali domeny podobne do domen legitnych stron internetowych sklepów online. Ich domena mogła różnić się od legitnej o jeden znak lub inny TLD. Zarejestrowane domeny były używane do przechowywania kodu sniffera, którego link był osadzony w kodzie sklepu.

Ta grupa również używała domen przypominających nazwy popularnych wtyczek jQuery (slickjs[.]org dla stron korzystających z wtyczki slick.js), bramek płatności (sagecdn[.]org dla stron korzystających z systemu płatności Sage Pay).

Później grupa zaczęła tworzyć domeny, których nazwa nie miała nic wspólnego ani z domeną sklepu, ani z tematyką sklepu.

Cztery sniffery JavaScript, które czekają na ciebie w sklepach internetowych
Każdej domenie odpowiadała strona, na której tworzono katalog /js lub /src. W tym katalogu przechowywane były skrypty snifferów: po jednym snifferze na każde nowe zarażenie. Sniffer był wprowadzany do kodu strony przez bezpośredni link, ale w rzadkich przypadkach przestępcy modyfikowali jeden z plików strony i dodawali do niego złośliwy kod.

Analiza kodu

Pierwszy algorytm obfuskacji

W niektórych wykrytych próbkach snifferów tej rodziny kod był obfuskowany i zawierał zaszyfrowane dane niezbędne do działania sniffera: w szczególności adres bramy sniffera, listę pól formularza płatności, a w niektórych przypadkach – kod fałszywego formularza płatności. W kodzie wewnątrz funkcji zasoby były zaszyfrowane przy pomocy XOR za pomocą klucza, który był przekazywany jako argument tej samej funkcji.

Cztery sniffery JavaScript, które czekają na ciebie w sklepach internetowych
Po odszyfrowaniu ciągu odpowiednim kluczem, unikalnym dla każdej próbki, można uzyskać ciąg zawierający wszystkie ciągi z kodu sniffera oddzielone separatorem.

Cztery sniffery JavaScript, które czekają na ciebie w sklepach internetowych

Drugi algorytm obfuskacji

W nowszych próbkach snifferów tej rodziny zastosowano inny mechanizm obfuskacji: w tym przypadku dane były zaszyfrowane przy pomocy własnego algorytmu. Ciąg zawierający zaszyfrowane dane konieczne do działania sniffera był przekazywany jako argument funkcji deszyfrującej.

Cztery sniffery JavaScript, które czekają na ciebie w sklepach internetowych
Za pomocą konsoli przeglądarki można odszyfrować zaszyfrowane dane i uzyskać tablicę zawierającą zasoby sniffera.

Cztery sniffery JavaScript, które czekają na ciebie w sklepach internetowych

Związek z wcześniejszymi atakami MageCart

W trakcie analizy jednej z domen używanych przez grupę jako brama do zbierania skradzionych danych ustalono, że na tej domenie uruchomiona jest infrastruktura do kradzieży kart kredytowych, identyczna z tą, która była używana przez Grupę 1 — jedną z pierwszych grup, wykryta przez specjalistów RiskIQ.

Na hoście rodziny sniffersów CoffeMokko znaleziono dwa pliki:

  • mage.js — plik zawierający kod sniffersów Grupy 1 z adresem bramy js-cdn.link
  • mag.php — skrypt PHP odpowiedzialny za zbieranie danych skradzionych przez sniffers.

Содержимое файла mage.js Cztery sniffery JavaScript, które czekają na ciebie w sklepach internetowych
Ustalono także, że najwcześniejsze domeny używane przez grupę stojącą za rodziną sniffersów CoffeMokko były zarejestrowane 17 maja 2017 roku:

  • link-js[.]link
  • info-js[.]link
  • track-js[.]link
  • map-js[.]link
  • smart-js[.]link

Format tych nazw domen pokrywa się z nazwami domen Grupy 1, które były używane w atakach w 2016 roku.

Na podstawie odkrytych faktów można wysunąć przypuszczenie, że istnieje związek między operatorami sniffersów CoffeMokko a grupą przestępczą Grupą 1. Przypuszczalnie operatorzy CoffeMokko mogli zapożyczyć od swoich poprzedników narzędzia i oprogramowanie do kradzieży kart. Jest jednak bardziej prawdopodobne, że grupa przestępcza odpowiedzialna za wykorzystanie sniffersów rodziny CoffeMokko to ci sami ludzie, którzy przeprowadzali ataki w ramach działalności Grupy 1. Po publikacji pierwszego raportu dotyczącego działalności grupy przestępczej wszystkie ich nazwy domen zostały zablokowane, a narzędzia dokładnie zbadane i opisane. Grupa była zmuszona do przerwy, aby poprawić swoje wewnętrzne narzędzia i przepisać kod sniffersów, aby kontynuować ataki i pozostać niezauważonymi.

Infrastruktura

DomenaData odkrycia/pojawienia się
link-js.link17.05.2017
info-js.link17.05.2017
track-js.link17.05.2017
map-js.link17.05.2017
smart-js.link17.05.2017
adorebeauty.org03.09.2017
security-payment.su03.09.2017
braincdn.org04.09.2017
sagecdn.org04.09.2017
slickjs.org04.09.2017
oakandfort.org10.09.2017
citywlnery.org15.09.2017
dobell.su04.10.2017
childsplayclothing.org31.10.2017
jewsondirect.com05.11.2017
shop-rnib.org15.11.2017
closetlondon.org16.11.2017
misshaus.org28.11.2017
battery-force.org01.12.2017
kik-vape.org01.12.2017
greatfurnituretradingco.org02.12.2017
etradesupply.org04.12.2017
replacemyremote.org04.12.2017
all-about-sneakers.org05.12.2017
mage-checkout.org05.12.2017
nililotan.org07.12.2017
lamoodbighats.net08.12.2017
walletgear.org10.12.2017
dahlie.org12.12.2017
davidsfootwear.org20.12.2017
blackriverimaging.org23.12.2017
exrpesso.org02.01.2018
parks.su09.01.2018
pmtonline.su12.01.2018
ottocap.org15.01.2018
christohperward.org27.01.2018
coffetea.org31.01.2018
energycoffe.org31.01.2018
energytea.org31.01.2018
teacoffe.net31.01.2018
adaptivecss.org01.03.2018
coffemokko.com01.03.2018
londontea.net01.03.2018
ukcoffe.com01.03.2018
labbe.biz20.03.2018
batterynart.com03.04.2018
btosports.net09.04.2018
chicksaddlery.net16.04.2018
paypaypay.org11.05.2018
ar500arnor.com26.05.2018
authorizecdn.com28.05.2018
slickmin.com28.05.2018
bannerbuzz.info03.06.2018
kandypens.net08.06.2018
mylrendyphone.com15.06.2018
freshchat.info01.07.2018
3lift.org02.07.2018
abtasty.net02.07.2018
mechat.info02.07.2018
zoplm.com02.07.2018
zapaljs.com02.09.2018
foodandcot.com15.09.2018
freshdepor.com15.09.2018
swappastore.com15.09.2018
verywellfitnesse.com15.09.2018
elegrina.com18.11.2018
majsurplus.com19.11.2018
top5value.com19.11.2018

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster