top of page

Graylog ile DNS isteklerinin izlenmesi ve zararlı yazılımların algılanması.


(Aşağıdaki yazı Graylog web sitesindeki aynı isimli blog yazısından aslına sadık kalınarak ve kısaltılarak çevrilmiştir.)

Bu yazı, DNS isteklerinin toplanması ve analizini kapsayan iki bölümlü bir dizinin ilkidir. Bir sonraki yazımızda, siber tehdit istihbarat veritabanlarını Graylog ile entegre ederek kötü eylemler ve aktörlerini otomatik olarak işaretlemenin üzerinde de duracağız.

Başlıyoruz !

Neden DNS isteklerini izliyoruz?

Eğer bir bilgisayar zararlı bir yazılımla enfekte olmuşsa, çoğu durumda kötü amaçlı yazılım veya saldırgan sonraki adımda üç şeyden birini yapacaktır: daha fazla kod yüklemeye çalışmak, verileri sızdırmak için bir arka kapı açmak veya daha fazla talimat beklemek. Zararlı yazılımları incelediğimizde, genelde saldırganın kodunun içine sabitlenmiş bir IP yerine bir etki alanı adı kullandığını görüyoruz.

Bunun bizim açımızdan ne avantajı var ? diye bakarsak, bir DNS araması ile bazı erişim isteklerini kolaylıkla fark edebilir, saldırının yol açtığı sonuçlar hakkında fikir sahibi olabiliriz.

Bu tekniği kullanmanın diğer bir yararı da, içeriye yönelik saldırıları anında tespit edebilmemizdir.

Örneğin, epostayla gelen kimlik avı (phishing) bağlantısını tıklayan bir kullanıcı, "sahte" web sitesini açmak için tarayıcısı DNS aramasını gerçekleştirdiği anda yakalanır. Aynı durum, virüsle enfekte olmuş makineler komuta ve kontrol ana bilgisayarlarına ulaşmayı denediğinde de gerçekleşir.

DNS verilerini nasıl yakalayabilirim?

Tüm DNS isteklerini toplamak için klasik yaklaşım, DNS sunucularının aldığı tüm DNS isteklerini bir günlük dosyasına yazmak ve daha sonra bu günlükleri Graylog'a aktarmaktır. Bununla birlikte, bu yaklaşımla ilgili bilinmesi gereken en az 3 potansiyel sorunlu nokta bulunuyor :

  1. DNS sunucusu günlükleri, sınıflandırılması ve işlenmesi (parsing) oldukça zor veri tipleridir ve bu da zamanla can sıkıcı bir hal alabilir.

  2. Kendi DNS sunucularınıza sahip değilseniz, ancak internetteki DNS sunucularına güveniyorsanız, bu sunucuya gönderilen istekleri bir günlüğe kaydettiremezsiniz. Buna ek olarak, bazı uzak nokta ve şubelerdeki Routing / DNS aygıtlarının aldıkları istekleri kaydettirmenize izin vermediği de vakalarda görülmektedir.

  3. Zararlı yazılım / saldırgan doğrudan Internet'teki bir DNS sunucusu kullanacak şekilde ayarlıysa, bun algılamanızı engellemek veya iç DNS sunucularınızı devre dışı bırakmak için bir Google DNS veya OpenDNS sunucusuna sorabilir ve bunu farkedemeyebilirsiniz.

  4. Hızlı akışlı (Fast-flux) botnet'ler genellikle kendi kısa ömürlü DNS sunucularını çalıştırır.

Farklı bir yaklaşım, fiziksel ağ kablolarınız üzerinden geçen tüm DNS isteklerini dinlemektir. DNS sunucularınıza giden ve ağınızı terk eden tüm trafiği dinleyerek, her DNS isteğini loglayabilirsiniz. Bir "span port" tüm DNS isteklerini algılamanıza ve loglamanıza izin verecektir.

Bu yaklaşımı kullanan bir mimari aşağıda gösterilmiştir:

Aşağıdaki örnekte; önce tüm trafiği bir "span port"a yönlendirecek, bu portta çalışan sunucu üzerinde de DNS trafiğini dinlemek için Packetbeat kullanacağız ve son olarak destination_port:53 ile ihtiyaç duyduğumuz tüm DNS verisini loglayacağız.

Packetbeat'ı Yapılandırma

Packetbeat yapılandırma dosyası.

Packetbeat'a aşağıdaki komutları gönderir ...

  • Tüm ağ arayüzlerini (Interfaces) dinle

  • 53 no'lu bağlantı noktasındaki DNS isteklerini algıla

  • Tüm günlükleri, dinleyen Graylog Beats girişine ilet port 15999.

Bu işlemin ardından son olarak, Packetbeat'tan gelen mesajları almak ve ayrıştırmak için Graylog'a talimat vermemiz gerekiyor.

Graylog'u Yapılandırma

Önce, Graylog Beats Input'u kurun ve Packetbeat yapılandırmanızda oluşturduğunuz bağlantı noktasına bir Beats Input başlatın.

Eğer Packetbeat zaten yapılandırılmış ve çalışıyorsa, giriş (Input) başlatıldıktan hemen sonra gelen mesajları görmelisiniz.

Mesajların bir çok standart veri alanına (field) sahip olduğunu fark edeceksiniz, bunların çoğu buna ihtiyacımız olmayacaktır

Gereksiz veriden kurtulmak ve akan veriyi daha anlamlı şekilde biçimlendirmek için bir "Processing Pipeline rule" oluşturalım :

Şimdi, Graylog'a gelen her DNS isteğini loglamaya başladığımıza göre, gerçek dünyada bu bilgiyi kullanarak nasıl bir analiz yapabileceğimize bakalım.

Yakalanan verilerin analiz edilmesi

Öncelikle ağınızda hangi DNS sunucularının kullanıldığını görmek istediğinizi varsayalım. (Büyük olasılıkla yalnızca iç sunucularınızın kullanıldığından emin olabilirsiniz.)

Tüm DNS isteklerini arayarak başlayın:

Şimdi hızlıca dst_addrDNS ile isteklerin hedef adreslerini bulalım

Gördüğünüz gibi, DNS sunucularına bizim kontrolümüz altında olmayan 229 istek yapılmış. Bu örnekteki DNS sunucularının, genel Google DNS sunucuları olduğunu biliyoruz, ancak yine de araştırma yapmalı ve bu sunucuları kullanan makinelerin iç DNS sunucularımızı kullanacak şekilde yeniden yapılandırıldığından emin olmalıyız.

Bu isteklerin hangi PC / sunuculardan yapıldığını bulmak için yeni bir sorgu daha çalıştırmamız gerekecektir:

Şimdi src_addr: alanını kullanarak yeni bir analiz daha yapalım :

Sonuç ne kadar hızlı, değil mi ? 172.31.99.210 IP'li cihaz bazı istekler için kendi DNS sunucularınız yerine Google DNS sunucularını kullanıyor.

Sonraki adımlarda ek olarak şu önlemlerin alınması da faydalı olabilir:

  • dst_addr:172.31.99.210 Makinesinin diğer tüm trafiğini analiz etmek için Graylog'da tüm mesajlarda arama yapın. Ağ bağlantısı (NetFlow) günlükleri de topluyorsanız, buna da bakın. Şüpheli bağlantılar olup olmadığını kontrol edin.

  • Dışarıdaki DNS sunucularına karşı yapılan herhangi bir DNS isteği için Graylog'da otomatik bir uyarı oluşturun ve sizi eposta / görsel yoldan uyarmasını sağlayın.

  • Gün boyunca kullanılmış olan tüm DNS sunucularının listesini bir gece raporu (cronjob + REST API'sı) ile kendinize gönderin.

Bunlar Graylog ile yapabileceklerimize dair sadece kısıtlı birer örnektir. Bir başka kullanışlı alışkanlık da, şüpheli bir şey olup olmadığını görmek için DNS aracılığıyla çözülen gerçek makine adlarını incelemektir. Kötü amaçlı yazılımların kontrol sistemleri ile iletişim kuran makinaları yakaladığınızda, bu veriyi Intel'in tehdit veritabanı ile birleştirerek hangi DNS'lerin kötücül (malicious) olduğunu bulmanız ve alarm üretmeniz Graylog'da mümkündür.

156 görüntüleme0 yorum

Son Yazılar

Hepsini Gör
bottom of page