• Forum vBulletin altyapısından Xenforo altyapısına geçirildi, bu sebeple eski şifreleriniz ile foruma giriş yapamayacaksınız, parolamı unuttum adımından mailiniz ile şifre sıfırlayarak giriş yapabilirsiniz.

    Üyeliklerinde geçerli bir mail adresi olmadığı için sıfırlama yapamayacak kullanıcılar forum kullanıcı adlarını ve yeni şifrelerini yazarak info@maxigame.org adresine şifre sıfırlamak istediklerine dair bir mail göndersinler şifrelerini sıfırlayıp mail adreslerini güncelleyeceğiz. Şifreniz sıfırlandıktan sonra foruma giriş yapıp tekrar istediğiniz gibi değiştirebilirsiniz.

Hymera Sorunlar ve Çözümleri

  • Konuyu başlatan Konuyu başlatan Ruthless
  • Başlangıç tarihi Başlangıç tarihi
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
ümit abi programla kurtulabılınıormusmu ne ınternette okudum

Kendi sunucularımızda benzerini kullandığımız ddostan korunma yöntemini sizinle paylaşmak istedim. Oyun sunucularındada işe yaradığı test edilerek onaylanmıştır örnek : metin2

ilk olarak iptables'ı istediğimiz an sıfırlayıp bizim istediğimiz default ayarları yapacak bash scripti yazacağız. Ardından belirli periyodalara, gelen trafiği kontrol edip şüpheli ipleri banlayan programı tanıtacağım. Bu işlemlerin ardından sadece port 80 açık kalacak. Port 80 in önüne de gelen bağlantıları filtre eden nginx webserverin ip filtre özelliğini tanıtacağım.

1 -) iptables sıfırlama
iptables varsayılan kurallarımız
-Tüm gelen ve giden portları kapa
-Sadece localden gelen SSH bağlantılarına izin ver
-80. portu internet bağlantıları için aç
-ayrı makinede bulunan mysql sunucusu için gerekli portları aç
-Tüm portların kapandığından emin ol

Bu işlevi yapan scripti aşağıda veriyorum.

iptables scripti


Kod:
#!/bin/sh # buradaki ip adresini serverinizin ip adresi ile degistirin SERVER_IP="xxx.xxx.xxx.xxx" # Tüm kurallari sifirla iptables -F iptables -X # varsayilan filtre iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP # loopback arabiriminde sinirsiz trafik iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT # local networkde sinirsiz trafik iptables -A INPUT -i eth1 -s 192.168.1.0/24 -d 192.168.1.0/24 -j ACCEPT iptables -A OUTPUT -o eth1 -s 192.168.1.0/24 -d 192.168.1.0/24 -j ACCEPT # Allow incoming ssh only 0/0 degisecek , # 0/0 ssh internete acik # 192.168.1.0/24 ssh sadece yerel agda acik iptables -A INPUT -p tcp -s 0/0 -d $SERVER_IP --sport 513:65535 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -p tcp -s $SERVER_IP -d 0/0 --sport 22 --dport 513:65535 -m state --state ESTABLISHED -j ACCEPT #80. porttan gelen ve gidene izin ver iptables -A INPUT -p tcp -s 0/0 -d $SERVER_IP --sport 513:65535 --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -p tcp -s $SERVER_IP -d 0/0 --sport 80 --dport 513:65535 -m state --state ESTABLISHED -j ACCEPT #remote mysqle bagalanmak icin local network 3306 portunu ac #iptables -A INPUT -p tcp -s 192.168.1.0/24 --sport 3306 -d $SERVER_IP --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT #iptables -A OUTPUT -p tcp -s 192.168.1.0/24 --sport 1024:65535 -d 0/0 --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT #yukaridakiler haric tum portlarin kapali oldugundan emin ol iptables -A INPUT -j DROP iptables -A OUTPUT -j DROP


Copy paste ile bir dosyaya uygun bir isimle kayıt edin.
Örnek: iptables-default.sh


Kod:
chmod +x iptables-default.sh


iptables ayarlarını her sıfırlamak istediğimizde bu scripti kullanacağız.
Kullanım şekli : scriptin bulunduğu dizine girip (ssh kullanarak yada command line dan)

Alıntı:
sh iptables-default.sh
2 -) Şüpheli ipleri iptables, cron ve netstat kullanarak banlama

----------

Ddos saldırısından kurtulmanın yolu ! - Metin2 Private Server Kurulumu - MMORPG - Metin2 - Knight Online - Karahan Online - Silkroad bu sayfada acıklaması var

----------

DDOS Saldırısı Nedir ? Kurtulma Yöntemleri Nelerdir?


DOS-DDOS günümüzde en yaygın olarak telafuz edilen , virus bulastirilmis asker bilgisayarlardan oluşan bir bilgisayar
ordusu tarafindan , hedef web siteye tcp/ip protokolu kullanilarak , web sunucunun kaldiramayacağı ve kapasitesinin
yetmeyeceği derecede istekde ve trafik selinde bulunmasıdır
DDOS saldırılarını ana dallar olarak çeşitlendirirsek ;
-SYN
-UDP
-ICMP
-HTTP GET/POST
Parasal açıdan gelişen internet çağı beraberinde , küçük ve orta ölçekte webmaster’lar ile büyük ölçekte firmalar arasında rekabetide beraberinde getirmiştir. Bu rekabet ile birlikte illegal faaliyetlere bulunan Hacker yada Lamer diye tabir edilen bir takım kişilerce (internet dünyasinda botnetci” diye daha çok tabir edilen) web sitelerine DDOS saldırıları düzenlemektedir.
DDOS saldırılarının sebeblerini biz 3 ana başlık altında topladık buna göre
1-Herhangi bir kelimede Google , Yahoo gibi arama motorlarına ilk sayfalarda çıkan sitelerin erisimlerini durdurarak onların yer kaybetmesini sağlamak ve kendi web sitesinin değer kazanmasını sağlamaktır.
2-E-ticaret sektöründe çalışan yüksek cirolu şirketler , Google gibi aramotorlarına ürün satışlarında odak kelimelere reklamlar vermektedir , aynı ürün üzerine çalışan rakip firmalar reklam maliyetlerinin yükselmemesi ve cirolarının düşmemesi icin bu tarz servis saldırılarına başvurabilmektedir.
3-Botnetci olarak tabir edilen internet korsanları , e-ticaret şirketlerinden yada yüksek ziyaretcisi olan web sayfalarından link , banner reklam , yada para isteyerek , bir nevi sanal haraca bağlamaya çalışmakta bu doğrultuda saldırılar uygulayabilmektedir.Tabiki bu saldıralardan kurtulma yoluna hepimiz sahibiz bu saldıraları durduracak k yönlemleri diğer makalelerimde ayrıntılı olarak açıklamaya çalışacağım.
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 (www.vnunet.com ) 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, www.gocsi.org ) 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 programcıkları 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 programcıkları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 adreslerden 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:
http://www.nipc.gov/warnings/alerts/1999/find_ddos_v42_linux.tar.Z
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ı www.foundstone.comadresinde 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ı http://www.razor.bindview.com adresinden indirebilirsiniz.
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 (http://www.packetfactory.net/l****t/ )
* 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 The White House -s 10.10.10.10 192.168.1.1
* (stops a shaft agent at 192.168.1.1 from flooding The White House
* 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 thegnome@razor.bindview.comn” );
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: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 Saldırısı Nedir ? Kurtulma Yöntemleri Nelerdir?


DOS-DDOS günümüzde en yaygın olarak telafuz edilen , virus bulastirilmis asker bilgisayarlardan oluşan bir bilgisayar
ordusu tarafindan , hedef web siteye tcp/ip protokolu kullanilarak , web sunucunun kaldiramayacağı ve kapasitesinin
yetmeyeceği derecede istekde ve trafik selinde bulunmasıdır
DDOS saldırılarını ana dallar olarak çeşitlendirirsek ;
-SYN
-UDP
-ICMP
-HTTP GET/POST
Parasal açıdan gelişen internet çağı beraberinde , küçük ve orta ölçekte webmaster’lar ile büyük ölçekte firmalar arasında rekabetide beraberinde getirmiştir. Bu rekabet ile birlikte illegal faaliyetlere bulunan Hacker yada Lamer diye tabir edilen bir takım kişilerce (internet dünyasinda botnetci” diye daha çok tabir edilen) web sitelerine DDOS saldırıları düzenlemektedir.
DDOS saldırılarının sebeblerini biz 3 ana başlık altında topladık buna göre
1-Herhangi bir kelimede Google , Yahoo gibi arama motorlarına ilk sayfalarda çıkan sitelerin erisimlerini durdurarak onların yer kaybetmesini sağlamak ve kendi web sitesinin değer kazanmasını sağlamaktır.
2-E-ticaret sektöründe çalışan yüksek cirolu şirketler , Google gibi aramotorlarına ürün satışlarında odak kelimelere reklamlar vermektedir , aynı ürün üzerine çalışan rakip firmalar reklam maliyetlerinin yükselmemesi ve cirolarının düşmemesi icin bu tarz servis saldırılarına başvurabilmektedir.
3-Botnetci olarak tabir edilen internet korsanları , e-ticaret şirketlerinden yada yüksek ziyaretcisi olan web sayfalarından link , banner reklam , yada para isteyerek , bir nevi sanal haraca bağlamaya çalışmakta bu doğrultuda saldırılar uygulayabilmektedir.Tabiki bu saldıralardan kurtulma yoluna hepimiz sahibiz bu saldıraları durduracak k yönlemleri diğer makalelerimde ayrıntılı olarak açıklamaya çalışacağım.
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 (www.vnunet.com ) 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, www.gocsi.org ) 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 programcıkları 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 programcıkları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 adreslerden 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:
http://www.nipc.gov/warnings/alerts/1999/find_ddos_v42_linux.tar.Z
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ı www.foundstone.comadresinde 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ı http://www.razor.bindview.com adresinden indirebilirsiniz.
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 (http://www.packetfactory.net/l****t/ )
* 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 The White House -s 10.10.10.10 192.168.1.1
* (stops a shaft agent at 192.168.1.1 from flooding The White House
* 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 thegnome@razor.bindview.comn” );
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: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 Saldırısı Nedir ? Kurtulma Yöntemleri Nelerdir?


DOS-DDOS günümüzde en yaygın olarak telafuz edilen , virus bulastirilmis asker bilgisayarlardan oluşan bir bilgisayar
ordusu tarafindan , hedef web siteye tcp/ip protokolu kullanilarak , web sunucunun kaldiramayacağı ve kapasitesinin
yetmeyeceği derecede istekde ve trafik selinde bulunmasıdır
DDOS saldırılarını ana dallar olarak çeşitlendirirsek ;
-SYN
-UDP
-ICMP
-HTTP GET/POST
Parasal açıdan gelişen internet çağı beraberinde , küçük ve orta ölçekte webmaster’lar ile büyük ölçekte firmalar arasında rekabetide beraberinde getirmiştir. Bu rekabet ile birlikte illegal faaliyetlere bulunan Hacker yada Lamer diye tabir edilen bir takım kişilerce (internet dünyasinda botnetci” diye daha çok tabir edilen) web sitelerine DDOS saldırıları düzenlemektedir.
DDOS saldırılarının sebeblerini biz 3 ana başlık altında topladık buna göre
1-Herhangi bir kelimede Google , Yahoo gibi arama motorlarına ilk sayfalarda çıkan sitelerin erisimlerini durdurarak onların yer kaybetmesini sağlamak ve kendi web sitesinin değer kazanmasını sağlamaktır.
2-E-ticaret sektöründe çalışan yüksek cirolu şirketler , Google gibi aramotorlarına ürün satışlarında odak kelimelere reklamlar vermektedir , aynı ürün üzerine çalışan rakip firmalar reklam maliyetlerinin yükselmemesi ve cirolarının düşmemesi icin bu tarz servis saldırılarına başvurabilmektedir.
3-Botnetci olarak tabir edilen internet korsanları , e-ticaret şirketlerinden yada yüksek ziyaretcisi olan web sayfalarından link , banner reklam , yada para isteyerek , bir nevi sanal haraca bağlamaya çalışmakta bu doğrultuda saldırılar uygulayabilmektedir.Tabiki bu saldıralardan kurtulma yoluna hepimiz sahibiz bu saldıraları durduracak k yönlemleri diğer makalelerimde ayrıntılı olarak açıklamaya çalışacağım.
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 (www.vnunet.com ) 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, www.gocsi.org ) 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 programcıkları 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 programcıkları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 adreslerden 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:
http://www.nipc.gov/warnings/alerts/1999/find_ddos_v42_linux.tar.Z
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ı www.foundstone.comadresinde 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ı http://www.razor.bindview.com adresinden indirebilirsiniz.
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 (http://www.packetfactory.net/l****t/ )
* 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 The White House -s 10.10.10.10 192.168.1.1
* (stops a shaft agent at 192.168.1.1 from flooding The White House
* 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 thegnome@razor.bindview.comn” );
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: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 );
}
 
Son düzenleme:
ümit abi programla kurtulabılınıormusmu ne ınternette okudum

Kendi sunucularımızda benzerini kullandığımız ddostan korunma yöntemini sizinle paylaşmak istedim. Oyun sunucularındada işe yaradığı test edilerek onaylanmıştır örnek : metin2

ilk olarak iptables'ı istediğimiz an sıfırlayıp bizim istediğimiz default ayarları yapacak bash scripti yazacağız. Ardından belirli periyodalara, gelen trafiği kontrol edip şüpheli ipleri banlayan programı tanıtacağım. Bu işlemlerin ardından sadece port 80 açık kalacak. Port 80 in önüne de gelen bağlantıları filtre eden nginx webserverin ip filtre özelliğini tanıtacağım.

1 -) iptables sıfırlama
iptables varsayılan kurallarımız
-Tüm gelen ve giden portları kapa
-Sadece localden gelen SSH bağlantılarına izin ver
-80. portu internet bağlantıları için aç
-ayrı makinede bulunan mysql sunucusu için gerekli portları aç
-Tüm portların kapandığından emin ol

Bu işlevi yapan scripti aşağıda veriyorum.

iptables scripti


Kod:
#!/bin/sh # buradaki ip adresini serverinizin ip adresi ile degistirin SERVER_IP="xxx.xxx.xxx.xxx" # Tüm kurallari sifirla iptables -F iptables -X # varsayilan filtre iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP # loopback arabiriminde sinirsiz trafik iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT # local networkde sinirsiz trafik iptables -A INPUT -i eth1 -s 192.168.1.0/24 -d 192.168.1.0/24 -j ACCEPT iptables -A OUTPUT -o eth1 -s 192.168.1.0/24 -d 192.168.1.0/24 -j ACCEPT # Allow incoming ssh only 0/0 degisecek , # 0/0 ssh internete acik # 192.168.1.0/24 ssh sadece yerel agda acik iptables -A INPUT -p tcp -s 0/0 -d $SERVER_IP --sport 513:65535 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -p tcp -s $SERVER_IP -d 0/0 --sport 22 --dport 513:65535 -m state --state ESTABLISHED -j ACCEPT #80. porttan gelen ve gidene izin ver iptables -A INPUT -p tcp -s 0/0 -d $SERVER_IP --sport 513:65535 --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -p tcp -s $SERVER_IP -d 0/0 --sport 80 --dport 513:65535 -m state --state ESTABLISHED -j ACCEPT #remote mysqle bagalanmak icin local network 3306 portunu ac #iptables -A INPUT -p tcp -s 192.168.1.0/24 --sport 3306 -d $SERVER_IP --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT #iptables -A OUTPUT -p tcp -s 192.168.1.0/24 --sport 1024:65535 -d 0/0 --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT #yukaridakiler haric tum portlarin kapali oldugundan emin ol iptables -A INPUT -j DROP iptables -A OUTPUT -j DROP


Copy paste ile bir dosyaya uygun bir isimle kayıt edin.
Örnek: iptables-default.sh


Kod:
chmod +x iptables-default.sh


iptables ayarlarını her sıfırlamak istediğimizde bu scripti kullanacağız.
Kullanım şekli : scriptin bulunduğu dizine girip (ssh kullanarak yada command line dan)

Alıntı:
sh iptables-default.sh
2 -) Şüpheli ipleri iptables, cron ve netstat kullanarak banlama

----------

Ddos saldırısından kurtulmanın yolu ! - Metin2 Private Server Kurulumu - MMORPG - Metin2 - Knight Online - Karahan Online - Silkroad bu sayfada acıklaması var

----------

DDOS Saldırısı Nedir ? Kurtulma Yöntemleri Nelerdir?


DOS-DDOS günümüzde en yaygın olarak telafuz edilen , virus bulastirilmis asker bilgisayarlardan oluşan bir bilgisayar
ordusu tarafindan , hedef web siteye tcp/ip protokolu kullanilarak , web sunucunun kaldiramayacağı ve kapasitesinin
yetmeyeceği derecede istekde ve trafik selinde bulunmasıdır
DDOS saldırılarını ana dallar olarak çeşitlendirirsek ;
-SYN
-UDP
-ICMP
-HTTP GET/POST
Parasal açıdan gelişen internet çağı beraberinde , küçük ve orta ölçekte webmaster’lar ile büyük ölçekte firmalar arasında rekabetide beraberinde getirmiştir. Bu rekabet ile birlikte illegal faaliyetlere bulunan Hacker yada Lamer diye tabir edilen bir takım kişilerce (internet dünyasinda botnetci” diye daha çok tabir edilen) web sitelerine DDOS saldırıları düzenlemektedir.
DDOS saldırılarının sebeblerini biz 3 ana başlık altında topladık buna göre
1-Herhangi bir kelimede Google , Yahoo gibi arama motorlarına ilk sayfalarda çıkan sitelerin erisimlerini durdurarak onların yer kaybetmesini sağlamak ve kendi web sitesinin değer kazanmasını sağlamaktır.
2-E-ticaret sektöründe çalışan yüksek cirolu şirketler , Google gibi aramotorlarına ürün satışlarında odak kelimelere reklamlar vermektedir , aynı ürün üzerine çalışan rakip firmalar reklam maliyetlerinin yükselmemesi ve cirolarının düşmemesi icin bu tarz servis saldırılarına başvurabilmektedir.
3-Botnetci olarak tabir edilen internet korsanları , e-ticaret şirketlerinden yada yüksek ziyaretcisi olan web sayfalarından link , banner reklam , yada para isteyerek , bir nevi sanal haraca bağlamaya çalışmakta bu doğrultuda saldırılar uygulayabilmektedir.Tabiki bu saldıralardan kurtulma yoluna hepimiz sahibiz bu saldıraları durduracak k yönlemleri diğer makalelerimde ayrıntılı olarak açıklamaya çalışacağım.
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 (www.vnunet.com ) 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, www.gocsi.org ) 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 programcıkları 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 programcıkları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 adreslerden 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:
http://www.nipc.gov/warnings/alerts/1999/find_ddos_v42_linux.tar.Z
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ı www.foundstone.comadresinde 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ı http://www.razor.bindview.com adresinden indirebilirsiniz.
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 (http://www.packetfactory.net/l****t/ )
* 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 The White House -s 10.10.10.10 192.168.1.1
* (stops a shaft agent at 192.168.1.1 from flooding The White House
* 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 thegnome@razor.bindview.comn” );
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: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 Saldırısı Nedir ? Kurtulma Yöntemleri Nelerdir?


DOS-DDOS günümüzde en yaygın olarak telafuz edilen , virus bulastirilmis asker bilgisayarlardan oluşan bir bilgisayar
ordusu tarafindan , hedef web siteye tcp/ip protokolu kullanilarak , web sunucunun kaldiramayacağı ve kapasitesinin
yetmeyeceği derecede istekde ve trafik selinde bulunmasıdır
DDOS saldırılarını ana dallar olarak çeşitlendirirsek ;
-SYN
-UDP
-ICMP
-HTTP GET/POST
Parasal açıdan gelişen internet çağı beraberinde , küçük ve orta ölçekte webmaster’lar ile büyük ölçekte firmalar arasında rekabetide beraberinde getirmiştir. Bu rekabet ile birlikte illegal faaliyetlere bulunan Hacker yada Lamer diye tabir edilen bir takım kişilerce (internet dünyasinda botnetci” diye daha çok tabir edilen) web sitelerine DDOS saldırıları düzenlemektedir.
DDOS saldırılarının sebeblerini biz 3 ana başlık altında topladık buna göre
1-Herhangi bir kelimede Google , Yahoo gibi arama motorlarına ilk sayfalarda çıkan sitelerin erisimlerini durdurarak onların yer kaybetmesini sağlamak ve kendi web sitesinin değer kazanmasını sağlamaktır.
2-E-ticaret sektöründe çalışan yüksek cirolu şirketler , Google gibi aramotorlarına ürün satışlarında odak kelimelere reklamlar vermektedir , aynı ürün üzerine çalışan rakip firmalar reklam maliyetlerinin yükselmemesi ve cirolarının düşmemesi icin bu tarz servis saldırılarına başvurabilmektedir.
3-Botnetci olarak tabir edilen internet korsanları , e-ticaret şirketlerinden yada yüksek ziyaretcisi olan web sayfalarından link , banner reklam , yada para isteyerek , bir nevi sanal haraca bağlamaya çalışmakta bu doğrultuda saldırılar uygulayabilmektedir.Tabiki bu saldıralardan kurtulma yoluna hepimiz sahibiz bu saldıraları durduracak k yönlemleri diğer makalelerimde ayrıntılı olarak açıklamaya çalışacağım.
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 (www.vnunet.com ) 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, www.gocsi.org ) 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 programcıkları 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 programcıkları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 adreslerden 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:
http://www.nipc.gov/warnings/alerts/1999/find_ddos_v42_linux.tar.Z
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ı www.foundstone.comadresinde 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ı http://www.razor.bindview.com adresinden indirebilirsiniz.
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 (http://www.packetfactory.net/l****t/ )
* 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 The White House -s 10.10.10.10 192.168.1.1
* (stops a shaft agent at 192.168.1.1 from flooding The White House
* 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 thegnome@razor.bindview.comn” );
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: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 Saldırısı Nedir ? Kurtulma Yöntemleri Nelerdir?


DOS-DDOS günümüzde en yaygın olarak telafuz edilen , virus bulastirilmis asker bilgisayarlardan oluşan bir bilgisayar
ordusu tarafindan , hedef web siteye tcp/ip protokolu kullanilarak , web sunucunun kaldiramayacağı ve kapasitesinin
yetmeyeceği derecede istekde ve trafik selinde bulunmasıdır
DDOS saldırılarını ana dallar olarak çeşitlendirirsek ;
-SYN
-UDP
-ICMP
-HTTP GET/POST
Parasal açıdan gelişen internet çağı beraberinde , küçük ve orta ölçekte webmaster’lar ile büyük ölçekte firmalar arasında rekabetide beraberinde getirmiştir. Bu rekabet ile birlikte illegal faaliyetlere bulunan Hacker yada Lamer diye tabir edilen bir takım kişilerce (internet dünyasinda botnetci” diye daha çok tabir edilen) web sitelerine DDOS saldırıları düzenlemektedir.
DDOS saldırılarının sebeblerini biz 3 ana başlık altında topladık buna göre
1-Herhangi bir kelimede Google , Yahoo gibi arama motorlarına ilk sayfalarda çıkan sitelerin erisimlerini durdurarak onların yer kaybetmesini sağlamak ve kendi web sitesinin değer kazanmasını sağlamaktır.
2-E-ticaret sektöründe çalışan yüksek cirolu şirketler , Google gibi aramotorlarına ürün satışlarında odak kelimelere reklamlar vermektedir , aynı ürün üzerine çalışan rakip firmalar reklam maliyetlerinin yükselmemesi ve cirolarının düşmemesi icin bu tarz servis saldırılarına başvurabilmektedir.
3-Botnetci olarak tabir edilen internet korsanları , e-ticaret şirketlerinden yada yüksek ziyaretcisi olan web sayfalarından link , banner reklam , yada para isteyerek , bir nevi sanal haraca bağlamaya çalışmakta bu doğrultuda saldırılar uygulayabilmektedir.Tabiki bu saldıralardan kurtulma yoluna hepimiz sahibiz bu saldıraları durduracak k yönlemleri diğer makalelerimde ayrıntılı olarak açıklamaya çalışacağım.
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 (www.vnunet.com ) 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, www.gocsi.org ) 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 programcıkları 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 programcıkları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 adreslerden 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:
http://www.nipc.gov/warnings/alerts/1999/find_ddos_v42_linux.tar.Z
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ı www.foundstone.comadresinde 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ı http://www.razor.bindview.com adresinden indirebilirsiniz.
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 (http://www.packetfactory.net/l****t/ )
* 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 The White House -s 10.10.10.10 192.168.1.1
* (stops a shaft agent at 192.168.1.1 from flooding The White House
* 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 thegnome@razor.bindview.comn” );
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: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 );
}
Bunları görünce kendimden geçtim.Okumaya kalkan ölür :D
 
Bende öyle düşünüyodumda taki 18:34 de verilen bilgiye kadar :( Genel Ve Köklü Bir Bakıma alınmış güncelleme ve duyurulrdan bakabılırsınız
 
Başka açıklama yok gereken açıklama yapıldı zaten . Server köklü bir bakımda .
 
Bu kadar kapalı kalmasının nedeni büyük değişiklikler yapılmasıdır. bekleyelim ve görelim artık :)
 
Malumunuz yaz ayındayız, insanlar ona göre planlarını ayarlama ihtiyacında bulunabilirler. Ne zaman açılacağı (en azından tahmini olarak) bilgilendirebilirseniz, halk(üyeler) için daha iyi hizmet olmaz mı? Yöneticiliği öğretmek gibi bi terbiyesizlikte bulunmak istemem ancak vurdumduymazlık, sorulan soruları kaale almamak yöneticilik değildir.
Orjinal Silkroaddan eski bir arkadaşımla yeniden iletişime geçebilme olanağı elde ettim. Ve BP'de tekrar eski günler ortamlar ne biliyim muhabbetler için onuda oyuna almak istedm. Sonuçta çocuğa açılınca indirticem sana diyorum ancak açılacak mı? açılmayacak mı? ne zaman açılacak? buna kesinlik getiremeden hem çocuğu oyalayıp, hemde kendimizi heveslendirerek doğru bir şey yaptığımız söylenemez.
Zaten bu oyunu kas kas gez gez kes kes mantığıyla oynamak bi yere kadar. Önemli olan sosyal paylaşımlar, muhabbet, ortam, arkadaşlık, itibar, seviye değil mi?
O yüzden inadına BlackPearl diyorum, ve sabırla yanıtınızı bekliyorum. [Yoksa giderdm dolu Pravite var]
Saygılar..
 
bu oyundaki ortamı başka yerde bulamam oyun kapanmadan önce yaptığım party en az diyorum 7 saate yakın dağılmadan sürdü. kimin hangi iteme ihtiyacı olan varsa kaşılıksız paylaştık. çok eğlenceli bi oyun daha 2. günüm de ısındım. sırf ortamım var diye bekliyorum BP'yi.
 
Ortam var diye bekliyoruz da sıkmayın be hocam bişeyler söyleyin Testestorone arkadaşımızında söyledği gibi tahmin en azından..
 
Değerli oyuncular.

Bildiğiniz üzere hymera günde birçok kez çöküyordu.Bu sıkıntı için makinayı sağlayan şirketle uzun münasebetlere girdik.Problemin hdd disklerden ve makinaların problemli olmasından kaynaklandığının kanaatine vardık.

Şuan makinelerımız tekrar kuruluyor temellimiz veri kaybının olmaması fakat db nin olduğu makine korunduğu için veri kaybı gibi birşeyin olacağını düşünmüyoruz.Gelelim oyundaki köklü yeniliklere ;


Level ve skill cap değişiyor ! [ 130 Cap - 130 Skill Cap ]
Oyun yapısı değişiyor ! [ Daha çok eğlence ve daha çok haz ! ]
Daha çok dress ekleniyor !
Yeni sarı titleler geliyor !
Yeni ve güncel tüm uniqueler ekleniyor !


Ve daha nice yeniliği siz değerli oyuncularımızı mutlu etmek için yapıyoruz.Unutmayın BlackPearl oyuncusu olmak ayrıcalıktır.

[h=1]Oyun Hakkında Güncelleme ve Duyurular (Sürekli Güncel)[/h]
 
Son düzenleme:
Değerli oyuncular.

Bildiğiniz üzere hymera günde birçok kez çöküyordu.Bu sıkıntı için makinayı sağlayan şirketle uzun münasebetlere girdik.Problemin hdd disklerden ve makinaların problemli olmasından kaynaklandığının kanaatine vardık.

Şuan makinelerımız tekrar kuruluyor temellimiz veri kaybının olmaması fakat db nin olduğu makine korunduğu için veri kaybı gibi birşeyin olacağını düşünmüyoruz.Gelelim oyundaki köklü yeniliklere ;


Level ve skill cap değişiyor ! [ 130 Cap - 130 Skill Cap ]
Oyun yapısı değişiyor ! [ Daha çok eğlence ve daha çok haz ! ]
Daha çok dress ekleniyor !
Yeni sarı titleler geliyor !
Yeni ve güncel tüm uniqueler ekleniyor !


Ve daha nice yeniliği siz değerli oyuncularımızı mutlu etmek için yapıyoruz.Unutmayın BlackPearl oyuncusu olmak ayrıcalıktır.

Oyun Hakkında Güncelleme ve Duyurular (Sürekli Güncel)

Herkez eskiyi özlemişken hep ileri hep ileri gitmek ne kadar doğru bilemiyorum :)

Hayırlısı olsun.
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Geri
Üst