DOS/DDOS kavramını daha önceki yazımızda incelemiştik. Sunucularımızı bu saldırılardan korumamız için geliştirilen mod evasive yazılımının kurulumu ve konfigürasyonunu yapmaya başlıyalım. Test sistemimiz ubuntu server üzerinde apache çalışan bir sistem. Kurulum Kurulum için alttaki komutla mod evasive kurulumunu yapıyoruz. sudo apt-get install libapache2-mod-evasive Kurulum başarıyla tamamlanıp tamamlanmadığını kontrol etmek için; sudo apachectl -M | grep evasive […]
TR | Mod Evasive ile DOS/DDOS Koruması Mustafa Kaan Demirhan
]]>DOS/DDOS kavramını daha önceki yazımızda incelemiştik. Sunucularımızı bu saldırılardan korumamız için geliştirilen mod evasive yazılımının kurulumu ve konfigürasyonunu yapmaya başlıyalım. Test sistemimiz ubuntu server üzerinde apache çalışan bir sistem.
sudo apt-get install libapache2-mod-evasive
sudo apachectl -M | grep evasive
komutundan evasive20_module (shared) çıktısını alıp almadığımızı kontrol edelim.
sudo nano /etc/apache2/mods-enabled/evasive.conf
sudo service apache2 restart
sudo /etc/init.d/apache2 restart
sudo perl /usr/share/doc/libapache2-mod-evasive/examples/test.pl
SS de görüldüğü üzere 403 dönüyor yani kurulumumuz başarıyla tamamlayıp test etmiş olduk.
TR | Mod Evasive ile DOS/DDOS Koruması Mustafa Kaan Demirhan
]]>SSH Nedir SSH (Secure Shell) güvenli veri iletimi için kriptografik ağ protokolüdür. SSH bağlantısı bilgisayar-bilgisayar, bilgisayar-sunucu, sunucu-sunucu arasında yapılabilir. SSH uzak kabuk üzerinde yetkili bir metin tabanlı arayüz sağlar. SSH bağlantısı kurulduktan sonra, yerel terminal yazdığınız tüm komutlar şifreli SSH tüneli aracılığıyla uzak sunucuya gönderir ve terminal komutlarınız orada yürütülür. SSH istemci-sunucu modelini kullanır. Standart […]
]]>SSH Nedir
SSH (Secure Shell) güvenli veri iletimi için kriptografik ağ protokolüdür. SSH bağlantısı bilgisayar-bilgisayar, bilgisayar-sunucu, sunucu-sunucu arasında yapılabilir. SSH uzak kabuk üzerinde yetkili bir metin tabanlı arayüz sağlar. SSH bağlantısı kurulduktan sonra, yerel terminal yazdığınız tüm komutlar şifreli SSH tüneli aracılığıyla uzak sunucuya gönderir ve terminal komutlarınız orada yürütülür. SSH istemci-sunucu modelini kullanır. Standart TCP portu olan 22 SSH bağlantısı için atanmıştır.
Bu kılavuzda, SSH sıkılaştırması için en iyi olan bazı temel güvenlik uygulamaları hakkında örnekler yer alacaktır.
SSH Bağlantısı Nasıl Kurulur?
Temelde iki bağlanma yöntemi mevcuttur. Bunlardan birincisi kullanıcı adı ve şifre ile oturum sağlandığı yöntemdir, ikincisi ise SSH key ( SSH açık / gizli anahtar ) yardımı ile oturumun sağlandığı yöntemdir. Şifre oturumları yeni kullanıcılar için anlaşılması kolaydır. Ancak, otomatik botlar ve kötü niyetli kullanıcılar genellikle art arda şifre denemeleri ile güvenlik tavizlerine yol açabilir. Bu yöntem yerine SSH anahtarı yardımı ile oturum sağlanmasını öneriyoruz. Bu yöntemde özel ve genel anahtar çifti kimlik doğrulama öncesinde oluşturulur. Ortak anahtar herkes ile paylaşılabilirken, özel anahtar kullanıcı tarafından güvende tutulmalıdır.
Bu bağlantı yöntemleri dışında SSH versiyonuna göre oturum sağlamak için kullanılabilecek birkaç yöntem daha bulunmaktadır.
( Solda SSH v2, sağda ise SSH v1’i görmektesiniz. )
SSH Sıkılaştırması Yöntemlerinden Bazıları
SSH Sıkılaştırması Uygulaması
Öncelikle elimizdeki sunucuya veya ev bilgisayarına SSH bağlantımızı açalım.
Örnek komut:
ssh [email protected]
SSH oturumundayız, klavuzda Ubuntu 14.04.5 LTS kullanacağım, komular işletim sistemine göre farklılık gösterebilir. Sistemde cagatay adlı bir kullanıcı olduğunu varsayıyoruz. Kullandığınız sistemde kendi isteğiniz doğrultusunda ismini yazabilirsiniz.
sudo apt-get install openssh-server
Terminalden:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.factory-defaults sudo chmod a-w /etc/ssh/sshd_config.factory-defaults
Terminalden:
sudo vi /etc/ssh/sshd_config
Ayarlarımıza sırasıyla standart portu değiştirerek başlıyoruz:
Yorum satırı halinde olan ( ‘#’ yorum satırı anlamına gelmektedir ) PasswordAuthentication yes satırını yorum’dan çıkartıp yes olan parametreyi no yapıyoruz.
PermitRootLogin’i no olarak değiştirerek yapabilirsiniz.
Yeni bir terminal sayfasında: ( SSH oturumunu kapatmayınız )
ssh-keygen -t rsa -b 4096
Yukarıdaki komut kendi bilgisayarınızda açık ve gizli olmak üzere iki anahtar üretecektir. Açık anahtarı şu şekilde bulabilirsiniz:
cat ~/.ssh/id_rsa.pub
Yukarıdaki anahtarı görüntülediğimiz terminal’den sunucuda SSH oturumumuz olan terminal’e geçiyoruz, aşağıdaki ayarlamayı yapıyoruz.
AuthorizedKeysFile satırını yorum satırı durumundan çıkartıyoruz.
Kendi açık anahtarımızı SSH dizinindeki authorized_keys’e ekliyoruz.
Terminalden: ( Sunucuda )
sudo vi ~/.ssh/authorized_keys
Açık anahtarımızı kaydedip çıkıyoruz.
/etc/ssh/sshd_config dosyasını tekrardan açıyoruz
Terminalden: ( Sunucuda )
sudo vi /etc/ssh/sshd_config
Aşağıdaki kodları dosyanın en altına ekliyoruz.
Subsystem sftp internal-sftp Match group sftponly ChrootDirectory /home/%u X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp
Yukarıda verilen yöntemler sayesinde SSH oturumu açmış kullanıcıların kendi dizinlere etkiyebilmesini sağladık. Standart olarak SSH 22. porttan çalışmaktaydı, onu değiştirdik. Şifre ile oturum açmayı engelledik bu giriş yöntemi yerine daha güvenli olarak önerilen SSH anahtarını kullandık. Sistemimize tünelleme aracılığı ile sağlanabilecek uzak masaüstü bağlantılarını engelledik. Hiyerarşik bir ağ yapısında olduğu varsayılan sunucumuza daha yetkili üst makinalardan erişimi kısıtladık. Sisteme kullanıcı olarak oturum elde etmiş kullanıcıların root yetkilerine erişimini engelledik. SSH bağlantınızı daha güvenli hale getirmek için port spoofing, port knocking ve two factor authentication ( iki aşamalı oturum onayı ) kullanabilirsiniz.
SERVİS DIŞI BIRAKMA TESTLERİ (DOS – DDoS) Merhabalar, Güvenliğin yapıtaşlarından biri olan erişebilirlik ilkesine göre hizmet halinde olan bir servis ya da sunucunun çalışmasının düzgün ve devamlı bir şekilde olabilmesi şarttır. DOS ataklarda ise düzgün ve devamlı çalışan servisler durdurulabilmekte, bu servislerin hizmet verebilmesi engellenmektedir. DOS saldırıları çeşitli şekillerde yapılabilmektedir. Yerel ağda bu testler […]
TR | DOS / DDOS Türleri ve Servis Dışı Bırakma Testleri CanYouPwnMe
]]>
Merhabalar,
Güvenliğin yapıtaşlarından biri olan erişebilirlik ilkesine göre hizmet halinde olan bir servis ya da sunucunun çalışmasının düzgün ve devamlı bir şekilde olabilmesi şarttır. DOS ataklarda ise düzgün ve devamlı çalışan servisler durdurulabilmekte, bu servislerin hizmet verebilmesi engellenmektedir. DOS saldırıları çeşitli şekillerde yapılabilmektedir. Yerel ağda bu testler simüle edilerek saldırı testleri yapılabilir.
DOS ataklar hedef sistemin erişebilirliğini engellemek için yapılan ataklardır. DOS veya DDoS ataklar ile hedef cihaza devamlı paket gönderilerek hedef cihazın state tablosu doldurulabilir, CPU değerleri yükseltilerek veya hat taşırarak devre dışı kalması sağlanılabilir.
DDOS ise, dağıtık olarak yapılan servis dışı bırakma saldırılarıdır. Son kullanıcıların bilgisayarlarına zararlı yazılımların buluştırılması ile kontrol altına alınan ve uzaktan kötü amaçlar için kontrol edilen bilgisayarlara zombi adı verilmektedir. DDoS saldırılarında merkezi komut sisteminden verilen talimat ile zombi bilgisayarlardan üretilen paketler ile hedefe saldırıalar yapılarak hedefe olan erişim engellenir. Fast flux ağlar, phishing sitelerin, zararlı kod dağıtan sitelerin gizlenmesi için zombileri kullanan bir DNS tekniğidir. Fast flux ağlarda alan adı birden fazla IP adresine sahiptir. Alan adına tekabül eden IP adresleri sürekli değiştirilir.
Özet olarak;
DOS; Sistemleri çalışamaz hale getirmek için yapılan saldırı tipi
DDOS; DOS saldırısının yüzlerce, binlerce farklı sistemden yapılması
İleride DOS ile DDoS arasındaki farklılıkları daha net olarak görebileceksiniz.
OSI KATMANI VE KATMANLARA GÖRE DOS/DDoS Çeşitleri
OSI KATMANI
İki bilgisayar arasındaki iletişimi biçimsel olarak tanımlayan ilk kuruluşlardan birisi ISO (International Organization for Standardization) ‘dur. ISO uluslararası veri iletişimi standartları geliştiren bir kuruluştur. ISO 1970’lerde OSI (Open Systems Interconnection) mimarisini geliştirmiştir. OSI ağ sistemleri için bir kılavuz niteliği taşır. OSI öncesinde donanım üreticilerinin kendilerine özgü ağları bulunmakta ve farklı üreticilere ait donanımlar arası uyumsuzluk ortadan kalkmış ve bilgisayarlar arası iletişim ortak bir standarda oturtulmuştur.
OSI yedi katmana ayrılmıştır ve iletişim esnasında kullanılan protokoller ve donanımlar bu katmanlarda yer alır. İki bilgisayar arasında veri iletimi gerçekleştirileceği zaman veriyi gönderen için iletim en üst katmandan başlar alt katmana doğru devam eder bu işleme Encapsulation adı verilir. Veri alan için ise durum tam tersidir. Yani gelen veri en alt katmandan başlar ve üste doğru devam eder bu işleme ise De-Encapsulation adı verilir. En üst katman kullanıcıya daha yakın olup uygulamaları içerirken alt katmanlara doğru veri makine diline ve en son bit seviyesine kadar düşer. OSI modeli sayesinde bir donanım veya protokolün ağ içerisindeki görevi daha kolay açıklanabilir.
OSI modelinde katmanlar birbirinden kesinlikle bağımsız değildir. Her katman kendinden önce gelen katmana hizmet eder.
(Şekil1.OSI KATMANI)
KATMANLARA GÖRE DOS/DDoS Çeşitleri
Tüm katmanlara göre bazı DOS çeşitleri vardır.
(Şekil2. OSI KATMANI VE OSI’ye GÖRE DOS/DDOS ÇEŞİTLERİ)
Fiziksel Katmanda DOS Saldırıları
Bu katman verinin kablolar üzerinden iletiminden sorumludur ve verinin içeriğiyle ilgilenmez. Verinin elektrik, ışık veya radyo sinyallerine çevrim şekli ve aktarımını tanımlar. Veriyi gönderen taraf 1 ve 0’lardan oluşan veriyi iletim şekline göre (ışık,radyo veya elektrik) çevrimini, alıcı taraf ise gelen sinyallerin 1 ve 0’lara çevirir. Ağ cihazlarından HUB’lar fiziksel katmanda tanımlıdır. Fiziksel katman iletişim türleri; RS-232, 10Base-T, 100Base-TX, ISDN, DSL vb…
Ağ Kablolarına ve Donanımlara Zarar
Direk olarak network ün ayakta durmasını sağlayan donanımlara ve kablolara zarar verilmesidir. Fiziksel olarak sunucular, routerlar, hublar veya switchlere zarar verilmesi ve kapatılması network ün durmasına sebep olur. Fiziksel saldırılar DOS saldırı türleri arasında en tehlikelidir geri dönüşümü olmayan zararlar verilebilir. Hem maddi hem manevi büyük zararlar verilebilir.
Frekans Bozumu (Jamming) Saldırısı ve Önlemleri
(Şekil3. Jamming)
Düğümlerin kullandığı radyo frekansını bozan bir saldırı türüdür. Kötü niyetli bir düğüm, normal düğümlerin yolladığı radyo frekansında alıcı antene sinyal yollar. Alıcı normal düğümlerin yolladığı sinyalleri bu saldırı nedeniyle alamaz. Özellikle tek frekanslı ağlarda bu tür saldırı çok kolay yapılabilmektedir. Saldırıya uğrayan bir düğüm için en basit korunma methodu sadece “uyumak”tır. Bununla birlikte uyuma pasif bir korunma methodudur. Daha bir ileri korunma methodu, spektrumu yayıp, frekans sıçraması yapmaktır. Eğer “frekans bozumu” saldırısı mevcut ise, trafiği yeniden yönlendirmek de bir çözüm olabilmektedir. Şekil 3.te trafiğin yeniden nasıl yönlendirildiği gösterilmiştir. Örneğin j alanında frekans bozum saldırısı olduğundan bu alandan normalde hiç bir gerçek trafik geçmemektedir. Bu alanın dışında ki bir düğüm, bu bölgeden olağan dışı bir gürültü sezebilir ve üzerinden geçen trafiği farklı bir yol kullanarak yollayabilir.
Data Link Katmanında DOS Saldırıları
Fiziksel katmana erişim ile ilgili kuralları düzenler. Bu katmanda gerçekleştirilen işlemlerin büyük bölümü ağ arayüz kartı içerisinde geçekleştirilir.
Bu katman ağdaki bilgisayarların tanımlanması, hattın hangi bilgisayar tarafından kullanıldığının belirlenmesi ve fiziksel katmandan gelen verinin hata denetimi görevini yerine getirir. Eğer veri ağ katmanından geliyorsa ağ katmanından aldığı verilere hata kontrol bitleri ekleyerek fiziksel katmana aktarmayı gerçekleştirir. İletilen verinin doğru mu yoksa hatalı mı iletildiğini eklediği hata bitleri ile kontrol eder ve hatalı iletilmişse tekrar gönderir.
Veri bağlantı katmanı LLC (Logical Link Control) ve MAC (Media Access Control) alt katmanları olmak üzere iki bölümden oluşur. MAC alt katmanı, ağ katmanından gelen veriye hata bitlerini, alıcı ve gönderici MAC adreslerini ekleyerek fiziksel katmana aktarır. MAC alt katmanı veriyi alan tarafta da aynı işlemlerin tersini yapıp veriyi LLC alt katmanına aktarır. LLC alt katmanı, ağ katmanından geçiş görevi görür. LLC alt katmanı alıcı-gönderici bilgisayarlarda aynı protokollerin kullanılması ve bozuk paketlerin tekrar gönderilmesini sağlar. Ayrıca akış kontrolü ile aşırı yüklenmeyi önler. Bu katmanda Ethernet,Token Ring, FDDI,ATM,Frame Relay ve PPP iletişim kuralları bulunmaktadır.
Ağ cihazlarından switch ve bridge data link katmanında tanımlıdır.
ARP Flood
ARP önbelleklerini varolmayan MAC adresleri ile güncellemek frame`lerin düşürülmesine sebep olacaktır. Bu bir DoS saldırısı amaçlı olarak ağdaki tüm istemcilere gönderilebilir.
Wi-Fi Deauth.
Bir Wi-Fi ağına De-authentication paketleri göndererek bağlantı kesilebilir.
(Şekil4. Wi-Fi De-Auth. Attack)
Network Katmanında DOS Saldırıları
Bu katman gelen veri paketlerinin ağ adreslerini kullanarak uygun ağlara yönlendirilmesini sağlar. Ayrıca, ağdaki cihazların adresleme işlemlerini gerçekleştirir. Router ve yönetilebilir switch bu katmanda yer alır. Ayrıca veri paketi farklı bir ağa yönlendirilecekse router’ların kullanacağı bilgi bu katmanda eklenir.
Temel görevi, taşıma katmanından gelen istekleri cevaplandırmak ve bu hizmetleri Veri Bağı katmanına iletmektir. IP, ARP, ICMP, IPSec, IPX ve AppleTalk bu katmanda kullanılan protokollerdir.
ICMP Flood
ICMP (Internet Control Message Protocol) sistemler arası iletişim ve hata ayıklama amacıyla kullanılan bir protokoldür. Aslında hiçbir kod yazmadan, command prompttan “ping -t example.com.tr” ile DOS saldırısı gerçekleştirilebilir. Ancak cmd’den gönderilen ping komutu ile 32 bytes’lık bir ICMP paketi gönderiliyor. Eğer daha büyük ICMP paketleri oluşturup, ping atarsak hedef sistemi daha fazla yorarız. Send metodumuzu aşağıdaki gibi düzenleyerek ICMP flood yapabiliriz.
(Şekil5. ICMP Flood)
Main metodundaki threadden SendPing metodunu çağırıp, uygulamayı çalıştırdığınızda flood yapmaya başlayacaktır.
(Şekil6. ICMP Flood)
Soldaki flood yapan uygulama. Sağdaki command prompt. Sürekli 793 bytes’lık ICMP paketleri gönderiliyor.
Daha spesifik kodlar geliştirerek veya farklı araçlardan yararlanarak daha güçlü saldırılar yapılabilir.
Transport Katmanında DOS Saldırıları
Bu katman 5-7 ve 1-3 katmanları arasındaki bağlantıyı sağlar. Üst katmandan gelen veriyi bölümlere ayırarak alt katmanlara, alt katmandan aldığı bölümleride birleştirerek üst katmana gönderir. Ayrıca akış kontrolü ile verinin alıcısına ulaşıp ulaşmadığını ve bölümlere ayrılan verinin aynı sırada birleştirilmesini sağlar. Veri iletimini gerçekleştiren TCP,UDP,SPX,SCTP ve DCCP protokolleri bu katmanda yer alır.
SYN Flood
Normal olarak bir istemci bir sunucuya TCP bağlantısı başlatma isteğinde bulunduğunda, sunucu ve istemci bir dizi mesaj takas eder ve bu durum şöyle işler:
Bir SYN saldırısı, sunucuya beklenen ACK kodunu göndermeyerek çalışan bir ataktır. Kötü niyetli istemci ya basit bir şekilde beklenen ACK’yı göndermez ya da sahte IP adresi kullanarak SYN’deki IP adres kaynağını zehirler(spoofing). Çünkü sunucu sahte IP adresine SYN-ACK göndermeye çalışır. Ancak ACK gönderemeyecektir çünkü o adresle bir SYN gönderilmediğini bilir.
Sunucu bir süre acknowledgement(kabul) için bekleyecektir. Fakat saldırılarda bu istekler sürekli artan şekilde olduğundan sunucu yeni bağlantı oluşturamaz duruma gelir. Ve sunucu devre dışı kalır.
Uygulama Katmanında DOS Saldırıları
Kullanıcıya en yakın katman olup kullanıcı tarafından çalıştırılan tüm uygulamalar bu katmanda yer alır. Uygulamalar ile ağ arasındaki arabirimdir. Dosya paylaşımı, e-mail veya veritabanı yönetimi gibi işlemlerin gerçekleştirildiği katmandır. Uygulama katmanında http,SMTP,POP,DHCP,FTP,Telnet,DNS gibi protokoller kullanılır. Örneğin, bir kullanıcı bir web sayfasını ziyaret etmek için tarayıcıyı açması uygulama katmanında gerçekleştirilir. Çünkü, http uygulama katmanı protokolüdür.
DNS Amplification Saldırısı
Saldırıyı gerçekleştiren taraf recursive DNS sunuculara değiştirilmiş kaynak IP li sorgular gönderir. Recursive DNS sunucu bu sorguların yanıtlarını kurbanın IP adresine döner.
Saldırgan küçük DNS sorguları gönderir, çok fazla DNS kaydı olduğu bilinen bir alanadı için “ANY” paremetresi kullanılarak tüm kayıtlar istenir. Sorgu paketleri 60byte seviyelerindeyken dönülen cevap 3-4kb seviyesinde olabilir. Buda yaklaşık 50-70 katı bir kuvvetlendirme sağlar. Saldırgan küçük DNS sorgularını fazla sayıda recursive DNS sunucuya gönderebilir, ve tüm sunucular kurbana yanıtları döner. Bu yöntem ile kısa süre içerisinde kurbana ezici bir trafik yönlendirilmiş olur.
Katmanlara göre DOS/DDoS Saldırıları temel olarak bu şekildedir.
Bir sonraki makalede görüşmek dileğiyle…
TR | DOS / DDOS Türleri ve Servis Dışı Bırakma Testleri CanYouPwnMe
]]>Wifi dos attack is wifi deauthentication attack in other words. This attack is a type of denial-of-servce attack. Purpose of this attack is disconnect communication between user and wi-fi wireless Access point. Deauthentication frames are classified as management frames in the 802.11 . They are used to disconnect stations and Access points. The IEEE 802.11 […]
]]>Wifi dos attack is wifi deauthentication attack in other words. This attack is a type of denial-of-servce attack. Purpose of this attack is disconnect communication between user and wi-fi wireless Access point.
Deauthentication frames are classified as management frames in the 802.11 . They are used to disconnect stations and Access points.
The IEEE 802.11 protocol contains the answer for deauthentication frame. Sending deauthentication frame from Access point to station to disconnect from the network.
An attacker can`t send this frame to wireless Access point with spoofed address for victim. Also this protocol dont need any encryption for this frame.
TOOLSET FOR GENERATE DEAUTHENTİCATİON FRAMES:
Aircrack-ng suite
MDK3
Void11
Scapy
Zulu
DEMO TİME
Thank you.
]]>Online Kaynaklar: Sızma Testi Kaynakları Metasploit Unleashed – Ücretsiz Metasploit Kursları PTES – Sızma Testi Standartları OWASP – Web Uygulama Güvenliği Projesi Shellcode Geliştirme Shellcode Örnekleri – Shellcode Veritabanı Sosyal Mühendislik Kaynakları Kilit Kırma Kaynakları Schuyler Towne Youtube Channel – Kilit Kırma Teknikleri Reddit Lockpicking – Kilit Kırma Teknikleri ve Araç Önerileri Araçlar Sızma Testi Dağıtımları Kali BlackArch […]
]]>Online Kaynaklar:
Shellcode Geliştirme
Sosyal Mühendislik Kaynakları
Kilit Kırma Kaynakları
Schuyler Towne Youtube Channel – Kilit Kırma Teknikleri
Reddit Lockpicking – Kilit Kırma Teknikleri ve Araç Önerileri
Araçlar
Sızma Testi Dağıtımları
Basit Sızma Testi Araçları
Zafiyet Tarama Araçları
Ağ Araçları
Kablosuz Ağ Araçları
SSL Analiz Araçları
HEX Düzenleme
Kırma Araçları
Windows Araçları
DDoS Araçları
Sosyal Mühendislik Araçları
OSInt Araçları
Gizlilik Araçları
Tersine Mühendislik Araçları
Kitaplar
Sızma Testi Kitapları
Hacker ın El Kitabı Serisi
Ağ Analiz Kitapları
Tersine Mühendislik Kitapları
Zafiyet Veritabanları
Güvenlik Kursları
Ctf Kütüphaneleri
Bilgi Güvenliği Konferansları
En Yaygın 125 Ağ Güvenliği Aracı
]]>
Bu çalışmada servis dışı bırakma saldırıları olarak bilinen (denial of service) dos saldırılarından biri gerçekleştirilecektir. Bu saldırıyı gerçekleştirmeden önce dos saldırısının ne olduğu bilinmelidir. Dos saldırısı bilgisayar sistemlerini çalışamaz hale getirmek için gerçekleştirilen saldırılardır. Burada amaç hedef sistemden veri sızdırmak değil, hedef sistemin sağlıklı olarak çalışmasını önlemektir. Dos saldırısı birçok farklı yöntemle gerçekleştirilebilir. Bu yazıda dos […]
]]>Bu çalışmada servis dışı bırakma saldırıları olarak bilinen (denial of service) dos saldırılarından biri gerçekleştirilecektir. Bu saldırıyı gerçekleştirmeden önce dos saldırısının ne olduğu bilinmelidir. Dos saldırısı bilgisayar sistemlerini çalışamaz hale getirmek için gerçekleştirilen saldırılardır. Burada amaç hedef sistemden veri sızdırmak değil, hedef sistemin sağlıklı olarak çalışmasını önlemektir. Dos saldırısı birçok farklı yöntemle gerçekleştirilebilir. Bu yazıda dos saldırıları içerisinde pek popüler olmayan, ip fragmantasyonu yöntemi ile dos saldırısı gösterilecektir.
Ip fragmantasyonu ile dos atağından bahsetmeden önce ip fragmantasyonundan ve bunun saldırıda nasıl kullanılacağından bahsedelim. Bir ip datagramı bir düğümden diğerine seyahat ederken farklı fiziksel ağlar üzerinden geçmektedir. (Internetworking) Her fiziksel ağın desteklemiş olduğu maksimum çerçeve boyutu ise birbirinden farklıdır. Örneğin Ethernet fiziksek ağı en fazla 1500 bayt çerçeve uzunluğuna sahip ip paketleri taşıyabiliyorken, ATM 9180, 802.5 4465, X25 de 526 baytlık çerçeve uzunluğuna sahip paketleri taşıyabilmektedir. Bir ip datagramının uzunluğu ise 65536 bayttır. Bu boyuttaki verinin hedef sisteme iletilebilmesi için daha küçük parçalara ayrılması gerekir. Bu işi uç düğümlerde çalışan TCP protokolü yerine getirmektedir.(Bknz TCP Segmentation) Fakat ağ üzerinde seyahat eden ip paketleri farklı fiziksel haberleşme altyapıları üzerinden seyrettiklerinde TCP nin parçalamış olduğu ip datagramlarının boyutları bu haberleşme altyapılarına uyum gösterememektedir. Bu durum aşağıda gösterilmiştir.
Şekilde görüldüğü gibi Ethernet altyapıya sahip A PC sinden çıkan ip paketi 1500 bayt büyüklüğünde olup, hedefe giderken, X25 altyapısına sahip bir başka ağ ile karşılaşmıştır. X25 haberleşme altyapısı ise en fazla 526 bayt büyüklüğünde paketlerin oluşturulmasını desteklemekte olup, 1500 baytlık ip paketinin bu altyapı üzerinden iletilmesi için parçalanması gerektiği anlaşılmaktadır. Burada router ip paketini parçalar ve bu parçaları B PC’sine gönderir. B PC’sinin bu paketleri anlamlandırabilmesi için ip paketlerini yeniden birleştirmesi gerekmektedir. (Reassemble) Yeniden birleştirme işlemi yalnızca uç düğümlerde –bu örnek için PC B de– ip katmanında gerçekleştirilebilmektedir. Bu paketlerin ip katmanına iletilebilmesi için eksiksiz olarak uç düğüme ulaşmaları gerekmektedir. Uç düğümde fragmantasyona uğraşmış paketin parçaları birleştirilmeden önce eksiksiz olarak alınıp daha sonra IP katmanına iletilmesi için bir buffer tahsis edilir.
Bu buffer ip katmanı ile veri bağı katmanı arasında yer almaktadır.(mantıksal olarak) Uç düğüm fragmante edilmiş paketleri aldığında ip katmanında birleştirme işlemini icra eder. Aşağıdaki şekilde bu proses gösterilmiştir.
Birleştirilme işleminde aşırı zaman ve bellek kaybı oluşmaması amacıyla bir zamanlayıcı kullanır. Zamanlayıcı ilk ip fragmanı alındığında başlar ve set edildiği değere ulaştığında fragmate edilmiş paketlerin tamamı ulaşmamışsa parçalanmış tüm paketler elemine edilir. Tüm bu durumlar göz önüne alınarak bir atak vektör oluşturulması gerekmektedir.
Saldırı vektörümüzü oluşturmadan önce bir paketin uç düğümde alındığında gerçekleşecek olan yaşam döngüsünü bilmemiz gerekmektedir. Aksi takdirde bu dos atağını gerçekleştirmek imkânsız hale gelecektir.
Bir ip paketinin alıcı (receiver) tarafındaki yaşam döngüsü, diğer bir deyişle paket alma prosesi aşağıda açıklanmıştır.(Layer 1-2)
Yukarıda ayrıntılı olarak anlatılan paket işleme durumunu özetleyecek olursak. Bottom halves durumunda network ile veri katmanı arası çalıştırılır. (Layer 2-3)
Anlatılan prosesin aşağıdaki şekilde data link ve internet katmanlarında gerçekleştiği görülmektedir.
Geliştireceğimiz atak vektör tamda bu noktada devreye girecektir. Burada alıcı proses çalışırken bottom halvese girip oradan çıkamamasını sağlamak istemekteyiz. Çünkü bottom halves işlemleriyle meşgul olan cpu, diğer proseslere kaynak ve zaman ayıramayacak ve çalışma verimliliğini yitirecektir. Paket alma prosesinini bottom halves durumundan çıkamaması için sürekli olarak ip katmanına iletilecek olan bekleyen paket kuyruğunun dolu olması gerekmektedir. Burada bu kuyruğu doldurmak için normal olarak gönderilecek ip paketleri yetersiz kalacaktır. Çünkü bu katman bu paketleri hızlıca işleyip bir üst katmana yani ip katmanına iletir. Fakat sisteme sürekli ve yoğun olarak fragmante edilmiş ip paketleri gönderilirse (hatırlanacağı gibi fragmente edilmiş ip paketleri yalnızca ip katmanında birleştirilebilir) backlog_device kontrollerinde görüleceği gibi tampon fragmante edilmiş ip paketleriyle dolacak ve işlenmesi bitmemiş ip paketleri -fragmente edilmiş parçaların tamamının gelmesini beklenecek- tamponda yer kaplamaya devam edecek, böylece yukarıda da anlatıldığı gibi net_rx_action fonksiyonu sürekli olarak çağrılacaktır. Yani sistem bottom halves durumundan fragmente edilen paketler için kurulan timer süresi dolana kadar çıkamayacaktır.
Yukarıda da anlatılan algoritmada belirtildiği gibi boşalmayan tampon bottom halves durumundan çıkamayacaktır. Böylece sistem kaynakları kernel alanı tarafından yani (software interrulp) kesmeler tarafından kullanılacaktır ve bu da CPU’nun verimliliğini düşürecektir.
Bu aşamada kesmelerin ne olduğunu ve özelliklerini bilmek ve açıklamak zorunlu hale gelmiştir. Özellikle Linux tabanlı işletim sistemlerinde iki farklı çeşit kesme çeşidi bulunmaktadır. Bunlar top halves ve bottom halves olarak adlandırılırlar.
Top halves zaman hassasiyeti olan işler için gerçekleştirilir ve bu kesme handle edildiğinde işletim sistemi önceliği tamamen bu kesmeye verir. Bu durum genelde donanımların göndermiş oldukları kesmelerde meydana gelir. Top halves kesmeler kısa ve hızlı olmak zorundadır. Çünkü işletim sistemi diğer tüm işlemleri askıya alıp önceliği bu işleme vermiştir. Bu durum Top-half kesmelerin interrulp contex alanında tanımlanmasıyla açıklanmaktadır. Top halves kesmeleri, yapılması gereken ertelenebilir işleri ikinci kesme kategorisi olan bottom halvese devreder. Bottom halves da bir kesme türüdür fakat ertelenebilir kesme işlemleri bu seviyede icra edilir. Örneğin network donanımına gelen bir paket ilk algılandığında top halves kesmesi gelir ve bu paketin geriye kalan tüm işlemlerinin icrası için durum bottom halvesa devredilir. Bottom Halves kernel contexi alanında tanımlıdır ve daha fazla aciliyete sahip bir kesme geldiğinde beklemeye geçebilir. Aşağıdaki şekilde kesme contex alanları gösterilmiştir.
Tüm bu açıklamalar yapıldıktan sonra artık ip fragmantasyonu tabanlı atak gerçekleştirilebilir. Bu atak çift çekirdek ve multiple cores işlemcili Centos 7 işletim sistemine sahip sanallaştırılmış bir makineye gerçekleştirilecektir. CPU bilgileri aşağıda gösterilmiştir.
Saldırının amacı bol miktarda fragmante edilmiş ip paketi göndererek Centos 7 sunucusunda yazılım kesmeleri kaynaklı CPU faaliyeti meydana getirmektir. Fragmante edilmiş ip paketi hazırlayabilmek için çeşitli araçlar bulunmaktadır. Bu atakta bu araçlardan hping3 tercih edilmiştir. Bunun sebebi, kullanımı kolay, hızlıca paket oluşturabilmesi ve birçok faydalı özelliğinin bulunmasıdır. Hping3’ ün kullanımı için https://canyoupwn.me/?p=441 adresini ziyaret edebilirsiniz.
Saldırıyı gerçekleştirmek için aşağıdaki hping komutunu çalıştırıyoruz.
Hping3 192.168.1.47 –data 3000 –mtu 200 –flood –rand-source –C 8
Bu komutu açıklayacak olursak, burada 192.168.1.47 saldırıyı gerçekleştireceğimiz sunucunun ip adresi, –flood hping’in olabildiğince fazla paket hazırlayıp göndermesini sağlayan parametre, –rand-source parametresi oluşturulan her pakete farklı bir kaynak ip adresi ekleme parametresi ve –C 8 ise oluşturulan paketin bir ICMP Echo Request paketi olmasını sağlayan parametredir. Bu komutta –data parametresi ile oluşturulacak olan pakete 3000 bayt büyüklüğünde veri eklemeyi amaçlıyoruz ve –mtu parametresiyle de gönderilecek olan paketlerin boyutunun en fazla 200 bayt olabileceğini belirtiyoruz. Bu şekilde paket oluşturmamızın amacı ise hpingin ip fragmantasyonunu paketi gönderirken otomatik olarak yapmasını istememizdir. Şöyle ki hping oluşturduğu her pakete 3000 baytlık veriyi yüklemeye çalışacak fakat mtu değerinin 200 olduğunu gördüğü an bu verinin tek bir pakette gönderilemeyeceğine karar vererek ve 3000 baytı 200 baytlık parçalara fragmante ederek göndermeye çalışacaktır. Gerçekleştirilen bu saldırılar sonucu kurban makinenin (192.168.1.47) CPU durumu ise aşağıda gösterilmiştir.
Kurban makine yukarıdaki ekran görüntüsünde de görüldüğü gibi CPU zamanının önemli bir kısmını si yani software interrulplara harcamaktadır. Yani istenilen sonuca ulaşılmıştır. Burada dikkat edilmesi gereken farklı bir nokta ise CPU faaliyetinin user space yani kullanıcı proseslerinde değil, kernel space yani kernel seviyesinde olmasıdır. Yukarıdaki top komutunun çıktısında da görüldüğü gibi kullanıcı proseslerinin gösterildiği alanda CPU yoğunluğu gösterilmemiştir.
IP fragmantasyonun bu saldırıdaki rolünü iyice anlamak için fragmantasyon yapılmış ve yapılmamış ip paketleriyle bu atak vektörü denenmelidir. İlk olarak aşağıda ip fragmantasyonuna uğramamış paketler ile gerçekleştirilen saldırı gösterilmiştir. Sonuç aşağıdaki gibidir.
Hping3 192.168.1.47 –flood –rand-source –C 8
IP fragmantasyonuna uğramış paketler ile gerçekleştirilen saldırının sonuçları ise aşağıdaki gibidir.
Ekran görüntülerinden de anlaşılacağı gibi fragmantasyona uğrayan paketler ile gerçekleştirilen ataklar cpunun zamanını neredeyse iki kat daha fazla almışlardır. (Kurban makinde cpu durumunu görüntülemek için htop komutu kullanılmıştır. Htop anlık verileri ekrana getirdiğinden cpu faaliyetleri stabil hale geldikten sonra ekran görüntüsü alınmıştır.)
Sonuç olarak ip fragmantasyonu ile gerçekleştirilen dos ataklarının, parçalanmamış ip paketleriyle yapılan ataklara göre daha fazla sistemi yorduğu anlaşılmıştır. Burada önemli olan bunun sebeplerinin başlangıçta da bahsedildiği gibi iyi irdelenmesidir.
]]>