Merhaba arkadaşlar, ben Cem Zengin.

Kurumsal bir ağda bir son kullanıcı bilgisayarına fidye yazılımı (ransomware), truva atı (trojan) veya casus yazılım (spyware) bulaştığında, bu zararlı yazılımın ilk yapacağı işlem saldırganın Komuta ve Kontrol (Command and Control - C2) sunucusuyla iletişim kurmaktır. Bu iletişim genellikle rastgele üretilmiş kötü niyetli alan adları (DGA - Domain Generation Algorithms) üzerinden DNS sorguları ile başlatılır.

Geleneksel güvenlik duvarları bu DNS sorgusunu normal bir internet trafiği gibi geçirirken, Palo Alto Networks NGFW, bünyesindeki DNS Security ve Anti-Spyware DNS Sinkhole mekanizması ile bu saldırıları anında felç eder.

Bu rehberde; Palo Alto üzerinde DNS Sinkhole teknolojisinin çalışma prensibini, Anti-Spyware profili yapılandırmasını ve özellikle dahili (Internal) DNS sunucusu kullanan kurumlarda enfekte olmuş gerçek istemci bilgisayarı saniyeler içinde tespit etmenin altın yöntemini adım adım ele alacağız.


1. DNS Sinkhole Nedir ve Nasıl Çalışır?

Normal şartlarda istemci kötü amaçlı bir alan adına (Örn: malicious-c2-server.com) erişmek istediğinde, DNS sunucusuna sorar ve DNS sunucusu saldırganın gerçek IP adresini döner. İstemci de bu IP’ye bağlanarak verileri sızdırır veya şifreleme anahtarını indirir.

DNS Sinkhole devreye girdiğinde ise:

  1. İstemci zararlı alan adını sorgular.
  2. Palo Alto güvenlik duvarı, DNS paketini inceler ve alan adının küresel tehdit istihbaratında (Unit 42 / DNS Security bulutunda) zararlı olduğunu fark eder.
  3. Palo Alto, saldırganın gerçek IP adresi yerine istemciye sahte, erişilemez ve tanımlı bir IP adresi döner (Örneğin: 72.5.65.111 veya özel bir Sinkhole IP’si).
  4. İstemci bu sahte IP’ye bağlanmaya çalıştığında trafik güvenlik duvarında yakalanır ve saldırı başlamadan engellenir.

2. Büyük Problem: Dahili DNS Sunucusu Olan Ağlarda İstemciyi Bulmak

Pek çok kurumsal yapıda son kullanıcılar doğrudan dış DNS’e (8.8.8.8 vb.) gitmez; sorgularını Active Directory Domain Controller / Dahili DNS sunucusuna yönlendirir.

Bu durumda Palo Alto Threat loglarına baktığınızda sorguyu yapan kaynak IP olarak yalnızca Dahili DNS sunucunuzu (Örn: 192.168.1.10) görürsünüz! Hangi kullanıcının veya hangi bilgisayarın bu zararlı siteye gitmek istediğini DNS loglarından ayıklamak saatler alabilir.

Çözüm: “Sinkhole Trafiğini Yakalama” Kuralı (Best Practice)

Palo Alto istemciye sahte Sinkhole IP’sini döndüğünde, enfekte olan bilgisayar o IP adresine TCP/UDP üzerinden bağlanmayı deneyecektir. İşte bu denemeyi yakalamak için en tepeye özel bir Güvenlik Kuralı (Security Rule) yazarız. Böylece loglarda gerçek enfekte istemcinin yerel IP adresi kabak gibi ortaya çıkar.


3. Adım: Anti-Spyware Profilinde DNS Sinkhole Yapılandırması

İlk olarak Anti-Spyware profilimizde DNS Signature aksiyonunu Sinkhole olarak ayarlayalım:

Web GUI ile:

  1. Objects ➔ Security Profiles ➔ Anti-Spyware sekmesine gidin.
  2. Mevcut profilinizi klonlayın veya Add diyerek yeni bir profil oluşturun: SecProfile-AntiSpyware-Strict.
  3. DNS Signatures sekmesine geçin.
  4. Action on DNS Queries tablosunda tüm tehdit seviyeleri (critical, high, medium) için aksiyonu sinkhole olarak seçin.
  5. Sinkhole IPv4: Palo Alto varsayılanı olan pan-sinkhole-default-ip (72.5.65.111) seçin veya kurumunuza ait rotalanmayan özel bir IP (Örn: 10.254.254.254) tanımlayın.
  6. Sinkhole IPv6: ::1 veya varsayılan IPv6 sinkhole adresini bırakın.

CLI ile:

set profiles spy-ware SecProfile-AntiSpyware-Strict botnet-domains dns-security-categories any action sinkhole
set profiles spy-ware SecProfile-AntiSpyware-Strict botnet-domains sinkhole ipv4 72.5.65.111
set profiles spy-ware SecProfile-AntiSpyware-Strict botnet-domains sinkhole ipv6 2600:1901:0:98b::1

4. Adım: Enfekte İstemciyi Yakalayacak Güvenlik Kuralını (Security Policy) Yazma

İç ağdaki enfekte makinenin Sinkhole IP’sine yapacağı bağlantıyı anında loglayıp engellemek için kurallarımızın en üstüne şu politikayı ekliyoruz:

Güvenlik Politikası Parametreleri:

  • Name: CATCH-SINKHOLE-INFECTED-HOSTS
  • Source Zone: Trust (İç Ağ / Kullanıcı VLAN’ları)
  • Source Address: any
  • Destination Zone: Untrust (veya any)
  • Destination Address: 72.5.65.111 (Tanımladığınız Sinkhole IP adresi)
  • Application: any
  • Service: any
  • Action: Deny (veya Drop)
  • Log Setting: Log at Session End kutucuğunu mutlaka işaretleyin!
set rulebase security rules CATCH-SINKHOLE-INFECTED-HOSTS from Trust to Untrust source any destination 72.5.65.111 application any service any action drop log-end yes

[!IMPORTANT] Bu kural mutlaka genel internete çıkış kurallarının üstünde yer almalıdır. Aksi takdirde trafik genel internet kuralına takılır ve loglarda kural adını ayırt etmeniz zorlaşır.


5. Adım: Tehdit Profil Grubunu (Profile Group) Genel Kurallara Bağlama

DNS trafiğinin aktığı (kullanıcıların DNS sunucusuna veya DNS sunucusunun internete çıktığı) güvenlik kuralına hazırladığımız Anti-Spyware profilini bağlayalım:

  1. Policies ➔ Security ➔ DNS trafiğine izin veren kuralı (Örn: Allow-DNS-Out) açın.
  2. Actions sekmesine gelin.
  3. Profile Setting alanında Profile Type: Profiles seçin.
  4. Anti-Spyware: SecProfile-AntiSpyware-Strict profilini bağlayın.
  5. Değişiklikleri kaydetmek için sağ üstteki Commit butonuna basarak konfigürasyonu uygulayın.

6. Enfekte Cihazın Tespiti ve Log Analizi

Sistem devreye girdikten sonra ağda zararlı bir aktivite olduğunda iki farklı log ekranından takip yapabilirsiniz:

1. DNS Aşamasındaki Tehdit Logu:

  • Monitor ➔ Threat sekmesini açın.
  • Filtre kutusuna şunu yazın:
    ( subtype eq spyware ) and ( action eq sinkhole )
    
  • Burada zararlı alan adını (Domain Name) ve DNS sorgusunu yönlendiren sunucuyu görürsünüz.

2. Gerçek Enfekte İstemcinin Bulunması (Trafik Logu):

  • Monitor ➔ Traffic sekmesini açın.
  • Filtre kutusuna Sinkhole IP’sini yazın:
    ( addr.dst in 72.5.65.111 )
    
  • Source IP sütununda görünen IP adresi (Örn: 192.168.10.114), ağınızda zararlı yazılım bulaşmış ve hemen karantinaya almanız gereken gerçek bilgisayardır!

7. CLI ile Doğrulama ve Test

Konfigürasyonun çalıştığından emin olmak için Palo Alto CLI üzerinden DNS Sinkhole sorgularını test edebilirsiniz:

# DNS Proxy ve Threat istatistiklerini kontrol et
show running dns-proxy statistics

# Cihaz üzerindeki Sinkhole IP yapılandırmasını görüntüle
show system state | match sinkhole

Özet

Palo Alto Networks’ün DNS Sinkhole özelliği, kurumsal siber savunmada proaktif güvenliğin en zarif örneklerinden biridir. Saldırganın sunucusu ile kurban makine arasındaki bağı DNS seviyesinde koparmakla kalmaz; oluşturduğumuz özel Sinkhole izleme kuralı sayesinde ağdaki enfekte makinenin saatlerce log incelemeye gerek kalmadan anında tespit edilmesini sağlar.