如何保护移动应用免受用户侵害?

信息安全 攻击 移动应用
2021-08-25 11:39:50

我创建了一个移动应用程序来监控加速度计活动,并在此基础上在观察到特定模式时奖励用户。我如何保护应用程序免受可能试图破解应用程序以报告我正在寻找的模式以获得奖励的用户本身的攻击?

另一件事是,奖励会在比赛结束时在实体机构给予获胜者。在给予奖励之前,代理是否有可能检查用户是否操纵了应用程序,例如通过观察或比较设备中的某些东西?

4个回答

你不能。

一旦用户拥有移动设备和您的应用程序,没有什么能阻止他反编译您的应用程序,了解它的工作原理和发送的数据,并复制它。他们甚至可以使用一些可以旋转手机的装置作弊,让您的应用程序相信它是一个人在使用它。

他们甚至不需要反编译您的应用程序;他们只需要放置一个代理来拦截请求并理解协议。

从评论:

如果您控制硬件,则可以保护应用程序:

不完全的。苹果控制从处理器到 iPhone 的 UI,越狱是一回事。即使他们控制着它的方方面面,总有一天有人会越狱并植根 iPhone,然后在上面加载你的应用程序。

证书透明度、密钥锁定

如果设备已植根,则无用。校验和、数字签名和完整性验证仅在操作系统未受到破坏的情况下才有效。如果用户拥有操作系统和设备,他可以禁用操作系统检查,可以编辑应用程序的二进制文件并更改验证签名或校验和的指令。

虚拟机,代码混淆

它们使分析代码变得更加困难,但代码必须由处理器执行。如果反汇编程序无法提供帮助,调试器会提供帮助。用户可以在代码的关键部分设置断点,及时到达检查证书、校验和或任何验证检查的函数,并且可以更改任何他想要的内容。

所以尝试没有意义?

不可以。您必须权衡成本和收益。只是不要指望防守是不可战胜的,因为每一个防守都可以被击败。你只能让攻击者放弃对你的应用程序投入大量资源并获得一点好处。

虽然我同意其他答案,但我发现那里忽略了一些务实的事情。

全面披露:我在一家为移动应用程序构建混淆/保护软件的公司工作。

对于在攻击者控制的设备上运行的应用程序,不可能提供完整、牢不可破的保护。但是,存在旨在提高标准并降低/不值得一个人进行攻击的软件。

通常,这些解决方案涵盖两个方面

静电保护

这通常包括一堆混淆技术,旨在使想要通过使用 IDA Pro、Ghidra 和 Hopper 等工具查看二进制文件来分析移动应用程序的攻击者变得困难。

这里的技术是控制流混淆、语义混淆(类、方法、......名称)、算术混淆、字符串加密、类加密......

这些使得“窥视”二进制文件并弄清楚发生了什么变得非常困难,但是当攻击者在设备本身上运行时查看应用程序时,并不能提供很多保护。

动态保护

这些保护技术旨在保护应用程序在设备上运行时免受分析或修改。这里流行的工具是调试器(lldb,gdb,...)和挂钩框架(Frida,Cydia Substrate,...)。

这里的技术将尝试阻止/检测这些工具的使用,检测被篡改的执行环境(越狱/根设备,模拟器),对应用程序的修改等等。

结论

虽然确保您的应用程序是使用定义明确的安全实践构建的至关重要(混淆/保护软件在这里对您没有帮助!),但存在的工具可以作为围绕您的应用程序的一堆外壳,它们共同构成破解您的应用程序要困难得多,而且希望不值得。

虽然我通常同意ThoriumBR 的回答,但您可以做一些事情。

例如,您可以分析用户的行为是否存在差异,例如:

  1. 明显重放数据

    例如,用户可以以期望的方式行动,然后捕获发送的数据并在稍后再次重放数据。这可以很容易地确定,因为嘈杂的传感器数据恰好是完全相同的,而这在实际用例中永远不会发生。

  2. 明显伪造数据

    例如,用户可以报告虚假的传感器数据。这些数据可能不够随机。例如,48,7849165°N;27,4159014°W伪造的数据点可以是,而不是报告 的位置48,78°N;27,42°W

  3. 类似机器的图案

    例如,用户可以编写一个程序,在一天中的同一时间自动发送嘈杂且“看起来正确”的数据。这似乎很可疑,因为基本上没有用户会如此精确。

当然,您不能将这些示例视为详尽的列表。这里只是作为您可以检测到哪种模式的示例。训练你的系统来检测异常在实践中困难得多,而且可能比仅仅忍受有些人会作弊的事实更难实施。


由于问题是在发布答案后编辑的:您可以对获胜者的数据集进行更彻底的分析,以查看是否存在违规行为。这样,您只需要对对您作为公司真正重要的数据集进行分析。

正如 Falco 在评论中提到的那样,添加诸如“将对您的提交内容进行分析以防止作弊”之类的免责声明可能会阻止某些人发送虚假提交内容。

这有点可能。

只需将记录的数据发送到进行模式检查的远程服务器。确保在观察正确模式和获得奖励之间存在延迟。很难准确地确定匹配的模式。

如果您将其与检测重放活动并禁止违规者的启发式方法相结合,您很有可能可以维持这种模型。