Kali Linux 基于HTTPS的中间人攻击

说明

按照《Kali Linux2 网络渗透测试实践指南 第二版 》第12章操作
仅供学习讨论使用,请勿进行非法操作

基于HTTPS的中间人攻击

HTTPS的加密过程的8个步骤中,最关键的是第3个步骤中服务端发送的数字证书。这个数字证书有两种来源:一种是由服务端自行生成的,这种情况下并不能保证通信的安全(因为数字证书很容被调包); 另一种是由权威的证书颁发机构(Certificate Authority CA)所颁发的,这种情形下安全性才得到了真正的提示。(注:图来自本书作者的PPT)在这里插入图片描述
服务端如果想要获得数字证书,就需要向证书颁发机构申请。证书颁发机构生成一对公钥和私钥、一个服务端端数字证书,并使用私钥对数字证书进行加密,该私钥不是公开的。 证书颁发机构向服务器A颁发包含CA公钥的数字证书,并向客户端提供CA公钥。证书颁发机构的工作原理如下图所示:(注:图来自本书作者的PPT)
在这里插入图片描述

由于专门用来加密数字证书的私钥掌握在证书颁发机构手中,即使服务端向客户端发送的数字证书被黑客截获,他们也只能解读,无法篡改。因为篡改数字证书后, 用户就无法使用证书颁发机构提供的CA公钥对数字证书进行解密。黑客获得的数字证书中的CA公钥也只能用来加密,不能解密,这样他们也无法获悉服务端和客户端加密的信息。即使使用了数字证书机制,仍然可能会出现以下问题导致完全机制失效。(注:图来自本书作者的PPT)
在这里插入图片描述

mitmproxy的安装与启动

mitmproxy是一个可以实现中间人攻击的Python模块,这个模块同时也提供了可以执行的程序。它的实质是一个可以转发请求的代理,保障服务端与客户端的通信,可以查看、记录其截获的数据或篡改数据。
为了实现伪造数字证书的目的,mitmproxy建立一个证书颁发机构,该机构不在你的浏览器的“受信任的根证书颁发机构”中。一旦用户选择了对其信任,它就会动态生成用户要访问网站的数字证书,实际上相当于证书颁发机构已经被黑客控制。Kali 中预先安装了mitmproxy。通过mitmproxy、mitmdump、mitmweb都可以完成mitmproxy的启动。它们提供了不同的操作界面,但功能一致,且都可以加载自定义脚本。在命令行中使用sudo mitmweb命令,可以打开mitmweb的工作界面(工作在8081端口)。
请添加图片描述

使用mitmproxy解密本机流量

这种情形指的是使用mitmproxy来解密从本机发出的流量,也就是说将浏览器的代理设置为127.0.0.1:8080,通常应用程序的测试人员会采用这种手段。此外,当黑客控制了用户计算机之后,也会采用这种手段来解析那些加密的流量。

导入证书

需要为浏览器手动设置代理, 这里以Firefox为例,通过“选项”—>“网络设置”----->“设置”,然后添加这个代理,在命令行功中使用mitmweb命令启动mitmproxy。然后访问mitmproxy提供的证书颁发机构下载数字证书,证书下载完成以后就可以导入了。
请添加图片描述
浏览器地址栏输入 about:preferences#privacy, 拉到最底下,找到security,点击 View Certificates... 按钮
请添加图片描述

测试

点击提交HTTPS网站的后, 返回到mitmweb的工作界面,你可以看到所有的内容都是明文,如下图所示:(注:图来着本书作者的PPT)
在这里插入图片描述

我自己访问了百度的登录界面
请添加图片描述
可以看到中间人攻击时对应的HTTPS使用的密码算法
请添加图片描述

使用mitmproxy与中间人攻击协同工作

这种情形指的是使用mitmproxy来解密从其他设备发出的流量。黑客首先运行中间人攻击程序,将它的全部流量劫持到自己的设备上。
因为mitmproxy只能运行在8080端口,所以需要将劫持的流量转发到这个端口上。考虑到mitmproxy用来处理HTTP、HTTPS产生的流量,所以我们只需要将目标端口为80和443的流量过滤出来,然后转发到本机的8080端口。这一点在Linux操作系统中使用iptable可以很容易做到。下面给出转发的命令:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 8080

上面的命令要在root权限下执行。如果是在Windows操作系统下,由于没有iptables,实现这个操作会变得十分困难,如下图所示:
在这里插入图片描述
另外,我们还需要想办法在受到中间人攻击的设备上导入mitmproxy的数字证书,这样在访问的时候才不会出现数字证书错误的提示。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值