写在前面
之前有些过一篇攻防演练项目的心路历程,其中有提到钓鱼WiFi的这样一个场景,当时没有详细说明,在这里具体讲解一下这个场景的一些技术细节及工具的使用,我尽量贴合实际情况去进行。
安装
下载地址:git clone https://github.com/P0cL4bs/wifipumpkin.git
检查是否安装了PyQt5
新版的kali中已经默认安装了PyQt5,可以使用以下命令进行检查:
python3 -c “from PyQt5.QtCore import QSettings; print(‘hello’)”
以下为安装了PyQt5的命令执行结果——输出了"hello"
安装PyQt5
为了防止有些同学没有PyQt5框架,这边安装也写在这里。
PyQt5
的官网链接如下:http://www.riverbankcomputing.co.uk/news。
当然也可以在
Python
这里查看教程。
以下是Windows平台的安装,当然Linux也是一样的。PyQt5
有两种安装方式,一种是从官网下载源码安装,另外一种是使用 pip
安装。
推荐使用pip安装,它会自动根据你的Python 版本来选择合适的 PyQt5
版本
pip3 install PyQt5
还有一个是PyQt5-tools的安装,不过这个对于这片文章并没有太多的作用,这里就不叙述了。安装成功的验证也可以使用上面的命令。
安装本体
安装了PyQt5后接下来开始安装wifipumpkin,在git资源后保存的目录中键入以下命令,然后等待安装完成。
sudo python3 setup.py install
检查依赖安装
这是这篇文章一个坑,正式进行攻击之前确定好依赖是否安装完善。
# 可以加"-y",遇到判断是否安装某些分支时,默认输入"y"并进行确认
apt-get install hostapd
apt-get install libssl-dev libffi-dev build-essential
apt-get install python3-pyqt5
安装完成后我比较喜欢用whereis
这个命令来验证是否安装,以下为安装完成的验证截图
启动WiFipympkin3
# 终端输入
wifipumpkin
之后就是工具的使用。
开始你的攻击——创建一个WiFi
注意,创建钓鱼WiFi需要一个无线WiFi发射器,这个硬件的话需要自己购买,能力足够的话还可以自行制作,我这里使用的下图中的这样的硬件。
命令创建
插上硬件之后,在网络信息中就会看到相应的wlan网络,然后使用wifipumpkin利用此网卡创建钓鱼WiFi。
使用以下命令创建WiFi网络,这里我并没有设置钓鱼页面,也就是设置插件的选项选择了noproxy
,在真正的攻击中,记得设置相应的页面进行钓鱼,插件这个会放在下面进行叙述。
# 设置无线网卡
set interface wlan0
# 设置无线网络名称
set ssid test
# 设置插件
set proxy noproxy
#开启dns转发
ignore pydns_server
#开始攻击
start
完成后如下图:
而在WiFi列表中也出现了相应的无线网络,只是不知道怎么回事我的电脑启动这些之后性能占用猛增。
小插曲——钓鱼WiFi启用后,我电脑的键盘就不能用了,也不知道是因为什么,看来上苍不让我这么玩啊hhhh
还有一个问题就是我中间断了一次连接之后,再次去启动的时候会提示地址被占用,所以退出之前记得及时停止,或者重新键入sessionid重新进入回话,因为之前并没有记录所以没能重新回去,除了停止之外,可以试试用kill
命令干掉相应的进程。
后面也看了一下官方的使用手册,在后台输入jobs
命令就可以查看所有的进程,然后再使用-s SESSION
进入相应的会话。
在后续的使用中其实wifipumpkin3相对来说并不是很稳定,比如说有些情况下终端连入之后退出钓鱼WiFi就不能再次连接,再比如wifipumpkin3在某些情况下会莫名其妙自动终止钓鱼WiFi进程,再再比如某些情况下钓鱼WiFi信号会莫名消失,但wifipumpkin3上的进程却是正常的。这些问题我也没有找到解决办法,看来之后看以后作者的更新情况了。
现在测试一下连接效果。
可以看到我的测试机的连接和断开,这样就没有问题了
至于怎么结束,键入stop
命令结束钓鱼WiFi进程。
配置文件创建
除了使用命令的创建钓鱼WiFi的方式,还有更简便的方法——编写配置文件。
将原本键入的命令保存到*.pulp文件。
使用以下命令直接读取,注意文件路径,这里我就不展示这个方式的效果了,感兴趣的可以做一下。
wifipumpkin --pulp *.pulp
使用插件——利用captiveflask强制用户登录
拦截HTTP流量
顾名思义,钓鱼WiFi,不钓鱼怎么能叫钓鱼WiFi呢,钓鱼所用到的就是captiveflask
插件功能了,这个插件功能是在代理功能中进行设置,使用proxies
可以查看代理设置,也可以查看钓鱼页面设置,set proxy captiveflask
即可启用相应功能。
wifipumpkin
内置有默认登录页面,登录页面保存在../wifipumpkin/plugins/captiveflask/
因为我还在研究当中,自定义登录网页会写在后面,可以继续学习一下。
使用set proxy captiveflask.* true
命令设置登录页面。
设置完成后就可以启动WiFi测试效果了。连接WiFi之后会自动弹出连接页面。
在这里里面输入内容之后会被后台监听抓取到,这个页面可以进行自定义,比如说更改成使用邮箱或者某些账号登录,就可以实施钓鱼了。
在未登录之前,所有的http网站都是无法访问的,但是要注意的是,这个插件无法拦截https流量。
拦截HTTPS流量
拦截HTTPS流量需要进行一定的配置,在../wifipumpkin/core/servers/proxy/captiveflask.py
中进行修改,在Initialize()
函数中添加以下内容
print(display_messages("redirecting HTTPS traffic", info=True))
self.add_default_rules(
"{iptables} -t nat -A PREROUTING -i {iface} -p tcp --dport 443 -j DNAT --to-destination {ip}:443".format(
iptables=self.getIptablesPath, iface=IFACE, ip=IP_ADDRESS, port=PORT
)
)
重新更新wifipumpkin
。
python3 setup.py install
最后经过测试,确实HTTPS流量在登录之前被拦截不转发,但是登录后依旧没能转发,可以说并没有完成它原本可以上网的功能,这里最为主要的就是没有添加ip_forward
。
临时设置
使用sysctl指令配置
sysctl 命令的 -w 参数可以实时修改Linux的内核参数,并生效。所以使用如下命令可以开发Linux的路由转发功能。
sysctl -w net.ipv4.ip_forward=1
修改内核参数的映射文件:/proc/sys/net/ipv4/ip_forward
内核参数在Linux文件系统中的映射出的文件:/proc/sys/net/ipv4/ip_forward中记录了Linux系统当前对路由转发功能的支持情况。文件中的值为0,说明禁止进行IP转发;如果是1,则说明IP转发功能已经打开。可使用vi编辑器修改文件的内容,也可以使用如下指令修改文件内容:
echo 1 > /proc/sys/net/ipv4/ip_forward
永久配置
修改/etc/sysctl.conf 配置文件
在sysctl.conf配置文件中有一项名为net.ipv4.ip_forward
的配置项,用于配置Linux内核中的net.ipv4.ip_forward
参数。其值为0,说明禁止进行IP转发;如果是1,则说明IP转发功能已经打开。需要注意的是,修改sysctl.conf文件后需要执行指令sysctl -p
后新的配置才会生效。
设置完成ip_forward
后理论上是可以正常访问网页了,这个时候我测试了微信发送消息,就可以成功发送了。但是访问百度依然不可以。在查找日志之后确定了问题。
通过日志发现,DNS解析出现问题,并没有正常解析域名导致网站并不能正常访问。这个应该和我自己的系统没有配置DNS地址有关系。这个我就不再继续深究了,如果感兴趣自己可以挖一下。
自定义钓鱼页面
按官方手册来说,有点不太好理解,我这看到了一个比较直接的方式。
首先在wifipumpkin/wifipumpkin/plugins/captiveflask
目录添加一个模板,这里可以直接复制一份DarkLogin.py复制一份,重命名为自己想要的名称,比如test.py,然后编辑复制的文件将所有的Darklogin全部替换成文件名。
修改配置文件wifipumpkin/config/app/captive-portal.ini
接着把前端模板按照flask的目录格式放到wifipumpkin/config/templates/test
文件夹下
这里一定要重新进行编译,不然进行的设置不会加载。
最后,测试效果,设置这里已经出现了相关的选项。
启动钓鱼WiFi看看访问登录页面查看一下,不过在这里有一个问题,就是我重新编译了之后再次启动,选项什么都是OK的,但是钓鱼页面迟迟没有更新,一气之下重启了kali-linux,然后就惊喜的发现页面正常了。莫名其妙的原因。
取消身份攻击
钓鱼WiFi在时间上是部署在正常WiFi之后的,不能只等待受害者去被动连接,我们要主动出击,让他们不得不连接我们部署的钓鱼WiFi,这就需要用到wifipumpkin
的取消身份验证攻击。
那么,什么是WiFi取消身份验证攻击?WiFi取消身份验证攻击是一种拒绝服务攻击,它以用户和WiFi接入点之间的通信为目标。攻击者可以随时模拟带有身份验证对象的地址,将利用假地址生成的取消身份验证帧发送到无线访问点,让对象掉线。具体操作如下:
在wifipumpkin命令行界面输入以下命令,并等待扫描结果。
wp3 > use WiFi.WiFideauth
wp3 : WiFideauth > set interface wlan0
wp3 : WiFideauth > scan
图中CH
一栏代表信道,你需要对哪个WiFi进行攻击就需要将自己的钓鱼WiFi信道切换至对应信道上。
选择自己想要攻击的WiFi的BSSID
,设置完成后输入start
开始运行,这里我就不展示具体效果了。
如果放在实际环境中,需要用到取消身份认证攻击与钓鱼热点结合使用时,需要准备两个网卡硬件。
写在最后
这篇文章是针对之前攻防演练项目中用到的场景——WIFI钓鱼+钓鱼邮件的组合场景中钓鱼WiFi技术要点的记录,钓鱼邮件这方面因为这次使用的是宏病毒钓鱼,所以说这段时间就不再对宏病毒文件这个点位再更新文章了,等后续接触到钓鱼邮件其他内容(值得一写的内容)的时候在继续更新钓鱼邮件方面的内容吧。
参考材料
讲解文章:wifipumpkin3 WiFi钓鱼工具
官方手册:Wifipumpkin3
Comments | NOTHING