【问题标题】:Prevent android app reverse engineering on Airwatch managed devices防止在 Airwatch 托管设备上进行 android 应用逆向工程
【发布时间】:2023-04-05 16:03:02
【问题描述】:

从 Airwatch 功能和文档中,他们提到应用程序是容器化的。因此,所有应用内容都经过安全加密,不易暴露。

对于已获得根目录的设备,Airwatch 可以检测到此类设备并远程擦除公司数据。

我想检查 Airwatch 是否可以保证应用程序代码不能被逆向工程,以从代码库中提取敏感数据,如 API 密钥、加密密钥等。

【问题讨论】:

  • 很高兴见到你库马尔,久违了。对其他人来说,对于偏离主题的评论感到抱歉,但是 * 是开发人员网络和讨论的平台!
  • 没有 100% 安全保证!,熟练的程序员可以逆向工程。你仍然可以使用 proguard 来混淆你的代码,但同样,没有 100% 安全。

标签: android mdm android-security airwatch


【解决方案1】:

我想检查 Airwatch 是否可以保证应用程序代码不能被逆向工程,以从代码库中提取敏感数据,如 API 密钥、加密密钥等。

虽然我不能就 Airwatch 向您提供建议,因为我不熟悉它,但我可以提醒您,如果您将此类敏感信息存储在您的移动应用程序中,那么您已经处于危险之中,因为逆向工程秘密并不像我在文章How to Extract an API key from a Mobile App by Static Binary analysis中展示的那么难:

总结

使用 MobSF 对移动应用程序的 APK 进行逆向工程,可以让我们快速提取 API 密钥,并为我们提供大量信息,我们可以使用这些信息进行进一步分析,从而揭示移动应用程序和 API 中的更多攻击向量服务器。在此信息中或可在 smali 和 java 格式下载的反编译源代码中找到访问第三方服务的秘密并不少见。

现在您可能会质疑自己将如何保护 API 密钥,为此我建议您从阅读有关移动 API 安全技术的系列文章开始。

这里的教训是,在移动应用程序代码中发送您的 API 密钥或任何其他秘密就像锁上您家的门,但把钥匙放在垫子下面!

甚至在这个other article 中使用中间人攻击:

结论

虽然我们可以使用 JNI/NDK 等高级技术来隐藏移动应用代码中的 API 密钥,但它不会阻止某人执行中间人攻击以窃取 API 密钥。事实上,中间人攻击很容易,甚至可以由非开发人员实现。

我们重点介绍了一些很好的资源,这些资源将向您展示保护移动 API 的其他技术,例如证书固定,尽管实施和维护可能具有挑战性。我们还注意到,证书固定本身是不够的,因为它可以被绕过,因此需要使用其他技术来保证没有人可以窃取您的 API 密钥,并且,如果您完成了我推荐的深入研究,您就会知道现在,在移动 API 的上下文中,可以保护 API 密钥不被中间人攻击窃取。因此,如果您还没有这样做,请阅读我链接到的关于减轻中间人攻击部分的文章。

此外,更熟练的开发人员可以在运行时挂钩一些自省框架,例如 Frida 和 xPosed,以拦截和修改任何正在运行的代码的行为。因此,即使他们无法解密您的数据,他们也会在您在应用程序中解密后拦截内容。为了能够做到这一点,他们只需要知道要挂钩到您的代码,并且他们通过在移动安全框架或 APKTool 等工具的帮助下对您的移动应用程序的代码进行反编译和逆向工程来实现这一点,但开源社区中存在更多工具。

Mobile Security Framework

Mobile Security Framework 是一种自动化的一体化移动应用程序 (Android/iOS/Windows) 渗透测试框架,能够执行静态分析、动态分析、恶意软件分析和 Web API 测试。

Frida

将您自己的脚本注入黑盒进程。挂钩任何功能、监视加密 API 或跟踪私有应用程序代码,无需源代码。编辑,点击保存,立即查看结果。所有这些都无需编译步骤或程序重新启动。

xPosed

Xposed 是一个模块框架,可以在不触及任何 APK 的情况下改变系统和应用的行为。这很好,因为这意味着模块可以在不同版本甚至 ROM 上工作而无需任何更改(只要原始代码没有太大更改)。它也很容易撤消。

APKTool

一种用于逆向工程第 3 方、封闭、二进制 Android 应用程序的工具。它可以将资源解码为几乎原始的形式,并在进行一些修改后重建它们。由于文件结构和一些重复性任务(如构建 apk 等)的自动化等项目,它还使使用应用程序变得更容易。

【讨论】:

  • 感谢您的回复,但想了解 AirWatch 的具体情况。
  • 如果他们加密二进制文件,他们将需要解密它才能让应用程序能够运行,因此密钥将在设备上,并由熟练的攻击者使用 Frida 或 xPosed 等工具获取.所以最终你可以让它变得更难,但并非不可能。所以我的建议是考虑应用程序中的任何敏感信息或秘密属于公共领域。
最近更新 更多