扩大Android攻击面:React Native Android应用程序分析

栏目: IT技术 · 发布时间: 4年前

内容简介:React Native是一款移动端应用程序框架,由于该框架允许开发人员使用React和原生平台功能,目前有很多Android和iOS应用程序都是基于该框架进行开发的。在进行常规的侦察时,我们通常会将注意力放在尽可能地扩大攻击面上。因此我们需要深入研究各种针对移动平台开发的应用程序,以便找到更多的API或其他有意思的东西,比如说API密钥之类的敏感信息。在这篇文章中,我们将介绍如何根据APK文件来获取到React Native JavaScript,并根据这些信息分析出API以及其他敏感信息。

React Native是一款移动端应用程序框架,由于该框架允许开发人员使用React和原生平台功能,目前有很多Android和iOS应用程序都是基于该框架进行开发的。

在进行常规的侦察时,我们通常会将注意力放在尽可能地扩大攻击面上。因此我们需要深入研究各种针对移动平台开发的应用程序,以便找到更多的API或其他有意思的东西,比如说API密钥之类的敏感信息。

在这篇文章中,我们将介绍如何根据APK文件来获取到React Native JavaScript,并根据这些信息分析出API以及其他敏感信息。

一般来说,在对Android应用程序进行逆向分析时,我们需要使用 dex2jar 来对APK文件进行反编译,然后使用 JD-GUI 来进行下一步分析。那么在处理React Native应用程序时,如果应用程序拥有原生代码的话,就非常方便了,但是在大多数情况下,应用程序的核心逻辑都是用React JavaScript实现的,而这部分代码可以在无需dex2jar的情况下获取到。

请注意:dex2jar的工作原理是将 Java 字节码转换为Dalvik字节码。因此,我们无法保证所有的输出都是有效的,此时就需要使用Smali工具来分析Dalvik字节码了。

从React Native APK获取JavaSript

在这个例子中,我们将从下面这个React Native应用程序中提取出JavaScript代码:

com.react_native_examples:【 点我获取

下载了上面这个APK文件之后,使用下列命令将其提取至一个新的文件夹中:

unzip React\ Native\ Examples_v1.0_apkpure.com.apk -d ReactNative

切换到新创建的“ReactNative”目录,然后找到“assets”目录。在这个文件夹中,找到一个名为“index.android.bundle”的文件,这个文件将包含所有的React JavaScript代码。

映射文件

如果你能找到一个名叫“index.android.bundle.map”的文件,你就可以直接分析源代码了。map文件中包含了源码映射关系,可以帮助我们映射出代码中的识别符。如果你要逆向分析的React Native应用程序的assets文件夹中拥有这个映射文件,你就可以在该目录中创建一个名为“index.html”的文件来利用这个映射文件了,“index.html”文件的内容如下:

<script src="index.android.bundle"></script>

保存文件,然后在Google Chrome中打开。接下来,打开开发者 工具 栏,点击“Source”标签,你就可以查看到映射出的JavaScript文件了:

扩大Android攻击面:React Native Android应用程序分析

敏感凭证与节点

React Native应用程序的其中一种模式是它需要使用一种第三方数据库,例如Firebase。在我们之前的研究过程中,发现了很多没有正确使用Firebase认证模型的应用程序,其中就涉及到API密钥的不正确使用。

比如说,Donald Daters应用程序就会受到这种攻击向量的威胁,具体可以参考这篇【 文章 】。

为了从index.android.bundle中提取Firebase API密钥,我们需要提取出下列字符串:

FIREBASE_API_KEY
FIREBASE_AUTH_DOMAIN
FIREBASE_DB_URL
FIREBASE_BUCKET
apiKey

例子如下:

❯ grep -rnis 'apiKey' index.android.bundle
... omitted for brevity ...

initializeApp({apiKey:"AIzaSyDokhX9fzFlJMfXjwbiiG-2fGDhi4kLPFI",
authDomain:"react-native-examples-bcc4d.firebaseapp.com",
databaseURL:"https://react-native-examples-bcc4d.firebaseio.com",
projectId:"react-native-examples-bcc4d",
storageBucket:"",
messagingSenderId:"928497342409"});

... omitted for brevity ...

除了查找Firebase凭证之外,我们还可以利用index.android.bundle来分析API节点。在我们需要逆向分析的React Native应用程序中,我们通过在Chrome中浏览提取到的JavaScript文件,我们能够找到大量的API节点:

扩大Android攻击面:React Native Android应用程序分析

Firebase接口分析

下面的 Python 脚本可以用来跟Firebase数据库进行交互,在使用该脚本之前,请使用“pip install pyrebase”命令来安装pyrebase:

import pyrebase

config = {
  "apiKey": "FIREBASE_API_KEY",
  "authDomain": "FIREBASE_AUTH_DOMAIN_ID.firebaseapp.com",
  "databaseURL": "https://FIREBASE_AUTH_DOMAIN_ID.firebaseio.com",
  "storageBucket": "FIREBASE_AUTH_DOMAIN_ID.appspot.com",
}

firebase = pyrebase.initialize_app(config)

db = firebase.database()

print(db.get())

上述脚本将会针对给定的Firebase数据库进行身份认证,然后输出数据库中的呢日哦那个。当然了,只有当我们给该脚本提供目标Firebase数据库的API密钥时,脚本才会有权限来读取数据库中的内容。如果你还想对目标数据库进行类似写入之类的操作,请参考Pyrebase的【 操作手册 】。

总结

在这篇文找你盖章,我们演示了如何分析React Native Android应用程序以及其对应的JavaScript代码。一般来说,通过分析应用程序APK文件中的JavaScript,我们可以提取出目标应用中的敏感凭证数据以及API节点。

* 参考来源: assetnote ,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM


以上所述就是小编给大家介绍的《扩大Android攻击面:React Native Android应用程序分析》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

信息论基础

信息论基础

Thomas M.Cover、Joy A.Thomas / 清华大学出版社 / 2003-11-1 / 65.00元

《国际知名大学原版教材•信息论基础》系统介绍了信息论基本原理及其在通信理论、统计学、计算机科学、概率论以及投资理论等领域的应用。作者以循序渐进的方式,介绍了信息量的基本定义、相对熵、互信息以及他们如何自然地用来解决数据压缩、信道容量、信息率失真、统计假设、网络信息流等问题。一起来看看 《信息论基础》 这本书的介绍吧!

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具