原文地址:http://mini.eastday.com/bdmip/180309090403479.html

 来源:嘶吼RoarTalk

嗅探手机与基站通信数据的中间人***教程_第1张图片

前言

本文将介绍如何嗅探手机与基站通信数据以实施中间人(MitM)***,其实这并不是什么新的研究,但我希望这可以帮助那些没有通信背景的人了解手机与基站通信数据背后的安全原理,以提高自我保护。应该说,了解其中原理可以让我们对如今很多生活场景下的连接都有所防范,因为我们家里面,就有许多需要连接到后端的带有 SIM 卡(因为手机用的就是 SIM 卡)的物联网设备。本文,我会以使用 2G 和 GPRS 的 SIM 卡为例,进行详细介绍。

嗅探手机信号的可能性

今年 2 月,已经有新闻曝出,不到 50 块做出的手机信号嗅探器可以获取你的手机号码。追踪手机信号可能比你想象得更容易、成本更低廉,事实上来自丹麦的*** "IT pro Keld Normal",只用了价值 7 美元(约合人民币 47 元)的 USB 设备,就能够嗅探到周围基站的信号和连接此基站的手机。

嗅探手机与基站通信数据的中间人***教程_第2张图片

虽然很多操作涉及到 Ubuntu 系统和 Python 编程语言,但并不复杂。因为,USB 硬件基本上就是一个天线,能够接收到基站的信号及数据,物理距离越接近、就能获得更多数据。然后,软件会对数据库进行分析,最终获得 IMSI。

另外,利用×××对周围的手机进行中间人***已不是什么新鲜事了,比如警方使用的信号基站模拟器(又称为 Stingray),Stingray 会伪装成基站不断向附近手机发送信号,而且会窥探用户数据和隐私。

目前能够嗅探手机信号的场景

目前在很多物联网设备中,很多设备都是通过 SIM 卡连接到其后端的。这些设备小到咖啡机、智能手表、智能眼镜,大到智能汽车、关键医疗设备等。如果有***者想要对你的物联网设备下手,只需嗅探到你的物联网设备和后端服务器之间的信号流量即可。

测试环境的设置

为了向大家展示如何嗅探手机与基站通信数据,从而实施中间人***,我使用了 USRP(Universal Software Radio Peripheral,通用软件无线电外设)硬件制作一个简单的×××。

从本质上讲,USRP 充当了一个无线电通讯系统的数字基带和中频部分。

硬件要求

带有天线和数据线(USB 3)且连接到 PC 的 USRP B210;

一部 智能手机或旧的 GSM 手机;

SIM 卡;

一台笔记本电脑;

软件要求

OpenBTS;

SipauthServ;

如果你想测试一下短信,可选 Smqueue;

如果你想测试一下通话,可选 Asterisk;

Ubuntu 16.04 操作系统;

什么是 OpenBTS

嗅探手机与基站通信数据的中间人***教程_第3张图片

OpenBTS 示意图

OpenBTS.org是一个开源软件项目,致力于通过互联网协议和灵活的软件架构来制作电信协议和传统复杂的专有硬件系统。 OpenBTS 软件是一个 Linux 应用程序,它使用软件定义的无线电向用户设备呈现标准的 3GPP 空中接口,同时将这些设备作为 SIP 端点呈现给互联网。这就构成了新型无线网络的基础,该网络承诺将覆盖范围扩大至所有网络服务市场,同时释放创新平台,包括为新兴网络技术提供支持,例如针对物联网的新兴网络技术。

创建×××

嗅探手机与基站通信数据的中间人***教程_第4张图片

安装示意图

首先要做的是建立一个运行的 OpenBTS,其中所使用的源代码,都来自这个链接。不过其中会有一些缺失的代码依赖项,需要进行修复。除此之外,还需要建立 OpenBTS 所需的具体设置。首先,我需要两个主要的服务,即 OpenBTS 本身和 SipauthServe。从源代码构建 OpenBTS 和 SipauthServe 后,在终端中启动这两个服务。不够在上面的源代码链接中,还有其他组件,例如 Smqueue 和 Asterisk,这是让通话和短信功能正常进行所必需的。但是,由于测试的重点主要是移动数据(这里是 GPRS),所以我并不关心在这里是否设置了这些组件,但感兴趣的读者可以尝试一下。

运行 OpenBTS

1. 使用 USB 3 数据线将 USRP 设备连接到电脑。

2. 在本文中,由于我创建了一个虚拟机,所以我可以构建测试时所必需的软件。如果你也有一台虚拟机,要确保你的 USB 3 接口可用。在 virtualbox 中,你可以通过 USB > Devices > Ettus Research USRP B210 启用 USB 3。

3. 使用 uhd_usrp_probe 命令,可以让 USRP 在 linux 中提供相应的硬件驱动程序,一旦它检测 B210 设备,立马就会进行下载。

4. 运行 SipauthServe:

home/dev/subscriberRegistry/apps$ sudo ./sipauthserve

5. 运行 OpenBTS:

home/dev/openbts/apps$ sudo ./OpenBTS

6. 运行 OpenBTSCLI:

home/dev/openbts/apps$ sudo ./OpenBTSCLI

×××的配置

在上面的步骤中,你会注意到运行了 OpenBTSCLI。这主要是为了配置我的 OpenBTS。下面是我在 OpenBTSCLI 中进行的主要配置,以便我们得到一个正常运行的模型 :

1. 允许手机在无需任何身份验证的情况下连接到基站,这意味着任何手机都可以在该基站中进行注册。

OpenBTS> config Control.LUR.OpenRegistration .*

2. 启用 GPRS:

OpenBTS> config GPRS.Enable 1

3. 启用 IP 转发:

echo 1 > /proc/sys/net/ipv4/ip_forward

4. 安装 iptables,你可以点此进行完整的 GPRS 和 IPtables 设置。

让手机连接到基站

如果你用的是智能手机进程测试,则必须更改一些设置才能使手机连接到基站。如果你用的是物联网,则测试的挑战性会更大,因为在物联网设备中几乎没有配置 " 移动网络 " 的选项。

设置 Android 手机 , 设置 Android 手机的过程和在 iPhone 中差不多 :

1. 启用 2G:这是从 4G 降级到 2G,设置步骤为 " 设置>蜂窝网络>首选网络类型> 2G"。

2. 添加 APN:设置步骤为 " 设置>蜂窝网络>访问点名称 "。添加时,请确保将 MCC 和 MNC 设置为与 SIM 卡相同的值。如果是在德国,MCC 是 262,跨国公司将根据自己手机的提供商进行变更。除此之外,APN 和 Name 值可以任意设置。另外,保持身份验证的选项为 none。

嗅探手机与基站通信数据的中间人***教程_第5张图片

设置 APN

3. 搜索我的基站并手动进行连接,步骤为 " 设置>蜂窝网络>搜索网络 ",通常出现的数字包含 MCC 和 MNC 的值。

嗅探手机与基站通信数据的中间人***教程_第6张图片

注册到基站的消息

如果你看到该消息,说明你的电话已在网络上注册成功,可以通过在 OpenBTSCLI 中进行检查确认。

OpenBTS> tmsis

这将显示注册到你的基站的 SIM 卡的 IMSI,如果你成功做到了这一步,你就已经有了第一个发现,那就是 SIM 卡的 IMSI。 IMSI 是你 SIM 卡的私有标识符。具有 IMSI 的***者可以识别并跟踪用户的网络,甚至可以尝试执行模拟***。

嗅探移动数据

一旦 GPRS 正常工作,你应该能够在你的手机中看到 "LTE" 或移动数据符号的标识 "G"。你也可以在你的智能手机浏览器中尝试使用谷歌,不过速度非常慢。

在你的 OpenBTS VM 中打开 Wireshark,你将能够看到嗅探到的数据包。

嗅探手机与基站通信数据的中间人***教程_第7张图片

在 wireshark 中嗅探到的流量