SNORT ile Saldırı Tespiti Burak DAYIOĞLU bd@dikey8.com http://www.dikey8.com Burak DAYIOĞLU, Nisan
Sunum Planı Saldırı Tespiti Snort Nedir? Snort Mimarisi Snort Kuralları Snort İdaresi Burak DAYIOĞLU, Nisan 2
Güvenliğin Sağlanması Üç ana çalışma alanı Politikalar ve Prosedürler Teknoloji Eğitim ve Bilgilendirme Teknoloji Uygulamaları Politikanın Uygulanmasını Sağlama Politika Uygunluğunun İzlenmesi Burak DAYIOĞLU, Nisan 3
Saldırı Tespiti Politika ihlallerinin ve sistemler üzerindeki anormalliklerin tespit edilmesi Sistemlere sızan yabancıların ve yetkilerini kötüye kullanan kullanıcıların tespit edilmesi Faydaları 7x24 otomatize edilmiş izleme Erken tespit ve uyarı Delil toplanması ve biriktirilmesi Burak DAYIOĞLU, Nisan 4
Sistem Sınıflandırması Anormallik Tespiti Davranış profillerine dayalı Tanımlama normal den sapmalar ile gerçekleştirilir Kötüye Kullanım Tespiti Saldırı imzalarına dayalı Pattern-matching vb. yöntemler ile gerçekleştirilir Sunucu Temelli (HIDS) Olay kaynağı olarak sunucu günlük kayıtları kullanılır Ağ Temelli (NIDS) Olay kaynağı olarak ağ üzerinden akan paketler kullanılır Burak DAYIOĞLU, Nisan 5
Snort Nedir? Bir Ağ Temelli Saldırı Tespit Sistemi GPL lisanslı Farklı platformlarda çalışabiliyor (UNIX, MS-Windows) Modüler mimariye sahip Bir kötüye kullanım tespit sistemi Araştırma çevrelerinde rağbet görüyor Kurumsal kullanımı giderek yaygınlaşıyor Burak DAYIOĞLU, Nisan 6
m o n ito r in g /a n al ys is m o n it or in g /a n a ly si s m on i to ri ng / an a ly s is Ağ Üzerinde Snort Web E-posta Ether net 7x 8x 9x 10x 1x 12x 7x 8x 9x 10x 11x 12x C 7 8910112 A 1 23 45 6 1x 2x 3x A 4x 5x 6x 1x 2x 3x B 4x 5x 6x Anahtar Sniffer Server Güvenlik Snort Ethernet 7x 8x 9x 10x 11x 12x 7x 8x 9x 10x 11x 12x C 78 9101112 A 12 34 56 1x 2x 3x A 4x 5x 6x 1x 2x 3x B 4x 5x 6x Anahtar Snort Sniffer Serv er E thernet 7x 8x 9x 10x 11x 12x 7x 8x 9x 10x 11x 12x C 78 9101112 A 12 34 56 1x 2x 3x A 4x 5x 6x 1x 2x 3x B 4x 5x 6x Anahtar Sni ffer Serv er Snort Yönlendirici Burak DAYIOĞLU, Nisan 7
Avantajları Çok sayıda sistem tek bir Snort ile izlenebiliyor Birden çok Snort merkezi olarak denetlenebiliyor Yeni saldırıları tanımlayan kurallar kolayca yazılıp eklenebiliyor İnternet üzerinde kural veritabanı Herkese açık Geniş ve güncel Geniş kullanıcı kitlesi, sohbet edilebilen geliştiriciler Hızlı ve yüksek kalitede destek Burak DAYIOĞLU, Nisan 8
Dezavantajları Şifrelenmiş iletişimler (VPN ler, SSL, SSH vb.) izlenemiyor Yüksek hacimli trafiği izleyemeye yetişemiyor Ağ altyapısında değişiklik/düzenleme gerektiriyor Çok yoğun biçimde yanlış alarm üretiyor Burak DAYIOĞLU, Nisan 9
İnternet te Snort Kuralları Snort un ev sitesi http://www.snort.org adresinde Her yarım saatte bir güncellenen kurallar bu siteden http yolu ile edinilebilebiliyor Kural güncellemeleri yeterince etkin değil Burak DAYIOĞLU, Nisan 10
Snort Mimarisi ve Eklentileri Snort üç farklı düzeyde eklentiler ile genişletilebilir Ön-işleyici eklentileri İşleyici eklentileri Çıktı eklentileri Burak DAYIOĞLU, Nisan 11
Ön-İşleme Eklentileri Girdileri tespit işlemi öncesinde kanonik biçime dönüştürebilmek için http-decode, stream4... Tüm paketler üzerinde yapılması gereken işlemleri yapabilmek için portscan... Burak DAYIOĞLU, Nisan 12
İşleyici Eklentileri Kural tanımlama dilini zenginleştirmek için content, ttl, flags, flowto... Burak DAYIOĞLU, Nisan 13
Çıktı Eklentileri Üretilen alarmları sorumluya farklı biçimlerde ulaştırabilmek için XML, alert_smb, database... Burak DAYIOĞLU, Nisan 14
Snort Kuralları alert tcp any any -> 144.122.202.0/24 80 (content: cmd.exe ; msg: IIS saldirisi ;) var HOME_NET 144.122.202.0/24 alert tcp any any -> $HOME_NET 80 (content: cmd.exe ; msg: IIS saldirisi ;) var HOME_NET [144.122.202.0/24,144.122.203.0/24] Burak DAYIOĞLU, Nisan 15
Kural Başlığı alert tcp any any -> 144.122.202.0/24 80 (content: cmd.exe ; msg: IIS saldirisi ;) alert tcp any any -> 144.122.202.0/24 80 EYLEM PROTOKOL IP ADRESİ - 1 PORT NO - 1 YÖN IP ADRESİ - 2 PORT NO - 2 Burak DAYIOĞLU, Nisan 16
Kural Seçenekleri alert tcp any any -> 144.122.202.0/24 80 (content: cmd.exe ; msg: IIS saldirisi ;) (content: cmd.exe ; msg: IIS saldirisi ;) SEÇENEK ADI SEÇENEK PARAMETRELERİ Kural seçenekleri işleyici eklentileri sayesinde vardır! Burak DAYIOĞLU, Nisan 17
Dinamik Kural Aktivasyonu Dinamik kural aktivasyonu sayesinde bazı kuralların yalnızca belli şartlar oluştuğunda aktif hale gelmesi sağlanabilir: activate tcp!$dbadmin any -> $ORACLE!1521 (activates: 1;) dynamic tcp!$dbadmin any -> $ORACLE!1521 (activated_by: 1; count: 500;) Burak DAYIOĞLU, Nisan 18
Mevcut Kural Seçenekleri msg ttl tod id fragbits dsize flags seq ack content itype icode icmp_id icmp_seq content-list offset depth nocase resp react sid rev classtype priority tag ip_proto regex rpc ipoption resp Burak DAYIOĞLU, Nisan 19
Alarm Öncelikleri İhtiyacı Her alarm aynı derecede önemli midir? İnternet ten web sunucusuna gelen bir CodeRed isteği Kurum içinden veritabanı sunucusuna başarısız bir root telnet girişimi Kurum içinden bind sürüm sorgulaması Alarmlar için öncelik belirleyebilme önemli bir gereksinim Daha etkin alarm yönetimi / emek kullanımı Burak DAYIOĞLU, Nisan 20
Herkesin Öncelikleri Farklı Genel-geçer saldırı tespiti kuralları herkes için aynı olmak durumunda Aksi halde güncel kural setleri kavramı söz konusu olamaz Herkesin öncelikleri farklı Askeri kuruluşlar için her saldırı çok önemli KOBİ ler için port taramaları az önemli ya da önemsiz Burak DAYIOĞLU, Nisan 21
Saldırı Sınıflandırması Saldırılar sınıflara ayrılır Her sınıf için öncelikler kullanıcı tarafından belirlenir attempted-recon Bilgi sızdırma girişimi 3 attempted-dos successful-user attempted-admin successful-admin DoS Girişimi Kullanıcı yetkisi edinme girişimi başarılı Sistem yöneticisi yetkisi edinme girişimi Sistem yöneticisi yetkisi edinme girişimi başarılı 7 9 10 11 Burak DAYIOĞLU, Nisan 22
Gerçek Bir Kural Gerçek hayatta kullanılabilecek bir saldırı tespit kuralı alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS 80 ( msg:"web-iis ISAPI.printer access"; uricontent:".printer"; nocase; flowto: server; reference:cve,can-2001-0241; reference:arachnids,533; classtype:attempted-recon; sid:971; rev:1; ) Burak DAYIOĞLU, Nisan 23
Snort İçinde Paket Yolculuğu Paket Toplama Döngüsü HAYIR Kaynak ve hedefi kurallar mu? EVET HAYIR Bu bir Burak DAYIOĞLU, Nisan 24
Özgün Eylem Tanımlama Dileyen kullanıcılar kendileri için özgün eylemler tanımlayabilir ruletype supheli { type log output output log_tcpdump: suphelipaketler.log } ruletype kritik { type alert output output alert_syslog: LOG_AUTH LOG_ALERT output database: log, mysql,... } Burak DAYIOĞLU, Nisan 25
Özgün Eylemlerin Kullanılması Özgün eylemler, alert vb. yerine kullanılabilir: alert supheli kritik tcp $EXTERNAL_NET any -> $HTTP_SERVERS 80 ( msg:"web-iis ISAPI.printer access"; uricontent:".printer"; nocase; flowto: server; reference:cve,can-2001-0241; reference:arachnids,533; classtype:attempted-recon; sid:971; rev:1; ) Burak DAYIOĞLU, Nisan 26
Saldırıların Durdurulması Saldırının geldiği bağlantının kaynağına ya da hedefine sanki diğer uçtan geliyormuş gibi Bağlantıyı acele bitirdim (TCP Reset) Hedef ağ ulaşılamıyor (ICMP Network Unreachable) Hedef bilgisayar ulaşılamıyor (ICMP Host Unreachable) Hedef port ulaşılamıyor (ICMP Port Unreachable) gönderebilir Eklenti ile güvenlik duvarına talimat vererek uygun kuralların eklenmesini sağlayabilir (SnortSam) Burak DAYIOĞLU, Nisan 27
Otomatik Yanıt İşe Yarar Mı? Saldırganın hedefinden geliyormuşçasına saldırgana gönderilecek bir bağlantıyı acele kesiyorum oyununu saldırgan bertaraf edebilir Gelen paketi görmezden gelir Paket saldırganın hedefinden değil, Snort tan gelmektedir Hiç duraklamaksızın saldırısını sürdürebilir Eğer otomatik yanıt üretilecek ise Saldırgana değil hedefe göndermek daha makul olacaktır Burak DAYIOĞLU, Nisan 28
Snort ile Otomatik Yanıt alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS 80 ( msg:"web-iis ISAPI.printer access"; uricontent:".printer"; nocase; flowto: server; reference:cve,can-2001-0241; reference:arachnids,533; classtype:attempted-recon; sid:971; rev:1; resp: rst_all; rst_snd; rst_rcv; ) Burak DAYIOĞLU, Nisan 29
İçerik Listeleri Bir dosyada alt alta listelenmiş anahtar sözcük listeleri içerik listesi olarak anılır: oyun.txt: tavla bric okey Snort, bir girdinin tek bir kural marifetiyle tüm bir liste ile karşılaştırılmasına imkan verir alert tcp $HOME_NET any -> any 80 (content-list: oyun.txt ; msg: Oyun sitesi erişimi ;) Burak DAYIOĞLU, Nisan 30
Site Yasaklama Otomatik yanıt düzeneğine yapılmış bir ilave sayesinde Belli web sitelerine bağlantının yasaklanması Yasaklanan sitelere bağlanılması durumunda bağlanan kullanıcının tarayıcısına mesaj gönderilmesi mümkün olmaktadır alert tcp $HOME_NET any -> any 80 ( content-list: oyun.txt ; msg: Oyun sitesi erişimi yasaktır! ; ) react: block, msg; Burak DAYIOĞLU, Nisan 31
Snort Kurulumu Güncel sürümü daima http://www.snort.org adresinden edinilebilir Kaynak kod ya da farklı işletim sistemleri için paketlenmiş hali bulunmaktadır Derlemek ve kurmak için aşağıdaki üç komut yeterli olacaktır:./configure make make install Burak DAYIOĞLU, Nisan 32
Özel Modül Yapılandırması Flexresp vb. bazı ı modüllerı aktif hale getirmek için derleme öncesi yapılandırma seçenekleri verilmelidir:./configure --with-mysql=dizin --with-oracle=dizin --with-postgresql=dizin --enable-smbalerts --enable-flexresp Burak DAYIOĞLU, Nisan 33
Kurulum Sonrası Kurulum işlemi ile Snort program dosyası ve kılavuz sayfası sistemde uygun dizinlere taşınır: /usr/local/bin/snort Kayıtlar için /var/log/snort dizini açılmalı Yapılandırma dosyası olan snort.conf, /etc dizinine taşınmalı Güncel kural dosyaları http://www.snort.org dan çekilerek uygun bir dizin altına açılmalıdır Burak DAYIOĞLU, Nisan 34
Snort Ayarları Yazılımın tüm ayarları snort.conf ve bu dosyadan include edilen diğer dosyalar bütünü içinde yer alır Kurulum sonrasında snort.conf içerisinde $HOME_NET ve diğer değişken tanımları güncellenmeli Kural dosyaları için verilen include satırları kuralların bulunduğu dizini gösterecek biçimde güncellenmeli Çalışması istenen ön-işleyiciler açılarak diğerleri çalışmaz duruma getirilmelidir Burak DAYIOĞLU, Nisan 35
Örnek Snort Alarmı 1 Full mode alarm örneği aşağıdaki gibidir [**] [1:583:1] RPC portmap request rstatd [**] [Classification: Attempted Info Leak] [Priority: 3] 10/25-14:39:08.629316 144.122.171.8:2020 -> 144.122.171.255:111 UDP TTL:64 TOS:0x0 ID:3714 IpLen:20 DgmLen:140 Len: 120 [Xref => http://www.whitehats.com/info/ids10] Burak DAYIOĞLU, Nisan 36
Örnek Snort Alarmı - 2 Fast mode alarm örneği aşağıdaki gibidir 08/01/01-22:21:51.207394 [**] [1:1243:1] WEB-IIS ISAPI.ida attempt [**] [Classification: Attempted Admin. Priv. Gain] [Priority: 10] {TCP} 211.48.107.195:2434 -> 193.140.114.39:80 Burak DAYIOĞLU, Nisan 37
Paket Kayıtları Alarma neden olan ya da özellikle Log eylemi aracılığı ile kaydı tutulması istenen tüm paketler Snort tarafından kayıt edilir Standart kayıt tutma biçimi ile Her kaynak için ayrı bir dizin açılır Her paket bu dizin altında ayrı bir dosya olarak kayıt edilir [**] WEB-IIS ISAPI.ida attempt [**] 08/03-16:47:13.021593 144.122.71.212:1972 -> 62.211.241.19:80 TCP TTL:240 TOS:0x10 ID:0 IpLen:20 DgmLen:1458 ***AP*** Seq: 0x659AEE46 Ack: 0x89F5D9BE Win: 0x4248 TcpLen: 20 Burak DAYIOĞLU, Nisan 38
Paket Kayıtları - 2 Standart kayıt tutma biçimi alabildiğine yavaştır Her seferinde dizin arama, bulma ya da açma Dizin içerisinde yeni/mevcut dosyayı açma, ekleme Alternatif ve daha etkin bir yöntem tcpdump ile uyumlu olacak biçimde kayıt tutmaktır Tüm paket kayıtları tek bir dosyaya gider İkili (ing. binary) biçimde saklanan kayıtlar daha az disk alanı kaplar Paketin programlanmış araçlarla incelenmesi kolaylaşır Burak DAYIOĞLU, Nisan 39
m o n ito r in g /a n al ys is m o n it or in g /a n a ly si s m on i to ri ng / an a ly s is Snort u Nereye Kurmalı? Web E-posta Ether net 7x 8x 9x 10x 1x 12x 7x 8x 9x 10x 11x 12x C 7 8910112 A 1 23 45 6 1x 2x 3x A 4x 5x 6x 1x 2x 3x B 4x 5x 6x Anahtar Sniffer Server Güvenlik Snort Ethernet 7x 8x 9x 10x 11x 12x 7x 8x 9x 10x 11x 12x C 78 9101112 A 12 34 56 1x 2x 3x A 4x 5x 6x 1x 2x 3x B 4x 5x 6x Anahtar Snort Sniffer Serv er E thernet 7x 8x 9x 10x 11x 12x 7x 8x 9x 10x 11x 12x C 78 9101112 A 12 34 56 1x 2x 3x A 4x 5x 6x 1x 2x 3x B 4x 5x 6x Anahtar Sni ffer Serv er Snort Yönlendirici Burak DAYIOĞLU, Nisan 40
Başarılı Bir Snort Kurulumu Kural seti düzenli olarak http://www.snort.org dan çekilerek güncellenmelidir Mutlaka, normal olmayan trafiği tanımlayan kurallar eklenmelidir Web sunucusuna dns ve ftp istemleri Veritabanı sunucusuna veritabanı erişimi dışındaki istemler... Burak DAYIOĞLU, Nisan 41
Alarmların Yönetimi / Analizi Ağ üzerindeki birden fazla Snort, merkezi bir bilgisayar sistemi üzerindeki veritabanına alarmlarını gönderebilir Veritabanı üzerinde sorgular ile alarmlar çeşitli biçimlerde analiz edilebilir Alarm analizi için kullanılabilecek bazı araçlar SnortSnarf (http://www.silicondefense.com/snortsnarf) ACID (http://www.cert.org/kb/acid) Burak DAYIOĞLU, Nisan 42
Güvenlik Duvarı ve Snort Snort birden fazla ağ arayüzünü aynı anda dinleyebilir Bu özelliği sayesinde güvenlik duvarı olarak görev yapan merkezi noktadaki bir bilgisayar sistemi üzerinde de çalıştırılabilir Hogwash ile kural temelli bir güvenlik duvarı uygulaması yapılabilir Web sunucusuna her istem geçsin ama içinde.printer ya da cmd.exe geçen istemler geçmesin http://www.hogwash.org Burak DAYIOĞLU, Nisan 43
SNORT ile Saldırı Tespiti Burak DAYIOĞLU bd@dikey8.com http://www.dikey8.com Burak DAYIOĞLU, Nisan