导语:科技日新月异,手机越来越给力。仅凭一部手机即可完全控制汽车,包括启动汽车、车门解锁、车窗升降、天窗开启等。

1487324976872765.jpg

科技日新月异,手机越来越给力。仅凭一部手机即可完全控制汽车,包括启动汽车、车门解锁、车窗升降、天窗开启等,除此之外,在应用程序上还能查看故障预报、车辆状态分析、油耗里程统计、驾驶行为分析,电池电压电量,可以获得汽车的GPS坐标,跟踪其路线并打开其他辅助设备。

近日,卡巴斯基的两个安全研究人员对来自7家软件开发公司所开发的9个不同品牌的互联网汽车的Android应用进行了安全测试,结果令人大跌眼镜,有些连最基本的安全防御都没有做到,更令人担心的是,有几个互联网汽车品牌的应用已经被下载了几十万次甚至将近一百万了。

研究人员从以下5个方面测试了这7个应用程序的安全性:

1.是否有潜在的被黑客利用的危险功能,对这个方面的测试意味着黑客能否对汽车进行真正有威胁的攻击;

2.应用程序的开发人员是否进行过代码混淆和逆向工程的复杂化。如果没有,那么攻击者就会很容易读取应用代码,找到它的漏洞,并利用它们来控制汽车;

3. 是否对手机上应用程序的root权限(包括在已启用权限的情况下随后取消的安装)进行过检查。毕竟,如果恶意软件感染了手机的root权限,那么恶意软件就能够实施任何攻击了。对于这方面的测试,重要的是要确定开发人员是否将用户凭据作为纯文本保存在手机上了;

4.测试是否是向车主显示的应用程序的GUI(覆盖保护)。黑客可以通过Android监视GUI向用户显示哪个应用,并且恶意软件还可以通过向用户显示具有相同GUI的钓鱼窗口来窃取用户凭证;

5.是否对应用程序的完整性提供了检查,比如否对其代码中更改进行过验证。假如黑客把恶意代码注入到车主的应用程序,然后发布到应用商店,然后诱骗车主对其应用程序进行更新下载,那么黑客就会趁机而入。

不幸的是,所测试的这7个应用程序都存在其中一个或多个方面的漏洞。

攻击检测所使用的技术

卡巴斯基研究人员介绍了他们测试Android应用程序所利用的三种技术,这三种检测技术除了1个应用程序不适用之外,其他8个应用程序都可以,另外在做攻击模型测试时最终都是为了获得车主存储在手机上的包括登录用户名和密码等连接凭证。

第一种:通过使用在设备操作系统中获得完全权限的漏洞,然后侵入到受害者的电话中,黑客就可以访问到这些存储在手机上的详细登录信息并将其发送到他们后台的命令和控制服务器(command-and-control server)。
第二种:黑客可以诱骗车主下载汽车应用程序的“升级版本”,其实就是包含恶意代码的冒牌应用,趁机获取用户的详细登录信息。
第三种:通过其他方式感染车主的手机,之后再用恶意软件执行覆盖攻击,即当汽车应用程序启动时,恶意软件会检测到它已经开始并伪造程序接口窃取车主的登录凭据。黑客甚至可以用多个覆盖加载恶意软件,以便它可以欺骗受害者加载的任何连接的汽车应用程序。

现将,测试结果汇总如下,此外,测试员还审查了每个应用程序的安全功能。

360反馈意见截图163608089811886.png

应用1

应用1的整个汽车应用程序注册过程可以归结为简单地输入用户登录密码以及汽车的VIN。之后,应用程序显示一个PIN,然后必须使用传统方法在车内输入PIN,以便完成将智能手机链接到汽车的过程。这意味着只知道VIN不足以对汽车进行解锁。

该应用程序不会检查手机是否已获得root权限,就将车主的用户名以及汽车的VIN在accounts.xml文件中作为纯文本存储。如果黑客在连接汽车的智能手机上具有超级用户访问权限,则窃取数据将非常容易。

应用程序1可以被轻松地反编译,并且代码可以被阅读和理解。除此之外,它不会检测自己的GUI已被代替,这意味着用户名和密码可以通过钓鱼的方式被获得,但从理论上来讲应用程序1的代码只有50行,如果进行过基本的防护,应该足以检查当前运行的应用程序,并启动具有类似GUI防护检测。

为了检查完整性验证,我们修改了loginWithCredentials方法。

cars_research_en_2.png

在这种情况下,用户名和密码将清楚地显示在智能手机的屏幕上,并向攻击者的服务器发送登陆凭证。

没有完整性验证将会让任何感兴趣的人采取攻击行动。另外,签名验证也非常缺乏。毫无疑问,这样的攻击需要攻击者做出一些努力,用户必须被诱骗下载修改版本的应用程序。但是,庆幸的是,该应用程序采取了SSL证书,能够防止中间人攻击。

应用2

该应用程序提供了保存用户凭据,并同时建议加密整个设备,但经过测试,存在与在应用程序1发现的相同问题:用户名和密码以纯文本形式存储在prefs文件中。xml文件(问号表示随机由应用程序生成的字符)。

cars_research_en_3.png

VIN存储在下一个文件中。

cars_research_4.png

经过详细的检测。开发人员甚至没有进行应用程序代码的完整性验证,并且,由于某种原因,他们也忘记了代码混淆。因此,研究人员很容易修改LoginActivity代码。

cars_research_en_5.png

因此,应用程序保留了自己的功能。但是,在注册过程中输入的用户名和密码在登录尝试后立即显示在屏幕上。

应用3

可以通过此应用,对连接的汽车进行功能控制,比如可启动发动机和解锁车门。由该汽车经销商安装的每个功能模块都有一个带有访问代码的贴纸,交给车主。这就是为什么不可能将汽车链接到其他凭证,即使它的VIN是已知的。

但这并不代表该程序就无懈可击,首先,应用程序是微小的,因为它的APK大小为180千字节;其次,该应用程序会将其调试数据记录保存在SD卡的文件上。

cars_research_en_6.png

1487406397933256.png

在LoginActivity开始时记录日志,只有当以下这个代码出现在应用程序:android:debuggable =“true”时,才能改变日志文件的位置,但没有什么可以阻止测试员将它插入到应用程序。为此,研究人员使用了Apktool实用程序。启动已编辑的应用程序并尝试登录后,设备的SD卡将创建一个带有TXT文件的marcsApp文件夹,这时,帐户的用户名和密码已输出到文件中。

1487406415926323.png

当然,说服受害者删除原来的应用程序,并安装一个伪装的程序并不是那么容易。然而,利用更新下载的方法可以实现这个步骤,经验上,使用社会工程的方法比较好办到,比如给用户发送一个虚假短信提醒车主进行软件更新。

应用4

该应用程序允许车主将现有的VIN绑定到任何凭据,因此,恶意攻击者如果获得系统的用户名和密码,则将解锁车门。

令人遗憾的是,该应用程序存储了用户名以及大量的其他相关的数据,如汽车的制造信息,VIN和汽车车牌号,而且以明文的形式将这些都存储于MyCachingStrategy.xml文件中。

应用5

为了将汽车连接到安装了应用程序的智能手机,需要知道显示在汽车仪表板计算机上的PIN。这意味着,和其他类似的应用程序存在着相同的问题。

应用6

这是一个由俄罗斯开发人员制作的应用程序,在这个应用程序中,可以直接利用车主的电话号码进行汽车授权。这种方法对任何汽车的拥有者来说都具有相当打的风险,也就是说,发起攻击,只需执行一个Android API函数即可获得系统的用户名。

应用7

在应用7中,必须注意,用户名和密码以纯文本形式存储在credentials.xml文件中。

cars_research_en_9.png

如果车主的智能手机被感染了具有超级用户权限的木马,则没有什么会阻止该文件的轻松盗取。

不过,研究人员拒绝向大众披露他们所测试的那7个应用程序,因为这可能会带来更大的不安全因素。但他们认为通过他门的分析,互联网汽车行业应该意识到对连接汽车的手机应该采取更加安全的保护措施。

车主所承担的安全风险

理论上,偷窃凭证后,恶意者将能够获得对汽车的控制,但这并不意味着犯罪分子能够简单地驾驶它。理论上,还需要汽车的一把钥匙,才能打开车门。因此,在控制了汽车内部系统之后,汽车盗贼会使用编程设备将新钥匙写入汽车的车载系统。现在,让我们回想一下,几乎所有测试的应用程序都允许解锁车门,停用汽车的报警系统。因此,恶意者根本就不要钥匙,就可以打开车门,偷取汽车及车上的所有东西。

此外,风险不仅限于汽车被盗,对汽车系统的修改还可能导致交通事故。

卡巴斯基研究员Viktor Chebyshev说:

互联网汽车应用的开发者也许并没有意识到如果他们所开发的应用被攻击之后会产生什么样的连带后果,黑客可以把用户的互联网汽车应用作为攻击口,然后攻击用户的网络银行等非常有价值的信息,甚至可以关闭汽车的防盗装置,偷窃车辆,比如特斯拉目前只用智能手机的应用程序来控制汽车,所以如何保存好相连的手机就非常关键了,如果丢失那后果不堪设想。

研究人员本次的分析都集中在应用程序的本身,也就是说研究人员只对和互联网汽车直接连接的应用进行攻击模型分析。不过,目前他们还没有发现任何大规模针对Android恶意软件的攻击,不过,经过对应用程序代码的分析,他们已经发现在许多黑客论坛出现了对这些代码如何进行攻击的交易信息。如下图所示,

Car-Hacking_Screengrab-1-482x245.jpg

在这些论坛的帖子里面,已经有购买和销售连接汽车应用的程序凭证,包括不同的车型的用户名和密码,以及PIN号码和车辆识别号码(VIN),大概一个数百美元。 

Car-Hacking-Screengrab-2-289x371.jpg

研究人员说,他们已经向几家受影响的汽车公司报告他们发现的安全问题,并希望他们对此予以重视。但与此同时,他们也注意到,这些软件中的一些安全问题其实并不是什么安全漏洞而是缺乏基本的安全验证程序,比如没有对手机上的登录凭据进行加密或散列存储,没有添加双因素身份验证或指纹身份验证,或对新创建的应用程序执行完整性检查,以查看其是否已更改为包含恶意代码等。

源链接

Hacking more

...