Hoşgeldin Misafir

#STHM-IDS Temelleri

CW-ommah

17 Ocak 2022
904 Mesaj
TIM Görevleri
1

Aktiflik

Seviye

Deneyim

TIM / GÖREV:
Allah’ın Rahmeti Ve Bereketi Üzerinize Olsun
Selamun aleyküm dostlarım. Bu makalemizde beraber IDS(Intrusion Detected System)
Saldırı tespit sistemi nedir ve kendi IDS kurallarımızı nasıl oluşturabileceğimize bakacağız. Bu makalemizde özellikle IDS’lerde kullanılan Snort üzerinden ilerleyeceğiz. Başlayalım Allahın izniyle

IDS Türleri
IDS, belirli faktörlere bağlı olarak farklı şekillerde sınıflandırılabilir. Bir IDS’in temel sınıflandırması, konuşlandırma (deployment) ve tespit (detection) yöntemlerine dayanır.

Konuşlandırma Modları (Deployment Modes)
IDS aşağıdaki şekillerde konuşlandırılabilir:

Host Tabanlı Saldırı Tespit Sistemi (HIDS):
Host tabanlı IDS çözümleri, her bir ana makineye (host) ayrı ayrı kurulur ve yalnızca o ana makineye ait potansiyel güvenlik tehditlerini tespit etmekten sorumludur. Bu sistemler, ana makinenin faaliyetleri hakkında detaylı görünürlük sağlar. Ancak, yüksek kaynak tüketimi gerektirdikleri ve her ana makine üzerinde ayrı ayrı yönetilmeleri gerektiği için büyük ağlarda yönetilmeleri zor olabilir.

Ağ Tabanlı Saldırı Tespit Sistemi (NIDS):
Ağ tabanlı IDS çözümleri, belirli bir ana makineye bağlı kalmadan tüm ağ içerisindeki potansiyel kötü niyetli aktiviteleri tespit etmede kritik bir rol oynar. Ağdaki tüm ana makinelerin trafiğini izleyerek şüpheli davranışları belirler. Böylece, tüm ağ genelindeki tespitler için merkezi bir görünüm sağlar.

1775800980483.png
Tespit Modları (Detection Modes)
İmza Tabanlı IDS (Signature-Based IDS):
Her gün birçok saldırı gerçekleşmektedir. Her saldırının kendine özgü bir deseni vardır ve bu desen “imza” olarak adlandırılır. Bu imzalar IDS tarafından veritabanlarında saklanır; böylece aynı saldırı gelecekte tekrar gerçekleştiğinde, imzası sayesinde tespit edilir ve gerekli aksiyonların alınması için güvenlik yöneticilerine raporlanır. IDS’in imza veritabanı ne kadar güçlü olursa, bilinen tehditleri o kadar verimli şekilde tespit edebilir.
Ancak imza tabanlı IDS, zero-day (sıfırıncı gün) saldırılarını tespit edemez. Zero-day saldırılarının önceden bilinen bir imzası (deseni) yoktur ve IDS veritabanında kayıtlı değildir. Bu nedenle imza tabanlı IDS yalnızca daha önce gerçekleşmiş ve imzaları veritabanında bulunan saldırıları tespit edebilir. İlerleyen zamanlarda, Snort adlı imza tabanlı bir IDS’i inceleyeceğiz.

Anomali Tabanlı IDS (Anomaly-Based IDS):
Bu tür IDS, öncelikle ağın veya sistemin normal davranışını (baseline) öğrenir ve bu normal davranıştan herhangi bir sapma olduğunda tespit gerçekleştirir. Anomali tabanlı IDS, tespit için mevcut imzalara bağlı olmadığı için zero-day saldırılarını da algılayabilir. Mevcut durumu, öğrenilmiş normal davranışla karşılaştırarak ağ veya sistem içerisindeki anormallikleri belirler.
Ancak bu tür IDS, çok sayıda yanlış pozitif (zararsız aktiviteleri kötü niyetli olarak işaretleme) üretebilir. Bunun nedeni, birçok meşru programın davranışlarının kötü amaçlı yazılımlarla benzerlik gösterebilmesidir. Anomali tabanlı IDS, alışılmadık davranan her şeyi potansiyel olarak zararlı kabul edebilir. Bu yanlış pozitifler, IDS’in ince ayar (fine-tuning) yapılmasıyla, yani normal davranışın manuel olarak tanımlanmasıyla azaltılabilir.

Hibrit IDS (Hybrid IDS):
Hibrit IDS, imza tabanlı ve anomali tabanlı IDS’in tespit yöntemlerini birleştirerek her iki yaklaşımın güçlü yönlerinden yararlanır. Bazı bilinen tehditlerin imzaları IDS veritabanında zaten bulunabilir; bu durumda hibrit IDS, imza tabanlı tespit yöntemini kullanır. Yeni bir tehditle karşılaşıldığında ise anomali tabanlı tespit yönteminden faydalanabilir.
İmza tabanlı IDS tehditleri hızlı bir şekilde tespit edebilirken, diğer IDS türleri daha yüksek işlem yükü oluşturabilir. Ancak IDS seçimi yapılırken farklı faktörler de göz önünde bulundurulmalıdır. İmza tabanlı IDS, küçük bir tehdit yüzeyini korumak için uygun bir seçenek olabilir. Anomali tabanlı ve hibrit IDS ise her geçen gün artan ve kurumlara büyük zararlar verebilen modern zero-day saldırılarını tespit etmede daha etkili olabilir.

IDS Örneği: Snort
Snort, 1998 yılında geliştirilen ve en yaygın kullanılan açık kaynaklı IDS çözümlerinden biridir. Bilinen tehditleri tespit etmek için imza tabanlı ve anomali tabanlı tespit yöntemlerini kullanır. Bu tespit yöntemleri, Snort aracının kural (rule) dosyalarında tanımlanmıştır.
Snort paketinin içinde önceden yüklenmiş (built-in) birkaç kural dosyası bulunur. Bu yerleşik kural dosyaları, çeşitli bilinen saldırı desenlerini içerir. Snort’un yerleşik kuralları, birçok kötü niyetli trafiği sizin için tespit edebilir.
Ancak, varsayılan kural dosyalarının kapsamadığı belirli ağ trafiği türlerini tespit etmek için Snort’u yapılandırabilirsiniz. İhtiyaçlarınıza göre özel kurallar oluşturarak belirli trafik türlerini tespit edebilirsiniz. Ayrıca, sisteminiz veya ağınız için zararlı olmayan trafiği işaret eden yerleşik tespit kurallarını devre dışı bırakabilir ve yerine kendi özel kurallarınızı tanımlayabilirsiniz dostlarım.

Snort Modları
1775801335875.png

ModAçıklamaKullanım Senaryosu
Paket Dinleyici Modu (Packet Sniffer Mode)Bu mod, ağ paketlerini herhangi bir analiz yapmadan okur ve görüntüler. Snort’un paket dinleyici modu doğrudan IDS yetenekleriyle ilişkili olmasa da, ağ izleme ve sorun giderme için faydalıdır. Bazı durumlarda, sistem yöneticileri belirli sorunları teşhis etmek için herhangi bir tespit yapmadan trafik akışını incelemek isteyebilir. Bu mod, ağ trafiğini konsolda göstermenize veya bir dosyaya kaydetmenize olanak tanır.Ağ ekibi bazı performans sorunları gözlemlemektedir. Sorunu teşhis etmek için ağ trafiği hakkında detaylı bilgiye ihtiyaç duyarlar. Bu amaçla Snort’un paket dinleyici modu kullanılabilir.
Paket Günlükleme Modu (Packet Logging Mode)Snort, ağ trafiği üzerinde gerçek zamanlı tespitler yapar ve bu tespitleri güvenlik yöneticilerinin aksiyon alabilmesi için konsolda uyarı (alert) olarak gösterir. Ancak bazı durumlarda ağ trafiğinin daha sonra analiz edilmek üzere kaydedilmesi gerekir. Paket günlükleme modu, ağ trafiğini PCAP (standart paket yakalama formatı) dosyası olarak kaydetmenizi sağlar. Bu dosya, tüm ağ trafiğini ve tespit edilen aktiviteleri içerir. Adli bilişim uzmanları bu log dosyalarını kullanarak önceki saldırıların kök neden analizini gerçekleştirebilir.Güvenlik ekibi bir ağ saldırısının adli incelemesini başlatmak ister. Kök neden analizi yapmak için trafik kayıtlarına ihtiyaç duyarlar. Snort’un paket günlükleme modunda kaydedilen ağ trafiği bu süreçte yardımcı olur.
Ağ Tabanlı Saldırı Tespit Sistemi Modu (Network Intrusion Detection System - NIDS Mode)Snort’un NIDS modu, ağ trafiğini gerçek zamanlı olarak izleyen ve kural dosyalarını kullanarak bilinen saldırı desenleriyle (imzalarla) eşleşme arayan birincil moddur. Eğer eşleşme bulunursa, uyarı üretir. Bu mod, IDS çözümünün temel işlevselliğini sağlar.Güvenlik ekibi, potansiyel tehditleri tespit etmek için ağlarını veya sistemlerini proaktif olarak izlemelidir. Bu amaçla Snort’un NIDS modundan faydalanabilirler.


Snort Kullanımı
Snort’un bazı yerleşik (built-in) kural dosyaları, bir yapılandırma (configuration) dosyası ve diğer dosyaları vardır. Bu dosyalar /etc/snort dizininde saklanır. Snort için en önemli dosya, hangi kural dosyalarının etkinleştirileceğini, hangi ağ aralığının izleneceğini ve diğer ayarların yapılabileceği snort.conf yapılandırma dosyasıdır. Kural dosyaları ise rules klasöründe saklanır.

NOT:Snort 3 sürümünde .lua formatını kullanmaktadır 2.x vedaha eski sürümlerde .conf formatını kullanmaktadır

Snort’un ana dizininde bulunan tüm dosya ve klasörleri listelemek için ls komutunu kullanabiliriz.

Kod:
ubuntu@Ejder:~$ ls /etc/snort
classification.config  reference.config  snort.debian.conf
community-sid-msg.map  rules             threshold.conf
gen-msg.map            snort.conf        unicode.map

Kural Formatı (Rule Format)
Şimdi Snort’ta kuralların nasıl oluşturulduğunu inceleyelim. Kuralların yazılmasında belirli bir format vardır.
Örnek bir kural, herhangi bir IP adresi ve porttan gelen ve ev ağına (Snort yapılandırma dosyasında tanımlanan ağ aralığı) herhangi bir porta ulaşan ICMP paketlerini (genellikle bir host’a ping atarken kullanılır) tespit eder. Bu tür bir trafik tespit edildiğinde, “Ping Detected” (Ping Tespit Edildi) uyarısı üretilir.

1775801458576.png
Bu kuralda yer alan bileşenlerin detayları aşağıda verilmiştir:
  • Action (Eylem):
    Bu alan, kural tetiklendiğinde hangi işlemin gerçekleştirileceğini belirtir. Bu örnekte, trafik bu kuralla eşleştiğinde “alert” (uyarı) eylemi uygulanmaktadır.
  • Protocol (Protokol):
    Bu alan, kuralın hangi protokolle eşleşeceğini belirtir. Bu örnekte, bir host’a ping atılırken kullanılan “ICMP” protokolü kullanılmıştır.
  • Source IP (Kaynak IP):
    Trafiğin hangi IP adresinden geldiğini belirler. Herhangi bir kaynak IP’den gelen trafiği tespit etmek istediğimiz için bu alan “any” olarak ayarlanmıştır.
  • Source Port (Kaynak Port):
    Trafiğin hangi porttan geldiğini belirtir. Herhangi bir kaynak porttan gelen trafiği tespit etmek için bu alan any olarak ayarlanmıştır.
  • Destination IP (Hedef IP):
    Eşleşen trafiğin ulaştığı hedef IP’yi belirtir ve bu durumda uyarı üretilir. Bu örnekte “$HOME_NET” kullanılmıştır. Bu bir değişkendir ve Snort yapılandırma dosyasında tüm ağımızın IP aralığı olarak tanımlanmıştır.
  • Destination Port (Hedef Port):
    Trafiğin ulaşacağı portu belirtir. Herhangi bir porta gelen trafiği tespit etmek istediğimiz için bu alan any olarak ayarlanmıştır.
  • Rule Metadata (Kural Meta Verisi):
    Her kural bazı meta verilere sahiptir ve kuralın sonunda parantez içinde tanımlanır. Bileşenleri şunlardır:
    • Message (msg):
      Kural tetiklendiğinde gösterilecek mesajı belirtir. Mesaj, tespit edilen aktivitenin türünü ifade etmelidir. Bu örnekte Ping Detected kullanılmıştır.
    • Signature ID (sid):
      Her kuralın diğerlerinden ayırt edilmesini sağlayan benzersiz bir kimliği vardır. Buna imza kimliği (sid) denir. Bu örnekte sid değeri 10001 olarak ayarlanmıştır.
    • Rule Revision (rev):
      Kuralın sürüm numarasını belirtir. Kural her değiştirildiğinde bu numara artırılır ve böylece kural üzerindeki değişiklikler takip edilebilir.
Kural Oluşturma (Rule Creation)
Yukarıda açıklanan örnek kuralı, Snort kural dizinindeki özel (custom) "local.rules" dosyasına yapıştıralım.
Öncelikle, "local.rules" dosyasını bir metin düzenleyici ile açın:
Kod:
ubuntu@Ejder:~$ sudo nano /etc/snort/rules/local.rules

Şimdi, dosyadaki mevcut kurallardan sonra aşağıdaki kuralı ekleyin:
Kod:
alert icmp any any -> 127.0.0.1 any (msg:"Loopback Ping Detected"; sid:10003; rev:1;)
Dosyayı başarıyla düzenledikten sonra "Ctrl+X" tuşlarına basın. Değişiklikleri kaydetmek isteyip istemediğinizi soracaktır; kaydetmek için "y" tuşuna basın.

Kural Testi (Rule Testing)
Öncelikle, kural dosyasında tanımlanan herhangi bir saldırıyı tespit etmek için Snort aracını başlatalım. Bunun için konsolda sudo yetkileri ile aşağıdaki komutu çalıştırmamız gerekiyor:
Snort’u Tespitler İçin Çalıştırma
Kod:
ubuntu@Ejder:~$ sudo snort -q -l /var/log/snort -i lo -A console -c /etc/snort/snort.conf

Bu kural, loopback adresimize gelen herhangi bir ICMP paketi için uyarı üretmek üzere tasarlandığı için, kuralın çalışıp çalışmadığını görmek amacıyla loopback adresimize ping atalım:
Kod:
ubuntu@Ejder:~$ ping 127.0.0.1

Aşağıdaki kod görüntüsü, host’un loopback IP adresine ping attığımızda Snort tarafından üretilen “Loopback Ping Detected” uyarısını göstermektedir. Bu, kuralımızın doğru şekilde çalıştığı anlamına gelir.
Kod:
ubuntu@Ejder:~$ sudo snort -q -l /var/log/snort -i lo -A console -c /etc/snort/snort.conf

07/24-10:46:52.401504 [**] [1:1000001:1] Loopback Ping Detected [**] [Priority: 0] {ICMP} 127.0.0.1 -> 127.0.0.1
07/24-10:46:53.406552 [**] [1:1000001:1] Loopback Ping Detected [**] [Priority: 0] {ICMP} 127.0.0.1 -> 127.0.0.1
07/24-10:46:54.410544 [**] [1:1000001:1] Loopback Ping Detected [**] [Priority: 0] {ICMP} 127.0.0.1 -> 127.0.0.1

Bu çıktı, kuralın başarılı bir şekilde ICMP trafiğini tespit ettiğini doğrulamaktadır.

Snort’u PCAP Dosyalarında Çalıştırma
Snort’un gerçek zamanlı trafik üzerinde saldırı tespiti için nasıl kullanılabileceğini gördük. Ancak bazen, geçmişe ait ağ trafiğinin bir dosyada kaydedilmiş olduğu ve bu trafik üzerinden herhangi bir saldırı belirtisini tespit etmek için adli inceleme yapılması gereken senaryolarla karşılaşabilirsiniz.
Bu tür trafik genellikle standart paket yakalama formatı olan PCAP dosyasında kaydedilir. Snort, geçmişe ait ağ trafiğini içeren bu PCAP dosyalarında da tespit işlemleri gerçekleştirebilecek şekilde donatılmıştır.

1775801702197.png


1775801731057.png








Okuduğunuz için teşekkür ederim.


CW-Ommah
Bug Researchers Tim Sundu...

1775801814896.png