Arkadaslar ılk olarak dos nedır once onu anlattım zızlere Dos nedır ? atakları sırasında düşman yakalanmamak ve iz bırakmamak için elinden geleni sarfeder. O yüzden bu ataklar için 'zombi' denilen aracı bilgisayarlar kullanır. Atakları bu zombiler üzerinden yaparak hem aynı anda bir çok bilgisayarın saldırmasını sağlar, hem de kendi kimliğini ve IP adresini/numarasını gizler. Bu şekilde birçok zombinin aynı anda saldırması ile yapılan DoS ataklarına Dağıtık DoS (ddos) denir. Şubat ayı içindeki ataklar da çok sayıda zombinin kullanıldığı dağıtık DoS idi. O yüzden etkisi fazla oldu.
Zombiler aslında düşmanın bir açığını bularak önceden ele geçirdiği (hack ettiği) ve atak sırasında kullanılmak üzere bir deamon bıraktığı bilgisayarlardır. Başka bir deyişle zombiler düşman tarafından kullanılan ve kullanıldıklarının farkında bile olmayan masum bilgisayarlardır. Tek suçları güvensiz olmaktır. Zombiler üzerinde kurulan bu deamonlar belirli bir porttan gelecek ddos emirlerini dinleyerek atakları gerçekleştirmektedirler. Düşmanlar zombi olarak genellikle açık ve göreceli olarak daha güvensiz olan çok kullanıcılı Internet Servis Sağlayıcı (ISS) ve üniversite bilgisayarlarını tercih etmektedirler. Son ataklarda genellikle Unix ve Linux tabanlı sistemler zombi olarak kullanılmışsa da Windows tabanlı sistemlerin de ele geçirildikten sonra zombi olarak kullanılmaları mümkündür.
Atak Teknikleri
Düşmanın kendisini gizleyebilmesini olanaklı kılan şey, HTTP, DNS gibi anonim Internet servislerinde, sitelerin IP numaralarını doğrulayacak bir denetim mekanizmasının (authentication) bulunmamasıdır. Bunun yanısıra yine aynı sebepten otürü düşman atakta kullanacağı trafiği zombiler üzerinden kurban siteye yönlendirebilmektedir. IP-spoofing olarak adlandırılan bu aldatma tekniğinde düşmanın yaptığı şey gönderdiği IP paketlerine kendi gerçek IP numarasını koymamak, yerine göre ya var olmayan bir IP numarasını ya da kurban sitenin numarasını koymaktır. Zombiler veya kurban siteler bu paketlerdeki gönderen IP numarasını doğrulayamadıkları için düşman kendisini gizleyerek istediği siteye saldırabilmektedir. Dilerseniz sistemin nasıl işlediğini yaygın bir ddos tekniği olan SYN-flood tekniği üzerinde görelim.
Bir TCP bağlantısının başında istekte bulunan uygulama SYN paketi gönderir. Buna cevaben alıcı site SYN-ACK paketi göndererek isteği aldığını teyid eder. Herhangi bir sebeple SYN-ACK paketi gidemezse alıcı site bunları biriktirir ve periyodik olarak göndermeye çalışır. SYN-flood türü ataklarda düşman, ya kendi sitesini kullanarak ya da Şubat ayındaki ddos ataklarında olduğu gibi zombileri kullanarak kurban siteye dönüş adresi kullanımda olmayan bir IP numarası olan çok fazla sayıda SYN paketi gönderir. Kurban site SYN-ACK paketlerini geri gönderemez ve biriktirir. Sonuçta bu birikim kuyrukların dolup taşmasına sebep olur ve kurban site normal kullanıcılara hizmet verememeye başlar.
IP-spoofing kullanan bir başka ddos tekniği ise ping komutunu yani ICMP (Internet Control Message Protocol) protokolünü kullanan 'smurf' tekniğidir. Burada düşman çok miktarda bilgisayara ping isteği gönderir. Ancak bu isteklerde dönüş adresi olarak kurban bilgisayarın IP numarası verilir (bir tür IP-spoofing). Bu durumda çok miktarda bilgisayar bir anda kurban bilgisayarı cevap yağmuruna tutar ve kısa bir süre içinde kurban bilgisayar normal hizmet verememeye başlar.
Hangi teknik kullanılırsa kullanılsın düşman atağın şiddetini artırmak için kendi sisteminden başka olarak zombileri de uzaktan kumanda ederek yönlendirir. Bunun için zombilere emir olarak gönderdiği paketler genelde tek yönlüdür, yani zombi gelen ddos emrini teyid etmez. Bu yüzden bu tür paketlerde de dönüş IP numarası verilmez ya da gerekirse yanlış bir numara verilir.
finger @sunucu.com
komutu sunucu.com sunucusundaki o anda login olan kullanıcıları listelemektedir.
Eğer kullanıcı ismi verilirse ve bu kullanıcı sistemde varsa o kullanıcı login olmasa bile onunla ilgili bilgiler de verilecektir.
Finger komutu üzerine bir sürü saldırı teknikleri de vardır. Örnek verecek olursak finger redirection (yönlendirme) özelliği olan bir finger sunucusuna denial-of-service saldırısı düzenlenebilir.
Yönlendirme yapan bir finger sunucusu üzerinden başka bir finger sunucusundan bilgi alınabilir. Örnek olarak:
finger @
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
komutu önce sunucu1.com’a gidecek ordan da sunucu2.com sistemine giderek bu sunucu üzerindeki kullanıcıları listeleyecektir. Tabi bu istenmeyen bir durumdur, burada sunucu2.com üzerinden bilgileri toplayan adres artık saldırganın adresi değil sunucu1.com’un adresidir. Bu şekilde saldırgan kendisini saklayabilir.
Diğer yandan yönlendirme yapan bir sunucuya ayrıca aşağıdaki gibi bir komut gönderilerek DoS saldırısı düzenlenebilir:
finger @@@@@@@@@@@@@@@@@@@@@@@@@sunucu.com
Bu komut saldırılan sunucu.com sunucusunun kendi kendine defalarca finger isteği göndermesine neden olacaktır bu da gereksiz yere bellek ve disk kullanımına neden olacaktır!
Dos Atack Ve Kurtulma Yöntemleri
DDoS atakları servis sağlayıcılarının korkulu rüyalarından biridir. DDoS tipi saldırılar özellikle büyük firmaların bu tür saldırılardan etkilenmesi DDoS adını ön plana çıkardı. Bu türden ilk saldırılar Avustralya ve Avrupada meydana geldi, fakat bu ataklarla ilgili kayda geçen ilk saldırı Minnesota Üniversitesine karşı yapılan saldırılardır (17 Ağustos 1999). Daha sonra saldırılar gitgide artmaya başladı. Yapılan çeşitli araştırmalar DDoS türü saldırılarda artma gözlenmiştir.
DDoS atakları servis sağlayıcılarının korkulu rüyalarından biridir. DDoS tipi saldırılar özellikle büyük firmaların bu tür saldırılardan etkilenmesi DDoS adını ön plana çıkardı. Bu türden ilk saldırılar Avustralya ve Avrupada meydana geldi, fakat bu ataklarla ilgili kayda geçen ilk saldırı Minnesota Üniversitesine karşı yapılan saldırılardır (17 Ağustos 1999). Daha sonra saldırılar gitgide artmaya başladı. Yapılan çeşitli araştırmalar DDoS türü saldırılarda artma gözlenmiştir.
DoS ve DDoS atakları özellikle 2001 yılında online ticaret kuruluşlarına yapıldığı görülmektedir. Vnunet (
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]) haberlerinde, internet kullanıcıları ve e-ticaret site yöneticileri bu tür saldırılara karşı uyarmıştı. Internet Security Systems (ISS) yüzlerce bilgisayara zombi adı verilen ajanların yüklendiğini belirten haberler yayınlamıştı. Bu küçük ajanlar sayesinde sisteme sızan kimseler, serverlara çok sayıda veri göndererek serverların(sunucu) çökmesine neden olmaktadır. Bu saldırıdan etkilenen Yahoo, Amazon ve eBay gibi ünlü internet portallarının çökmesine ve milyonlarca dolar zarar uğramasına neden olmuştu. Computer Security Institue (CSI,
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]) anketine katılanlardan bir e-ticaret sitesi sahibi olanların %55'i DDoS saldırılarına maruz kaldıklarını belirttiler. DoS atakları 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 sonucundada 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.
DDoS saldırıları nasıl gerçekleşmektedir?
Atak anında kişi, kendini gizlemek için önceden sızdığı bilgisayarlara 'zombi' adı verilen küçük progr*****ları yerleştirir. Böylece kendini saklama fırsatı elde eder. Ataklar bu zombiler üzerinden yaparak birden fazla bilgisayarı istediği hedefler üzerine veri bombardımanı yapabilir. Yüzlerce/binlerce bilgisayarlara yerleştirilen zombiler, bilgisayarlara uzaktan kontrol (remote) imkanı vererek, bu bilgisayarlar üzerinden istedikleri server'a çok sayıda veri göndererek, server'i sistem dışı bırakıyor. Böylece saldırganlar, saldırıları başka insanların bilgisayarları üzerinden gerçekleştirdiği için saptanmaları zor hale gelmektedir.
DDoS yöntemi genel olarak sistemlere belli bir düzen çerçevesinde farklı noktalardan saldırarak server'i hizmet dışına bırakma yoludur. Bir bilgisayar server'a kendi adresini yanlış veren bir veri paketi yolluyor. Server, bilgisayarın verdiği adrese geri bilgi vermek için ulaşmaya çalıştığında adrese ulaşamıyor. Bu esnada server bağlantıyı kapatmadan bir müddet bekliyor. Bu tür bağlantı isteklerinin milyonlarcası server'a yapıldığında server işlemez hale gelmektedir.
'Zombiler'
DDoS ataklarını gerçekleştirirken yakalanmamak için "zombi" denilen küçük progr*****ların kullanıldığından söz etmiştik. Ataklar bu zombiler üzerinden gerçekleştirilerek aynı anda birden fazla bilgisayarın hedeflere yönlendirilmesi sağlanarak, saldırıyı yapan kişinin IP adresininde gizlenmesi sağlanır. Zombiler genellikle güvenliği zayıf olan sistemlere yerleştirilirler. Yani hack'lenen sisteme yerleştirilen zombiler kendi bünyesindeki daemonlar vasıtasıyla belirli bir porttan (1524 tcp, 27665 tcp, 2744 udp, 31335 udp, 33270 tcp) gelecek olan DDoS isteklerini gerçekleştirirler. Ayrıca daha çok Unix ve Linux tabanlı sistemlerde zombiler kullanılsada Windows tabanlı sistemlerde de zombiler kullanılmaktadır.
DDoS için kullanılan araçlar:
_ Trinoo(Trin00)
_ The Tribe Flood Network (TFN)
_ Stacheldraht
_ Trinity
_ Shaft
_ Tribe Flood Network 2K (TFN2K)
_ MStream
DDoS ataklarından korunmak için;
Bu ataklar fark edildiğinde atakta bulunan adresten gelen bağlantı isteklerinin iptal edilmesi gerekir. Ayriyeten özel yazılım ve donanım kullanılarak saldırıların önüne geçme imkanı vardır. Şirket ve bireysel kullanıcılar, güvenlik politikalarını belirleyerek, müdahale tespit (intrusion detection) gibi yöntemlere başvurmalı. Ayrıca saldırının başladığı an saldırının merkezi tespit edilerek, o merkezin servis sağlyıcısıyla irtibata geçmek ve erişimi engellemek gerekiyor.
Sisteminizde bir DDoS aracının kurulup kurulmadığını tespit etmek istiyorsanız find_ddos isimli programı kullanabilirsiniz. Bu programı bulabileceğiniz adres:
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
Sistemde tespit edebildiği DDoS araçları:
* mstream master
* mstream server
* stacheldraht client
* stacheldraht daemon
* stacheldraht master
* tfn-rush client
* tfn client
* tfn daemon
* tfn2k client
* tfn2k daemon
* trinoo daemon
* trinoo master
Bu programı root yetkisinde çalıştırın.
Eğer sisteminizde DDoS aracı kurulmuşsa aşağıdakine benzer bir çıktı ile karşılaşma olasılığı vardır.
[root@CiLeK find]# ./find_ddos
Logging output to: LOG
Scanning running processes...
Scanning "/tmp"...
Scanning "/"...
/DoS/TFN/tfn: tfn client
/DoS/TFN/tfn-rush: tfn-rush client
/DoS/TFN/td: tfn2k daemon
ALERT: One or more DDOS tools were found on your system.
Please examine LOG and take appropriate action.
Tarama işlemi sonucunda oluşturduğu LOG dosyasında detaylı bilgileri barındırır.
Eğer Windows sistemi altından networkünüzü kontrol etmek istiyorsanız DDoSPing isimli programı kullanabilirsiniz. Bu programı
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] adresinde bulabilirsiniz.
Sisteminize yapılan DDoS ataklarına karşı yararlanabileceğiniz programlardan biri ZombieZapper isimli programdır. Programın kaynak kodu aşağıda verilmiştir. Ayrıca programı
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] adresinden download edebilirsiniz.
ZombieZapper, zombie kurulmuş sistemlerden kaynaklanan yoğun trafiğin durdurulması için kullanılmaktadır. Bu programın Trinioo, TFN, Stacheldraht, Trinioo for Windows ve Shaft DDoS araclarına karşı etkili olduğu belirtiliyor. ZombieZapper yazarları network yöneticilerinin bu programı kullanarak kendi network'lerinden veya dışarıdaki bir sistemden kaynaklanan flood saldırılarının tespit edilip, durdurulabileceği belirtilmekte.
/*
* zombie_zapper - distributed dos killer
* written by Simple Nomad
* Requirements: L****t 1.0 or higher (
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...])
* Compilation instructions:
* gcc `l****t-config --defines` -o zz zz.c -lnet
* Tested on RedHat, Slackware, but should work most places that l****t compiles
* and installs properly.
* Suggested usages:
* zz -a 1 -v 192.168.1.1
* (stops trinoo daemon at 192.168.1.1 from flooding, uses verbose mode)
* zz -u 80 -c 192.168.1.0
* (stops trinoo, tfn, stach, troj_trinoo on 192.168.1 network from
* flooding, udp source port of 80 is being used)
* zz -a 5 -m
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] -s 10.10.10.10 192.168.1.1
* (stops a shaft agent at 192.168.1.1 from flooding
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
* using a forged source address of 10.10.10.10)
* Shouts to my homies on BindView's RAZOR team for all the help with this!
*/
#include
int timer;
/*
* Based off of icmpquery, chain structs to store host names.
*/
struct hosts
{
char *hostname;
u_long hostaddr;
struct hosts *next;
};
struct hosts *hostnames;
struct hosts *hosttail;
/*
* Build the targets
*/
void build_target(char *host, u_long ip_addr)
{
if (hostnames == NULL)
{
hostnames = (struct hosts *) malloc(sizeof(*hostnames));
if (hostnames == NULL)
{
perror("hostnames malloc failed");
exit(-1);
}
hosttail = hostnames;
}
else
{
hosttail->next = (struct hosts *) malloc(sizeof(*hostnames));
if (hosttail->next == NULL)
{
perror("hosttail->next malloc failed");
exit(-1);
}
hosttail = hosttail->next;
}
hosttail->hostname = strdup(host);
if (hosttail->hostname == NULL)
{
perror("strdup failed");
exit(-1);
}
hosttail->hostaddr = ip_addr;
hosttail->next = NULL;
}
/*
* Build a class C of targets
*/
void build_class_c(u_long dst_ip)
{
int i;
u_long class_c_ips[256];
union
{
struct in_addr addr;
ulong temp_ip;
} ip;
for (i = 0; i < 256; i++)
{
class_c_ips = htonl(dst_ip) + i;
class_c_ips = htonl(class_c_ips);
ip.temp_ip = class_c_ips;
build_target(inet_ntoa(ip.addr),ip.temp_ip);
}
}
/*
* Process the targets, resolve the hosts, set up the chain
*/
void process_targets(char **hostlist, int verbose)
{
int i;
u_long tmpaddr;
for (i = 0; hostlist; i++)
{
tmpaddr = l****t_name_resolve(hostlist, L****T_RESOLVE);
/*
* if a "local" hostname is given it could "resolve" to a
* broadcast address if the local host is not set up properly,
* so we need to make sure we grab it and not send the packet
*/
if ((tmpaddr == 0xffffffff) || (tmpaddr == -1))
{
if (verbose) printf("%s not resolvedn",hostlist);
continue;
};
build_target(hostlist,tmpaddr);
}
}
void caughtsig(int sig)
{
timer = 0;
return;
}
/*
* build and send the icmp packets
*/
void send_packets(u_long src_ip, char *my_host, u_short sport, int antitype, int flood, int verbose)
{
int packet_size, network, i, p, count, data_len = 0;
u_char *packet;
u_short header, id, dport;
u_char proto;
char data[87],sbuf[87];
u_long dst_ip;
struct hosts *list;
for (p=0;p<87;p++) data
= 0>;
switch (antitype)
{
case 1: /* Trinoo */
sprintf(sbuf,"d1e l44adsl d1e");
header = L****T_UDP_H;
id = 41072;
dport = 27444;
proto = IPPROTO_UDP;
break;
case 2: /* TFN */
sprintf(sbuf,"12345");
header = L****T_ICMP_ECHO_H;
id = 567;
proto = IPPROTO_ICMP;
break;
case 3: /* Stacheldraht */
header = L****T_ICMP_ECHO_H;
id = 3;
proto = IPPROTO_ICMP;
break;
case 4: /* Troj_Trinoo */
sprintf(sbuf,"d1e []..Ks l44");
header = L****T_UDP_H;
id = 41072;
dport = 34555;
proto = IPPROTO_UDP;
break;
case 5: /* Shaft, part one */
sprintf(sbuf,"alive tijgu hi 5 2621");
header = L****T_UDP_H;
id = 41072;
dport = 18753;
proto = IPPROTO_UDP;
break;
case 0: /* Shaft, part two */
sprintf(sbuf,"end tijgu %s 5 2621",my_host);
header = L****T_UDP_H;
id = 41072;
dport = 18753;
proto = IPPROTO_UDP;
break;
}
if (antitype != 3) /* no payload for stach required */
{
data_len = strlen(sbuf);
for (p=0;p
if (verbose) printf(" Payload is "%s"n Data length of %dn",data,data_len);
}
else if (verbose) printf(" Payload is NULLn Data length of 0n");
count = 0;
/* compute packet size */
packet_size = L****T_IP_H + header + data_len;
if (verbose) printf(" Packet size is %dn",packet_size);
/* get mem for packet */
l****t_init_packet(packet_size, &packet);
if (packet == NULL)
{
l****t_error(L****T_ERR_FATAL, "unable to init packet memn");
}
/* get network ready */
network = l****t_open_raw_sock(IPPROTO_RAW);
if (network == -1)
{
l****t_error(L****T_ERR_FATAL, "unable to open network for sendingn");
}
list = hostnames;
/* main sending loop */
while (list != NULL)
{
/* get the target address */
dst_ip = list->hostaddr;
/* build target section */
switch (proto)
{
case IPPROTO_ICMP:
l****t_build_icmp_echo(ICMP_ECHOREPLY,0,id,0,data, data_len,packet + L****T_IP_H);
break;
case IPPROTO_UDP:
l****t_build_udp(sport,dport,data,data_len,packet + L****T_IP_H);
break;
}
/* build IP section */
l****t_build_ip(header,0,id,0,64,proto,src_ip,dst_ ip,NULL,0,packet);
timer = 1;
signal(SIGALRM, caughtsig);
alarm(flood);
while(timer)
{
/* send the packet */
i = l****t_write_ip(network, packet, packet_size);
if (i == -1)
{
l****t_error(L****T_ERR_FATAL, "failed to write to networkn");
}
if (i < packet_size)
{
l****t_error(L****T_ERR_FATAL, "only wrote %d bytesn", i);
}
if (verbose == 2)
{
printf("Sent %d bytes for %sn", i, list->hostname);
}
count++;
/*
* 1/10 sec delay between packets to prevent overflowing the local
* interface
*/
usleep(10000);
}
/* get next address, or NULL if done */
list = list->next;
}
/* clean things up */
if (l****t_close_raw_sock(network) == -1)
{
l****t_error(L****T_ERR_WARNING, "couldn't close the interface after sending");
}
l****t_destroy_packet(&packet);
if (verbose) printf(" %d packets sent in %d secondsn",count,flood);
}
/*
* usage
*/
void usage(char *prog)
{
fprintf(stderr,"USAGE:n");
fprintf(stderr,"%s [-a 0-5] [-c class C] [-d dev] [-h] [-m host] [-s src] [-u udp] [-v] hostsnn",prog);
fprintf(stderr," -a antiddos type to kill:n");
fprintf(stderr," 0 types 1-4 (default)n");
fprintf(stderr," 1 trinoon");
vfprintf(stderr," 2 tfnn");
fprintf(stderr," 3 stacheldrahtn");
fprintf(stderr," 4 trinoo on Windowsn");
fprintf(stderr," 5 shaft (requires you use the -m option)n");
fprintf(stderr," -c class C in x.x.x.0 formn");
fprintf(stderr," -f time in seconds to send packets (default 1)n");
fprintf(stderr," -d grab local IP from dev (default eth0)n");
fprintf(stderr," -h this help screenn");
fprintf(stderr," -m my host being flooded (used with -a 5 above, only one host)n");
fprintf(stderr," -s spoofed source address (just in case)n");
fprintf(stderr," -u UDP source port for trinoo (default 53)n");
fprintf(stderr," -v verbose mode (use twice for more verbosity)n");
fprintf(stderr," host(s) are target hosts (ignored if using -c)n");
fprintf(stderr,"n");
}
int main(int argc, char **argv)
{
char *prog;
extern char *optarg;
extern int optind;
extern int optopt;
extern int opterr;
char ch;
int spoof = 0, verbose = 0, setdev = 0;
int antitype = 0, class_c = 0, shaft = 0;
int flood = 1;
u_long src_ip;
char *my_host;
u_long dst_ip = 0;
u_long class_c_ip;
u_short sport = 53;
u_long CLASS_C_MASK = 0x00ffffff;
char *data[18];
char *dev;
struct l****t_link_int *l;
u_char *ebuf;
prog = argv[0];
dev = "eth0";
printf("Zombie Zapper v1.2 - DDoS killern");
printf("Bugs/comments to
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.");
printf("More info and free tools at http://razor.bindview.comn");
printf("Copyright (c) 2000 BindView Developmentnn");
if(getuid()!=0)
{
fprintf(stderr, "=== You must be root to run %s!n", prog);
exit(-1);
}
while ((ch = getopt(argc, argv, "hvc:a:m:s:d:u:f:")) != EOF)
switch(ch)
{
case 'c':
dst_ip = l****t_name_resolve(optarg, L****T_RESOLVE);
if (dst_ip == -1)
{
printf("=== Invalid class C %sn", optarg);
usage(prog);
exit(-1);
}
/* get the last part of the address */
class_c_ip = ((dst_ip | CLASS_C_MASK) - CLASS_C_MASK);
/* if it is not zero make it zero */
if(class_c_ip) dst_ip = dst_ip ^ class_c_ip;
class_c = 1;
break;
case 'd':
dev = optarg;
setdev = 1;
break;
case 'f':
flood = (int) strtol(optarg, NULL, 10);
if (flood < 1) flood = 1;
if (flood > 360) flood = 360;
break;
case 'h':
usage(prog);
exit(0);
case 'a':
antitype = (int) strtol(optarg, NULL, 10);
break;
case 'm':
if (!(l****t_name_resolve(optarg, L****T_RESOLVE)))
{
fprintf(stderr,"=== Unable to resolve hostname,n");
fprintf(stderr,"=== try using the IP addressn");
usage(prog);
exit(-1);
}
if (strlen(optarg) > 70)
{
fprintf(stderr,"=== Very long hostname, try using just ann");
fprintf(stderr,"=== IP address.n");
usage(prog);
exit(-1);
}
my_host = optarg;
shaft = 1;
break;
case 's':
if (!(src_ip = l****t_name_resolve(optarg, L****T_RESOLVE)))
{
fprintf(stderr,"=== Unable to resolve source host,n");
fprintf(stderr,"=== try spoofing with an IP addressn");
usage(prog);
exit(-1);
}
spoof = 1;
break;
case 'u':
sport = (int) strtol(optarg, NULL, 10);
break;
case 'v':
verbose++;
if (verbose > 2) verbose = 2;
break;
default:
usage(prog);
exit(-1);
}
argc -= optind;
argv += optind;
/* post arg processing */
if ((!class_c) && (!argv[0] || !strlen(argv[0])))
{
fprintf(stderr,"=== You must specify target(s) or a class C to send ton");
usage(prog);
exit(-1);
}
if ((setdev) && (spoof))
{
fprintf(stderr, "=== You cannot specify a device for a source IP addressn");
fprintf(stderr, "=== and spoof your source IP address at the same time.n");
usage(prog);
exit(-1);
}
if (antitype > 5 || antitype < 0)
{
fprintf(stderr,"=== Invalid or unsupported antiddos typen");
usage(prog);
exit(-1);
}
if (antitype == 5 && (!shaft))
{
fprintf(stderr,"=== You must specify a host with the -m option when usingn");
fprintf(stderr,"=== the -a option of 5n");
usage(prog);
exit(-1);
}
if (!spoof)
{
src_ip = l****t_get_ipaddr(l, dev, ebuf);
if ((src_ip == -1) || (src_ip == 0))
{
fprintf(stderr, "=== Grabbing address from %s failed,n",dev);
fprintf(stderr, "=== try a different device.n");
usage(prog);
exit(-1);
}
src_ip = htonl(src_ip);
}
/* end post arg processing */
if (verbose)
{
printf("Sending packets to stop these possible daemons from floodingnn");
switch(antitype)
{
case 0:
printf("tTrinoo, TFN, Stacheldraht, Troj_Trinoonn");
break;
case 1:
printf("tTrinoonn");
break;
case 2:
printf("tTFNnn");
break;
case 3:
printf("tStacheldrahtnn");
break;
case 4:
printf("tTroj_Trinoonn");
break;
case 5:
printf("tShaftnn");
break;
}
}
/* build a class C full of addresses */
if (class_c) build_class_c(dst_ip);
/* build target chain and get a count */
else process_targets(argv, verbose);
if (antitype == 0 || antitype == 1)
{
if (verbose) printf("Building anti-Trinoo packetsn");
send_packets(src_ip,NULL,sport,1,flood,verbose);
}
if (antitype == 0 || antitype == 2)
{
if (verbose) printf("Building anti-TFN packetsn");
send_packets(src_ip,NULL,sport,2,flood,verbose);
}
if (antitype == 0 || antitype == 3)
{
if (verbose) printf("Building anti-Stacheldraht packetsn");
send_packets(src_ip,NULL,sport,3,flood,verbose);
}
if (antitype == 0 || antitype == 4)
{
if (verbose) printf("Building anti-Troj_Trinoo packetsn");
send_packets(src_ip,NULL,sport,4,flood,verbose);
}
if (antitype == 5)
{
if (verbose) printf("Building first set of anti-Shaft packetsn");
send_packets(src_ip,NULL,sport,5,flood,verbose);
if (verbose) printf("Building second set of anti-Shaft packetsn");
send_packets(src_ip,my_host,sport,0,flood,verbose) ;
}
if (verbose) printf("Completen");
exit(0);
}
Ddos ıle ılgılı hersey
Bölümler
1-denial of service nedir?
2-d.o.s tipleri
3-ne tür d.o.s atakları vardır?
4-sistemlere etkisi
1 d.o.s nedir?
d.o.s sisteme en kolay yoldan zarar vermeye yarar, d.o.s sistemi kilitleyebilir, internet bağlantınız kesebilir, kısaca kullanılması kolay ama korunması zordurlar.
2 d.o.s tipleri
Temel olarak 3 çeşit d.o.s vardır. Bunlar service overloading,message flooding ve clogging olarak 3 e ayrılır
a- service overloading: bu atak tipi belirli host ve servisleri düşürmek için kullanılır. atak yapan kişi özel port ve host adından da anlaşıldığı gibi çok paket gönderir. Bu olay network monitor ile kolayca anlaşılır
b- message flooding: bu ise servise overloading e benzer. Farkı sistemin normal çalışmasını engellemez. Yine aynı şekilde gönderilen paketler bu sefer normal olarak algılanır. Mesela nis serverında flood yapılırsa (unix network unde) nis bunu şifre isteği gibi görür. Ve saldırganın host a hükmetmesi sağlanır.
c-clogging: bu gerçekten çok hoş bir şey .tcp olayını bilenler kolay anlayacaktır... tcp de handshake diye bir şey vardır syn ve ack ile gerçekleşir . syn benim ona göndereceğim bayrak ack ise onun bana göndereceğidir. bağlantı kurmak için ben host a bir syn gönderirim o da bunu aldığını ack ile bana yollar neyse en sonunda ikisi arasında oturum açılır.
Şimdi clogging ise saldırganın syn gönderip ack alıp ondan sonrada gelen ack ye cevap vermeyip sürekli syn göndermesinden oluşur. Bu olay bir kaç kez tekrarlandıktan sonra server artık cevap veremez hale gelir. Bu paketler sahte ip ile gönderildiğinden sistem bunu anlayamıyor ve çöküyor. Anlasa ne olur? Anlasa aynı ip den gelen o kadar isteğe cevap vermez. Kurtuluş yolu bunları tarayan fırewall lardır.
3 d.o.s saldırıları
email bombing, virusler, spamming, flooding...bunlar d.o.s ataklarıdır dos atakları sistemin açıklarından çıkmaz (genelde) int.protokollerden oluşur. mesela mail bombing dediğimiz olay smtp serverının her şeyi kabul etmesinden olusur. Her sistemin kendine göre dos ları vardır ben en çok kullanılan win ve linux üzeri olanlarını açıklayacağım...
-teardrop
etki alanı:win 95 nt 4.0 linux 2.0.32
win 95/nt ye bu tur saldırı gerçekleşince bilgisayar daha fazla bağlantı kuramaz ve ünlü mavi ekran çıkar. Önemli bir şey yaparken kayıt etmeden böyle bir saldırı alırsanız bilgilerinizi kaybedersiniz.
-land
etki alanı:win 95,nt ve bsd
tcp/ip protokolü üzerinden syn(synchronize flag) bağlantı kurulmasını bildirir ve bundan sonra win yavaşlar. 2 dk içinde eski haline döner land syn paketlerini aynı kaynak ve gidecek olan ip ve aynı kaynak ve port ile oluşur. Bu bilgisayarın kendisine paketleri göndermesini sağlar.
-oob(out of band)
etki alanı:win95/nt
bu dos programı wın 139. portuna bağlantı kurar. bu port wın standart dileme portudur 3.11 95 nt filan hepsini etkiler.
-boink
etki alanı:korunmalı(patch edilmiş) 95 ve nt teardrop ataklarına karsı koruma alan sistemlerde işe yarar.
boink yeni bir bonk versiyonudur.
-nestea
etki alanı:özellikle linux ve bazı windows makineleri
boink ve teardrop ataklarına karşı korununmuş sistemlerde işe yarar. nestea boink ve teardrop un geliştirilmiş halidir.
-icmp
etki alanı:çeşitli
bu bağlantı kurduğunuz bilgisayar ve sizin aranızda olur. bilgisayarlar aralarında icmp paketleri gönderirler bu sırada bağlantıda hata olduğuna dair sahte paketler gönderilir böylece bağlantı kopar .
-suffer
etki alanı :çoğunlukla win
Bilgisayarınıza sürekli syn paketleri gelmeye başlar ve bağlantı kopar sistemdeki fırewall lara zarar verebilir
4-Sistemlerin etkisi
Eğer bütün sistemler ilk halinde ise hepsi dos ataklarından etkilenir. Her şey sistemin ana kullanıcısında biter. Hiç bir sistem karşılaştırılamaz neden? Çünkü sistemlerin gelişmiş olması,daha çok program desteklemesi,daha çok yenilenmesi onun d.o.s ataklarından daha çok etkileneceği anlamına gelebilir ama eğer kişisel fikrimi sorarsanız bence unıx nt ye göre d.o.s ataklarından daha
Biraz uzuN ama
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.