HTTPS及HTTPS中间人攻击

全站HTTPS正在称为潮流趋势,国内实现全站https的有淘宝和百度两家

0x01:https的作用

C I A:机密性,完整性,可用性(可用性是合法用户可以访问自己有权限访问的资源)

解决的是信息传输中数据被篡改。窃取

加密:对称、非对称、单向

0x02:https工作原理

https的工作原理还是有必要研究下的(原理我也是从网上学习总结的,感谢这些前辈)

1. 客户端发起HTTPS请求

用户在浏览器里输入一个https网址,然后连接到server的443端口。

2. 服务端的配置

采用HTTPS协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请。区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面


web通信中的SSL加密的公钥证书(受信任的第三方证书颁发机构签名颁发)常见的如

VeriSign

Thawte

GlobalSign

Symantec

3. 传送证书

这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间等等。

4. 客户端解析证书

这部分工作是有客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。如果证书没有问题,那么就生成一个随即值。然后用证书对该随机值进行加密。

5. 传送加密信息

这部分传送的是用证书加密后的随机值,目的就是让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了。

6. 服务段解密信息

服务端用私钥解密后,得到了客户端传过来的随机值(私钥),然后把内容通过该值进行对称加密。所谓对称加密就是,将信息和私钥通过某种算法混合在一起,这样除非知道私钥,不然无法获取内容,而正好客户端和服务端都知道这个私钥,所以只要加密算法够彪悍,私钥够复杂,数据就够安全。

7. 传输加密后的信息

这部分信息是服务段用私钥加密后的信息,可以在客户端被还原

8. 客户端解密信息

客户端用之前生成的私钥解密服务段传过来的信息,于是获取了解密后的内容。整个过程第三方即使监听到了数据,也束手无策。

大概过程如下:

握手——协商加密算法——获得公钥证书——验证公钥证书——交换会话密钥——加密信息传输

0x03:SSL的弱点

1.ssl是不同的对称、非对称、单向加密算法的组合加密实现(cipher suite)

如密钥交换、身份验证使用RAS/Diffie-Hellman,加密数据,使用AES加密,有RAS/DH完成密钥交换,摘要信息由HMAC-SHA2,组成了一个cipher suite,当然,也可以是其他组合。

2.服务器端为提供更好的兼容性,选择支持大量过时的cipher suite。

3.协商过程中强迫降级加密强度。

4.现代处理器计算能力可以在接收的时间内破解过时加密算法。

5.黑客购买云计算资源破解。

 

0x04:HTTPS常见攻击方式

针对其弱点,常见的https攻击方法有

降级攻击(把高安全级别的加密算法强制降成低安全级别的加密算法)

解密攻击(明文、证书伪造)

协议漏洞、实现方法的漏洞、配置不严格

0x05:HTTPS证书查看

在进行中间人攻击之前,先查看下证书,可以使用以下软件(以百度为例)

1、OpenSSL

OpenSSL是一个安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。

直接调用openssl库识别目标服务器支持的SSL/TLS cipher suite

openssl s_client -connect www.baidu.com:443

2、sslcan

SSLscan主要探测基于ssl的服务,如https。SSLscan是一款探测目标服务器所支持的SSL加密算法工具。

sslcan能自动识别ssl配置错误,过期协议,过时cipher suite和hash算法

默认会检查CRIME、heartbled漏洞,绿色表示安全、红色黄色需要引起注意

sslscan -tlsall www.baidu.com:443

分析证书详细数据

sslscan -show-certificate --no-ciphersuites www.baidu.com:443

3、nmap

还可以使用nmap的脚本。

nmap --script=ssl-enm-ciphers.nse www.baidu.com

0x06、https中间人攻击


1、先生成一个证书。

openssl req -new -x509 -days 1096 -key ca.key -out ca.crt,进行一个新的请求,格式为-x509,现在的证书基本是x509的国际标准的证书格式,有效期为1096天,并使用ca.key私钥,生成ca.crt标准的证书文件。

sslsplit会自动的调用根证书,根据你要访问哪些网站,根据网站的名称,由根证书签发一个专门针对网站的证书。

2.开启路由功能

中间人也是个终端设备,不具有路由功能,转发过程不是由软件实现的,是由操作系统的路由功能实现的。

sysctl -w net.ipv4.ip_forward=1,将net.ipv4.ip_forward=1的值设为1,当然用输出重定向或者vim编辑proc/sys/net/ipv4/ip_forward也可。

3.写转发规则

iptables端口转发规则

当客户端把请求发给中间人终端设备的时候,发到终端的443端口之后,需要用iptables做NAT地址转换,其实是端口转换,把本地443端口收到的包转发到另外一个端口,而另外一个端口由sslsplit所侦听的端口,这样的话,凡是发给443端口的请求流量就会发给slsplit所侦听的端口,而sslsplit就会调用证书伪造一个看起来是目标网站的伪造网站,sslsplit会利用伪造的证书对发过来的流量进行解密

iptables -t nat -L 查看net的配置,为避免干扰,可以使用iptables -F清空配置,并使用netstat -pantu | grep :80 ,netstat -pantu | grep :443检查80和443是否被使用,使用则停止进程

将80、443端口进行转发给8080和8443端口。

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080

iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 8443

当然还可以对其他的协议的加密流量进行中间人攻击。

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

4.进行arp欺骗

使用arpspoof进行arp欺骗,不管是进行DNS欺骗还是HTTP或HTTPS的中间人攻击,arp欺骗都是前提,所以,在进行防御的时候,将ip和MAC绑定,就可以防止中间人攻击了。

arpspoof -i eth0 -t 192.168.1.127 -r 192.168.1.1 (以下展示的实验环境的地址)

能看到网关的arp已经变成了kali的mac地址了。

5、进行监听

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,-D 表示debug,-l表示把连接请求记录到一个文件中,不是数据信息,只是连接信息,-j越狱的根目录,-S请求的数据,放在-j指定的目录下的目录,如root/test/logdir,所以得先建立这个几个目录,-k指定私钥,-c指定私钥签发的证书,ssl的流量加密的流量在本地的所有ip地址侦听8443端口,不加密的普通的tcp流量在本地的8080端口侦听。

6、验证

在客户端验证。本地电脑默认集成证书服务器的根证书,是不信任我们伪造的证书,所以在访问淘宝的时候,看到有这样的提示,就是有问题的。

登录验证并查看证书。

查看连接信息。

查看数据信息。

查看到https加密后的信息已经被解密。

我们就可以劫持https的流量了,但是会提示网站证书会报错,解决方法是将根证书安装到客户端,再次访问就不会报根证书的问题了。访问的任何东西就会被没有告警的记录下来。所以在看到访问网站证书报错的情况下,需要格外注意。

除了sslsplit进行监听,还可以使用Mitmproxy进行中间人攻击,同前面的步骤相同,仍然需要伪造证书,进行arp欺骗,但不需要指定监听的端口,默认监听8080端口,可以对默认的端口进行修改。

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080

iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 8080

启动Mitmproxy

mitmproxy -T --host -w mitmproxy.log,不但能进行监控,每个具体的数据可以打开查看详细的请求。

还可以使用SSLstrip进行监听,与前两种工具不同,将客户端到中间人的流量变为明文。需要arp欺骗,不需要生成伪造证书,只需写iptables规则,并让sslstrip 监听某一个端口。

sslstrip -l 8080

0x07、ssl/TLS拒绝服务攻击

ssl/TLS拒绝服务攻击的原理及特性:

1、SSL协商加密对性能开销增加,大量握手请求会导致拒绝服务。

2、利用ssl sevure renegotiation 特性,在单一TCP连接中生成数千个SSL重连接请求,造成服务器资源过载。

3、与流量式拒绝服务攻击不同,thc-ssl-dos可以利用dsl线路打垮30G带宽的服务器

4、对SMTPS、POP3S等服务同样有效

可以使用德国黑客组织“The Hacker’s Choice”发布了工具THC SSL DOS、

thc-ssl-dos ip 端口 --accept,--accept是作者强制要求加的参数,不加此参数回提示你这个服务器是你的服务器吗,不是你的服务器就不要进行测试,--accept只有接收确认是自己的服务器,才可以使用这个工具去发起ssl重连接的握手请求。

对策

禁用SSL-Renegotoation、使用SSL Accelerator(不过可以通过修改thc-ssl-dos代码,可以绕过以上对策)

时间: 2024-10-05 10:20:41

HTTPS及HTTPS中间人攻击的相关文章

如何避免遭受HTTS中间人攻击

先前为大家说明了如何对App的HTTPS通讯进行中间人攻击,听起来很吓人吧-表示若是使用手机的网银或购物等App,便有可能暴露在风险之中. 会发生HTTPS遭受拦截的主要原因是客户端的App未对服务器端的SSL证书进行验证所致.如此一来,有心人士便有了可趁之机,借由中间人攻击手法,分别对客户端的App及服务器端,建立通信,并让2端以为是在对彼此直接通信,便能达到窃听双方通信内容的目的. 也许金融业者会问道:那要如何解决呢?其实,从源头下手即可.意即,修改App源码,加入验证程序的代码,而不要偷懒

Android安全之Https中间人攻击漏洞

Android安全之Https中间人攻击漏洞 Android安全 Https 攻击漏洞 应用加固 御安全 MITM 0X01 概述   HTTPS,是一种网络安全传输协议,利用SSL/TLS来对数据包进行加密,以提供对网络服务器的身份认证,保护交换数据的隐私与完整性. 中间人攻击,Man-in-the-middle attack,缩写:MITM,是指攻击者与通讯的两端分别创建独立的联系,并交换其所收到的数据,使通讯的两端认为他们正在通过一个私密的连接与对方直接对话,但事实上整个会话都被攻击者完全

我们来一起说说HTTPS中间人攻击与证书校验

一.前言 随着安全的普及,https通信应用越发广泛,但是由于对https不熟悉导致开发人员频繁错误的使用https,例如最常见的是未校验https证书从而导致"中间人攻击",并且由于修复方案也一直是个坑,导致修复这个问题时踩各种坑,故谨以此文简单的介绍相关问题. 本文第一节主要讲述https的握手过程,第二节主要讲述常见的"https中间人攻击"场景,第三节主要介绍证书校验修复方案,各位看官可根据自己口味浏览. 二.HTTPS握手过程 首先来看下https的工作原

中间人攻击之劫持HTTPS明文数据

敏感数据的安全传输是网络安全技术的一个重要的组成部分,多数认为只有https是最好的实践,姑且不考虑ssl证书的价格,至少https也不是绝对安全的,当遭受中间人劫持攻击的时候也会获取到传输中的明文数据,具体攻击原理见<HTTPS连接过程以及中间人攻击劫持>,但是这篇文章也说了,使用中间人攻击手段必须让客户端信任中间人的证书,否则攻击无效.因此这种攻击方式难度大且不方便攻击,但是并不是说不能实现.个人认为至少有以下两种方式可以进行利用:??一.获取服务器的远程桌面登录权限后,设置客户端信任中间

Android 中间人攻击

0x00 Android中间人攻击的思路就是劫持局域网中被攻击机器和server间的对话.被攻击机器和server表面上工作正常,实际上已经被中间人劫持.能够从一张图来明确这个过程. 受攻击主机发送的数据,首先经过了攻击者.从server返回的数据也经过攻击者,再发送给受攻击主机. 0x01 Android开源中间人攻击样例.请參考https://github.com/ssun125/Lanmitm.我们这里主要分析这个链接中效果预览中会话劫持的原理. watermark/2/text/aHR0

使用charles实现ssl中间人攻击

一.普通抓包http.https 将手机设置代理,指向PC机 在pc机上安装charles 手机应用发起http.https请求,可以看到http明文.https加密请求(ssl通信会加密请求和响应) 二.https中间人攻击 https与服务端或者ssl证书一起工作,证书由证书中心提供,用户会认为证书是安全的.事实证明,任何人都可以创建自己的证书,可以通过以下步骤使用charles实现自签名的证书. 点击proxy->proxy settings 点击ssl标签 确保勾上Enable ssl

MITMf:中间人攻击框架 -由中国寒龙整理收集

MITMf:中间人攻击框架 MITMF是一个可用于中间人攻击的框架.这个框架是基于Python的,它拥有数个插件,增加了更多的渗透测试方面的功能.一些实用的插件: jskeylogger – 这个插件可以在目标机器上注入一个 javascript 键盘记录器 JavaPwn – 在客户端利用过时的Java浏览器插件,配合使用Metasploit 安装假的Java更新 FilePwn – 这个插件使用后门工厂掩饰可执行文件,以及通过http发送zip文件 Spoof – 使用ARP欺骗,DNS欺骗

我们一起来聊聊中间人攻击

在聊中间人攻击之前,不了解HTTPS握手过程的同学可以查看我的前一篇HTTPS握手介绍. 一.HTTPS握手过程(请点击) 三.中间人攻击 https握手过程的证书校验环节就是为了识别证书的有效性唯一性等等,所以严格意义上来说https下不存在中间人攻击,存在中间人攻击的前提条件是没有严格的对证书进行校验,或者人为的信任伪造证书,下面一起看下几种常见的https"中间人攻击"场景. 1.证书未校验 由于客户端没有做任何的证书校验,所以此时随意一张证书都可以进行中间人攻击,可以使用bur

再谈中间人攻击

前言 上一篇ARP欺骗与中间人攻击讲到了MITM攻击的基础和原理,并且在实验中成功对网关和目标主机进行了ARP毒化,从而使得无论目标的外出数据或流入数据都会经过本机这个“中间人”.在上篇后记里也略为提及到,中间人可以做的事情有很多,但是没有详细介绍.因此本文就来谈谈如何截取目标流量以及如何对目标看似杂乱无章的数据进行提取,分析和修改. 流量分析 通常我们成功变成中间人之后,会一直捕捉目标的流量数据并且保存为本地的cap文件,然后再用工具对数据信息进行分析.流量抓取的方式有很多,比如Linux下的