1625-5 王子昂 总结《2017年9月19日》 【连续第352天总结】
A. ARP欺骗原理及实验
B.
0x00 楔子
为了招新的技术展示~
由于ARP欺骗是很早以前的东西,记得大多数防火墙都带ARP防火墙功能了
所以本来想在控制路由器的前提下进行DNS欺骗的
不过查了一下,虽然DNS地址可以自己设置,但是本地搭DNS服务器才行,相对比较复杂,另外还需要自己开启HTTP服务,所以终归还是玩了ARP欺骗
0x01 简介
ARP(Address Resolution Protocol)地址解析协议是将IP地址与mac物理地址对应的转换协议。
内网中发包的目标实际上是mac,对IP操作时需要通过ARP将其转换为mac
当计算机想要发包给某个IP时,首先查询本地的ARP缓存表是否有对应的mac;若没有则广播请求报文,正常情况下拥有该IP的终端会发送一个响应包返回,两者则建立正常通讯。
这就存在着伪造的可能:当A需要B的mac时,中间人C向A发送大量的“我才是B”报文,使得A误将C的mac与B的IP对应,从而造成欺骗。
在内网中,任何一台主机都需要通过网关(路由器)来与外网通信。因此如果一个恶意终端向其他终端发送“我才是网关”的报文(并向网关发送“我是终端A/B/C”,会使得其他终端将本该发送向外网的包发送给恶意终端。
如果恶意终端拦截包,则造成断网现象。
如果恶意终端转发包,则造成数据被窥视甚至篡改的危险。
如果包未加密,恶意终端将直接看到用户的密码等重要信息;如果包内含cookies,则恶意终端可以直接劫持会话,免密登录任何网站。
0x02 示例
linux下存在arpspoof和ettercap两个工具都可以完成ARP欺骗
如果需要对方正常上网,则需要开启流量转发功能:
echo 1 >> /proc/sys/net/ipv4/ip_forward
PS:虽然据说在开启ettercap以后,该工具会自动接管转发,将内核的转发功能关闭,所以不需要手动echo 1。但是实践中似乎不敲该命令确实会使得数据包未转发
arpspoof -t 192.168.1.106 192.168.1.1
或
ettercap -Tq -i wlan0 -M arp:remote /192.168.1.111/ /192.168.1.1/
就可以ARP欺骗成功
在被攻击机上输入arp -a可以看到网关的mac地址已经与攻击机的mac相同了
数据包转发以后我们只需要解析就可以看到一些有趣的东西了:
例如driftnet 可以看到未经加密的图片
urlsnaraf可以看到连接的url
wireshark经过过滤可以看到所有数据包
未经加密的HTTP连接将暴露所有信息,包括cookies,明文传递的user和password
0x03 防御
不过经过这么多年的交锋,服务器方也不是等闲之辈
HTTPS加密就是为了防御中间人攻击的
HTTPS将领取服务器的公钥,将数据和自己的密钥发送给服务器;
该数据包只有服务器的私钥才可以解密,因此中间人无法解密
之后服务器用私钥解密,再用客户端的密钥加密返回数据包
该数据包只有客户端的密钥才可以解密,因此中间人也无法解密
这样有来有往,服务器和客户端的通信就受到了加密保护
0x04 再攻击
然而,虽然有了安全的HTTPS,黑客们仍然想到了突破的方法
1. 公钥是基于证书的,中间人可以自行领取受信任的证书(这个过程实际并不简单)来伪造服务器,使得客户端-中间人-服务器 两条通信链路都仍然使用HTTPS协议,但中间人仍然可以转发数据包,使得客户端和服务器的通信不受阻
2. HTTPS虽然是安全的,但网络中仍然存在许多HTTP页面;甚至很多大网站是使用HTTP页面通过302重定向跳转至HTTPS页面的,在这个过程中中间人就可以劫持HTTP页面的入口来进行钓鱼(伪造网站)
不过HTTPS的证书级别不够时,浏览器会自动在地址栏左侧提示,因此在重要网站时常关注加密级别会是一个良好的习惯
而HTTP的劫持会使得浏览器提示“该连接不受加密”,注意这点可以避免受攻击。(虽然好像也有一些大网站会触发这个提示使得人们不太重视它就是了……
C. 明日计划
国赛WP