𝗛𝗼𝘄 𝗜 𝗧𝗿𝗮𝗰𝗸𝗲𝗱 𝗮 𝗦𝘁𝗲𝗮𝗹𝘁𝗵𝘆 𝗜𝗻𝗷𝗲𝗰𝘁𝗶𝗼𝗻 𝗮𝗻𝗱 𝗛𝗮𝗿𝗱𝗲𝗻𝗲𝗱 𝘁𝗵𝗲 𝗘𝗻𝘃𝗶𝗿𝗼𝗻𝗺𝗲𝗻𝘁 (Note: Unicode bold characters are preserved as text content, but translated to Turkish equivalent meaning) Gizli Bir Enjeksiyonu Nasıl Takip Ettim ve Ortamı Nasıl Güçlendirdim

Bir kötü amaçlı yazılım taraması yaparsınız. Çekirdek dosyaları değiştirirsiniz. Eklentileri günceller ve şifreleri değiştirirsiniz. Site temiz görünür.

İki gün sonra müşteri arar. Yeni yönetici hesapları geri gelmiştir. Ziyaretçiler kötü amaçlı sitelere yönlendirilmektedir.

Bu, kalıcılığın (persistence) kabusudur.

Standart güvenlik eklentileri genellikle başarısız olur. Gelişmiş saldırganlar sadece tek bir payload bırakmazlar. Meşru dosyaların içine gizlenen iç içe geçmiş arka kapılar (backdoors) inşa ederler.

Yakın zamanda, üç temizleme girişiminin başarısız olduğu bir vakayı ele aldım. Belirtiler spesifikti:

• Hayalet Yöneticiler: Her 48 saatte bir rastgele isimlere sahip yeni hesaplar ortaya çıkıyordu. • Koşullu Yönlendirmeler: Kötü amaçlı siteyi yalnızca arama motorlarından gelen yeni ziyaretçiler görüyordu. Geliştiriciler hiçbir şey görmüyordu.

Ekip, WordPress çekirdek dosyalarının üzerine çoktan yazmış ve eklentileri güncellemişti. Tarayıcılar hiçbir şey göstermiyordu. Kötü amaçlı yazılım bir hidra gibi kendini yeniden üretiyordu.

Saldırganın veritabanında veya bir cron işinde (cron job) bir kalıcılık mekanizması vardı. Kod özel (custom) olduğu için otomatik tarayıcılar bunu kaçırdı.

Gerçeği bulmak için komut satırını kullandım.

İlk olarak, checksum'ları kullanarak çekirdek dosyaları doğruladım: wp core verify-checksums

Çekirdek temizdi. Arka kapı wp-content içinde veya veritabanındaydı.

Son 7 gün içinde değiştirilen dosyaları aradım: find . -type f -mtime -7 -name "*.php"

Ardından, eval() veya base64_decode() gibi şüpheli fonksiyonları aradım: grep -rnw './wp-content/' -e 'eval(' -e 'base64_decode('

Güncelliğini yitirmiş bir premium eklentinin içine gömülmüş bir dosya buldum. Ancak eklentiyi silmek enfeksiyonu durdurmadı.

Saldırgan, wp_options tablosunda cron seçeneği altına bir tetikleyici bırakmıştı. WordPress cron'u her çalıştığında yeni bir payload çekiyordu. Çekirdek dosyalar temizlendikten dakikalar sonra onları yeniden enfekte ediyordu.

Bunu düzeltmek için katı bir sıra izlemelisiniz:

  1. Veritabanı Temizliği (Scrubbing)
  1. Dosya Sistemi Arındırması (Purge)
  1. Kimlik Bilgisi Rotasyonu (Credential Rotation)

Ayrıca, tekrarını önlemek için üç koruma mekanizması (guardrails) uyguladım:

• Kenar Koruması: Hassas dizinlere gelen şüpheli POST isteklerini engellemek için Cloudflare WAF kullandım. • Dosya İzinleri: Dizin yapısını kilitledim. Dizinleri 755, dosyaları ise 644 yaptım. wp-config.php dosyasını salt okunur olarak ayarladım. • Düzenlemeyi Devre Dışı Bırakma: wp-config.php dosyasına DISALLOW_FILE_EDIT ve DISALLOW_FILE_MODS ekledim. Bu, herhangi birinin yönetim paneli üzerinden kodları değiştirmesini engeller.

Bir eklentiden gelen yeşil onay işaretine güvenmeyin. Bir ihlal gerçekleştiğini varsayın. Sitenizi içeriden dışarıya doğru koruyun.

Kaynak: https://dev.to/jahidshah/how-i-tracked-a-stealthy-injection-and-hardened-the-environment-4clm