前言
之前为信安系统导论展示准备的实验被之前的小组“捷足先登”了,无奈只能又找别的实验,看了各个小组的题目,发现已经涵盖了大部分常见易操作的攻击方式,很难找到一个完全独立于其他人攻击方式的新实验,毕竟攻击思路都有共通之处,常用工具也就那些。
翻论坛找到一个有关中间人攻击的实验,觉得可以作为这次的展示,遂决定以此为题。
背景知识
- HTTPS和HTTP的区别
- 中间人攻击(sslstrip和sslsplit的原理)
- 端口转发
- 数据重定向的方法(手动修改网关、arp欺骗)
原理介绍
1.HTTPS和HTTP
HTTPS是在HTTP应用层基础上使用SSL(完全套接层)作为子层,SSL使用数据加密技术确保数据在网络上传输而不会被截取及窃听。
2.中间人攻击
①SSLStrip (降级攻击)的工作原理及步骤
(1) 先进行中间人攻击来拦截 HTTP 流量。
(2) 将出现的 HTTPS 链接全部替换为 HTTP,同时记下所有改变的链接。
(3) 使用 HTTP 与受害者机器连接。
(4) 同时与合法的服务器建立 HTTPS。
(5) 受害者与合法服务器之间的全部通信经过了代理转发。
(6) 其中,出现的图标被替换成为用户熟悉的“小黄锁”图标,以建立信任。
(7) 这样,中间人攻击就成功骗取了密码、账号等信息,而受害者一无所知。
总而言之,SSLStrip是一种降级攻击。
②sslsplit(解密攻击)工作原理
工具的主要原理是以中间人的身份将证书插入到客户端和服务器中间,从而截断客户端和服务器之间的数据。
之前我们大多数做的都是针对于80端口的欺骗(http),也就是说,只要是超越了80端口我们就会有点棘手:比如常用的443端口(https),比如465(smtps)和587端口,这些都是通过SSL加密进行数据传输的,简单的80端口监听肯定是什么都拿不到的。这个时候,就体现出SSL证书劫持的作用了。
总而言之,SSLSplit是一种伪造证书攻击。
3.端口转发
数据包都是有原地址和目标地址的,NAT(network address translation,网络地址转换)就是要对数据包的原地址或者目标地址(也可以修改端口的)进行修改的技术。为什么我们要修改ip地址呢?是这样的互联网中只能传送公网地址的数据包,私有地址的数据包是无法传送的。这样你想下,你每天在wifi环境下看视频浏览网站的时候你的ip是什么(私有地址,你手机、pad、电脑发出来的所有数据包原地址都是私有地址。怎么在互联网上传送)。为了能让你的数据包在能在互联网上传送,必须给你一个公网ip才行。所以当你上互联网的时候,路由器会帮你把所有的数据包的原地址转换成它的wlan口的ip地址(这个就是公网ip,一般就是ADSL拨号获取的ip)。这个转换的技术就是NAT。当你所访问的服务器给你回应数据包时,路由器会把所有数据包目标地址,由它的wlan口的ip地址,改回你内网的ip地址。这样你才能上互联网。所以你每天都在使用NAT技术。
4..数据重定向的方法
如何重定向到攻击者电脑上成为靶机和服务器的中间人,其实有很多种方式。
比如:
(1)arp攻击(伪装网关)
(2)DNS劫持(伪装服务器)
(3)wifi钓鱼(之前pxy他们组做的实验就可以利用起来)
(4)修改hosts文件(把舍友暴打一顿,然后把他的电脑里的hosts文件改掉)
(5)修改默认网关(把舍友暴打一顿,然后把他的电脑里的默认网关改成自己的ip)
攻击过程
1.sslstrip攻击
①将设备设置为转发模式,这样我们的设备就可以转发目标不是我们设备的数据包。若不这样,则目标主机会出现断网的情况,arp欺骗就成了arp断网攻击。
②设置iptables,将流量重定向,确保连接发送到sslstrip中。
发往本机80端口的数据重定向为工具使用监听的8080端口,其他常用端口也可用这种方式进行端口转发。
③数据流量重定向
这里因为是自己虚拟机里做的实验,就采用最简单的修改默认网关的方式来进行。
④使用sslstrip工具监视8080端口
5.打开靶机浏览器(这里使用ie8.0),发现https变成http了
我们登陆一下武大教务管理系统
再查看攻击机生成的日志文件
找到最后一项发现找到用户名及密码信息
发现密码为密文加密的,根据逻辑推导(瞎**猜),猜测是使用md5进行加密的,遂百度找一个md5解密网站,发现可直接解密得到密码,实验成功。
之后又测试了163邮箱,同样可以相同的方式查到用户名及密码,但密码的加密方式不清楚,使用类似的解密网站也没能解密成功,安全性比某网站高了不少。
2.sslsplit(failed)
①首先,我们需要一份数字根证书用来进行中间人欺骗,这里使用openssl来生成证书,先生成一个私钥key文件
用生成的私钥签名生成证书
②流量重定向与端口转发
与sslstrip攻击操作类似,SSLsplit将在两个端口上运行:8080 用在非SSL TCP连接,比如HTTP,SMTP或者TFP;8443用于SSL连接,比如通过SSL的SMTP,HTTPS等。未来转发到达攻击者机器的包到这些内部端口,NAT引擎可以被使用。
设置完毕查看一下iptables表
③arp欺骗
查看靶机arp表(动态添加,欺骗结束后一段时间会自动恢复)
使用sslsplit进行证书导入与监听端口
但当靶机打开网页,发现网页无法成功加载,再查看监听信息,发现证书导入失败...
失败原因至今还没有找到,一些可能的猜测有:
(1)网站防范等级提高(这是大概五年前的攻击手段了)
(2)openssl创建的证书有问题,可能是版本低,也可能是操作问题
(3)sslsplit工具的问题
为了展示效果,我找了网上攻击成功的一些截图作为说明。
可以看到服务器的根证书已经被伪造的证书所替换。
防范方式
我们可以看到,无论是哪种攻击手段,利用的都是局域网的中间人攻击。因此一些防范方式有:
①不随意连接公共wifi
②对于arp表中的ip和MAC地址进行静态固定
③开启一些安全软件的arp防火墙
④及时更新浏览器版本或换用其他安全性高的浏览器
一些感想
找一种比较有特点的攻击方式不是那么容易,实现更不容易,这过程中遇到了各种问题,一些问题网上也找不到确切的解决方法,一度卡住后想要放弃换实验,但还是做了下来。尽管还是没能完全实现,但展示出自己的问题和疑惑也未尝不可。展示的过程中主要还是展示原理和实操过程,而对于实验的准备、中途遇到的问题以及其他实验过程,则没有时间也不必要作为展示,但这一过程其实才是实验对于我们小组成员来说最重要的。
小组成员也都很努力,也都按照自己的能力分担了不同的工作,不像操作系统的小组有人完全划水...总体来说实验还是比较成功的(强行自我鼓励),希望以后再有类似的展示能做的更完善吧。