-------------------------------------------------------------------------------
Döküman Cyber-Warrior TIM adına x-Master tarafından yazılmıştır.
-------------------------------------------------------------------------------
Web uygulamalarının güvenliğinde en önemli nokta sunucu güvenliğidir. Unutmayınız ki, sunucu güvenli olmadığı takdirde sizin siteniz ve uygulamanız ne kadar güvenli olursa olsun, sitenin hack’lenmesine engel olamayacaktır. Örnek olarak;
Sisteminizi hedefleyen bir saldırganın, sitenizde açık bulamadığını varsayalım. Saldırgan bu aşamadan sonra sunucuyu incelemeye çalışacaktır. Sunucu üzerinde bulduğu her açıktan/hatadan faydalanacaktır. Örnek olarak sunucunun port durumunu kontrol edecektir.
Bir sistemin taranması, temel olarak hedef konumunda bulunan ağda bulunan bileşenleri ve bu bileşenlere yetkisiz olarak erişim hakkına sahip olmak için yapılmaktadır. Tarama,aktif sistemlerin belirlenmesi, işletim sistemlerinin saptanması ve bu bileşenlerin hedef ağdaki lokasyonunun belirlenmesi gibi basamaklardan oluşur.
İlerleyen teknolojinin ürünü olarak birçok işletim sisteminde birden fazla program aynı anda çalışmakta ve çalışan bu programlardan bazıları da dışardan gelen request (istek)’lere açık olmaktadırlar. Uygun görülen request’lere response (cevap) vermektedir.
Sunucu programları çalışan bilgisayarlara verilen IP adresleri ile istenilen bilgisayarlara ulaşılır. Ulaşılan bilgisayarlar üzerindeki hangi sunucu programdan hizmet almak istendiğini belirlemek ise port’lar aracılığıyla sağlanır. Bu işlemi sağlayabilmek için bilgisayarlar üzerinde sanal bağlantı noktaları oluşturulur ve her bağlantı noktasını adresleyebilmek için Port numarası dediğimiz pozitif rakamlar verilir. Port numaraları 2 byte olarak tutulur. 1024’ten küçük olan port numaraları Root dediğimiz özel yetkilere sahip kullanıcılar tarafından kullanılır. Büyük olanlar ise normal kullanıcılar tarafından kullanılmaktadır.
Port kavramını öğrendikten sonra Attacker’ların, Port’lardan faydalanma eylemine değinelim.
Attacker sistem hakkında yeteri kadar veri topladıktan sonra yapacağı ise hedef sistemin TCP veya UDP Portlarına bağlanarak hangi port’un açık olduğunu belirlemek veya hangi port’un dinleme durumunda olduğunu saptamaktır. Yani Port Taraması yapmaktır.
İlk önce de dediğimiz gibi, saldırı bilmeden saldırıya karşı çözüm üretilemez.
Port Tarama Nasıl Yapılır?
TCP Connect Scan
Transmission Control Protokol (TCP), bilgisayarlar ile veri iletme ve alma birimleri arasındaki iletişimi sağlayan, bu yolla veri transferini mümkün kılan yapıdır.
TCP’nin İşleyişi: TCP Oturumu öncelikli olarak bir sunucudan servis ister, diğer istemci ise response olarak (eğer bağlantı isteği kabul edilirse) SYN Flag (SYN Bayrağı) ’ı kalkık paketini sunucu bilgisayara iletir. Paketi alan sunucu ise, gönderene response olarak SYN Paketini aldığını ve bağlantı request’ini onayladığını göstermek için SYN Bayrağı kaldırılmış (set) paketi yani SYN-ACK Paketini istemci bilgisayara gönderir. Son aşamada ise sunucu makinenin gönderdiği SYN-ACK paketini alan istemci bilgisayar sunucuya ACK paketini göndererek yollanan paketi aldığını bildirir.
Bahsi geçen tarama yöntemi yani TCP Connect Scan işlemi ise anlattığımız oturum açma işlemini gerçekleştirir ve oturum açıldığı zaman bağlantıyı keserek bize portun durumunu, açık veya kapalı olduğunu gösterir.
Yalnız Attacker bu yöntemi zor durumda kalmadığı zaman yapmaz. Çünkü oturum açma isteği gönderildikten ve bu işlem gerçekleştikten sonra isteği gönderen cihazın IP Adresi kaydedilir. Ama zorunlu durumlarda ve hedef sistemin portunun kesin bir şekilde açık veya kapalı olarak öğrenilmek istenmesi durumunda bu yol garantidir.
TCP SYN SCAN
TCP Connect Scan işleminde, bu yolun riskli olduğunu çünkü IP Paketlerinin loglandığını söylemiştik. Loglama işlemi, istemci bilgisayarın Oturum açtığı anda olur. Oturum açılırsa log tutulur.
TCP SYN Scan yarı-açık tarama olarak da bilinir. Bu tabirin bahsi geçen tarama yöntemine uygun görülmesinin nedeni ise, TCP Connect Scan’deki gibi tam olarak oturum açmamasından dolayıdır. TCP SYN Scan SYN bayraklı paketi gönderir ve SYN/ACK bayraklı paketi alır. Oturum açmayı ise RST/ACK bayraklı bir paket göndererek reddeder.
Eğer hedef port açık ise SYNC/ACK paketi gelir. Oturum açılmadığından dolayı da loglanma ihtimali ortadan kalkar.
TCP FIN Scan
TCP Connect ve TCP Syn Scan işlemlerinde oturum açma işlevlerine değindik. TCP FIN Scan’de ise Oturum açılmadan hedef portların açık veya kapalı olma durumları öğrenilir.
TCP FIN Scan’de hedef portlara FIN Paketleri gönderilir. *RFC793 ‘ e göre kapalı durumda olan bir port, bağlantı durumu söz konusu olmadan aldığı FIN paketine, RST Paketiyle cevap verir. Yani hedef porta gönderdiğimiz FIN Paketlerine eğer cevap gelirse port kapalıdır, eğer cevap gelirse port açıktır.
SYN/FIN Scannig Using IP Fragments
Bu tarama yöntemi SYN ve FIN Tarama yöntemlerinin daha gelişmiş bir türüdürdiyebiliriz. Bu tarama yönteminde herhangi bir paket gönderilmez. Hedef porta paketleri daha küçük IP Fragmenti olarak gönderilir. Bu işlem Attacker’ın yaptığı işin anlaşılmasına engel olmak içindir.
TCP Xmas Tree Scan
Bu tarama yöntemi TCP SYN taramasına benzer. Hedef porta FIN (No More Data From Sender), URG (Urgent Pointer Field Significant) ve PUSH (Push Function) bayraklı paketler gönderir ve kapalı olan portalardan RST cevabı beklenir. Eğer cevap gelmezse hedef portlar açıktır. (RFC793’e göre /
http://www.ietf.org/rfc/rfc0793.txt)TCP Null Scan
Daha önceki tarama yöntemlerinde paketler veya IP Fragment göndererek port’ların açık ve kapalılık durumlarını öğrenmiştik. Bu tarama yönteminde ise TCP Xmas Tree’nin tam tersine bayrak taşımayan bir paket gönderilir. Daha öncede belirttiğimiz gibi RFC793’e göre kapalı durumlardaki portlardan RST cevabı gelir. Eğer cevap gelmezse hedef port açıktır.
TCP ACK Scan
Bu tarama yönteminde Attacker, eğer hedef Firewall kullanıyorsa kullandığı Firewall’u bypass etme ve hedef portların açık ve kapalılık durumlarını öğrenebilir.
TCP ACK Scan’in genel mantığı statik veya dinamik paket filtrelemede firewall’ların bağlantıyı ilk başlatan tarafı hatırlayamamasıdır. Bazı firewall’lar onaylanmış olan bağlantılara izin verir ve ACK (Acknowledgment Field Significant) paketinin Firewall’lardan veya Router’lardan engellenmeden geçmesi mümkün kılınabilir, hedef portlar firewall’a rağmen taranabilir.
TCP FTP Proxy (Bounce Attack) Scan
Bu tarama yöntemi FTP Proxy’lerin Bounce adını verdiğimiz özelliğinden faydalanır. RFC959 tanımına göre, FTP Protokolünün Proxy FTP bağlantısına izin verir. Bu bağlantı sayesinde server-PI (Protocol Interpreter)’e ağdaki herhangi bir yere dosya yollayabilecek server-DTP (Data Transfer Process) isteği aktif edilebilir. Bu açık özellikle firewall arkasında bağlı bulunan bir FTP’ye bağlandığımız zaman sunucuya kendi port’larını taratması sağlandığı için çok tehlikeli bir tarama türüdür. Çünkü Firewall bypass edilmiş olur.
TCP Windows Scan
TCP ACK taramasına benzer. Bu tarama türü TCP Windows Size’dan kaynaklanan hataları baz alarak bazı işletim sistemlerinde portların açık ve kapalılık durumunu ya da filtreli olma durumlarını kontrol eder.
TCP RPC Scan
Bu tarama yöntemi ile Remote Procedure Call (RPC-Uzak İşlem Çağrıları) port’larından aktif halde çalışan işlemleri ve sürümleri öğrenebiliriz. Eğer sistemde çalışan RPC’ler ile ilgili hata ve aksaklıklar mevcut ise bunlar Attacker için sisteme girmek için bir yoldur. (Sadece Unix tabanlı sistemlerde mevcuttur)
UDP Scan
Daha önceki tarama yöntemleri (RPC Scan Hariç) TCP tabanlı idi. TCP tabanlı taramalarda, sıra numaraları, kod bitler dediğimiz yapılar vardı. Ancak UDP’de böyle bir şey mevcut değildir. UDP ’de paketler direk gönderilir ve kaybolan paketlerin yenisi gönderilmez.
Bu yöntem hedef sisteme UDP Paketlerini gönderme işlemini baz alır. Eğer gönderilen UDP Paketlerine response olarak "ICMP Port Unreachable" mesajı alınırsa port kapalıdır demektir. Eğer bu responsa alınmazsa port’un açık olduğu anlaşılır. Bu işlemleri yaparken acele etmemek gerekir. Çünkü bant genişliği probleminden dolayı gelmesi gereken mesaj paketi gecikebilir. Ve eğer ivedi davranılırsa port’un açık olduğu o nedenle cevap gelmediği düşünülebilir. Ama port açıktır ve bu hatadan dolayı Attacker amacına ulaşamayabilir.
Ident Scan
Ident Protokolü RFC1413’te tanımlanmış bir protokoldür.Bu tarama hedef sistem üzerinde eğer Identd aktif olarak bulunuyorsa, sistemde çalışır vaziyette olan servislerin listesine ve bu servisleri çalıştıran kullanıcı isimlerine ulaşmak için yapılır. Eğer Identd aktif değilse bu tarama türü işe yaramayacaktır.
Tüm bunlara karşı sunucu güvenliği nasıl sağlanacak?
Port Tarama yönteminden korunma bir IDS Sistemi ile engellenebilir. Veya IPTables’da Burst/Burst-Rate gibi bir limitasyonla engellenir. Şöyle ki; bir kaynak IP adresinden bir noktaya belirli bir "t" süresi dahilinde gelen SYN paketlerini sayan ve anormal sayıda aynı adrese connection kurmaya çalışan ya da birden fazla porta "t SYN "paketi gönderen IP Adresleri otomatik olarak bloke edilir. Bu teknik engellemekteden daha ziyade artificial-intelligiance ile gerçekleştirilebilen bir savunma yöntemidir.
Port taramasından korunmak için kullanılan bir başka yöntem ise Firewall dediğimiz Güvenlik Duvarlarının kullanımıdır. Piyasada bulunan Firewall’ların çoğu Port taramalarını engelleyebilme özelliğine sahiptir. Hatta Nmap’in yaptığı gizli port taramalarını bile yakalayabilme kabiliyetine mevcut Firewall’lar vardır. Tavsiye edebileceğimiz Firewall’lar; hem güvenlik duvarı hem de saldırı tespit sistemi olan Zone Alarm
(http://www.zonelabs.com), IIS net firmasının Windows tabanlı saldırı tespit programı olarak yazdığı BlackICE (http://www.blackice.iss.net/index.php) ‘tır.
-------------------------------------------------------------------------------
Döküman Cyber-Warrior TIM adına x-Master tarafından yazılmıştır.
-------------------------------------------------------------------------------
Yöntemler daha fazla sıralanabilir, lakin en sık karşılaşılan hack’lenme vakaları bu saldırılardan yana olmaktadır. Daha fazla detay için sitemde bulunan makalelerden faydalanabilirsiniz. (x-Master.biz > Makalelerim Modülü // x-Master – Cyber Warrior TIM)
Bunlar haricinde bir de Domain Güvenliğinden bahsetmemiz gerekiyor.
Alan adı veya kısaca Domain, internette varolmak için başvurduğunuzda size verilen Internet Protokol adresinin bir görüntüsüdür. Diğer bilgisayarlar ile connection kurabilmek için bağlantıyı kuracak olan bilgisayarların IP adreslerinin tanımlanmış olması gerekir. Yani Internet ortamındaki bilgisayarlar ile iletişiminiz, size tayin edilen IP adresleri ile sağlanır.
Bir kullanıcının, şirketinizin veya herhangi bir kurumun Web adresine girmek isteyen kullanıcının, şirkete tayin edilmiş olan IP adresini browser’a yazması gerekir. IP adreslerinin zihinde tutulması güç olduğundan dolayı, her IP adresine farklı bir alan adı tayin edilir. Tayin edilen bu alan adları domain adını alır. Bu sayede Browser’a girilecek olan web sayfasının IP adresi yerine, alan adı yazılarak girilir. İşte bu alan adları da domain adını alır.
Hedef olarak seçilen bir sistemi tamamen ele geçirmenin en sağlam yolu Domain Hack’tir. Sisteminizi hedefleyen bir saldırgan, öncelikli olarak Whois Sorgulaması yapacaktır. Whois sorgulamasında Domain Registration Maili, irtibat Adresleri, gerçek e-Mail adresi, DNS bilgileri...vs gibi detayları görecektir. İşin kilit noktası da burasıdır.
Bu bilgiler alındıktan sonra gelebilecek saldırılardan korunmak için;
Domain Hi-Jacking saldırılarından korunmak için temel yöntem tedbirdir. Şöyle ki; domain hacking’te temel yöntem registration e-mail hack’tir. Bu mail hacklendikten sonra, domainin tescil edildiği domain firmasından yeni şifre istenir. Ayrıca domainin geri alınmasını engellemek için zone transfer yapılır. Kısacası e-mail saldırısıyla eğer domaininiz alınırsa, bunu geri almak mümkün olmayabilir.
Ayrıca şifre güvenliğini sağlamak için en garanti yol, zor şifreler seçmektir. Örneğin; şifrenizin 123456 olduğunu varsayalım. Saldırgan belli bir şifre kombinasyonunu baz alarak saldırı yapan Brute Attack programlarıyla, domain şifrenizi çalmaya çalışacağı zaman, daha ilk denemelerde bu şifreyi ele geçirebilir. Ama şifrenin %x-m4st3r?$x-Master% olduğunu düşünün. Böyle bir şifreyi deneme yanımlayla ele geçirme ihtimali hemen hemen yok gibidir.
Whois sorgusunda DNS bilgilerini gören Attacker, DNS sorgulaması ($nslookup) yapacaktır. Burası çok önemli bir noktadır. Eğer konfigürasyon hatası yapılmışsa, Zone Transfer yapılabilir, Domain Hi-Jacking edilebilir. O yüzden bu noktaya dikkat edilmelidir.
Domain’lerin her alanda güvenilir olduğuna inandığınız halde domaininiz el değişiyorsa, Date Expire tarihlerini kontrol edin. Unutmuş olduğunuz domain Date Expire tarihi dolduğu zaman, farklı bir kullanıcı domaininizi satın alabilir, legal olarak domain elinizden çıkmış olur. O yüzden bu detayı da atlamamak gerek.
Web uygulamalarında Domain Güvenliğinin en büyük bölümünü oluşturan Registration Mail güvenliği, Domain’lerin hacklenmesinin çoğunluklu nedenidir. Bu nedenle Registration Mailinizi koruyabilmek için;
-> Meraklı olmayın.. E-Mail’lerin ele geçirilmesinde yararlanılan bir diğer zaaf meraklılıktır hiç şüphesiz. Saldırgan size bir e-Mail yollayabilir. Bu e-Maillerde bir takım XSS kodları bulunabilir ve eğer kullandığınız e-Mail, hotmail.com gibi bir servisten alınmışsa Cookie bilgileriniz saldırganın eline geçebilir. Veya saldırganın gönderdiği e-Posta’da bir eklenti olduğunu varsayıyoruz. Bunu direk indirip açmak, aceleci davranmak, e-Mail hesabınızı kaybetmenize neden olabilir.
-> Gizli sorularınızın cevabını alakasız yapın.. Gizli sorularınızın cevabını, sorduğunuz soruya karşılık olacak şekilde değil de, bağlantısız bir şeyler yapmaya özen gösterin. Zira saldırganın, tahmin gücünü düşürmede etkili olacaktır.
-> Sizden şifre soran hiçbir postayı yanıtlamayın.. Unutmayın ki, hiçbir mail servisi sizden şifrenizi sormayacaktır..
-> Size giriş yapmanız için sunulan sayfalarda ,browser’a bakın.. Bu yolla sitenin kime ait olduğunu görebilirsiniz.
-> Tanımadığınız kişilerden gelen dosyaları, mailleri açmayın ve mümkünse iyi bir güvenlik duvarı kullanın..