首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >避免禁用固定Android的证书

避免禁用固定Android的证书
EN

Stack Overflow用户
提问于 2019-02-06 22:41:53
回答 2查看 1.4K关注 0票数 1

我正在开发一个使用证书钉扎(类似于)的Android应用程序。

然而,我遇到了一些动态的工具库,比如弗里达,或者更糟的是,我反对,它们可以绕过这个安全措施。

我知道安全必须在服务器端实现,但是,我希望继续在API之外窥探。此外,我还理解Java可执行文件易于分解和分析。

我怎样才能让攻击者更难处理这个过程,也就是做一些基本的命令,比如objection的命令。

android sslpinning disable

失败并使我的应用程序变硬?我已经看到,根据资产的名称,这个过程也会崩溃。

有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-09 12:48:26

几个harding框架可能会使Frida和类似工具更难附加和操作应用程序进程。然而,只要有足够的时间、动力和/或金钱,你甚至可以打破这些框架。

然而,这通常不是“使用硬化框架还是不使用”的问题,而是“你愿意支付多少钱来获得这一点额外的保护?”

据我所知,没有免费甚至廉价的强化框架(如果我错了,请纠正我,并提供与那些具有良好保护的免费/廉价解决方案的链接),因此,这只是一个你想要多少保护和愿意付出多少代价的问题。

注意: Proguard和R8不是强化框架!他们只是混淆了一点代码,但特别是当涉及到证书钉扎和禁用这个通过Frida,他们不提供任何保护!

票数 1
EN

Stack Overflow用户

发布于 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移动安全项目-十大风险

OWASP移动安全项目是一种集中资源,旨在为开发人员和安全团队提供构建和维护安全移动应用程序所需的资源。通过该项目,我们的目标是对移动安全风险进行分类,并提供开发控制,以减少其影响或被利用的可能性。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54563671

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档