Python ile Repütasyon Tabanlı Tespit

Repütasyon, bir dosyanın, domainin, IP adresinin itibarını(?) belirler. Repütasyon tabanlı tespit sistemlerinde amaç repütasyonu düşük davranışların yakalanmasıdır (Düşük repütasyonlu dosyanın açılması, IP adresine istek atılması gibi). Bu sistemi kullanan bir ağ içerisinde daha önce sıklıkla zararlı yazılımlarla ilişkilendirilmiş ve repütasyonu düşmüş bir IP adresine istek yapıldığında, şüpheli durum fark edilecektir.

Bu yazıda basitçe repütasyon tabanlı tespit sistemi oluşturmaktan bahsedeceğim. Repütasyon verileri için ücretsiz 3. parti kaynaklardan yaralanacağım.

Bazı veri kaynakları:

malwaredomainlist.com

SANS

abuse.ch

Sistem temel olarak 3 aşamadan oluşuyor:

1- Ağ trafiğinin izlenmesi

2- Repütasyon bilgisi için 3. parti kaynaklardan verilerin toplanması

3- Cihazların iletişim kurduğu adresler ile kaynaklardan gelen verilerin karşılaştırılması

1- Ağ trafiğinin izlenmesi

Kayıtların incelenmesi için istemcilerin ağ bağlantı loglarını güvenlik sunucusuna yönlendirilmesi gerekir. Bu çalışmada loglar “tcpdump” ile kayıt altına alınıp, “.pcap” formatında yönlendirilmiştir.

2- Repütasyon bilgisi için 3. parti kaynaklardan verilerin toplanması

Geçmişte zararlı yazılımlarla ilişkilendirilmiş IP adreslerinin bir kısmı “abuse.ch” nin paylaştığı listeden elde edilebilir. Aşağıdaki görseldeki basit script ile “IP_list.txt” dosyasına veriler yazılır. 

IP_list.txt içeriği:

Mevcut verilere yenilerini eklemek için adreste paylaşılan verilerin günlük olarak toplanması gerekir. Linux sistemlerde bulunan “crontab” yardımı ile “get_IPs.sh” scripti hergün otomatik olarak çalıştırılabilir. 

crontab içerisine yeni bir iş tanımlamak için “crontab -e” komutunu kullanıyorum ve en alt satıra “0 18 * * * /home/ogunal/get_IPs.sh” ekleyerek scriptimin her gün akşam 6 da çalışmasını sağlıyorum.

Bu aşamada 3.parti kaynaktan gelen verinin günlük olarak yenilenmesini sağlamış olduk.

3- Cihazların iletişim kurduğu adresler ile kaynaklardan gelen verilerin karşılaştırılması

Bu kısımda gelen loglardan IP adreslerini ayıklayıp 3.parti kaynak verisi ile karşılaştırıp, eşleşme olursa ekrana uyarı basmasını sağlayacağız.

İlk olarak “.pcap” formatı ile gelen loglar içerisinden IP adreslerini ayıklamak için aşağıdaki fonksiyonu hazırladım.Bu fonksiyon ile pcap içerisindeki IP adreslerini bir listeye aktardım. 

2. aşamada hazırlanan IP adreslerinin bulunduğu .txt dosyasını okuyan ve verileri listeye aktaran başka bir fonksiyon daha hazırladım.

Daha sonra mevcut 2 listenin kesişimini alarak repütasyonu düşük olan IP adresleri ile herhangi bir iletişimin olup olmadığını belirleyen kodu hazırladım.

Uygulamayı çalıştırdığımda log kayıtları içerisinde listedeki IP adreslerinden herhangi biri varsa ekrana basıyor.

Repütasyon tabanlı tespit sisteminin sorunları

  • IP adresinin birden fazla domaine bağlı olması:
    • Bir tarafta zararlı amaçlar için kullanılan domain varken öbür tarafta sıradan bir blog bulunabilir. Bu durumda zararsız olan bloga yapılan istekler de IP adresinden dolayı sistem tarafından şüpheli gözükecektir.
  • IP adresinin sahibinin değişmesi
    • IP adresinin sahibinin el değiştirmesinden sonra adres hala listede ise yeni içeriğe yapılan istekler de şüpheli görülecektir. 

Tek Yorum

  1. oral durali demiş ki:

    Hocam Tebrik Ederim faydalı bir yazı olmuş

    13 Mart 2020
    Yanıtla

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir