首页 > 编程知识 正文

android 路由实现原理(android加固原理)

时间:2023-05-03 15:54:55 阅读:85503 作者:2469

国家安全委员会

解决了

摘要:

安卓移动操作系统中发现APP之间通信链路的问题。 这是安卓中涉及安全和隐私的重要问题。 在这样复杂的环境中,可扩展的静态分析必然会产生过量的假阳性,因此不现实。 为了提高精度,建议使用经过训练的神经网络模型来加强静态分析。 该模型可以估计通信链路实际存在的可能性。 我们描述了一种神经网络架构,对通信对方在两个APP中的抽象进行编码,并推断链路实际存在的概率。 类型定义编码器(TDE )是本公司结构的核心,是用于递归组合构成该类型的编码器来构建复合数据型编码器的通用框架。 我们用许多安卓APP评价了我们的方法,证明了这个方法有很高的正确性。 另外,为了理解所学习的神经网络的内部结构,进行了可以说明的研究。

关键字:神经网络、类型编码器、安卓、组件间通信

引言

安卓移动操作系统中,APP应用程序可以使用安卓特有的消息传递系统(称为组件间通信(icc ) )相互通信。 滥用icc可能会导致严重的安全漏洞,如个人数据被盗或越权攻击。 事实上,研究人员发现了各种各样的例子,如总线APP向所有其他APP广播gps位置,或伪装成芯片计算机的间谍APP。 因此,检测组件之间的通信很重要(组件c是否能够与组件d进行通信)。

随着安卓APP市场规模的扩大和安卓生态系统复杂性的增加,链路估计可靠、可扩展的静态分析会产生许多误报。 事实上,安全工程师必须手动查找恶意链接,因此必须仔细确定优先级。

为了解决这种情况下的误报,Octeau等人最近发表了提出手动调整概率模型primo的论文。 通过静态分析给出icc链接的概率,并根据可能性对链接进行排序。 我发现primo的方法有几个问题。 首先,模型是手动构建的。 建立模型是一个耗时费力、容易出错的过程,需要安卓APP、icc系统和静态分析方面的深入专业知识。 其次,安卓编程框架中的更改可能会导致模型过时并需要创建新模型。

为了实现这一点,通过机器学习研究了链接判断问题。 观察到静态分析的结果可以分为判断是否存在的链接和不确定的链接两类。 然后,利用确定的链接训练机器学习分类器,并将其应用于不确定链接来估计可能性。 下图概述了我们提出的方法。

为了在我们的环境中有效地进行机器学习,提出了针对链接推理问题的定制神经网络架构。 这被称为链接推理神经网络(linn )。 使用神经网络进行此设置的好处是可以自动提取有用的特征。 特别是icc的寻址机制。 我们可以将网络代码训练为捕捉相关特征的实际值向量。 这样,我们就摆脱了手工提取特征这一困难的工作。 这需要专业领域的知识,在安卓ICC被变更或使用的静态分析下进行维护。 演示了如何构建包含列表、集合、类型和字符串的一系列类型的编码器以生成通用方法。 我们的tde框架被用不同的神经网络结构实例化,得到不同的编码器。 可以系统地实验通过静态分析计算的抽象状态的各种代码。

我们做出了以下贡献。

模型强化链接推理:我们利用自动学习的模型形式化和研究了加强安卓ICC静态分析的问题。

连锁推理神经网络框架:我们提出一种定制的神经网络架构——连锁推理神经网络(linn ),加强连锁推理的静态分析。

p>

实例化和经验评估:我们使用 TensorFlow 和 ic3 实施我们的方法,并对来自 Google Play 商店的 10,500 个大型 Android 应用程序进行了全面评估。我们的结果证明了很高的分类精度。重要的是,我们的自动化技术优于 primo。

可解释性研究:为解决深度学习的不透明性问题,我们进行了详细的可解释性调查,以解释模型的行为。我们的结果提供了有力的证据,表明我们的模型学会了 Android 操作系统采用的链接解析逻辑。

ANDROID ICC:概述和定义

Android 应用程序从概念上讲是组件的集合,每个组件都旨在执行特定任务,例如向用户显示特定屏幕或播放音乐文件。应用程序可以通过使用复杂的消息传递系统来利用其他应用程序的功能。举例来说,一个应用程序开发人员希望能够拨打电话号码。开发人员可以从一条消息中请求其他一些应用程序处理拨号过程,而不是从头开始编写该功能。这样的消息通常是通用的,即不针对特定的应用。相同的通信机制也用于在应用程序内发送消息。

Intents 展示了一个简化的 icc 示例,其中包含使用地图应用程序(mapApp)和 sms 消息传递应用程序(smsApp)的拼车应用程序(rideApp)。每个应用程序都包含组件(灰色框),图中的箭头表示组件之间的潜在链接。 icc 主要是使用 Intents 完成的。Intents 是在 Android 组件之间发送的消息。Intents 可以是显式的或隐式的。前者指定目标应用程序和组件;后者仅指定目标需要的功能。

Intents 过滤器希望接收隐式 Intents 的组件必须声明过滤器,描述它们愿意接收的意图的属性。例如,图 2a 中的过滤器 2 指定 smsApp 可以处理 SEND 和 VIEW 操作。因此,当拼车应用程序发出带有 SEND 操作的意图时,Android 的意图解析过程会将其与提供该功能的 smsApp 相匹配。例如,当安装恶意应用程序通过声明它们也处理 SEND 操作来拦截短信时,就会出现安全和隐私问题。

模型增强的链接推理

在实践中使用了许多分类器(例如逻辑回归)。 我们专注于神经网络,因为我们可以使用它们来自动完成将 Intents 编码和过滤器编码为实值向量的重要任务。

我们观察到,静态分析的结果可以推断出明确标签。 因此,我们可以从 Android 市场中随机抽取应用程序样本,并且使用静态分析来构建训练集。对于典型的机器学习任务,分类器的输入是实值(即特征集)的向量。一旦训练了模型,我们就可以将其与静态分析的结果组合起来,以构建定量的抽象匹配函数。

链接推理神经网络

现在,我们介绍我们的链接推理神经网络(linn)框架和组件。我们的目标是采取抽象的意图和过滤器,表示一个可能的链接,并估计该链接为真的概率。 linns 就是为了做到这一点。一个 linn 由两个主要部分组成:

类型导向的编码器(tde):linn 包含两个不同的类型导向的编码器,它们是将抽象意图或过滤器映射为实数向量的函数。本质上,编码器充当特征提取器,将意图/过滤器的相关部分提取和汇总为实值向量。面向类型的编码器是可微函数的组合,可以使用各种神经网络体系结构实例化。

分类层:分类层采用已编码的意图和过滤器,并返回意图i和过滤器 f 之间存在链接的概率。我们使用的分类层是一个深度神经网络-多层感知器(mlp)。一旦我们对意图和过滤器进行了编码,就可以使用任何其他分类技术,例如逻辑回归。

实现和评估

现在,我们以各种实例描述我们的技术的实现,并给出全面的评估。 我们设计评估的目的是回答以下两个问题:

Q1:是否有效地预测了可能的联系,对于我们的任务,tdes 的最佳实例是什么?

Q2:效率模型训练和链接预测的运行时性能如何?

实例化为了回答我们的研究问题,我们对 tdes 的 4 种不同实例进行了实验。这些实例旨在使模型的复杂程度从最简单到最复杂。在最简单的实例 str-rnn 和 str-cnn 中,我们将抽象意图和过滤器序列化为字符串,并使用 rnns 和 cnns 进行编码。 在更复杂的实例化中,我们维护意图和过滤器的完整构成类型。

Q1:是否有效地预测了可能的联系,对于我们的任务,tdes 的最佳实例是什么?

我们观察到最好的实例是类型树。使用 Tree-lstm 涉及最多数量的可训练参数,利用最少的可训练参数和最快的运行时间,str-cnn 模型在排名最高的链接中实现了最高的真阳性率。在几乎所有方面,str-rnn 模型都比其他模型差,这表明 rnn 字符串编码器很难从过滤器中捕获有用的模式。我们的结果表明,更复杂的模型,特别是那些使用更多参数或编码更多结构的模型,往往会表现得更好。尽管简单的模型已经足够好,但是当我们考虑规模分析时,更复杂的模型可能仍然具有明显的优势。与 primo 相比,我们的评估仅针对一组可能的链接。这比 primo 的设置严格得多,primo 的设置是对所有包含不精确性的链接进行评估,因此某些链接实际上是必不可少的链接。

Q2:效率模型训练和链接预测的运行时性能如何?

关于运行时间,除了 str-rnn 之外,我们所有的实例化都是有效的。每个链接的推理时间不超过 171µs。训练时间与推理时间成正比。最好的三个实例化不超过 20 分钟即可完成 10 个训练时期。考虑到我们只使用普通的硬件,并且深层神经网络培训通常会持续数小时或数天的许多问题,因此我们认为这特别快。综上所述,即使是最复杂的模型也不会产生过多的存储成本。

可解释性调查

现在,我们调查我们的模型是否在学习正确的东西,而不是基于数据中无关的组件进行预测。解决此问题的非正式方法是模型的预测是否符合人类的直觉。这直接关系到我们对模型及其预测的信任。我们对可解释性的努力是多重的:

我们分析了不正确的分类以了解不正确的原因。我们的分析表明不正确的原因是可以理解和直观地说明的。

我们分析了几个实例以了解输入的哪些部分对于预测很重要。

我们研究了神经网络内部各种内核的激活,以了解哪些输入激活得最多。我们的发现显示了几个可识别的字符串,这些字符串在激活分类内核方面应具有直观的影响。

我们使用 t-SNE 可视化来了解模型如何对相似的输入进行分组以及其可能使用的功能。我们发现了几种重要的模式,增强了我们对该模型的信任。

总结

我们解决了对 Android 通信链接进行静态分析时误报的问题。 我们通过后处理步骤来增强静态分析,该后处理步骤可估算链接确实为正值的概率。 为了在我们的环境中促进机器学习,我们提出了针对链接推理问题的自定义神经网络体系结构。 关键的新颖性是类型定向编码器(tde),这是一个用于构成神经网络的框架,该框架采用某种类型 τ 的元素并将其编码为实值向量。 我们相信,在将机器学习应用于编程语言问题的情况下,该技术可以适用于各种各样的问题。 将来,我们希望在其他情况下探索这个有趣的想法。

致谢

本文由南京大学软件学院 2020 级硕士研究生fzdtn翻译转述。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。