https的中间人攻击和防范

这里的中间人场景主要是Windows平台下的C/S架构劫持,技术指的是SSL劫持攻击,即SSL欺骗,剥离攻击暂不涉及。整体原理是伪造证书,既充当请求方的server角色,又充当真正server的请求方。以此来获取和篡改通信的明文报文数据。

整体流程

  1. 使用openSSL制作证书
  2. 编写代理程序
  3. 根证书添加到可信任发布机构
  4. 设置系统代理

证书制作

首先装个openSSL,安装包下载地址:http://slproweb.com/products/Win32OpenSSL.html

  1. 生成CA证书(root ca证书) 生成CA私钥(.key)-->生成CA证书请求(.csr)-->自签名得到根证书(.crt)(CA给自已颁发的证书)
  2. 用上一步生成的根证书签发应用证书 生成私钥(.key)-->生成证书请求(.csr)-->用CA根证书签名得到证书(.crt)

到这里,证书就已经准备完成,在Windows平台下把刚用到的ca证书添加到可信任的证书颁发机构,生成的应用证书在下一步代理server中使用。

代理server

  • 首先这个程序角色是一个https的server,加载上一步的应用证书,搭建https 本地server,对需要劫持的接口作响应,给请求方返回符合协议格式的假数据;
  • 其次,这个程序角色也是个假的请求方,向真实的服务器请求劫持的接口,获得真正的服务器返回数据;
  • 代理程序完成之后,需要设置端口转发,好让请求方先跟我们的代理通信。这里简单的方法可以是改hosts文件,但是改hosts收到权限等诸多限制,正统一些的方法是设置系统代理,这就需要代理程序只拦截我们感兴趣的报文,对于其它的通信则进行单纯的转发。

防范思路

以上是https中间人攻击大致实现过程,其根本原理是利用https建立连接的特性,自签证书实现伪造server的目的。针对这种方式,证书的双向认证会很好地解决这一风险。客户端向服务端请求证书时做判断,服务器也对请求方的证书做校验,防止中间人伪造证书的攻击。


0 Comments latest

No comments.