Saldırı Engelleme Sistemleri günümüz sınır güvenliğin akla gelen ilk bileşenlerden biridir. IPS’ler klasik güvenlik duvarlarından farklı olarak barındırdıkları DPI(Deep Packet Inspection) altyapılarıyla protokollere ait tüm detay alanları inceleyebilir ve bu alanlar içerisinde isteğe bağlı olarak paketleri engelleyebilir.
Günümüz sistemlerinde kullanılan IPS’lerin tamamı stateful mimaride çalışır. Stateful packet inspection (Durum korumalı paket inceleme) IPS’in ya da Firewall’un üzerinden geçirdiği her paketi bağımsız olarak incelemesi yerine paketler arasındaki ilişkiyi gozetleyerek daha akıllı kararlar verebilmesini sağlar. Mesela bir bağlantıda saldırı imzası aramadan önce bağlantının gerçekten bir bağlantı mı olduğunu yoksa rastgele gönderilen paketler mi olduğunu anlayabilir. Kısacası oturum kavramını sağlar ve birbirleriyle ilişkili paketleri tek bir oturum olarak kabul eder ve inceler.
Açık kaynak kodlu Snort IPS/IDS sistemi incelenirse hem stateful yapıda hem de stateless yapıda kuralların yazılabildiği görülecektir.
Snort Stateless Saldırı İmzası
scan.rules:alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg:”SCAN SYN FIN”; flow:stateless; flags:SF,12; reference:arachnids,198; classtype:attempted-recon; sid:624; rev:7;)
Snort Stateful Saldırı İmzası
web-misc.rules:alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS (msg:”WEB-MISC /etc/passwd”; flow:to_server,established; content:”/etc/passwd”; nocase; classtype:attempted-recon; sid:1122; rev:5;)
Bu Snort kuralı ile gelen giden her paketin ayrı ayrı incelenmesi yerine sadece oturum kurulmuş (3’lü el sıkışmayı başarıyla tamamlamış) paketlerin incelenmesi ve içeriğinde /etc/passwd barındıran oturumlar için -paketler için değil- uyarı vermesi sağlanmaktadır.
Eğer IPS sistemleri herhangi bir yapılandırmadan geçirilmeden oldugu gibi ağda konumlandırılırsa gelen giden her paketi değerlendirip saldırı araması yapacak sekilde çalışacaktır (Default olarak stateful çalışanlar da var)
Stateful mimarisi aktif edilmemiş bir IPS’in ne gibi dezavantajları olabilir?
Stateful çalışmayan bir IPS uzaktan sahte IP adreslerinden gönderilecek cesitli paketleri gercek bir saldırı gibi algılayacak ve loglamaya calısacaktır. Bu süre zarfında birileri eger gercekten sisteme yönelik denemeler yapıyorsa loglardan anlasılması güc olacaktır.
Yine benzer şekilde saldırgan IPS’i işlevsiz bırakmak için farklı -ve sahte- ip adreslerinden milyonlarca saldırı imzası üretecek paketler gönderebilir. IPS gelen her paketi teker teker incelemeye tabi tuttuğu için kısa sürede devre dışı kalabilir. Gerçekleştirdiğimiz testlede 10 dakika süren bir atağın etkisinin IPS loglama sisteminde 7-8 kadar etkisi olmuştur.
Örnek:
Hedef olarak belirlenen IPS’in çalışma yapısını anlamak için bazı örnek paketler gönderilmesi gerekmektedir.
Bu paketlerden bazıları aradaki IPS cihazını kızdıracak ve kural/imzalarının tetiklenmesini ve trafiği engellemesini -RST ya da pasif DROP- sağlayacaktır.
I. Adım
Birinci adımda test yapılan IPS’in arkasındaki sunucunun TCP/80 portuna sıradan SYN paketleri gönderilir.
Hedef sunucu bu paketlere -port açık olduğu için- ACK/SYN bayraklı paketle cevap verecektir.
root@seclabs:~# hping3 -p 80 -S www.bank1.com.tr
HPING www.bank1.com.tr (eth0 1.2.3.4): S set, 40 headers + 0 data bytes
len=46 ip=1.2.3.4 ttl=244 DF id=19935 sport=80 flags=SA seq=0 win=1608 rtt=3.6 ms
len=46 ip=1.2.3.4 ttl=244 DF id=46389 sport=80 flags=SA seq=1 win=1608 rtt=3.5 ms
len=46 ip=1.2.3.4 ttl=244 DF id=8438 sport=80 flags=SA seq=2 win=1608 rtt=3.2 ms
len=46 ip=1.2.3.4 ttl=244 DF id=21695 sport=80 flags=SA seq=3 win=1608 rtt=3.3 m
II. Adım
Bu adımda hedef sunucuya gönderilen SYN bayraklı paketlerin içerisine veri eklenmiştir.
root@seclabs:~# cat test1
test deneme123
Amac hedef sistem önündeki IPS’in kurallarındaki SYN bayraklı paketler veri taşıyamaz kuralının aktif olup olmadığını öğrenmek. Aşağıdaki çıktı IPS’de bu kuralın aktif olmadığını göstermektedir.
root@seclabs:~# hping3 -p 80 -S www.bank1.com.tr -d 100 -E test1
HPING www.bank1.com.tr (eth0 1.2.3.4): S set, 40 headers + 100 data bytes
[main] memlockall(): Success
Warning: can’t disable memory paging!
len=46 ip=1.2.3.4 ttl=244 DF id=19727 sport=80 flags=SA seq=0 win=1608 rtt=3.8 ms
len=46 ip=1.2.3.4 ttl=244 DF id=49973 sport=80 flags=SA seq=1 win=1608 rtt=3.5 ms
len=46 ip=1.2.3.4 ttl=244 DF id=2089 sport=80 flags=SA seq=2 win=1608 rtt=4.2 ms
len=46 ip=1.2.3.4 ttl=244 DF id=62685 sport=80 flags=SA seq=3 win=1608 rtt=3.5 ms
SYN bayraklı paket veri taşıyamaz kuralının aktif olduğu IPS’ gönderilecek paketlere cevap donulmez ya da RST paketi dönülür.
root@seclabs:~# hping3 -p 80 -S www.bank3.com.tr -d 100 -E test1 -c 4
HPING www.bank3.com.tr (eth0 1.8.12.7): S set, 40 headers + 100 data bytes
[main] memlockall(): Success
Warning: can’t disable memory paging!— www.bank3.com.tr hping statistic —
4 packets tramitted, 0 packets received, 100% packet loss
round-trip min/avg/max = 0.0/0.0/0.0 ms
III. Adım
Hedef sisteme SYN bayraklı paket içerisinde veri gönderilebildiği belirlendi. Bu asamada gönderilen verinin içeriğiyle oynayarak IPS’in tetiklenmesini sağlamaya calışılacaktır. Eğer IPS oturum kurulmamış TCP bağlantılarını takip edip IPS imzalarını çalıştırıyorsa bu o IPS’in iyi yapılandırılamadığı anlamına gelir.
Hedef sistemdeki IPS’i tetiklemek için gönderilen veri parçası
root@seclabs:~# cat test2
GET /etc/passwd HTTP/1.0root@seclabs:~# hping3 -p 80 -S www.bank1.com.tr -d 100 -E test2
HPING www.bank1.com.tr (eth0 1.2.3.4): S set, 40 headers + 100 data bytes
[main] memlockall(): Success
Warning: can’t disable memory paging!
len=46 ip=1.2.3.4 ttl=53 id=13 sport=80 flags=RA seq=0 win=4096 rtt=12.4 ms
len=46 ip=1.2.3.4 ttl=53 id=13 sport=80 flags=RA seq=1 win=4096 rtt=11.9 ms
len=46 ip=1.2.3.4 ttl=53 id=13 sport=80 flags=RA seq=2 win=4096 rtt=12.8 ms
Bazı IPS’ler sadece /etc/passwd geçtiğinde kızmaz, bunun yerine ../../etc/passwd gibi bir ifade konulduğunda imzalarını devreye sokar.
hedefe payload olarak gönderilen test2 dosyası içeriği
GET /etc/passwd HTTP/1.0
hedefe payload olarak gönderilen test3 dosyası içeriği
GET ../..//etc/passwd HTTP/1.0
GET /etc/passwd HTTP/1.0’e kızmayan fakat GET ../../../etc/passwd HTTP/1.0 IPS Davranışı
root@seclabs:~# hping3 -p 80 -S www.bank2.com.tr -d 100 -E test2
HPING www.bank2.com.tr (eth0 4.5.6.7): S set, 40 headers + 100 data bytes
[main] memlockall(): Success
Warning: can’t disable memory paging!
len=46 ip=4.5.6.7 ttl=247 DF id=37297 sport=80 flags=SA seq=0 win=8190 rtt=3.6 ms
len=46 ip=4.5.6.7 ttl=247 DF id=64305 sport=80 flags=SA seq=1 win=8190 rtt=3.7 ms
len=46 ip=4.5.6.7 ttl=247 DF id=16772 sport=80 flags=SA seq=2 win=8190 rtt=3.4 ms
^C
— www.bank2.com.tr hping statistic —
3 packets tramitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 3.4/3.6/3.7 msroot@seclabs:~# hping3 -p 80 -S www.bank2.com.tr -d 100 -E test3
HPING www.bank2.com.tr (eth0 4.5.6.7): S set, 40 headers + 100 data bytes
[main] memlockall(): Success
Warning: can’t disable memory paging!
len=46 ip=4.5.6.7 ttl=57 id=13 sport=80 flags=RA seq=0 win=4096 rtt=3.2 ms
len=46 ip=4.5.6.7 ttl=57 id=13 sport=80 flags=RA seq=1 win=4096 rtt=3.1 ms
len=46 ip=4.5.6.7 ttl=57 id=13 sport=80 flags=RA seq=2 win=4096 rtt=3.2 ms