如何检查您的 Android 应用程序是否由 MitM 更新?

信息安全 证书 哈希 中间人 安卓 谷歌
2021-08-12 23:07:44

昨天我在手机上浏览时,屏幕上出现了一个灰色的弹出窗口,就在我向上滑动的时候,我不小心点击了接受按钮。在它开启的几分之一秒内,我能够阅读类似的内容Are you sure you want to allow <large block of code filling my screen>

随即,Redphone 和 Signal 应用程序(这两个应用程序都用于安全通信)开始更新。

作为预防措施,我重新启动、卸载它们,然后从 Play 商店重新安装它们。过了一会儿,它们又自动“更新”了。这可能是一个巧合,但对我来说它闻起来很腥。

有什么方法可以验证 Android 上的应用程序的哈希值吗?我可以批准一些对手的证书吗?如果这很重要,我会运行 Cyanogenmod。

我是一名活动家,经常参加抗议活动,但我从不做任何令人兴奋的事情,所以就威胁模型而言,我没有理由相信有人会对我的谈话嗤之以鼻。所以这可能没什么,但我想安心。

如果已经回答了,我很抱歉。我搜索不成功,但可能是我不知道要使用的正确关键字。

3个回答

由于您的应用是从 Play 商店下载的,您只需访问其商店页面即可查看其最新更新日期:

  • 从 Play 商店应用程序:点击应用程序描述上的“阅读更多”,滚动到底部并查找“已更新”
  • 从浏览器:在底部查找“附加信息”,有“更新”日期。

对于您的情况,RedPhoneSignal都是由同一开发人员开发的,并于 11 月 2 日更新(截至目前)。我认为这真的是一个巧合,因为我观察到 Play Store 的更新时间是任意随机的。

如果您仍然不确定,可以通过在Virus Total上提交文件来检查 APK 文件的哈希值。您需要 root 访问权限才能找到 APK(路径看起来像/data/app/<package name>/base.apk。包名可以在 Play Store 链接上找到)。此外,您需要向开发人员询问正确的哈希值以进行确认。

附加说明:即使是 MitM 的情况,Android 应用程序也只能在使用相同的证书对应用程序进行签名的情况下进行更新。失败将导致更新失败(错误消息“未安装应用程序。已安装具有冲突签名的同名现有软件包。 ”,或INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES在 ADB 上)。这不会发生,除非攻击者是开发人员(可能,但对于信誉良好的开发人员来说不太可能),或者攻击者拥有证书(不太可能,并且对开发人员来说是一个关键问题)。

Android 要求应用更新使用与原始应用相同的密钥进行签名。因此,除非开发人员自己受到威胁,否则 MITM 将无法更新现有应用程序。请注意,此过程与 SSL 证书完全无关。应用签名证书是自签名的,不依赖证书颁发机构的信任。

听起来您刚刚从 Play 商店获得了一个正常的合法应用程序。

唯一可以确定的方法是在手机处于“干净”状态时获取手机的取证副本,然后将其与您可能归类为可疑状态的情况进行比较。如果您觉得它已被典当,那么我建议您咨询取证专家。