如何在 Ubuntu 16.04 上构建软接入点
David Fletcher// 这篇博文将演示在 Ubuntu 16.04 上设置软件接入点(AP)的过程。创建软接入点的能力在测试具有 802.11 无线功能的设备时非常有用。通过使用软接入点,我们可以观察设备生成的所有流量,检查这些流量,并确定攻击设备的方法。
需要注意的是,实现流量检查目标还有许多其他方法,例如:
- 具有内置诊断工具或数据包捕获功能的接入点
- 开源设备固件包
- 像 hostapd 这样的接入点软件
- 拦截代理,如 Burp Suite 或 OWASP ZAP
- ARP 缓存中毒攻击
- 像 WiFi Pineapple 这样的设备
然而,通过使用功能齐全的通用操作系统,我们获得了对可能希望针对目标系统运行的工具的广泛支持优势。因此,我们避免了由于交叉编译或平台工具支持而引起的问题。
我通常将我的软接入点创建为虚拟机,并利用外部无线适配器的直通 USB 支持。这样我就不必在本机操作系统中提供支持,并且可以用最少的配置启动 AP。在这种情况下,我最喜欢使用的无线适配器是 ALFA AWUS051NH 高增益 802.11 a/b/g/n 适配器,如下所示。
从一个全新安装并完全打补丁的 Ubuntu 16.04 开始,我们需要满足软接入点的几个先决条件。这些包括:
- Aircrack-NG 套件 – 此工具套件的 Airbase-NG 组件将用于模拟实际的无线接入点本身。
- 桥接实用程序包 – 此组件将允许我们将接入点运行的接口桥接到互联网连接的接口。它还将允许我们观察和记录跨桥接口的活动。
- 无线工具包 – 此包包含 iwconfig 实用程序,可用于检查和更改无线适配器的配置。
- rfkill 实用程序 – 此实用程序将允许我们从主机操作系统的控制中释放无线适配器,以便我们可以使用它来支持我们的 AP。
- ISC DHCP 服务器 – 此包将为我们的 AP 提供 DHCP 支持,以便连接的客户端获得正确的 IP 地址和 DNS 设置。
这些先决条件可以通过以 root 身份运行以下命令来安装:
|
|
注意:在安装上述软件包之前运行以下命令以确保系统完全更新是一个好主意:
|
|
解决了先决条件后,我们可以开始配置我们的软 AP。首先,将无线适配器连接到主机,并确保操作系统识别该适配器。使用 iwconfig 和 ifconfig 命令确保新连接的适配器出现在接口列表中,如下所示。
接下来,我们需要防止主机操作系统在托管模式下使用此接口。为此,我们将发出命令“nmcli radio wifi off”和“rfkill unblock all”。第一个命令禁用了主机操作系统网络管理器对 wifi 无线电的管理。第二个命令删除了操作系统对无线设备设置的软件块。
无线适配器可以自由使用后,我们现在可以使用 Airbase-NG 开始广播我们的 SSID,如下所示。此命令接受我们希望广告的 SSID 和将托管它的适配器。此接入点仅用作快速安全测试功能,并且不加密流量。如果需要使用 WPA2 加密,应考虑 hostapd 包作为替代方案。
此时,我们可以将客户端连接到 SSID,但它将无法获取 IP 地址或上网。这就是桥接实用程序包发挥作用的地方。如上所述,airbase-ng 创建了一个接口 at0。我们将创建一个名为 br0 的桥,并将 at0 接口添加到桥中。然后我们将启动两个接口并为桥接口分配一个 IP 地址。
桥接口 br0 现在分配了我们默认网关的 IP 地址,并与 at0 共享一个以太网段。然而,连接的客户端仍然无法获取 IP 地址或与互联网通信。
下一步是配置我们的 DHCP 服务器,为连接的客户端提供 IP 地址、默认网关和名称服务器信息。这将使用我们在系统初始配置期间安装的 ISC DHCP 服务器来完成。出于本演示的目的,我们在 root 的主目录中复制了 /etc/dhcp/dhcpd.conf 进行实验。使用下面看到的配置文件,我们指定了名称服务器(8.8.8.8)、我们将服务的子网(192.168.100.0/24)、我们范围内的 IP 地址范围(192.168.100.10-99)和我们的默认网关(192.168.100.1)。
接下来我们需要启动 DHCP 服务器。但是,由于我们以 root 身份交互式运行 DHCP 实例,我们需要取得 dhcp.leases 文件的所有权,否则在尝试启动服务器时会收到错误。此更改不是永久性的。每次重新启动后,所有权将恢复,因此每次重新启动运行 AP 的操作系统时都必须重新完成。
更改租约文件的所有权后,我们可以使用我们刚刚创建的配置文件在桥接口上启动 DHCP 服务器。如果服务器成功启动,您将看到类似于下面出现的输出。
现在我们的客户端可以连接到软 AP,并将从我们的 DHCP 服务器获得适当的 IP 信息。然而,它们仍然无法与互联网通信。启动和运行我们的 AP 的最后一步是启用 IP 转发,并在 iptables 防火墙中插入一条规则,以转发和 NAT 源地址在我们无线段范围内的流量。
这告诉 Linux 内核启用 IP 转发并使用其路由表传递流量。然后,它使用绑定到我们的以太网适配器的地址 NAT 源地址匹配我们无线段的出站流量。
有了所有这些,我们应该能够观察关联、租约建立和监控流量,如下所示。
拥有此功能将允许我们观察连接到开放 AP 时的行为(少考虑标准操作系统,多考虑 IOT 设备),并分析在客户端和后端基础设施之间传递的流量。一如既往,注意任何来回传递的敏感数据,并在必要时寻求更安全的替代方案。如上所述,此技术有许多替代方案。