Synproxy/syncookie(farklı şekilde aynı işi yaparlar), günümüz IPS ve Firewall sistemlerinin Synflood DOS saldırıları için aldığı klasik önlemlerdendir. Synproxy/syncookie ile korunan bir system DOS saldırısı altında iken gelen spoof edilmiş SYN paketlerinden etkilenmez çünki önünde synflood koruması yapan bir system vardır. Syncookie/synproxy için “SynFlood DDOS Saldırıları ve Korunma Yolları” yazısının okunması faydalı olacaktır.
Syncookie /Synproxy’nin Synflood DOS engelleme haricinde başka faydaları da vardır. Bunlardan biri de TCP üzerinden yapılan port taramalarını zorlaştırmaktır. Eğer saldırgan TCP port tarama yapıyorsa sürpriz bir şekilde tüm portları açık olarak görecektir.
Syncookie/Synproxy gelen her SYN pakjetine karşılık SYN+ACK cevabı döner. Taradığı sistemden SYN+ACK cevabı geldiğini gören tarama program port açık der ve tekrar paket göndermez.
Synproxy/syncookie ile korunan sistemlere karşı port tarama
[email protected]:~# hping –scan 80-100 www.example.com-S -V
using eth0, addr: 192.168.1.103, MTU: 1500
Scanning www.example.com(95.0.11.13), port 80-100
21 ports to scan, use -V to see all the replies
+—-+———–+———+—+—–+—–+
|port| serv name | flags |ttl| id | win |
+—-+———–+———+—+—–+—–+
80 www : .S..A… 55 56928 0
81 : .S..A… 55 57184 0
82 : .S..A… 55 57440 0
83 : .S..A… 55 57696 0
84 : .S..A… 56 57952 0
85 : .S..A… 56 58208 0
86 : .S..A… 56 58464 0
87 link : .S..A… 56 58720 0
88 kerberos : .S..A… 56 58976 0
89 : .S..A… 56 59232 0
90 : .S..A… 56 59488 0
91 : .S..A… 56 59744 0
92 : .S..A… 55 60000 0
93 : .S..A… 55 60256 0
94 : .S..A… 55 60512 0
95 supdup : .S..A… 55 60768 0
96 : .S..A… 55 61024 0
97 : .S..A… 55 61280 0
98 linuxconf : .S..A… 55 61536 0
99 : .S..A… 55 61792 0
100 : .S..A… 56 62048 0
All replies received. Done.
Not responding ports:
Aynı çıktıyı nmap ile tarama yaptığımızda da alırız
[email protected]:~# nmap www.example.com-p80-100 –reason
Starting Nmap 5.00 ( http://nmap.org ) at 2010-02-14 12:09 EST
Warning: Hostname www.example.comresolves to 5 IPs. Using 95.0.11.13.
PORT STATE SERVICE REASON
80/tcp open http syn-ack
81/tcp open hosts2-ns syn-ack
82/tcp open xfer syn-ack
83/tcp open mit-ml-dev syn-ack
84/tcp open ctf syn-ack
85/tcp open mit-ml-dev syn-ack
86/tcp open mfcobol syn-ack
87/tcp open priv-term-l syn-ack
88/tcp open kerberos-sec syn-ack
89/tcp open su-mit-tg syn-ack
90/tcp open dnsix syn-ack
91/tcp open mit-dov syn-ack
92/tcp open npp syn-ack
93/tcp open dcp syn-ack
94/tcp open objcall syn-ack
95/tcp open supdup syn-ack
96/tcp open dixie syn-ack
97/tcp open swift-rvf syn-ack
98/tcp open linuxconf syn-ack
99/tcp open metagram syn-ack
100/tcp open newacct syn-ack
Nmap done: 1 IP address (1 host up) scanned in 0.24 seconds
Bu şekilde korunmuş sistemlere yönelik başarılı TCP taramaları gerçekleştirmek için 3’lü el sıkışmayı tamamlayan ve sonrasında ek paketler gönderen tarama tiplerini denemek gerekir.
Mesela nmap ile birlikte gelen versiyon belirleme özelliği burada işimize yarayabilir. Zira versiyon belirleme özelliği sadece SYN paketi gönderip cevap olarak SYN+ACK gelmesiyle tarama işlemini sonuçlandırmaz, portu açık olarak belirledikten sonra(karşı taraftan gelecek SYN+ACK cevabı) o portta çalışan uygulamanın versiyonunu belirlemek için ek paketler gönderir ki bu ek paketler SYNCookie/SynProxy korumasını devre dışı bırakır(Syncookie/synproxy 3’lü el sıkışmayı tamamlayan paketler için devreden çıkar ve paketleri doğrudan koruduğu sistemlere iletir). Her ne kadar tarama süresi oldukça uzasa da açık portları sağlıklı bir şekilde keşfetmek için versiyon belirleme taraması yapmak gerekir.
[email protected]:~# nmap www.example.com-PN -sV –top-ports 10
Starting Nmap 5.00 ( http://nmap.org ) at 2010-02-14 12:52 EST
Interesting ports on 11.22.33.44(11.22.33.44):
PORT STATE SERVICE VERSION
21/tcp filtered ftp
22/tcp filtered ssh
23/tcp filtered telnet
25/tcp filtered smtp
80/tcp open http Microsoft IIS webserver 7.0
110/tcp filtered pop3
139/tcp filtered netbios-ssn
443/tcp filtered https
445/tcp filtered microsoft-ds
3389/tcp filtered ms-term-serv
Service Info: OS: Windows
Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 10.32 seconds
syn cookie devreye girdiği zaman 3-way hand shake yapılması gereken paketler içinde drop veya reject gelmeye başlayacak, dolayısı ile high portlarda açık olan bir servisi atlama ihtimali olabilir. Bu sebeple ben genellikle portlar arası rastgele timeout’lar kullanıyorum. Netsecreen default ayarlarını genellik 1650usec bekleterek aşabiliyorum.
hping –scan 1-100 ip -S -V -i u1655 gibi genelde syn-cookie den kaçmaya yardımcı oluyor.
Bir başka yöntem ise gelen SA paketlerindeki window ve TTL değerlerine bakmak oluyor. Korunan sunucu tarafından yollanan paket ile koruyan sistem tarafından yollanan paketlerdeki farklılıklar işe yarıyor.
Deniz,
hping ile Syncookie korumalı bir hosta gonderecen her SYN paketine SYN-ACK geliyor(ve hping tekrar ACK vs gondermiyor). bu durumda kapalı portla açık portu nasıl ayırt ediyorsun?
Dönen SA paketlerinde görebileceğin değerlerle syncookie tarafindan korunuyor mu bilgisini ogrenmeye calisiyoruz?Diger turlu tum SA paketleri syncookie korumasindan gelecegi icin ayirt etme secenegi kalmiyor gibi?
Yazdiklarini tamamen yanlis anlamis olabilirim:)
hping ile taramada timeout kullanman gerekiyor ve syncookie devreye girmesine neden olacak treshold değerinden kaçmaya çalışıyorsun. -i parametresi ile, girerse ayırt edemezsin.
Syncookie devreye girdikten sonraki SA bilgilerinin farklı olduğu durumlar ile karşılatım, ttl değerini firewall da sonlanacak şekilde ayarladığın zaman farklı değerler çıkıyordu. Yeni sürümlerinde bu işe yaramıyor artık. Ben daha çok timeout ile syncookie’yi tetiklemeyerek işin içinden çıkmaya çalışıyorum. NS bulursan bir ara deneriz detaylı.
Sanırım sen default’da açık olmayan ve belirli threshold’u aştıktan sonra devreye giren SYN Proxy/cookie özelliğini kastediyorsun. Ok bu durumda aslında pps değerlerini küçük tutmak da bazı sistemlerde işe yarıyor(anlık syn bağlantıs sayısı 5000 ‘i aşarsa syncookie devreye girsin diye)
hping –rand-source -S -p 80 http://www.lifeoverip.net
hping: you must specify only one target host at a time
böle hata almamın sebebi nedir?
kodun içerisinde lifeoverip.net’e yapılacak denemeleri engellemek için if satırı koymuştuk ondandır:).
Şaka bir yana rand-souce parametresinin önünde iki adet – olmalı.
Bende reklam olmasın diye http://www.lifeoverip.net koydum 🙂 Yoksa bir deneme felan yok.Belki ileride 😀 sağolun hocam.