作者:pensar
特此声明: 本文仅限于技术交流,禁止用于非法途径!!
前几周斗哥给大家介绍了一款自动化测试工具selenium,本周带来跟selenium应用相关的实时双因子钓鱼工具。什么是双因子认证?简单解释一下:正常的网站登录界面都需要账号密码(something you know)为登录凭证,但是某些安全性高的网站会开启双因子认证,即在原来的基础上再加上一重认证,比如常见的手机短信验证码、银行的U盾的PIN码(something you have)或者指纹以及其他生物识别的方法(something you are)等身份双因子认证。本篇文章重点想传递的信息是:使用双因子认证的网站并不能避免钓鱼网站的威胁,希望通过对该工具的测试来了解双因子钓鱼的原理,以此来更好的防范实时双因子钓鱼网站的危害,推动新的防御机制。
0x01工具介绍&准备
ReelPhish实时双因子钓鱼工具是以命令的方式运行的,主要有两个组件,一个组件是嵌入钓鱼网站的PHP脚本(需根据确定的目标网站对脚本代码进行设置修改),用来获取钓鱼的数据(账户、密码、双因子验证等)并发送到攻击者电脑中的python脚本,另一个组件是用来监听钓鱼网站数据的ReelPhish.py(需要python2.7环境运行),当侦听到账户密码等信息时就会启动selenium框架驱动浏览器自动与HTML对象交互,以此来达到实时钓鱼的目的。
1. 下载工具:ReelPhish实时双因子钓鱼工具github地址,下载后放到本地文件夹,打开文件如下图:
其中ReelPhish的两个组件分别以examplesitecode下的examplecode.php和ReelPhish.py两个脚本体现,其中examplecode.php需要放置到钓鱼网站的目录下并根据目标网站实际情况做修改。
2. 另外除了下载好ReelPhish工具,我们还需下载相关的webdriver: Chrome:chromedriver_win32.zip
这里斗哥给出 Chrome的win32为的下载地址,其他的小伙伴可自行根据需要下载。 下载好chromedriver.exe一起放到ReelPhish-master文件夹下即可:3. 安装Selenium ,用来运行浏览器驱动程序的自动化框架,这里斗哥已经安装过了。
pip install selenium
0x02环境说明&准备
为了模拟和测试ReelPhish实时双因子钓鱼工具的使用,斗哥找研发小姐姐搞了一个简单的网站用来模拟真实网站(这里斗哥模仿的是Google站点的登录过程),网站的登录步骤分为三步:输入邮箱->输入密码->输入短信验证码(手机号已绑定邮箱),
网站访问地址为:192.168.159.135/Paer/index.html正式开始:
OK,这里假设我们确定好要钓鱼的网站就是上面的这个网站后,我们就可以开始搭建测试环境,整个测试环境的搭建主要分为两个部分,第一是ReelPhish.py组件的设置运行,第二个是钓鱼网站和php组件的设置,这个两个组件支持放在不同的服务器上,这里斗哥为了操作方便,将两个组件放置在同一个windows主机上,如果是运行在不同的服务器,则需要修改php组件中$local_url为实际ReelPhish.py组件服务器的IP地址即可。
如2135端口冲突或被占用则需要同步修改ReelPhish.py组件的端口,更换可以使用的端口,否则端口不做改变。
第一部分:
在0x01工具介绍&准备部分中我们已经完成具备运行ReelPhish.py组件的基本环境配置,除此之外我们还需要设置哪些参数呢?运行ReelPhish.py组件-h,我们可以查看组件所有要参数如下:
–browser 用来指定浏览器
–submit 用来指定登录页面的提交按钮的ID,默认只支持一个按钮 –url 用来指定真实网站的IP –numpages 用来指定认证页面的数量 –logging 用来查看脚本运行的信息,这里使用debug看的信息最全。 –override 用来指定忽略报错信息那么根据上面我们的测试环境,设置–browser为Chrome; 真实网站是的–url为http://192.168.159.135/Paer/index.html ;登录的页面有三个–numpages设为3,通过审查元素可以查看各个页面的下一步按钮(这里由于是斗哥自己搭建的网站因此将下一步按钮的name均设置为Next),即这里–submit设置为Next;
注:其实–submit参数这里有个坑点,该参数按照ReelPhish.py的默认情况下仅支持接收一个按钮的name,那么如果多个页面的下一步的按钮的名称不一样则需要对ReelPhish.py做修改以支持接收多个参数。
那么我们第一部分的ReelPhish.py的运行参数设置具体如下:
ReelPhish.py –browser Chrome –url http://192.168.159.135/Paer/index.html –numpages 3 –submit Next –logging debug
第二部分:
第二部分主要是钓鱼网站的搭建和php组件的具体设置:
这里斗哥将钓鱼环境部署在phpstudy上,并且通过右键保存网站源码的方式直接克隆网站(就是这么简单粗暴),或者可以使用kali下自带的SET(Social Engineering Tool)等专业工具对目标网站进行克隆。
运行PHPstudy,将网页修改为php后缀文件保存到本地的PHPstudy下的/www/phishing目录下:认证流程分别由三个页面and登录成功的页面,这里分别保存为user.php、pass.php、phone.php、succeed.htm。
由于每三个页面都需要将获取的数据(从HTTP POST请求中获取用户邮箱、密码、短信验证码等凭证)发送到ReelPhish.py组件进行实时交互,因此这里php组件需要设置三个脚本,这里分别创建命名为get_user.php、get_pass.php、get_phone.php 。
在编辑器中打开上述文件,进行分析:
1.修改user.php的表单action,使get_user.php获取到表单提交的email参数的值
2.将获取到的数据发送到ReelPhish.py组件,此时接收到数据的ReelPhish.py组件自动打开浏览器输入获取到的邮箱数据,实时进行交互
3.get_user.php的header(‘Location: ./pass.php’);跳转到输入密码页面(pass.php)
4.重复步骤1的设置
eq:以user.php和get_user.php的页面交互为例,具体修改设置如下:
以上我们完成了整体测试环境的搭建和设置。
0x03模拟受害者登录钓鱼网站过程
下面我们模拟受害者访问虚假的页面地址并开始认证的过程:
与此同时攻击者的系统就会收到受害者的消息,并自动启动新的web浏览器,访问真实网站的页面,提交受害者的用户凭证进行登录。
ReelPhish.py接收数据:
ReelPhish.py打开浏览器自动化交互过程:
防止钓鱼网站的威胁,目前最主要还是要加强自身的防范意识,当然本篇的重点是想告诉大家采用双因子认证的网站并不能有效的避免钓鱼的威胁。
最后斗哥提个小问题:请问受害者在访问钓鱼网站时收到的短信验证码请求是在哪里触发的??欢迎小伙伴在留言区亮出你们的解答哈~~声明:本文来自漏斗社区,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。