导语:在进行物联网安全测试时,必须了解端点和交换数据,以测试目标应用程序、设备和远程服务器。如果目标程序提供一个Android或iPhone应用程序,就可以提取一些URL,如果幸运的话,还可以通过反汇编应用程序或捕获生成的网络流量来提取一些更
在进行物联网安全测试时,必须了解端点和交换数据,以测试目标应用程序、设备和远程服务器。如果目标程序提供一个Android或iPhone应用程序,就可以提取一些URL,如果幸运的话,还可以通过反汇编应用程序或捕获生成的网络流量来提取一些更有价值的信息。但当没有Android或iPhone应用程序可用时,攻击者就需要发挥创造性,并使用其他技巧来获得任何有价值的输入内容或命令。此外,目标设备与其服务器之间交换的信息可能与应用程序与其服务器之间交换的信息以及链接的url完全不同。实际上,在某些情况下,安全测试者通常会遇到具有硬编码凭证、证书或任何其他信息的设备,利用这些信息可以进一步访问系统。此外,供应商或构造程序可能会高估信任的程度,因为相对于基本用户,这些厂商或构造程序为设备提供了更多的权限。因此,在攻击测试期间,侵入设备或直接拦截其通信可能就需要这些权限。
本文是关于从使用移动网络交换数据和命令的物联网设备中获取这些信息的,涉及的技术包括:
1.射频(RF)方式:使用移动数据拦截技术
2.硬件方式:转储和分析固件。
为了详细说明这些攻击方式,本文所讲的案例将基于部署在法国的3G对讲机,该对讲机配有PIC24FJ微控制器。
测试设备包含以下一些要求:
1.1个微芯片PICkit 3电路调试器,但是如果你的目标设备有其他接口,比如JTAG, SPI, UART等,你可以找其他接口连接器,比如Shikra/Bus Pirate, Arduino/ESP/Raspberry pi/Odroid/Tinker/etc GPIOs等等;
2. 1个用于连续性测试的万用表(一个好的,并且不像'Extech EX330'那样昂贵);
3. 5个跳线;
射频方式包含以下一些要求:
1.BladeRF或USRP或任何其他主板所支持的YateBTS,或OpenBTS;
2.Modmobmap和一个受支持的设备扫描2G,3G和4Gcell;
3.自动筛选Modmobmap结果;
4.一个金属盖和铝箔胶带;
5.一个自定义SIM卡,如sysmoSIM卡,或来自其他国家/地区的预付SIM卡;
大约两年前,就有研究人员发表了一些关于使用移动网络的内部对讲机的攻击研究。第一个对讲机攻击的案例出现在2016年的Nuit du Hack上, 研究人员展示了如何使用YateBTS(或OpenBTS)以及像BladeRF这样的“廉价”软件定义无线电硬件,在实践中使用性能良好的拦截基础设施来攻击GSM对讲机。
然后在Hack.lu 2016上,研究人员发现,在降级攻击后3G对讲机可能会受到攻击。除了降级攻击外,它们还发现这些内部通信都被连接到中央服务器以保持内容同步。
这些对讲机使用以下Machine-2-Machine移动网络架构:
在Hack.lu 2016和33c3上展示的M2M对讲架构
正如Hack.lu 2016和33c3中所讨论的,此服务器或连接到此服务器的任何第三方中发现的任何漏洞都会为攻击者提供有趣的访问权限,以便能够同时进行大量的攻击。在Hack.lu 2016中,研究人员还展示了一个漏洞,它能让攻击者通过简单的互联网连接远程控制大量的对讲机。此外,供应商还提供了有效的M2M SIM卡,有效期为10年,由对讲机连接互联网。该M2M SIM卡受PIN保护,可通过SIMTRACE工具恢复,然后插入手机连接。在某些情况下,此连接将通过使用正确的APN(接入点名称)进一步访问供应商虚拟移动网络。
2017年,研究人员继续在OSSIR会议上展示对对讲机的攻击,通过添加额外的向量来完成原来无法完成的攻击,测试者可能会遇到物理访问的问题,如提供的RF遥控器和VIGIK(RFID)部件。问题如下:
1.你如何使用osmocomBB对2G进行3G和4G监控?答案是:Modmobmap;
2.如何对目标cell进行干扰攻击?答案是:使用Modmobjam进行自动干扰;
3.你是否会干扰3G信号,因为众所周知它可以抵抗干扰?答案是:3G系统使用的M-ary-SS,直接序列扩频(DSSS)和正交频分复用(OFDM)中的干扰裕度具有可接受的干扰水平。
4.你是否看过硬件,转储闪存并提取了一些隐私信息?
5.你是如何检索此设备使用的接入点名称(APN)的?
6.你是否找到了有趣的端点进行攻击?
为了说明这些技术,研究人员将继续使用两年前介绍的那个对讲机案例。
测试目标
目标是一个3G对讲机,该对讲机的供应商在法国,如下图所示。
研究人员要寻找的是对讲机连接的端点,并且运气好的话,能找到设备和服务器之间交换的数据。
为了完成这项任务,研究人员将使用两种不同的技术:
1.通过无线(RF)方式;
2.通过硬件方式;
无线方式
如果对讲机支持3G,有这样的网络可用,它最好选择3G,并与web服务器进行同步。目前有很多解决方案可以运行研究人员自己的移动网络,比如Fabrice Bellard设计的Amarisoft LTE方案,以及像srsLTE这样的免费解决方案。但在3G中,通用用户身份模块(USIM)可以进行相互身份验证,因此实际的基带通常会检查它,以保护用户设备不与恶意NodeB和eNodeB建立危险的连接。让设备连接到研究人员自己的NodeB或eNodeB的官方方法是使用自定义USIM卡,但是当使用旧SIM卡用于3G网络时,或者使用有缺陷或严重执行基带的设备时,很少会出现例外。要了解更多关于奇怪和疯狂的基带行为的信息,你可以阅读Benoit Michau在SSTIC 2014年以法语发表的一篇有趣的论文。除了有缺陷的基带实现外,还有一些漫游的技巧。
因此,攻击测试的主要问题是模拟移动网络,并捕获目标设备和网络之间交换的数据。为了做到这一点,研究人员将展示3种不同的技术,隔离设备。
请记住,所提供的大多数射频技术都是非法的,你应该对自己的行为负责。为了避免任何问题,请确保只影响你自己的设备,尽可能降低传输功率。
环境设置
所选择的设置与研究人员关于对讲机攻击的设置相同,由一个bladeRF和一台运行恶意GSM基站YateBTS的计算机组成。更便宜的替代品也存在,但本文未对此进行介绍,例如,使用带有OsmoTRX软件的LimeSDR mini运行BTS。
在YateBTS wiki的GPRS部分中清楚的解释了以下配置。
对于3G对讲机,必须捕获与远程服务器交换的数据,因此应在YateBTS配置文件ybts.conf中激活GPRS,如下所示:
... [gprs] Enable=yes ...
还需要与网关GPRS支持节点相关的配置,以处理研究人员的GPRS网络和研究人员的互联网连接之间的交换。配置如下:
... [ggsn] DNS=8.8.8.8 8.8.4.4 ; its preferable to use your own servers for client side attacks IP.MaxPacketSize=1520 IP.ReuseTimeout=180 IP.TossDuplicatePackets=no Logfile.Name=/tmp/sgsn.log MS.IP.Base=192.168.99.1 MS.IP.MaxCount=254 TunName=sgsntun
然后像往常一样,我们必须告诉内核允许IP转发,然后iptables转发来自内部网络的流量。
# echo 1 > /proc/sys/net/ipv4/ip_forward # iptables -A POSTROUTING -t nat -s 192.168.99.0/24 ! -d 192.168.99.0/24 -j MASQUERADE
注意:如果BTS(基站收发器)运行的移动国家代码(MCC)和移动网络代码(MNC)代码与研究人员测试的SIM/USIM卡运营商不同,则需要激活行程特征(例如,Free Mobile用户就是这种情况),在创建的网络上使用数据,或者更改代码以对应SIM / USIM卡操作。
一旦正确配置了正在运行的BTS,移动电话就可以浏览互联网。以下这个小图标显示手机是通过GPRS连接的。
使用GPRS连接的手机
该平台已准备好拦截数据,但必须考虑一些元素才能成功吸引研究人员的目标。
吸引目标的方式
如上所述,对讲机将始终首先尝试连接到有效的3G网络。
为了规避这种已知的行为,研究人员可以采取3个不同的方式来提高目标的吸引度:
1.降级3G通信并强制设备在GSM/GPRS中进行通信;
2.使用法拉第笼工具将设备与合法移动网络隔离;
3.使用自定义SIM卡强制设备注册到研究人员设置的恶意基站;
注意:为了增加看到目标连接到网络的机会,必须测试不同的频率范围。实际上,在扫描频率时,控制它们的基带或设备会执行一些非确定性优化。例如,一些设备需要发送大量的数据,所以1800-1900 MHz这样的高频最好。另一些人则主要在较低的频率上进行长距离搜索。
方法1:降级攻击与“智能”干扰
降级攻击有时会很复杂,但如果设备主要是寻找3G或4G存在的信号,则降级攻击是必要的。因此,在大多数情况下,攻击者无法根据需要隔离目标设备。
最基本的方法是购买一个廉价的2G/3G/4G干扰器,并重新设计以掩盖所有3G和4G信号。但还有更简单的方式,比如研究人员今年早些时候提出的一种方式:“智能”干扰。
要执行“智能”干扰攻击,必须按照以下两个步骤进行:
1.监控和收集cell及其下载或上传的绝对射频通道数(ARFCN);
2.干扰并收集与目标ARFCN相关的精确频率;
使用Modmobmap监控cell
就像在BeeRump 2018年的报告里所描述的那样,目前有许多独立的方法可以用来检索2G、3G、4Gcell的列表。研究人员选择开发Modmobmap,它可以使用简单的三星手机检索周围的2G、3G和4G cell。
在本文中,研究人员将使用兼容的三星Galaxy S5和运行在主机上的Modmobmap,以获得每个可能cell的列表。
在复制了存储库并安装所有依赖项之后,研究人员将三星Galaxy S5连接到计算机并启用ADB。然后在主机上启动Modmobmap,如下图所示:
$ sudo python modmobmap.py -m servicemode -s <Android SDK path> * daemon not running; starting now at tcp:5037 * daemon started successfully => Requesting a list of MCC/MNC. Please wait, it may take a while... [+] New cell detected [CellID/PCI-DL_freq (XXXXXXXXX)] Network type=2G PLMN=208-20 ARFCN=1014 Found 3 operator(s) {u'20810': u'F SFR', u'20820': u'F-Bouygues Telecom', u'20801': u'Orange F'} [+] Unregistered from current PLMN => Changing MCC/MNC for: 20810 [+] New cell detected [CellID/PCI-DL_freq (XXXXXXXXXX)] Network type=2G PLMN=208-20 ARFCN=76 [+] New cell detected [CellID/PCI-DL_freq (XXXXXXXXXX)] Network type=2G PLMN=208-10 ARFCN=76 => Changing network type for 3G only [+] New cell detected [CellID/PCI-DL_freq (XXXXXXXXXX)] Network type=3G PLMN=208-10 Band=8 Downlink UARFCN=3075 Uplink UARFCN=2850 => Changing network type for 2G only => Switching back to auto-mode [+] Unregistered from current PLMN => Changing MCC/MNC for: 20820 [+] New cell detected [CellID/PCI-DL_freq (XXXXXXXXXX)] Network type=3G PLMN=208-10 Band=8 Downlink UARFCN=3075 Uplink UARFCN=2850 => Changing network type for 3G only [+] New cell detected [CellID/PCI-DL_freq (XXXXXXXXXX)] Network type=4G PLMN=208-20 Band=3 Downlink EARFCN=1675 [+] New cell detected [CellID/PCI-DL_freq (XXXXXXXXXX)] Network type=4G PLMN=208-20 Band=1 Downlink EARFCN=251 => Changing network type for 2G only => Switching back to auto-mode [+] Unregistered from current PLMN => Changing MCC/MNC for: 20801 => Changing network type for 3G only [+] New cell detected [CellID/PCI-DL_freq (XXXXXXXXXX)] Network type=3G PLMN=208-1 Band=8 Downlink UARFCN=3011 Uplink UARFCN=2786 [...] [+] Cells save as cells_1536076848.json # with an CTRL+C interrupt
可以看到,当用户决定中断该工具时,cell列表将保存在cells_1536076848.json文件中。这个文件可以被任何其他工具解释,包括“智能”干扰工具Modmodjam。
用Modmobjam干扰
在今年SSTIC的一次会议上,研究人员提出了一种被称为“智能”干扰的工具Modmobmap的补充技术。随后,研究人员发布了一个名为Modmobjam的工具,以将设备与精确的操作员隔离开来。
在复制了Modmobjam库之后,研究人员可以看到两个重要的脚本,它们将用于执行自动干扰攻击。
第一个脚本是由GRC/jammer_gen.grc中设计的GnuRadio Companion模式生成的GRC/jammer_gen.py。如果此工具与HackRF或任何发送器一起使用,具体取决于osmocom接收器块,此时则可以直接运行GRC/jammer_gen.py脚本,如下所示:
$ python GRC/jammer_gen.py
如果你的发送器不依赖于osmocom接收器块,你仍然可以通过修改提供的GnuRadio Companion架构来重建GRC/jammer_gen.py脚本。
研究人员可以从GUI手动命令GRC/jammer_gen.py以阻塞所需频率,更改增益,更改带宽等。但客户端也可以命令此脚本自动阻塞cell。为此,第二个脚本smartjam_rpcclient.py旨在通过RPC发送命令并接受Mobmobmap工具生成的JSON文件。
假设研究人员需要阻塞的运营商是“Orange”,我们可以通过提供PLMN(Public Land Mobile Network,公共陆地移动网络),过滤器的MCC和MNC代码来简单的使用最后一个脚本,如下所示:
$ python smartjam_rpcclient.py -f <Modmobmap path>/cells_1536076848.json -w 208-1 [+] Jamming cell XXXXX-XXXX central frequency at 942.2 MHz with 10 MHz bandwidth [...]
几分钟后,研究人员应该能够吸引对讲机收到恶意GSM/GPRS BTS,因为设备不再看到任何3G“Orange”cell,而只是噪音。
注意,两个cell干扰会话之间的延迟可以用参数-d来定义,以告诉工具或多或少具有攻击性。
在同样的情况下,可以通过使用法拉第笼或自定义SIM/USIM卡来避免干扰。
方法2:法拉第笼
简而言之,法拉第笼是一个众所周知的概念,它可以保护设备不受电噪声和电荷的干扰,这个概念也被用来避免设备的外部污染。术语法拉第笼也称为移动信号等无线电波的电磁屏蔽,但不像法拉第笼那样容易制造电荷。为了衰减或阻挡信号,屏蔽材料和概念取决于几个要素:
1.频率;
2.波长;
3.接收或传输功率;
4.接收机和发射机之间的距离;
在选择材料和设计之前考虑所有这些元素非常重要。例如,如果你选择带有网格的笼子,则应针对反射的电场优化窗口。此外,移动设备改变2G/3G/4G的频率,这是必须注意的行为。对于屏蔽盒来说,磁导率和材料的厚度很重要。
事实上,使用一些可以显著减弱移动基站信号的工具就足够了。比如常常吃的巧克力盒子:
根据经验,如果你把手机放在一个屏蔽较好的金属盒子里,关上盖子几秒钟,手机就会断开从周围的基站上释放的信号。
当你吃完所有的巧克力后,完整的bladeRF就可以被装进盒子里,但是建议你只需要把天线放在盒子里就可以了。请注意,盖子和盒子之间的密封是紧密的,并用铝箔胶带封闭好。在将目标设备与正在运行的BTS一起放入金属盒之前,必须更改YateBTS的配置,以避免在接收端造成任何损坏。为此,研究人员必须将ybts.conf的Radio.PowerManager.MaxAttenDB参数降低到最小值,然后再逐步递增这些值,直到目标设备检测到它为止。
有时,目标设备无法放入金属盒里,就要做一些以下处理。
最后的设置应该是以下这样的:
在研究人员所介绍的案例中,巧克力盒非常好用,但在其他情况下,使用定制的SIM/USIM卡也很有效,而且不那么麻烦。
方法3:使用自定义SIM/USIM卡
在某些情况下,访问SIM/USIM卡是不可能的或非常困难的,例如正在使用的Sierra调制解调器。但在可能的情况下,应该首先考虑这种方法,因为它排除了用户设备与合法运营商的联系,例如,这可以保存在设备初始化状态下发送的任何丢失的包。
通常,来自其他国家或地区的不接受漫游的预付费USIM/SIM卡可以用于执行隔离。但你也可以选择自由编程的sysmo SIM/USIM卡。
注意:某些设备会强制用户输入个人识别码(PIN)代码。在这种情况下,建议使用SIMTRACE嗅探设备输入的PIN。这样可以防止你的自定义SIM/USIM卡被阻止,最后输入PUK(个人解锁码)解锁。在这种情况下,也可以使用恶意(e)NodeB在3G或4G中捕获数据。