导语:卡巴斯基实验室的研究人员分析了汽车共享公司提供的十几个移动应用程序,发现了可以被利用来获取个人信息甚至偷车的严重安全漏洞。
汽车共享服务日益普及,导致一些专家预测大城市私人汽车拥有权将终结。统计数据支持了这一说法:例如,2017年在Moscow汽车共享车队、活跃用户数量以及出行次数几乎翻了一番。这是一个好消息,但信息安全专家已经开始提出一些相关的问题:这些服务的用户如何受到保护?他们在未经授权访问其帐户时会面临哪些潜在风险?
一、为什么汽车共享会吸引犯罪分子
最简单的一个原因是因为他们想花别人的钱开一辆好车。但是,像这样的操作重复多次的话就会有问题:一旦帐户的所有者发现被收取了从未租用车辆的费用,他们很可能会联系服务支持热线,服务提供商会检查旅行细节,最终可能向警方报案。这意味着攻击者第二次尝试它的时候可能会被追踪并被抓获。这是显而易见的,并使此特殊情况成为了劫持某人帐户的最不可能的原因。
然而出售被劫持的账户是一个可行的方法,没有驾驶执照的人或者被汽车共享服务的安全团队拒绝注册的人必然会有需求。实际上,市场上已经出现了这种类型的报价。
犯罪分子提供被劫持的账户……
并解释为什么你最好不要使用其他人的账户
此外,知道用户的汽车共享帐户的详细信息的人可以跟踪他们的所有行程并窃取汽车中留下的东西。当然,以别人的名义欺骗性租用的汽车可以驾驶到一些偏远的地方并且可以拆卸备件。
二、应用程序的安全性
因此,我们知道犯罪分子存在潜在的利益;现在让我们来看看汽车共享应用的开发者是否对此做出了应对。他们是否考虑过用户安全性并保护其软件免受未经授权的访问?我们测试了13个移动应用程序,结果不是很令人鼓舞。
我们首先检查应用程序阻止在具有root权限的Android设备上启动的能力,并评估应用程序代码的混淆程度。这样做有两个原因:
· 可以对绝大多数Android应用程序进行反编译,修改其代码(例如,将用户凭据发送到C&C),然后重新打包,使用新证书签名并再次上传到应用商店;
· root用户设备上的攻击者可以渗透关键应用程序的进程并获取对身份验证数据的访问权限。
另一个重要的安全元素是在使用服务时选择用户名和密码的能力。许多服务使用个人的电话号码作为用户名。这对于网络犯罪分子来说非常容易获取,因为用户经常忘记将其隐藏在社交媒体上,因而可以通过他们的标签和照片在社交媒体上识别汽车共享用户。
社交媒体帖子如何泄露信息的一个例子
然后,我们查看了应用程序如何使用证书以及网络犯罪分子是否有机会发起成功的MITM攻击。我们还确认了可以轻松使用伪授权窗口覆盖应用程序界面。
三、逆向工程和超级用户权限
在我们分析的所有应用中,只有一个能够对抗逆向工程。它在DexGuard的帮助下得到了保护,DexGuard是一种解决方案,开发人员还承诺受保护的软件不会在所有者获得root权限或已经修改(修补)的设备上启动。
安装包中的文件名显示使用了DexGuard
但是,虽然该应用程序可以很好的防止逆向工程,但没有阻止它在具有超级用户权限的Android设备上启动。当以这种方式进行测试时,应用程序会成功启动并完成服务器授权过程。攻击者可以获取位于受保护存储中的数据。但是,在这个特定的应用程序中,数据被非常可靠地加密。
用户的加密凭据
四、密码强度
测试的应用程序中有一半不允许用户创建自己的凭据; 相反,它们强制用户使用他们的电话号码和在短信中发送的PIN码。一方面,这意味着用户无法设置像'1234'这样的弱密码; 另一方面,它为攻击者提供了获取密码的机会(通过使用SS7漏洞拦截它,或重新发布手机的SIM卡)。我们使用自己的帐户来查看找出“密码”是容易的。
如果攻击者在社交媒体上找到某人的电话号码并尝试使用该号码登录该应用,则所有者将收到带有验证码的短信:
我们可以看到,验证码只有四位数,这意味着只需要10,000次尝试就可以猜测它,这不是一个很大的数字。 理想情况下,此类类码应至少为六位数字,并包含大写和小写字符以及数字。
另一种汽车共享服务向用户发送更强的密码; 然而,这也有一个缺点。它的代码是在一个模板后面创建的:它们在第一个和最后一个地方总是有数字,在中间有四个小写的拉丁字符:
这意味着有4500万种可能的组合可供搜索;如果数字的定位不受限制,组合的数量将增加到20亿。当然,45,000,000也是大量的,但应用程序没有超时限制,因此没有障碍来防止暴力破解。
现在,让我们回到第一个应用程序的PIN码。该应用程序为用户提供一分钟输入PIN码;如果时间不够,用户必须申请新代码。事实证明,所有组合需要超过两分钟的时间。我们写了一个小型的暴力破解程序,重现了部分app/server通信协议并启动了暴力破解。我们不得不承认我们无法暴力破解口令,这可能有两个原因。首先,互联网线路可能不足;其次,汽车共享运营商为PIN码设置了适当的超时限制,因此即使拥有出色的互联网连接,也不能在两分钟内破解。我们决定不再继续,只确认了该服务器仍然响应,并且在多次尝试一次发送10,000个请求后可以继续攻击。
在这样做的同时,我们故意在单个线程中从单个IP地址启动暴力破解,从而使服务器有机会检测并阻止攻击,联系潜在的受害者,并作为最后的手段,停用帐户。但这些都没有发生。我们决定将其留在那里,然后继续测试下一个应用程序。
我们在第二个应用程序上尝试了所有上述过程,唯一的例外是我们没有成功的暴力破解密码。我们决定,如果服务器允许检查1,000种组合,它可能还允许检查4500万种组合,所以这只是时间问题。
尝试1000次后,服务器继续响应
这是一个具有可预测结果的漫长过程。此应用程序还以加密格式在本地存储用户名和密码,但如果攻击者知道其格式,则暴力破解只需几分钟,大部分时间将用于生成密码/ MD5哈希对(密码为MD5哈希并写入设备上的文件中)。
五、中间人攻击
值得注意的是,应用程序使用HTTPS与控制中心之间进行数据通信,因此可能需要很长时间才能澄清通信协议。为了使“攻击”更快,我们采取了MITM攻击,在另一个全球安全漏洞的帮助下:所测试的应用程序都没有检查服务器的证书。我们能够获得整个会话的转储。
成功的MITM攻击的屏幕截图,获取HTTPS流量
六、防止overlaying攻击
当然,如果Android设备被感染,即攻击者可以截获授权SMS,则攻击者可以立即登录其他设备,从攻击者的角度来看,它更快更有效。如果存在复杂的密码,则攻击者可以通过显示虚假窗口来劫持应用程序的启动,该窗口包含用于登录详细信息的输入字段,其中包含正版应用程序的界面。我们分析的所有应用都无法对抗这类行为。如果操作系统版本足够低,则可以提升权限,在某些情况下可以提取所需的数据。
七、结果
这种况与我们在Connected Car applications中发现的情况非常相似。应用程序开发人员并不完全了解当前对移动平台的威胁,这既适用于设计阶段,也适用于创建基础架构。好的开始的第一步是扩展用于通知用户可疑活动的功能,当前只有一项服务向用户发送有关尝试从其他设备登录其帐户的通知。我们分析的大多数应用程序从安全角度来看设计很差,需要进行改进。而且,许多程序不仅彼此非常相似,而且实际上基于相同的代码。
俄罗斯汽车共享运营商可以从其他国家的同事那里学习学习。例如,短期汽车租赁市场中的主要参与者仅允许客户使用特殊卡访问汽车,这可能使服务不太方便,但显着提高了安全性。
八、给用户的建议
· 不要公开电话号码(电子邮件地址也是如此)
· 使用单独的银行卡进行在线支付,包括汽车共享(虚拟卡也可以使用),并且不要存太多的钱。
· 如果汽车共享服务发送包含帐户PIN码的短信,请与安全服务部门联系并断开银行卡与该帐户的连接。
· 不要使用root过的设备。
· 使用安全解决方案,保护您免受窃取短信的网络犯罪分子的侵害。
九、对汽车共享服务的建议
· 使用商业的加壳和混淆程序使逆向工程复杂化。要特别注意完整性控制,这样app就无法修改。
· 使用机制检测root设备上的操作。
· 允许用户创建自己的凭据; 确保所有密码都很强大。
· 通知用户有关从其他设备成功登录的信息。
· 切换到PUSH通知:恶意软件监控Android中的通知栏仍然很少见。
· 保护应用程序界面不被其他应用程序覆盖。
· 增加服务器证书检查。