发布于 2019-02-09 12:48:26
几个harding框架可能会使Frida和类似工具更难附加和操作应用程序进程。然而,只要有足够的时间、动力和/或金钱,你甚至可以打破这些框架。
然而,这通常不是“使用硬化框架还是不使用”的问题,而是“你愿意支付多少钱来获得这一点额外的保护?”
据我所知,没有免费甚至廉价的强化框架(如果我错了,请纠正我,并提供与那些具有良好保护的免费/廉价解决方案的链接),因此,这只是一个你想要多少保护和愿意付出多少代价的问题。
注意: Proguard和R8不是强化框架!他们只是混淆了一点代码,但特别是当涉及到证书钉扎和禁用这个通过Frida,他们不提供任何保护!
发布于 2019-05-10 16:08:44
可能解决办法
如何使攻击者更难处理此过程?
解决您的问题的一个可能的解决方案是使用移动应用程序认证解决方案,以保证您的移动应用程序在运行时不会受到MitM攻击,不会被篡改,不会在根设备中运行,不会附加到调试器上,也不会出现任何插装框架。这是通过在后台运行SDK来实现的,它将与运行在云中的服务进行通信,以验证移动应用程序的完整性和设备正在运行。移动应用程序中的SDK不会根据移动应用程序提供的测量结果对应用程序或移动设备的完整性做出任何决定,这是在云服务中完成的。
因此,在成功地证明移动应用程序的完整性时,云服务发布了一个短时间的JWT令牌,并使用一个只有API服务器和云中的服务才知道的秘密进行签名。如果移动应用程序验证失败,则使用API服务器不知道的秘密对JWT令牌进行签名。
现在,应用程序必须与请求头中的每个API调用JWT令牌一起发送。这将允许API服务器只在能够验证JWT令牌中的签名和过期时间并在验证失败时拒绝请求时才服务请求。
一旦移动应用程序不知道移动应用程序使用的秘密,就不可能在运行时对其进行反向工程,即使应用程序被篡改、在根设备中运行或通过中间人攻击的目标连接进行通信。
因此,该解决方案工作在一个积极的检测模型,没有假阳性,从而不妨碍合法的用户,同时让坏人在海湾。
有什么想法吗?
您可以尝试推出自己的解决方案,也可以寻找现有的Mobile解决方案,比如阿普洛夫(我在这里工作),该解决方案为多个平台提供SDK,包括iOS、安卓、Reactive原住民和其他平台。集成还需要在API服务器代码中进行少量检查,以验证云服务发出的JWT令牌。为了使API服务器能够决定要服务什么请求和拒绝哪些请求,这个检查是必要的。
摘要
最后,为保护您的API服务器和移动应用程序而使用的解决方案必须根据您想要保护的内容的价值和此类数据的法律要求来选择,就像欧洲的GDPR法规一样。
走多一里路
你似乎对移动应用程序安全感兴趣,我想推荐你:
OWASP移动安全项目是一种集中资源,旨在为开发人员和安全团队提供构建和维护安全移动应用程序所需的资源。通过该项目,我们的目标是对移动安全风险进行分类,并提供开发控制,以减少其影响或被利用的可能性。
https://stackoverflow.com/questions/54563671
复制相似问题