基于ARP欺骗的网络监听原理及实现

上传人:l****6 文档编号:38058224 上传时间:2018-04-26 格式:DOC 页数:6 大小:32.50KB
返回 下载 相关 举报
基于ARP欺骗的网络监听原理及实现_第1页
第1页 / 共6页
基于ARP欺骗的网络监听原理及实现_第2页
第2页 / 共6页
基于ARP欺骗的网络监听原理及实现_第3页
第3页 / 共6页
基于ARP欺骗的网络监听原理及实现_第4页
第4页 / 共6页
基于ARP欺骗的网络监听原理及实现_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《基于ARP欺骗的网络监听原理及实现》由会员分享,可在线阅读,更多相关《基于ARP欺骗的网络监听原理及实现(6页珍藏版)》请在金锄头文库上搜索。

1、1基于 ARP 欺骗的网络监听原理及实现随着计算机网络技术的高速发展,网络正日益成为政治、经济、文化、生活中不可缺少的一部分.在它给人们的生活、学习、工作带来前所未有的方便和机遇的同时,由于网络自身固有的不安全性,网络安全问题也越来越引起人们的关注.所谓网络监听,即将网络上传输的数据捕获并进行分析的行为.网络监听在协助网络管理员监测网络传输数据,排除网络故障等方面具有十分重要的作用.然而,网络监听也给网络的安全带来了极大的隐患,许多的网络入侵往往都伴随着以太网内网络监听行为,从而造成口令失窃,敏感数据被截获等连锁性安全代写论文2 网络监听的原理运行网络监听程序的主机要实现网络监听必须满足两个条

2、件:其一,是该主机的网卡必须工作在混杂模式下;其二,是传输的数据包能够到达该主机.根据连接的网络设备不同,以太网分为共享式以太网和交换式以太网.2.1 共享式以太网在共享式以太网中,由于是基于广播的方式来发送数据的,所以数包会被发送到连在一起的所有的主机(图 1 所示).因此,只要运行了网络监听程序的主机的网卡处在混杂模式下就可以实施网络监听了.所以,在共享式以太网中实施网络监听还是很容易的.2.2 交换式以太网在交换式以太网中使用交换机,交换机工作在数据链路层,工作时维护着一张 MAC 地址与交换机端口的映射表.当有数据报发送到交换机上时,交换机会将数据报的目的 MAC 地址与自己维护的表内

3、的端口对照,然后将数据报发送到相应端口上.所以,即使监听主机的网卡设置成混杂模式,也不能接收到传给其他主机的数据帧.因此,在交换式网络中实施网络监听的关键,就是要使发送给其他主机的数据帧能够到达运行了网络监听程序的主机.在交换式以太网中最常见的方式是利用 ARP 欺骗的中间人攻击的方式实施网络监听.2.2.1 ARP 欺骗原理 局域网内部的主机根据 MAC 地址进行通讯.2ARP(地址解析)协议是将 32 位 IP 到以太网的 48 位物理地址(MAC 地址),以便将报文封装成帧发送.如果源主机的 ARP 表没有目的 IP 和目的 MAC 的映射,则通过广播的方式发送 ARP 请求.只有具有此

4、目的 IP 的主机才会对这个广 ARP 请求作出反应,向源主机发送一个包含其 MAC 地址的 ARP 应答报文.ARP 协议是一个无状态的协议.一旦收到 ARP 应答就会对其高速缓存中存放的 IP 地址到物理地址映射记录进行更新,而不会关心之前是否发出过 ARP 请求.ARP 欺骗的核心就是向目标主机发送一个含伪造的 IP-MAC 映射信息的 ARP 应答报文.当目的主机收到此应答报文后就会更新其 ARP 高速缓存,从而使目标主机将报文发送给错误的对象.2.2.2 利用中间人攻击进行监听的原理 利用 ARP 欺骗进行监听其实就是要实现中间人攻击,它是利用 ARP 欺骗进行攻击的主要方式之一.其

5、原理是使进行监听的主机插入到被监听主机与其它网络主机之间,使进行监听的主机成为被监听主机与其它网络主机通信的中继.在这种情况下,其他网络主机发往被监听主机的信息和被监听主机发往其他网络主机的信息都必须经过进行网络监听的主机.这样,进行网络监听的主机就很容易对被监听主机进行网络监听了.如图 2 所示,C 为进行网络监听的主机,A 为被监听主机,B 为网络中的任一其他(1) C 向 A 发送ARP 应答报文,A 修改 ARP 高速缓冲,使 B 的 IP 地址与 C 的 MAC 地址相对应,即形成 IP 192.168.0.2MAC 03:03:03:03 的映射;2)同理,C 向 B 发送 ARP

6、 应答报文,使 A 的 IP 地址与 C 的 MAC 地址相对应,即 IP 192.168.0.1MAC 03:03:03:03;(3)这时,如果 A 向 B 发送信息,根据 A 高速缓冲中的 IP-MAC 映射,信息实际上是被发送到了 C,再由 C 转发到 B;同理,从 B 发送到 A 的信息也将会被 C 转发一次.此时,A 与 B 之间的通信已经被 C 完全监控.如果运行了网络监听程序的主机 C 的网卡又工作在混杂模式下,那么,主机 C 就满足了前面所提到的实现网络监听的两个3条件,可以对 A 与 B 间的通信进行监听了.3 利用 ARP 欺骗的网络监听实现的程序设计3.1 程序总体设计程

7、序的总体设计思想就是:首先要实现中间人攻击,使实施监听主机成为被监听主机之间的中继,然后分析接收到的数据包,根据自行约定的标志确定监听的开始,再根据用户的需要对监听到的数据包作出相应的操作.因此,该程序需要实现的主要功能有两个:(1)根据中间人攻击原理实现 ARP 欺骗;(2)处理接收到的数据包,根据用户的输入,完成相应的功能.分别建立函数ArpCheatApplication 和使用带参数的 main 函数作为主函数.主函数的功能主要是初始化网卡以及一些全局变量,并使用函数 CreateThread 来建立新线程,实现对ArpCheatApplication 等子函数的调用,完成相应的功能.

8、main 的算法如下:int main(int argc, char *argv) /带参数的 main 函数声明部分,定义变量;if (argc! =3) return 0; /参数输入错误,返回 0/取得参数ServerSideIP-inet_addr(argv1); /第二个命令行参数代表 Server 端的 IPClientSideIP-inet_addr(argv2); /第三个命令行参数代表 Client 端的 IP使用 InitAdapter 函数初始化网卡;使用自定义函数 GetMACAddr 函数取得 Server 端和 Client 端的 MAC 地址;/使用 Create

9、Thread 函数生成实现 ARP 欺骗的新线程i=1;4CreateThread(NULL, 0, ArpCheatApplication, i, 0, 0); /实现对 Server 端的ARP 欺骗i=2;CreateThread(NULL, 0, ArpCheatApplication, i, 0, 0); /实现对 Client 端的ARP 欺骗/使用 CreateThread 函数生成处理接收到的数据包的新线程CreateThread(0, 0, AnalysePacketsApplication, NULL, 0, 0);/使用 CreateThread 函数生成处理用户输入的新

10、线程CreateThread(0, 0, CustomerApplication, NULL, 0, 0);./其他所需的操作使用 PacketFreePacket 和 PacketCloseAdapter 函数释放资源;return 0;上面算法中使用到的 GetMACAddr 函数是一个自定义的用来根据目标 IP 获得相应 MAC 地址的函,其代码如下:BOOL GetMACAddr(DWORD DestIP, char *pMAC)5DWORD dwRet;ULONG ulLen = 6, pulMac2;dwRet = SendARP(DestIP, 0, pulMac, ulLen)

11、; /调用 SDK 函数来获取目标 IP的 MAC 地址if(dwRet = NO_ERROR) /判断是否找到了目标 IP 相应的 MACmemcpy(pMAC, pulMac, 6);return TRUE;else return FALSE; /如果没有找到目标 IP 相应的 MAC,则返回 FALSE.2 主要函数分析3.2.1 DWORD WINAPI ArpCheatApplicatio (LPVOID lpType) 此函数的功能是实施 ARP 欺骗.由前面对图 2 中间人攻击的分析可知,函数 ArpCheatApplication 要实现的功能有两个(如图 2,假定 A 为Se

12、rverSide,B 为 ClientSide):C 告诉 ServerSide,ClientSide 的 MAC 是ownmac;C 告诉 ClientSide,ServerSide 的 MAC 是 ownmac.函数 ArpCheatApplication 的流程图如图 3 所示.716 四川大学学报(自然科学版) 第 42 卷6图 3 ArpCheatApplication 流程图Fig.3 ArpCheatApplication flow chart3.2.2 DWORD WINAPI AnalysePacketsApplication(LPVOID lp) 此函数的功能是处理收到的数

13、据包,通过筛选只分析不属于自己的 TCP 包,然后根据用户的输入,完成各种功能.其流程如图 4 所示.图 4 AnalysePacketsApplication 流程图Fig.4 AnalysePacketsApplication flow chart对图 4 有:(1)对接收到的数据包需要进行以下筛选,其中 continue 代表跳出当前的数据包筛选,重新读入新数据包进行筛选./不处理监听主机本身发送和转发的数据包if(memcmp(TCPPacket-ehhdr.SourceMAC, OwnMAC, 6) = 0) continue;/不处理目的 IP 为监听主机本身的数据包for(i=0

14、; iTotalIP; i+) /TotalIP 为监听主机所拥有的所有 IP 数目if(TCPPacket-iphdr.destIP = OwnIPi) break; /判断目的 IP 是否为监听主机的某一 IP7717 第 4 期 向昕等:基于 ARP 欺骗的网络监听原理及实现if(i ! = TotalIP) continue;/检查是否 IP 包,以太网首部中 IP 包的类型代码为十六进制的 0800if(TCPPacket-ehhdr.EthernetType ! = htons(0x0800) continue;/检查是否 TCP 包if(TCPPacket-iphdr.proto

15、 ! = IPPROTO_TCP) continue;(2)设置开始劫持的标志有多种选择,在这里假设捕获到一个从 ClientSide - ServerSide 的纯 ack后才开始劫持,即检查 TCP 首部中的 6 个标志位是否为 010000,函数 IsACKPacket就是用来判断一个据包是不是只有 ACK 标志的,代码如下:BOOL IsACKPacket(unsigned char flag) /flag 代表 TCP 首部的标志位int i, j=1;for(i=0 ; i4; i+)if(flag j) return FALSE; /判断标志位低 4 位是否为 1,有为 1 的,

16、则返回falsej = 1;8if(! (flag 0x10) return FALSE; /判断 ACK 位是否为 0,为 0 则返回 falseif(flag 0x20) return FALSE; /判断最高位标志位的最高位是否为 1,为 1 则返回 falsereturn TRUE; /4 结束语事物都有两面性,网络监听也是这样.我们在利用网络监听来分析网络性能、排除网络故障的同时,也要防范攻击者利用网络监听窃取明文传输的密码和各种机密数据.参考文献:1 Stevens W R.TCP/IP 详解(卷 1:协议)M.北京:机械工业出版社,2003.2 谭浩强.C 程序设计M.北京:清华大学出版社,1999.3 萧秋水,文娟等.Windows 网络编程之 VC 篇M.北京:清华大学出版社,2003.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号