如何保护颤动APP免受逆向工程的影响 [英] How to protect Flutter app from reverse engineering

查看:40
本文介绍了如何保护颤动APP免受逆向工程的影响的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用Ffltter开发支付应用程序,是否有办法保护我的应用程序API和令牌,或者使应用程序具有反向工程证明。

推荐答案

我正在尝试使用Ffltter开发支付应用程序,是否有办法保护我的应用程序API和令牌,或者使应用程序具有反向工程证明。

如果您正在寻找防弹解决方案,即它们在防止对移动应用程序二进制文件进行反向工程以从中提取令牌或机密方面是100%有效的,那么我必须告诉您,不幸的是,这是不可能实现的,但您可以使其变得更加困难……它的难易程度取决于您愿意为您的用例投入的努力和资源或法律要求的努力和资源。

另一方面,保护移动API不被其他人访问,而不是您的移动应用程序的正版实例,有可能实现非常高的可信度。

从移动应用程序提取API密钥有多容易?

反向工程移动应用程序二进制文件以从中提取API令牌非常容易,因为有太多的开源工具,正如我在我的文章How to Extract an API key from a Mobile App with Static Binary Analysis

中演示的那样:

可用于逆向工程的开源工具范围很广,在本文中我们确实不能触及这个主题的皮毛,而是将重点放在使用Mobile Security Framework(MobSF)来演示如何对我们的移动应用程序的APK进行逆向工程。MobSF是一组开源工具,它们在一个漂亮的仪表板中显示它们的结果,但是可以单独使用MobSF和其他地方幕后使用的相同工具来实现相同的结果。

或者,中间人(MITM)攻击可以用来提取相同的API密钥,为此,我们还有开源工具,如我在我的文章Steal that Api Key with a Man in the Middle Attack中演示的Mitmproxy:

为了帮助演示如何窃取API密钥,我在Github中构建并发布了Currency Converter DemoAndroid版应用程序,它使用的技术与之前的Android Hide Secrets应用程序hide the API key相同。

因此,在本文中,您将学习如何设置和运行MITM攻击来拦截您控制的移动设备中的https流量,以便您可以窃取API密钥。最后,您将从高层次了解如何减轻MITM攻击。

防范逆向工程

反向工程是一个庞大的主题,您可以通过阅读OWASP移动安全测试指南(MSTG)的Github存储库中的标记文件0x04c-Tampering-and-Reverse-Engineering.md来了解反向工程中使用的技术的更多信息。

您不能让移动应用100%进行反向工程验证,但您可以使用很多硬化代码技术来增加难度和/或使用一些运行时自我保护机制,也就是RASP

运行时应用程序自我保护(RASP)是一种安全技术,它使用运行时检测工具通过利用正在运行的软件内部的信息来检测和挡路计算机攻击。

据说RASP技术通过监视其输入并阻止可能允许攻击的输入,同时保护运行时环境不受不必要的更改和篡改,从而提高了软件的安全性。

您可以在OWASP MSTG存储库中阅读一些可能的反逆转防御措施:

因此,这些都是在客户端做出决策的方法,因此很容易被使用检测框架绕过,如Frida

将您自己的脚本注入到黑盒进程中。挂钩任何函数,监视加密API或跟踪私有应用程序代码,不需要源代码。编辑,点击保存,立即看到结果。全部不需要编译步骤或程序重新启动。

我是在告诉你使用它们毫无价值吗?不,相反,你应该增加你能负担得起的尽可能多的防御层,就像过去几个世纪的城堡为抵御敌人突破外层防御层所做的那样。

访问API服务器的WHO和What之间的区别

在我深入讨论如何保护您的API服务器之前,我想首先澄清我在任何资历的开发人员中通常都会发现的一个误解,即什么访问API服务器之间的区别。

我写了一系列关于API和移动安全的文章,在Why Does Your Mobile App Need An API Key?这篇文章中,您可以详细阅读访问您的API服务器和什么访问您的API服务器之间的区别,但我将在这里摘录其中的主要内容:

内容是向API服务器发出请求的内容。它真的是移动应用程序的正版吗?还是机器人、自动脚本或攻击者使用Postman之类的工具手动查看您的API服务器?

用户是移动应用的用户,我们可以通过多种方式(如使用OpenID Connect或OAuth2 Flow)对其进行身份验证、授权和标识。

因此,请考虑作为您的API服务器将能够对数据进行身份验证和授权的用户,并考虑作为代表用户发出该请求的软件。

将API服务器锁定到移动应用

因此,任何在客户端运行并需要一些密码才能访问API服务器的东西都可能被以不同的方式滥用,您可以在有关移动API安全技术的this series文章中了解更多信息。本文将介绍如何使用API密钥、用户访问令牌、HMAC和TLS固定来保护API,以及如何绕过它们。

若要解决是访问您的移动应用程序的问题,您需要使用我在上面提到的有关移动API安全技术的系列文章中提到的一个或所有解决方案,并承认这些解决方案只能使对您的API服务器的未经授权的访问更难绕过,但并非不可能。

可以通过使用移动应用程序认证解决方案来采用更好的方法,该解决方案将使API服务器能够非常自信地知道只响应来自真正的移动应用程序的请求。我推荐您阅读this answer我给出的问题如何保护睡觉的移动应用接口?,这里有更详细的内容。

是否要走额外一英里?

在回答任何安全问题时,我总是喜欢引用OWASP基金会的优秀工作。

接口

OWASP API Security Top 10

OWASP API安全项目旨在通过强调不安全API中的潜在风险,并说明如何减轻这些风险,为软件开发人员和安全评估人员提供价值。为了实现这一目标,OWASP API安全项目将创建并维护十大API安全风险文档,以及在创建或评估API时用于最佳实践的文档门户。

适用于移动应用

OWASP Mobile Security Project - Top 10 risks

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

OWASP - Mobile Security Testing Guide

移动安全测试指南(MSTG)是针对移动应用安全开发、测试和反向工程的综合手册。

这篇关于如何保护颤动APP免受逆向工程的影响的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆