蜂窝利用

优质
小牛编辑
128浏览
2023-12-01

蜂窝利用

目前,我们已经知道了如何在头单元上运行代码,前提是你能用USB设备(劫持)来连接汽车或访问车内的Wi-Fi(利用D-BUS漏洞/功能)。最大的问题是,这些入侵方法都要么需要接触到汽车,要么就需要攻击者加入到车上的Wi-Fi热点。

如果能加入到车内的Wi-Fi热点并进行漏洞利用是非常让人激动的,因为这就说明我们已经远程入侵了一辆原装汽车,但是,对我们来说,这其中的前提和限制还是太多了。首先,我们假设多数用户不会购买车上的Wi-Fi服务,因为这项服务的收费太高了,每月34.99美元(约是217.33元)。第二,问题在于Wi-Fi的加入,虽然考虑到密码的生成方式,问题并不大。最后,也是最重要的,Wi-Fi的范围对于汽车入侵来说太短了,大约只有32米。虽然这个范围足够攻击者开车接近目标车辆来入侵其头单元并发送命令,但是这不是我们最终想要的目标。我们会继续调查能否从更远的距离上利用漏洞来攻击目标车辆。

网络设置

观察Uconnect系统的网络配置,我们可以在其中找到几个用于通讯的接口。这里面就有一个用于内部Wi-Fi通讯的接口uap0,另一个PPP接口-ppp0,我们猜测是用于通过Sprint的3G服务与外界通讯。

# ifconfig
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33192
        inet 127.0.0.1 netmask 0xff000000
pflog0: flags=100<PROMISC> mtu 33192
uap0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        address: 30:14:4a:ee:a6:f8
        media: <unknown type> autoselect
        inet 192.168.5.1 netmask 0xffffff00 broadcast 192.168.5.255
ppp0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1472
        inet 21.28.103.144 -> 68.28.89.85 netmask 0xff000000

Uconnect系统会把地址192.168.5.1分配给连接到Wi-Fi访问点的主机。如果用户了连接到了Uconnect系统,他们就会看到IP地址68.28.89.85。但是,在这个地址上,端口6667不是打开的。在接入网络时,21.28.103.144是Uconnect实际的接口地址,但是只开放给内部的Sprint网络。

在经过实验后,我们发现每当汽车重新启动时,PPP接口的IP地址就会更改,但是地址空间中总是会填充两个A类地址块:21.0.0.0/8 或 25.0.0.0/8,这两个地址空间应该是Sprint给汽车的IP地址保留的。在这里可能保留了更多的地址块来供汽车使用,但是我们很确定的是,凡是运行着Uconnect系统的车辆中都有这两个地址空间。

我们还想要检查D-Bus服务是不是的确绑定到了蜂窝接口上的同一个端口(6667),允许通过IP进行D-Bus交互。下面是一个活动的头单元上的netsat输出:

# netstat
Active Internet connections
Proto Recv-Q Send-Q  Local Address          Foreign Address         State
tcp        0      0  144-103-28-21.po.65531 68.28.12.24.8443        SYN_SENT
tcp        0     27  144-103-28-21.po.65532 68.28.12.24.8443        LAST_ACK
tcp        0      0  *.6010 *.*             *.*                     LISTEN
tcp        0      0  *.2011                 *.*                     LISTEN
tcp        0      0  *.6020 *.*             *.*                     LISTEN
tcp        0      0  *.2021                 *.*                     LISTEN
tcp        0      0  Localhost.3128         *.*                     LISTEN
tcp        0      0  *.51500                *.*                     LISTEN 
tcp        0      0  *.65200                *.*                     LISTEN
tcp        0      0  localhost.4400         localhost.65533
ESTABLISHED
tcp        0      0  localhost.65533        localhost.4400
ESTABLISHED
tcp        0      0  *.4400                 *.*                     LISTEN
tcp        0      0  *.irc                  *.*                     LISTEN
udp        0      0  *.*                    *.*
udp        0      0  *.*                    *.*
udp        0      0  *.*                    *.*
udp        0      0  *.*                    *.*
udp        0      0  *.bootp                *.*

从上面的输出中你可以看出,与IRC关联的端口6667绑定到了所有的接口上。所以,我们可以通过蜂窝网络来执行D-Bus通讯,从而攻击这辆吉普切诺。我们首先想到的是获取一个飞蜂窝(Femtocell)设备并强制这台吉普切诺加入我们的网络,这样就能直接通过蜂窝从更远的范围上与车辆通讯。

飞蜂窝(Femtocell)

飞蜂窝设备基本上就是一个迷你的蜂窝塔,用于帮助消费者改善居住位置的信号接收问题。除了当做一个信号塔,这个设备还可以用于拦截蜂窝流量,按照攻击者的意愿进行修改。

我们还从Ebay上购买了几个老款的Sprint Airave基站,其中有了两个是坏的,另一个 “全新的”设备据称被盗了(感谢Ebay!)。我们选用了Airave 2.0基站,因为我们知道这个设备上有一个漏洞,利用这个漏洞可以打开设备上的Telnet和HTTPS。

{%}

图-Sprint Airave 2.0

在运行了漏洞后,我们的Airave设备就可以通过Telnet远程访问了,实际上就是给我们提供了设备上的一个Busybox shell。我们估计,基本上这些工具就足够我们通过蜂窝网络与这台吉普切诺通讯了。

让我们高兴的是,我们通过蜂窝网络成功地ping到了这辆吉普上,并且能与D-Bus进行通讯。也就是说,我们可以扩大攻击范围了,并通过Wi-Fi利用远程命令执行中存在的同一个漏洞,而且不需要针对原装车辆进行任何修改(不仅仅是启用了Wi-Fi的车辆)。

可以说这是一次巨大的胜利,但是我们意识到这个攻击范围还是很有限,我们还想要继续扩大范围,我们也能够做到。

蜂窝访问

我们选用飞蜂窝设备的原因是我们认为普通的Sprint信号塔会拦截两台设备间的通讯。通过使用我们自己的信号塔(飞蜂窝),我们能保证能够与吉普切诺上的Uconnect系统通讯。但是,实际上,Sprint并不会在他们的网络上拦截设备之间的这类流量。我们首先验证了,在一个信号塔内,一台Sprint设备(在我们的例子中是一个一次性手机)可以与另一台Sprint设备通讯,也就是直接与我们的吉普车通讯。这样攻击范围就可以扩大到一个信号塔的范围了。

更让我们震惊的是,其连接性并不局限于单个的信号塔。全国范围内的任何Sprint设备在任何地方都可以与其他位置的Sprint设备通讯。例如,下面就是克里斯在匹兹堡发起的一个会话,证明了他可以在圣路易斯访问这台吉普车的D-Bus端口。

$ telnet 21.28.103.144 6667

Trying 21.28.103.144...

Connected to 21.28.103.144.

Escape character is '^]'.

a

ERROR "Unknown command"

注意:连接主机必须要在Sprint网络上(例如,连接到Sprint手机的一台笔记本或连接到Uconnect Wi-Fi热点的笔记本),并且不能是互联网上的一台通用主机。