2022论文阅读计划——1月

本文最后更新于:4 个月前

论文标题 论文技术栈 解读文章
您不得重新包装! 揭秘 Android 上的反重新包装(you Shall not Repackage! Demystifying Anti-packaging on Android) 您不得重新包装! 揭秘 Android 上的反重新包装(you Shall not Repackage! Demystifying Anti-packaging on Android) 您不得重新包装! 揭秘 Android 上的反重新包装(you Shall not Repackage! Demystifying Anti-packaging on Android)
您不得重新包装! 揭秘 Android 上的反重新包装(you Shall not Repackage! Demystifying Anti-packaging on Android)

在这方面,本文旨在提出当前反再包装方法的主要问题。本文的贡献有三个方面: 1) 分析了当前最先进的反重新包装方案的弱点 (即通过Dex加密,AppIS,SSN,SDC,BombDroid和NRP进行自我保护),2) 总结构成这些方案的反重新包装技术的主要攻击媒介,以及3) 展示这种攻击媒介如何规避当前的提议。本文还将展示对NRP的全 fl 边缘攻击,NRP是迄今为止唯一公开可用的反重新包装工具。

当程序分析遇到字节码搜索:BackDroid 中现代 Android 应用程序的有针对性和高效的跨过程分析(When Program Analysis Meets Bytecode Search:Targeted and Efficient Inter-procedural Analysis of Modern Android Apps in BackDroid)

我们提出了一种称为 on-the-fly 字节码搜索的技术,它可以在需要定位调用者时及时搜索反汇编的应用程序字节码文本。 通过这种方式,它逐步引导有针对性(和向后)的过程间分析,直到到达入口点,而不依赖于整个应用程序图。 然而,由于 Java 多态性、回调、异步流、静态初始化器和 Android 应用程序中的组件间通信,这种基于搜索的跨过程分析具有挑战性。 我们通过提出一组利用灵活搜索和转发对象污点分析的字节码搜索机制来克服我们上下文中的这些独特障碍。 在这种新的过程间分析之上,我们进一步调整了传统的反向切片和正向常量传播,以提供对接收器 API 调用的完整数据流跟踪。 我们已经实现了一个名为 BackDroid 的原型,并将其与 Amandroid 进行了比较,以分析 3,178 个现代流行应用程序的加密和 SSL 错误配置。 评估表明,对于此类基于 sink 的问题,BackDroid 的速度提高了 37 倍(2.13 对 78.15 分钟)并且没有超时故障(在 Amandroid 中为 35%),同时保持接近甚至更好的检测效率。

VMHunt:一种可验证的部分虚拟化二进制代码简化方法(VMHunt: A Verifiable Approach to Partially-Virtualized Binary Code Simplification)

在本文中,对代码虚拟化的类型和范围的假设较少,我们提出了一种可验证的方法来解决部分虚拟化二进制代码简化的挑战。 我们的关键见解是代码虚拟化是一种进程级虚拟机(VM),进入和退出 VM 时的上下文切换模式可用于检测 VM 边界。 基于VM边界的范围,我们简化了虚拟化代码。 我们首先忽略给定虚拟化片段中不影响该片段最终结果的所有指令。 为了更好地还原通过按位运算对变量进行编码的数据混淆效果,我们随后运行了一种称为多粒度符号执行的新符号执行,以进一步简化跟踪片段。 生成的简洁符号公式有助于我们简化结果的正确性测试。 我们已经将我们的想法实现为开源工具 VMHunt,并使用真实世界的应用程序和恶意软件对其进行了评估。 令人鼓舞的实验结果表明,VMHunt 是对现有技术的显着改进。

VMAttack:对基于虚拟化的打包二进制文件进行反混淆(VMAttack: Deobfuscating Virtualization-Based Packed Binaries)

我们提出了 VMAttack,这是一种基于自动静态和动态分析的虚拟化打包二进制文件的反混淆工具,它提供了反汇编的简化视图。 VMAttack 是作为 IDA Pro 的插件实现的,因此可以与手动逆向工程无缝集成。 通过分析受保护二进制文件 VM 层的内部工作原理,显着降低了反汇编视图的复杂性。 使用静态分析,基于专门为基于堆栈的虚拟机设计的中间表示,VM 的复杂字节码序列被映射到易于阅读的伪代码指令。 使用动态分析,我们识别结构组件,如解释器循环,并通过过滤掉执行跟踪的语义冗余指令来压缩指令序列。 综合结果对静态和动态分析的结果进行评分,为逆向工程师提供了一种去混淆的反汇编,可以容忍单一分析技术的弱点。 VMAttack 目前仅限于基于堆栈的虚拟机,如 VMProtect。 我们使用用 VMProtect 混淆的二进制文件评估了 VMAttack,并在动态分析和静态和动态组合分析中实现了平均执行跟踪减少 89.86% 和 96.67%

VirtSC:将虚拟化混淆与自校验和相结合(VirtSC: Combining Virtualization Obfuscation with Self-Checksumming)

自校验和 (SC) 是一种防篡改技术,可确保内存中的某些程序段(代码)在运行时散列为已知值。 SC对应用程序的限制很少,因此可以保护绝大多数程序。 SC 中的代码验证需要在编译后计算预期的哈希值,因为机器代码以前是未知的。 这意味着需要在二进制可执行文件中调整预期的哈希值,因此由于此调整步骤,将 SC 与其他保护结合起来受到限制。 然而,混淆保护通常是必要的,因为 SC 保护可以通过模式匹配轻松检测和禁用。 在本文中,我们提出了一种使用虚拟化混淆的分层保护,产生了一种与架构无关的 SC 保护,不需要编译后调整。

释放编译器优化对二进制代码差异的隐藏力量:一项实证研究(Unleashing the Hidden Power of Compiler Optimization on Binary Code Difference:An Empirical Study)

本文首先系统地研究了编译器优化对二进制代码差异的有效性。 我们为二进制代码差异的自动调整定制了基于搜索的迭代编译。 我们开发 BinTuner 来搜索可以最大化二进制代码差异量的近似最优优化序列。 我们在 SPEC 基准(CPU2006 和 CPU2017)、Coreutils 和 OpenSSL 上使用 GCC 10.2 和 LLVM 11.0 运行 BinTuner。 我们的实验表明,以 279 到 1881 次编译迭代为代价,BinTuner 可以找到明显优于一般 -Ox 设置的自定义优化序列。 BinTuner 的输出严重破坏了著名的二进制差异工具的比较。 此外,通过 BinTuner 调优的物联网恶意软件变种的检测率下降了 50% 以上。 我们的发现为安全分析师描绘了一个警示故事,即攻击者有一种新方法可以经济高效地改变恶意软件代码,研究界需要退后一步重新评估优化阻力评估。

了解 Android 混淆技术:野外大规模调查(Understanding Android Obfuscation Techniques:A Large-Scale Investigation in the Wild)

在本文中,我们寻求更好地理解 Android 混淆,并通过在野外进行的大规模调查来描述混淆使用的整体视图。 我们特别关注四种流行的混淆方法:标识符重命名、字符串加密、Java 反射和打包。 为了获得有意义的统计结果,我们为每种混淆技术设计了高效且轻量级的检测模型,并将它们应用于我们的海量 APK 数据集(从 Google Play、多个第三方市场和恶意软件数据库收集)。 我们从结果中学到了几个有趣的事实。 例如,恶意软件作者更频繁地使用字符串加密,第三方市场上的应用程序比 Google Play 更多。 我们也对每个发现的解释感兴趣。 因此我们在采样后对部分安卓应用进行了深入的代码分析。 我们相信我们的研究将帮助开发人员选择最合适的混淆方法,同时帮助研究人员朝着正确的方向改进代码分析系统。

使用 TIRO 处理 Android 中基于运行时的混淆(Tackling runtime-based obfuscation in Android with TIRO)

我们提出了 TIRO,这是一个使用 TargetInstrument-Run-Observe 方法的 Android 反混淆框架。 TIRO 提供了一个统一的框架,可以对使用传统混淆和更新的基于运行时的混淆技术组合的恶意软件进行反混淆。 我们在现代 Android 恶意软件样本数据集上评估和使用 TIRO,发现 TIRO 可以自动检测和反转基于语言和基于运行时的混淆。 我们还在来自 VirusTotal 的 2000 个恶意软件样本的语料库上评估 TIRO,发现 80% 的样本中存在基于运行时的混淆技术,这表明基于运行时的混淆是当今 Android 恶意软件作者使用的重要工具。

符号去混淆:从虚拟化代码回到原始代码(Symbolic deobfuscation: from virtualized code back to the original)

我们提出了一种新的自动化动态分析,旨在完全恢复虚拟化代码的原始程序行为——从 VM 机器中清除,并编译回原始二进制文件的新(去虚拟化)版本。 我们通过广泛的实验评估,评估其精度、效率和通用性,展示了该方法在小型哈希函数(典型的受混淆保护的专有资产)上的潜力,并且我们解决了 Tigress Challenge(的非 jitted 部分) 以完全自动化的方式。 虽然我们的方法仍然显示出对可以处理的程序类别的限制,但这项工作清楚地表明,可以轻松地从其虚拟化版本中检索类似哈希的函数,挑战虚拟化是防止逆向的最佳防御这一常识。 在不久的将来,我们将专注于重建更复杂的程序结构,例如用户相关的循环或内存访问。

Speech-to-SQL:从自然语言问题转向语音驱动的 SQL 查询生成(Speech-to-SQL: Towards Speech-driven SQL Query Generation From Natural Language Question)

我们进一步提出了一种名为 SpeechSQLNet 的新型端到端神经架构,无需外部 ASR 步骤即可将人类语音直接转换为 SQL 查询。 SpeechSQLNet 的优势在于充分利用了语音中丰富的语言信息。 据我们所知,这是第一次尝试基于任意自然语言问题直接合成 SQL,而不是基于自然语言版本的 SQL 或其具有有限 SQL 语法的变体。 为了验证所提出的问题和模型的有效性,我们通过搭载广泛使用的 text-to-SQL 数据集进一步构建了一个名为 SpeechQL 的数据集。 对该数据集的广泛实验评估表明,SpeechSQLNet 可以直接从人类语音中合成高质量的 SQL 查询,在精确匹配精度方面优于各种竞争对手以及级联方法。 我们预计 Speech-toSQL 将激发更多关于更有效和高效的人机界面的研究,以降低使用关系数据库的障碍。

二进制的语义感知混淆方案预测(Semantics-aware Obfuscation Scheme Prediction for Binary)

在本文中,我们介绍了一种语义感知的混淆检测方法,在 277,131 个组装文档的实验数据集上,单个混淆的检测率为 89.4%,多次混淆的检测率为 82.79%。 此外,我们还在慕尼黑工业大学(德国慕尼黑工业大学)提供的混淆基准上测试了 OBFEYE。 单次混淆测试准确率为91.81%,多次混淆准确率高达97.84%。 此外,我们已经证明,我们的方法需要适度的计算来执行特征提取,并且它可以在适度的时间范围内在单个 CPU 上对我们的语料库实现良好的准确性。 特别是,我们构建了包含 277,131 个带有汇编代码的混淆文件、8 个单一混淆算法和 6 个多重混淆算法的数据集,这对于其他致力于研究代码混淆的研究人员来说是有价值的

SCORE:源代码优化和重构(SCORE: Source Code Optimization &REconstruction)

本文介绍了源级优化工具 SCORE 的设计及其评估结果。 代码优化是一种众所周知的技术,但通常应用于 IR 级别或更低级别。 然而,需要更多的研究来通过重构控制流来提高可读性,因为商业混淆工具在源代码级别提供控制流混淆。 特别是,作为源级,控制流混淆在编译过程中根本没有优化,编译后的二进制文件的分析时间大大延迟。 此外,由于编译器在编译过程中会剥离信息,因此在二进制级别撤消控制流混淆比在源代码级别更困难。 SCORE 在源代码层面进行控制流重构和优化,不仅大大提高了源代码的可读性,而且也大大提高了二进制代码的结构。 由于在控制流重构之后应用了优化技术,可以优化更多的模式,提供比编译器的优化模块更高的优化效果。 特别是,这项研究首次证明了源级优化和控制流重建的必要性。

基于 LLVM 的 SATURN 软件反混淆框架(SATURN:Software Deobfuscation Framework Based on LLVM)

在本文中,我们讨论了一种基于编译器框架 LLVM 的去混淆和重新编译混淆代码的通用方法。 我们展示了如何将二进制代码提升回编译器中间语言 LLVM-IR,并解释我们如何使用基于编译器优化和可满足性模理论的迭代控制流图构造算法 [3] 恢复模糊二进制函数的控制流图( SMT)解决。 我们的方法不对混淆代码做任何假设,而是使用 LLVM 和 Souper Optimizer 中可用的强大编译器优化来简化混淆。 我们的实验结果表明,这种方法可以有效地削弱甚至消除应用的混淆技术,如常量展开、某些基于算术的不透明表达式、死代码插入、虚假控制流或公共和商业混淆器中的整数编码。 恢复的 LLVM-IR 可以通过自定义反混淆通道进一步处理,这些通道现在应用在与注入的混淆技术相同的级别,或使用可用的 LLVM 后端之一重新编译。 所展示的工作是在一个名为 SATURN 的反混淆工具中实现的(图 1)。

使用 ReDex 优化器逆向 Android 应用程序中的控制流结构混淆(Reversing Obfuscated Control Flow Structures in Android Apps using ReDex Optimizer)

在本文中,我们应用 ReDex 优化器来逆转 Obfuscapk 系统对开源 Android 应用程序执行的控制流混淆。 然后,我们分析了 ReDex 在逆向 Android 应用程序控制流混淆的反混淆能力方面的有效性和局限性。 实验结果表明,ReDex 可以恢复使用 Obfuscapk 混淆器的控制流混淆技术混淆的 1108 个应用程序中的 1089 个。 在优化字节码的过程中,ReDex 显着减少了方法和字段的数量,但在去除与无用的 goto 语句和随机 nop 指令相关的死代码方面存在一定的局限性。

QSynth - 一种基于程序综合的二进制代码反混淆方法(QSynth - A Program Synthesis based Approach for Binary Code Deobfuscation)

我们提出了一种利用 DSE 和程序合成的通用方法,以成功合成使用混合布尔算术、数据编码或虚拟化混淆的程序。 所提出的合成算法是一种由自上而下的呼吸优先搜索引导的离线枚举合成原语。 我们展示了它对最先进的混淆器的有效性及其可扩展性,因为它取代了其他基于合成的类似方法。 我们还展示了它在存在复合混淆(各种技术的组合)时的有效性。 这项正在进行的工作启发了综合针对某些类型的混淆的有效性,并为更强大的算法和简化策略开辟了道路。

使用多个DEX文件保护Android应用程序免受静态反向工程攻击(Protecting Android applications with multiple DEX files against Static Reverse Engineering Attacks)

Android应用程序包 (APK) 使用DEX格式作为可执行文件格式。由于DEX文件采用Java字节码格式,因此可以使用静态反向工程工具轻松获取Java源代码。此功能使窃取Android应用程序变得容易。ijiami、liapp、阿里巴巴等工具可用于保护应用程序免受静态反向工程攻击。这些工具通常将加密的clases.dex保存在APK文件中,然后在应用程序启动时动态解密和加载。但是,这些工具不能保护多索引Android应用程序。多索引Android应用程序是包含多个DEX文件的APK,主要用于大型应用程序。我们提出了一种保护多索引Android应用免受静态反向工程攻击的方法。该方法加密多个DEX文件并将其存储在APK文件中。启动APK时,加密的DEX文件将被动态解密和加载。实验结果表明,该方法能够有效地保护多索引APK。

并行空间旅行:Android应用级虚拟化的安全性分析(Parallel Space Traveling: A Security Analysis of App-Level Virtualization in Android)

在本文中,我们对应用级虚拟化的实施以及用户将面临的安全威胁进行了系统研究。 我们调查了一批由第三方开发的支持虚拟化的应用程序。 我们发现这些应用程序在用户中非常受欢迎,并且使用相同的设计逻辑实现。 它们可以加载在彼此不完全隔离的环境中运行的 GuestApp。 因此,对于恶意虚拟化应用程序或集成的第三方库,我们揭示了几种潜在的攻击(权限提升、代码注入、勒索软件等)。 我们还发现虚拟化技术已被恶意软件滥用,这些恶意软件可以发起多种新攻击。 攻击者可以在不携带任何网络钓鱼代码的情况下实施劫持攻击,或在虚拟化框架内重新打包恶意软件以逃避防病毒检测。 我们从多个应用市场找到了 159 个重新打包的样本。 其中 68 个打包恶意软件以广泛分发。 最后,我们讨论了针对用户、开发人员和供应商的各种缓解解决方案。

基于对比学习的Android恶意软件模糊分析(Obfuscation-resilient Android Malware Analysis Based on Contrastive Learning)

基于所提出的分析,我们设计了一个系统,可以实现对 Android 恶意软件的鲁棒和可解释的分类。 为了实现稳健的分类,我们对恶意软件样本进行对比学习,以学习可以自动从恶意软件样本中提取稳健特征的编码器。 为了实现可解释的分类,我们通过中心性分析将样本的函数调用图转换为图像。 然后通过可视化技术获得相应的热图。 这些热图可以帮助用户理解为什么恶意软件被归类为这个家族。 我们实现了 IFDroid 并对两个广泛使用的数据集进行了广泛的评估。 实验结果表明,IFDroid 优于最先进的 Android 恶意软件家族分类系统。 此外,IFDroid 能够在对 8,112 个混淆恶意软件样本进行分类时保持 98.2% 的真阳性率。

Obfuscapk:用于 Android 应用程序的开源黑盒混淆工具(Obfuscapk: An open-source black-box obfuscation tool for Android apps)

Obfuscapk 是一个开源的自动混淆工具,适用于以黑盒方式工作的 Android 应用程序(即,它不需要应用程序源代码)。 Obfuscapk 支持高级混淆功能,并具有模块化架构,可以直接扩展以支持新的混淆技术。 本文介绍了 Obfuscapk 的架构、主要的混淆技术,以及 Obfuscapk CLI 的基础知识。 最后,本文讨论了 Obfuscapk 的实际用例,并对该工具在 Google Play 商店的 1000 个“下载次数最多”的 APK 上的可靠性进行了实证评估。

MobileFindr:逆向移动二进制文件的函数相似性识别(MobileFindr: Function Similarity Identification for Reversing Mobile Binaries)

在本文中,我们提出了 MobileFindr,一种基于设备跟踪的移动平台功能相似性识别框架。 MobileFindr 在真实的移动设备上运行,并通过动态检测提取函数执行行为,然后使用收集的行为表征函数并通过距离计算执行函数匹配,从而缓解了许多流行的反逆转技术。 我们使用现实世界中排名靠前的移动框架和应用程序评估了 MobileFindr。 实验结果表明,MobileFindr 在更好的混淆弹性和准确性方面优于现有的最先进工具。

ART中基于字节码捕获的移动代码对抗逆向方案(Mobile Code Anti-Reversing Scheme Based on Bytecode Trapping in ART)

从应用程序安全的角度来看,需要详细了解 ART,例如新的文件格式和代码之间的执行切换方法。 在本文中,我们证明了现有的基于 Dalvik 的应用程序漏洞可以在 ART 中按原样利用。 这是因为现有的 Dalvik 可执行文件共存于 ART 可执行文件中,这些 Dalvik 字节码与编译后的机器码是一一对应的关系。 然后,我们提出了一种基于 ART 的应用程序保护方案,通过动态消除一对一映射来保护这一点。 此外,实施所提出的方案以通过实验评估其逆向工程阻力和性能。

MBA-Blast:揭示和简化混合布尔算术混淆(MBA-Blast: Unveiling and Simplifying Mixed Boolean-Arithmetic Obfuscation)

在本文中,我们首先揭开 MBA 混淆的底层机制。 我们的深入研究揭示了 1 位和 n 位变量之间 MBA 转换的隐藏双向特征。 我们利用此功能并提出了一种可行的解决方案,以通过 MBA 混淆有效地对代码进行反混淆。 我们的主要见解是 MBA 转换在 1 位和 n 位变量上的行为方式相同。 我们提供了一个数学证明来保证这一发现的正确性。 我们进一步开发了一种新技术,通过在 1 位空间中进行算术缩减,将 MBA 表达式简化为普通的简单形式。 我们将这个想法实现为一个名为 MBA-Blast 的开源原型,并在一个包含大约 10,000 个 MBA 表达式的综合数据集上对其进行了评估。 我们还在真实的二进制代码反混淆场景中测试了我们的方法,这表明 MBA-Blast 可以帮助人类分析师充分利用 SMT 求解器的优势。 与现有工作相比,MBA-Blast 是最通用、最高效的 MBA 反混淆技术; 它具有坚实的理论基础,以及最高的成功率和可忽略的开销。

LOKI:针对自动攻击强化代码混淆(LOKI: Hardening Code Obfuscation Against Automated Attacks)

在这项工作中,我们介绍了LOKI,一种用于代码混淆的方法,该方法可抵抗所有已知的自动去混淆攻击。为此,我们部署了多种技术,包括一种通用方法来合成经过正式验证的任意复杂性表达式。与依赖于一些硬编码生成规则的最新方法相反,我们的表达方式更加多样化,更难与模式匹配。此外,LOKI可以防止先前未说明的攻击向量 (例如程序合成),为此它将成功率降低到仅19%。总体而言,我们的设计带来的开销明显更少,同时提供了更强的保护级别。

基于AST结构和令牌的混淆着陆点轻量级检测方法(Lightweight Detection Method of Obfuscated Landing Sites Based on the AST Structure and Tokens)

攻击者使用多种技术插入重定向 JavaScript,将用户引导至恶意网页,并在其中执行下载驱动攻击。 特别是,登陆站点中的重定向 JavaScript 被混淆以避免检测系统。 在本文中,我们提出了一种基于静态分析的轻量级检测系统,用于对混淆类型进行分类并及时检测混淆重定向 JavaScript。 所提出的模型通过将 JavaScript 转换为抽象语法树 (AST) 来检测混淆重定向 JavaScript。 然后,提取结构和令牌信息。 具体来说,我们提出了一种轻量级的 AST 来识别混淆类型和修改后的词频-逆文档频率,从而有效地检测恶意重定向 JavaScript。 这种方法可以快速识别混淆的重定向 JavaScript 并主动阻止用于驱动下载攻击的网页。

分层混淆:用于分层安全的软件混淆技术分类(Layered obfuscation: a taxonomy of software obfuscation techniques for layered security)

在本文中,我们基于分层混淆的思想对现有的混淆技术进行了系统的回顾,并开发了一种新的混淆技术分类法。 按照我们的分类层次结构,不同分支下的混淆策略是相互正交的。 通过这种方式,它可以帮助开发人员选择混淆技术,并根据他们的具体需求设计分层的混淆解决方案。

JShrink:对现代 Java 应用程序裁剪的深入调查(JShrink: In-Depth Investigation into Debloating Modern Java Applications)

我们开发了一个名为JShrink的端到端字节码消除框架。它通过动态剖析和类型依赖分析来增强传统的静态可达性分析,并更新现有的字节码转换以解决现代Java中的新语言功能。我们重点介绍了一些细微的技术挑战,这些挑战必须正确处理,并通过回归测试检查去肿软件的行为保护。我们发现 (1) JShrink能够使我们的真实Java基准套件膨胀多达47% 个 (平均14% 个); (2) 考虑动态语言功能对于确保行为保护确实至关重要。减少纯静态等价物Jax引起的测试失败98%,和ProGuard的84%; (3) 与纯动态方法相比,将静态分析与动态分析相集成,使膨胀软件对看不见的测试执行更加健壮。在26个项目中的22个中,膨胀软件在新测试下成功运行。

SOC: Web浏览器安全分析(SOK: On the Analysis of Web Browser Security)

本文试图通过研究流行的安全漏洞类别、它们的利用技术和部署的防御措施来系统化现代 Web 浏览器的安全环境。 更具体地说,我们首先介绍了一个统一的架构,它忠实地代表了四大 Web 浏览器的安全设计。 其次,我们分享了一项为期 10 年的浏览器漏洞纵向研究的见解。 第三,我们提出了缓解计划及其有效性的时间表和背景。 第四,我们分享了我们在 2020 年 Pwn2Own 比赛中使用的全链漏洞利用的经验教训。 我们相信,这种系统化的关键要点可以揭示如何推进现代网络浏览器的现状,更重要的是,如何在未来创建安全而复杂的软件。

代码反混淆和特征交互对 Android 恶意软件检测的影响(Impact of Code Deobfuscation and Feature Interaction in Android Malware Detection)

我们将代码反混淆技术与 Android 恶意软件检测系统一起使用并研究其效果。 实验结果表明,代码去混淆可以成功地检索到被混淆隐藏的有用信息。 此外,我们提出了基于识别的特征交互的交互项。 由于许多特征值与应用程序的大小相关,因此提出的交互项旨在消除由应用程序大小和其他特征引起的干扰。 实验结果还表明,这些交互项在特征重要性方面具有很高的排名。 我们提出的 Android 恶意软件检测模型使用著名的 Drebin 数据集实现了 99.55% 的准确率和 94.61% 的 F1 分数,超过了之前工作的性能。

GoldRusher:快速识别隐藏代码的工具(GoldRusher: A Miner for Rapid Identification of Hidden Code)

在本文中,我们介绍了 GoldRusher,这是一种主要用于帮助逆向工程师半自动分析二进制文件以快速揭示故意隐藏的代码段的工具。 鉴于 GoldRusher 对代码隐藏的特定定义不可知,并且不对被测程序的意图(即恶意或良性)做出假设,它也可以被测试工程师用作更智能的代码覆盖工具。

广义动态不透明谓词:一种新的控制流混淆方法(Generalized Dynamic Opaque Predicates: A New Control Flow Obfuscation Method)

在本文中,我们概括了这个概念并系统地开发了一种新的控制流混淆方案,称为广义动态不透明谓词。 与之前的工作相比,我们的方法有两个明显的优势:1)我们通过将更常见的程序结构(例如,直线代码、分支和循环)自动转换为动态不透明谓词来扩展应用范围; 2)我们的系统设计不要求动态不透明谓词严格相邻,这对反混淆技术更具弹性。 我们开发了一个基于 LLVM IR 的原型工具,并通过混淆 GNU 核心实用程序对其进行了评估。 我们的实验结果表明了我们方法的有效性和通用性。 此外,比较评估表明,我们的方法对最新的基于形式程序语义的不透明谓词检测方法具有弹性。

通过差异化模糊测试发现智能合约 VM 漏洞(Uncovering Smart Contract VM Bugs Via Differential Fuzzing)

在本文中,我们提出了一种自动化方法来发现这些差异。 通过覆盖引导和状态引导的模糊测试,我们探索了针对多个虚拟机并行的智能合约虚拟机行为。 我们开发了 NeoDiff,这是第一个用于智能合约 VM 的反馈引导差异模糊测试的框架。我们讨论了我们的工具可以防止的真实的货币后果。 NeoDiff 可以轻松移植到新的智能合约平台。 除了模糊以太坊虚拟机之外,NeoDiff 还发现了 Neo 区块链虚拟机的一系列关键差异。 此外,通过更高层的语义变更器,我们发现了在区块链上执行时用 Python 编写的 Neo 智能合约与经典 CPython 之间的语义差异。 在此过程中,NeoDiff 发现了 C# Neo VM 中的内存损坏。

DynOpVm:使用动态操作码映射的基于 VM 的软件混淆(DynOpVm: VM-based Software Obfuscation with Dynamic Opcode Mapping)

在本文中,我们提出了一种利用频率分析有效恢复秘密映射以破坏保护的攻击,然后提出了一种新的基于VM的模糊器,其中每个基本块在虚拟指令和本机指令之间使用动态和控制流感知映射。我们表明,我们提出的基于虚拟机的混淆器不仅使频率分析攻击有效,而且指示执行和程序分析遵循程序的原始控制流程,使最先进的反向污染和切片有效。我们实现了一个基于虚拟机的模糊器原型,并通过规范基准测试和其他实际应用程序的实验证明了它的有效性。

DYDROID:测量动态代码加载及其在 Android 应用程序中的安全隐患(DYDROID : Measuring Dynamic Code Loading and Its Security Implications in Android Applications)

但在本文中,我们制定并回答了之前研究中缺少的三个关键问题:(1)加载的代码来自哪里(远程获取或本地打包),以及谁是负责实体 调用它的功能? (2) DCL 以何种方式用于强化移动应用程序,特别是应用程序混淆? (3) 可以从 DCL 中发现现成应用程序的安全风险和影响是什么? 我们设计并实现了 DYDROID,这是一个使用动态和静态分析来分析动态加载代码的系统。 动态分析用于自动运行应用程序、捕获 DCL 行为并拦截加载的代码。 静态分析用于调查动态加载代码中的恶意行为和隐私泄露。 我们已经使用 DYDROID 在几乎没有人工干预的情况下分析了超过 46K 的应用程序,使我们能够进行大规模测量以调查 DCL 的五个方面,例如源识别、恶意软件检测、漏洞分析、混淆分析和隐私跟踪分析。 我们有几个有趣的发现。 (1) 发现27个应用程序通过执行从远程服务器下载的代码违反了Google Play的内容政策。 (2) 我们确定了几种常见混淆方法的分布、优缺点和影响,包括 DEX 加密/加载。 (3) DCL 的隐蔽性使其成为部署恶意软件的渠道,我们发现 87 个应用程序加载了现有防病毒工具无法检测到的恶意二进制文件。 (4) 我们发现 14 个应用程序由于动态加载其他应用程序可写的代码而容易受到代码注入攻击。 (5) DCL 主要用于第三方 SDK,这意味着应用程序开发者可能不知道他们的应用程序中注入了什么样的敏感功能。

软件安全的多样化和混淆技术:系统的文献综述(Diversification and obfuscation techniques for software security:A systematic literature review)

在本文中,系统的文献回顾被用作研究的方法,以选择讨论多样化/混淆技术以提高软件安全性的研究。 我们介绍数据收集、数据分析和报告结果的过程。 结果:作为系统搜索的结果,我们收集了 357 篇与我们感兴趣的主题相关的文章,发表于 1993 年至 2017 年间。我们研究收集的文章,分析从中提取的数据,对数据进行分类,并 揭示了研究的空白。

结论:这两种技术已被广泛用于各种安全目的并阻止各种类型的安全攻击。 存在许多不同的技术来混淆/多样化程序,每种技术都针对程序的不同部分,并应用于软件开发生命周期的不同阶段。 此外,我们指出了该领域的研究差距,例如仍有各种执行环境可以从这两种技术中受益,包括云计算、物联网 (IoT) 和可信计算。 我们还提出了一些关于在所讨论的环境中应用这些技术的潜在想法。

DexRay:一种基于字节码图像表示的简单但有效的安卓恶意软件检测深度学习方法(DexRay: A Simple, yet Effective Deep Learning Approach to Android Malware Detection based on Image Representation of Bytecode)

我们提出了 DexRay,它将应用程序 DEX 文件的字节码转换为灰度“矢量”图像,并将它们提供给一维卷积神经网络模型。 由于设计选择的极其基本的性质,我们将 DexRay 视为基础,允许推断在恶意软件检测中通过基于图像的学习可以获得的最低性能。 DexRay 在超过 158k 应用程序上的性能评估表明,虽然简单,但我们的方法是有效的,检测率很高(F1-score = 0.96)。 最后,我们研究了时间衰减和图像大小调整对 DexRay 性能的影响,并评估了它对混淆的弹性。 这篇正在进行中的论文通过提供一种健全、简单但有效的方法(具有可用的人工制品)为基于深度学习的恶意软件检测领域做出了贡献,该方法可以作为确定许多需要调查的深刻问题的基础 充分发展这个领域。

DexPro:适用于 Android 应用程序的字节码级代码保护系统(DexPro: A Bytecode Level Code Protection System for Android Applications)

本文介绍了 DEXPRO,一种用于 Android 应用程序的新型字节码级代码混淆系统。 与之前的方法不同,我们的方法在 Android Dex 字节码上执行,不需要访问高级程序源或修改编译器或 VM。 我们的方法利用 Dex 中除浮点操作数以外的所有操作数都存储在 32 位寄存器中的事实,将两个 32 位操作数打包成一个 64 位操作数。 这样,任何反编译字节码的尝试都会导致错误的信息。 同时,我们的方法通过在函数调用的返回指令之前插入不透明的谓词来混淆程序控制流,这使得攻击者更难跟踪对受保护函数的调用。 实验结果表明,我们的方法可以阻止复杂的逆向工程和代码分析工具,并且运行时和内存占用的开销与现有的代码混淆方法相当。

DexMonitor:动态分析和监控混淆的 Android 应用程序(DexMonitor: Dynamically Analyzing and Monitoring Obfuscated Android Applications)

在本文中,我们提出了一种解决这一关键挑战的方法,方法是在 Dalvik 虚拟机中将要执行 Dalvik 指令的位置放置钩子。 此外,我们通过名为 DexMonitor 的原型对实际应用程序进行案例研究,证明了我们方法的有效性。

DexLego:用于辅助静态分析的可重组字节码提取(DexLego: Reassembleable Bytecode Extraction for Aiding Static Analysis)

本文中,我们介绍了 DEXLEGO,这是一种新颖的系统,它执行可重组的字节码提取,以帮助静态分析工具揭示 Android 应用程序的恶意行为。 DEXLEGO 利用即时收集在运行时从应用程序中提取数据和字节码,并将它们重新组合成一个新的离线 Dalvik 可执行文件 (DEX)。 在 DroidBench 和实际应用程序上的实验表明,DEXLEGO 在重组后的 DEX 文件中正确重构了应用程序的行为,显着提高了现有静态分析系统的分析结果

通过向 root 提供者学习来检测 android root 漏洞(Detecting Android Root Exploits by Learning from Root Providers)

在本文中,我们构建了一个系统RootExplorer,来解决这个问题。 推动 RootExplorer 设计的主要观察是,除了恶意软件之外,还有由大公司支持的合法商业级 Android 应用程序,这些应用程序可以促进手机的 root 权限,称为 root 提供程序或一键式 root 应用程序。 通过对 oneclick root 应用程序进行广泛分析,RootExplorer 了解了 root 漏洞利用的精确前提条件和环境要求。 然后,它使用此信息在模拟器或智能手机测试平台上构建适当的分析环境,以有效检测恶意软件中的嵌入式根漏洞。 我们对 RootExplorer 进行的广泛实验评估表明,它能够检测到所有已知执行 root 漏洞利用的恶意软件样本,并且不会产生误报。 我们还发现了一个目前在市场上可用的应用程序,它具有嵌入式 root 漏洞。

使用图神经网络检测和分类 Android 恶意软件(Detecting and Categorizing Android Malware with Graph Neural Networks)

在本文中,我们提出了一种新的基于自然语言处理 (NLP) 的基于函数调用图嵌入的 Android 恶意软件检测和分类技术。 我们设计了一种基于图神经网络(图嵌入)的方法,将 Android 应用程序的整个图结构转换为向量。 然后,我们利用图的向量来检测和分类恶意软件家族。 我们的结果表明,图嵌入产生了更好的结果,因为我们平均获得了 99.6% 的恶意软件检测准确率和 98.7% 的恶意软件分类准确率。

反混淆 Android 原生二进制代码(Deobfuscating Android Native Binary Code)

在本文中,我们提出了一种自动化方法来促进 Android 原生二进制代码的反混淆。 具体来说,给定由 Obfuscator-LLVM(最流行的本机代码混淆器)混淆的本机二进制文件,我们的反混淆系统能够恢复原始控制流图。 据我们所知,这是第一个旨在解决这个问题的工作。 我们已经将我们的系统应用于不同的场景,实验结果证明了我们基于通用相似性比较指标的系统的有效性。

通过机器学习和二进制分析静态击败不透明谓词(Defeating Opaque Predicates Statically through Machine Learning and Binary Analysis)

我们提出了一种将二进制分析技术与机器学习分类联系起来的新方法,目的是为不透明的谓词提供静态和通用的评估技术,而不管它们的结构如何。 我们使用这种技术作为静态自动反混淆工具来删除由混淆机制引入的不透明谓词。 根据我们的实验结果,我们的模型在检测和反混淆最先进的不透明谓词模式方面的准确率高达 98%。 相比之下,基于符号执行的前沿反混淆方法显示出的准确性较低,这主要是由于 SMT 求解器的限制和动态符号分析缺乏可扩展性。 我们的方法强调了混合符号分析和机器学习技术在静态和通用反混淆方法中的效率。

DeepMal:恶意—保留对抗性指令学习对抗静态恶意软件检测(DeepMal: maliciousness-Preserving adversarial instruction learning against static malware detection)

本文提出了一种新颖的对抗性指令学习技术 DeepMal,它基于用于静态恶意软件检测的对抗性指令学习方法。 据我们所知,DeepMal 是第一个实用且系统的对抗学习方法,它可以直接生成对抗样本并有效绕过由 DL 和机器学习 (ML) 模型提供支持的静态恶意软件检测器,同时保留现实世界中的攻击功能。 此外,我们的方法进行小规模攻击,这可以规避典型的恶意软件变体分析(例如,重复检查)。 我们在两个真实世界的数据集、六个典型的 DL 模型和三个典型的 ML 模型上评估 DeepMal。 实验结果表明,在这两个数据集上,DeepMal 可以攻击典型的恶意软件检测器,平均 F1 分数和 F1 分数分别最大降低 93.94% 和 82.86%。 此外,三种典型的恶意软件样本(木马、后门、勒索软件)证明保留了原始攻击功能,恶意软件对抗样本的平均重复检查率低于 2.0%。 此外,DeepMal 可以避开动态检测器,并通过学习更多具有特定约束的动态特征轻松增强。

DANdroid:用于混淆 Android 恶意软件检测的多视图判别对抗网络(DANdroid: A Multi-View Discriminative Adversarial Network for Obfuscated Android Malware Detection)

我们提出了 DANdroid,这是一种新颖的 Android 恶意软件检测模型,它使用深度学习的判别对抗网络 (DAN),将混淆和未混淆的应用程序分类为恶意或良性。 我们的方法,我们凭经验证明,对于四种流行和现实世界的混淆技术的选择是稳健的,它做出了三个贡献。 首先,判别对抗学习的创新应用导致恶意软件特征表示对四种混淆技术具有很强的弹性。 其次,使用三个特征集; 原始操作码、权限和 API 调用,它们组合在多视图深度学习架构中,以增加这种混淆弹性。 第三,我们证明了我们的模型具有泛化训练中未见的罕见和未来混淆方法的潜力。 凭借 68,880 个经过混淆和未混淆的恶意和良性样本的整体数据集,我们的多视图 DAN 模型实现了 0.973 的平均 F 分数,与最先进的技术相比,尽管暴露于应用的选定混淆方法 单独和组合。

ConDySTA:静态污点分析的上下文感知动态补充(ConDySTA: Context-Aware Dynamic Supplement to Static Taint Analysis)

我们开发了一种新方法 DySTA,它使用动态污点分析结果作为静态污点分析的附加来源。 然而,天真地添加源会导致静态分析失去上下文敏感性,从而产生误报。 因此,我们开发了一种混合上下文匹配算法和相应的工具 ConDySTA,以保持 DySTA 中的上下文敏感性。 我们应用 REPRODROID [1],一个用于 Android 分析工具的综合基准测试框架,来评估 ConDySTA。 结果表明,在 28 个应用程序中 (1) ConDySTA 能够检测到 REPRODROID 中考虑的六种最先进的静态污染分析中的任何一种都未检测到的 28 种污染流中的 12 种,并且 (2) ConDySTA 报告没有 假阳性,而仅 DySTA 报告了 9 个。 我们进一步将 ConDySTA 和 FLOWDROID 应用于来自 Google Play 的 100 个顶级 Android 应用程序,ConDySTA 能够检测到 39 个额外的污染流(除了 FLOWDROID 发现的 281 个污染流),同时保留了 FLOWDROID 的上下文敏感性。

CodeTrolley:硬件辅助控制流混淆(CodeTrolley: Hardware-Assisted Control Flow Obfuscation)

在这项工作中,我们专注于控制流混淆 - 一种防止攻击者静态确定哪些代码段是原始代码段以及添加哪些段以混淆攻击者的技术。 我们提出了一种基于 RISC-V 的硬件辅助反混淆技术,该技术基于安全存储在硬件中的秘密以及用于混淆二进制文件的 LLVM 编译器扩展在运行时对代码进行反混淆。 与传统工具不同,我们的工作不依赖于编译难以逆向工程的代码,而是依赖于保护密钥。 因此,它可以被视为动态二进制解密的轻量级替代方案。

针对符号执行攻击的代码混淆(Code Obfuscation Against Symbolic Execution Attacks)

本文解决了表征代码混淆转换对自动符号执行攻击的弹性的问题,补充了通过用户研究测量混淆转换对人工辅助攻击的效力的现有工作。 我们评估了超过 5000 个不同的 C 程序的方法,每个程序都使用现有的混淆转换实现进行了混淆。 结果表明,许多现有的混淆转换,例如虚拟化,几乎没有机会承受基于符号执行的反混淆。 我们做出的一个重要且可能令人惊讶的观察是,基于符号执行的去混淆器可以轻松地去混淆保留程序语义的转换。 另一方面,我们提出了新的混淆转换,以微妙但可接受的方式改变程序行为,并表明它们可以使基于符号执行的反混淆分析在实践中无效。

BLADE:针对 Android 中的混淆进行强大的恶意软件检测(BLADE: Robust Malware Detection against Obfuscation in Android)

我们提出了 BLADE,这是一种基于 Opcode Segments 检测的新型混淆弹性系统。 它做出了三个贡献:首先,一种新颖的操作码段文档导致特征表征对混淆技术具有弹性。 其次,我们对 dalvik 操作码进行基于语义的简化以增强弹性。 第三,我们评估了 BLADE 对不同混淆技术的有效性,例如普通混淆、字符串加密、类加密、反射及其组合。 在针对恶意软件检测、家族分类、恶意软件类型检测、混淆类型检测和混淆弹性家族分类的基准数据集进行测试时,我们发现我们的方法是有效、准确和有弹性的。

用于防止 Android 应用程序敏感信息泄漏的自动多层字节码生成(Automated Multi-Layered Bytecode Generation for Preventing Sensitive Information Leaks from Android Applications)

在本文中,我们首先提出了一种威胁模型,该模型试图通过使用重新打包攻击来泄露用户的敏感信息,称为 ReMaCi 攻击。 通过分析从 Google Play 商店下载的前 8,546 个应用程序,我们发现其中 50% 的应用程序确实容易受到 ReMaCi 攻击。 因此,我们提出了一种名为 AmpDroid 的新型自动化静态反分析工具,用于防止敏感信息泄露。 AmpDroid 识别敏感数据流并将处理敏感数据的代码与应用程序隔离开来。 为了证明 AmpDroid 的有效性,我们对 AmpDroid 进行了安全性和性能评估,并将其与其他混淆工具进行了比较。

ARMAND:基于原生检测的多模式反篡改反重打包(ARMAND: Anti-Repackaging through Multi-pattern Anti-tampering based on Native Detection)

在这项工作中,我们提出了一种新的反重新包装方案——称为 ARMAND,旨在克服当前保护方案的局限性。 我们已经将这个方案实现到一个名为 ARMANDroid 的原型中,它利用了多种保护模式并依赖于本机代码。 ARMANDroid 在 30.000 个真实世界的 Android 应用程序上的评估阶段表明,该方案对常见的攻击向量具有鲁棒性,并且在时间和空间开销方面是有效的

App通过Android操作系统级虚拟化进行自动登录功能安全测试(App’s Auto-Login Function Security Testing via Android OS-Level Virtualization)

在本文中,我们开发了VPDroid,这是一个为安全测试量身定制的透明Android osslevel虚拟化平台。使用VPDroid,安全分析师可以在虚拟电话中自定义不同的设备工件,例如CPU型号,Android ID和电话号码,而无需用户级别的API挂钩。VPDroid的隔离机制可确保虚拟电话中的用户模式应用程序无法检测到特定于设备的差异。为了评估Android应用程序对数据克隆攻击的敏感性,我们使用VPDroid来模拟234下载最多的应用程序的数据克隆攻击。我们在五种不同的虚拟手机环境上的实验表明,VPDroid的设备属性定制可以欺骗所有执行设备一致性检查的测试应用程序,例如Twitter,WeChat和PayPal。19家供应商已确认我们的报告为零日漏洞。我们的发现描绘了一个警示故事: 只有在客户端实施设备一致性检查仍然容易受到高级数据克隆攻击。

AndrODet: 一种自适应的Android混淆检测器(AndrODet: An adaptive Android obfuscation detector)

在本文中,我们提出了 AndrODet,一种检测 Android 应用程序中三种流行的混淆类型的机制,即标识符重命名、字符串加密和控制流混淆。 AndrODet 利用在线学习技术,因此适用于需要以连续方式运行的资源有限的环境。 我们使用来自恶意软件和良性应用程序的 34,962 个应用程序的数据集将我们的结果与批量学习算法进行比较。 实验结果表明,在线学习方法不仅能够在准确性方面与批量学习方法竞争,而且还可以节省大量时间和计算资源。 特别是,AndrODet 在标识符重命名检测方面的平均准确率达到 92.02%,在字符串加密检测方面达到 81.41%,在控制流混淆检测方面平均达到 68.32%。 此外,当应用程序可能被一种以上的技术混淆时,系统的整体准确率约为 80.66%。

ARM反汇编工具的实证研究(An Empirical Study on ARM Disassembly Tools)

在本文中,我们对 ARM 反汇编工具进行了首次综合研究。 具体来说,我们使用不同的编译器、编译选项和混淆方法构建了 1、896 个 ARM 二进制文件(包括 248 个混淆的二进制文件)。 然后,我们使用八种最先进的 ARM 反汇编工具(包括商业和非商业工具)对它们定位指令和函数边界的能力进行评估。 这两个是基本的,用于构建其他原语。 我们的工作揭示了一些尚未系统总结和/或证实的观察结果。 例如,我们发现 ARM 和 Thumb 指令集的存在,以及在函数调用和分支中重用 BL 指令给反汇编工具带来了严峻的挑战。 我们的评估揭示了最先进的拆卸工具的局限性,并指出了潜在的改进方向。 为了让社区参与进来,我们在 https://github.com/valour01/arm_disasssembler_study 上发布了数据集和相关脚本。

基于人工智能的黑盒代码去混淆、理解、改进和缓解(AI-based Blackbox Code Deobfuscation Understand, Improve and Mitigate)

在本文中,我们在三个关键方向上深化了基于 AI 的黑盒反混淆的状态:了解当前最先进的技术、对其进行改进和设计专用的保护机制。 特别是,我们为基于 AI 的黑盒反混淆定义了一个新颖的通用框架,其中包含先前的工作并突出显示关键组件; 我们首先指出代码反混淆的搜索空间对于基于模拟的方法(例如,先前工作中使用的 Monte Carlo Tres Search)太不稳定,并提倡使用稳健的方法,如 S-metaheuritics; 我们提出了新的优化的基于 AI 的黑盒反混淆器 Xyntia,它在成功率(尤其是在时间预算较小的情况下)方面明显优于以前的工作,同时完全不受最新的反分析代码混淆方法的影响; 最后,我们针对基于 AI 的黑盒反混淆提出了两种新颖的保护措施,以应对 Xyntia 的强大攻击

滥用 Android 运行时进行应用程序混淆(Abusing Android Runtime for Application Obfuscation)

研究 Android 混淆技术是理解和分析恶意应用程序的一项基本任务。 混淆技术已经被广泛研究用于市场应用,但从未用于智能手机固件中使用的预编译应用。 在本文中,我们描述了两种新的混淆技术,它们利用了汇编和 Dalvik 字节码之间的对偶性,据我们所知,这在以前从未被描述过。 我们还提出了这些混淆技术的检测方法。 我们将它们应用于供应商固件和市场应用程序,以评估它们在野外的使用情况。 我们发现,即使它们似乎还没有在野外使用,它们也完全实用

二进制代码相似度调查(A Survey of Binary Code Similarity)

二进制代码相似性方法比较两个或两个以上的二进制代码来识别他们的异同。比较二进制代码的能力使许多实际应用场景的源代码可能不可用,如补丁分析,错误搜索和恶意软件检测和分析。在过去的20年里,无数的二进制代码相似性方法已经提出,但研究领域尚未系统地分析。本文提出了第一个二进制代码相似度的调查。分析61二进制代码相似度方法,系统化的四个方面:(1)应用程序启用,(2)他们的方法特征,(3)方法是如何实现的,以及(4)基准和方法用来评估他们。此外,调查讨论的范围和起源,进化在过去的二十年里,前方的挑战。

用于 Android 恶意软件检测的基于动态鲁棒 DL 的模型(A Dynamic Robust DL-Based Model for AndroidMalware Detection)

作者提出了一种高度熟练的混合深度学习 (DL) 支持的智能多向量恶意软件检测机制。 所设计的方法利用卷积神经网络和双向长短期记忆 (BiLSTM) 来有效识别持久性恶意软件。 所提出的技术已通过公开可用的数据集、标准性能指标以及最先进的混合 DL 驱动架构和基准 DL 算法进行了全面评估。 此外,所提出的框架已经过交叉验证,并在时间效率和检测准确性方面都表现出良好的性能。

Android中优化,混淆和去混淆工具的比较研究(A Comparative Study on Optimization, Obfuscation, and Deobfuscation Tools in Android)

代码优化是一个程序转换过程,以使程序更有效地工作或消耗更少的资源。 代码混淆会转换程序并使其代码更难为人类理解,从而保护代码免受逆向工程。 反混淆是对混淆进行逆向工程。 优化和混淆在 Android 应用程序中被广泛使用。 R8 是 Android 构建过程的默认工具,负责所有代码压缩、混淆和优化。 本文对比分析了Android平台中优化、混淆、反混淆工具的功能。 除了 R8,本文介绍的其他工具还有 ReDex、Obfuscapk 和 DeGuard,它们分别是 Android 应用程序的优化、混淆和反混淆工具。 我们研究了这四种工具的特性,并通过实验比较了它们的性能。

LoRaWAN 的协议栈:被遗忘的风险目标(LoRaWAN’s Protocol Stacks: The Forgotten Targets at Risk)

在本报告中,我们展示了攻击者可以用来发现 LoRaWAN 堆栈中可利用漏洞的技术。 我们提出这些细节是为了强调堆栈开发人员或安全顾问可以使用相同的技术来保护堆栈并使 LoRaWAN 通信能够抵抗关键错误。

FIRMWIRE:蜂窝基带固件的透明动态分析(FIRMWIRE: Transparent Dynamic Analysis for Cellular Baseband Firmware)

为了填补这一空白,我们展示了 FIRMWIRE,这是第一个用于执行未修改的基带二进制固件的基带处理器的全系统仿真平台。 FIRMWIRE 提供基带专用 API 以轻松添加对新供应商、固件映像和安全分析的支持。 为了展示 FIRMWIRE 的可扩展性,我们支持 2 个供应商和 9 个手机型号的 213 个固件映像,允许执行和测试它们。 借助这些图像,FIRMWIRE 会自动发现和桥接内部基带 API,从而轻松注入协议消息。 使用这些入口点,我们选择了 LTE 和 GSM 协议进行模糊测试,并发现了 7 个可能导致远程代码执行的预身份验证内存损坏——其中 4 个以前是未知的。 我们在真实设备上通过无线方式重现了这些崩溃,证明了 FIRMWIRE 的仿真准确性。 FIRMWIRE 是一个可扩展的基带安全测试平台,我们将其作为开源发布给社区以供未来研究。

Binder 中的幽灵:Android 系统服务中的 Binder 事务重定向攻击(Ghost in the Binder: Binder Transaction Redirection Attacks in Android System Services)

本文提出了 Binder 事务重定向 (BiTRe) 攻击,其中攻击者诱导系统服务与定制的 Binder 服务器进行交易,然后从 Binder 服务器发起攻击——这是一个通常不受保护的方向。 我们通过枚举 BiTRe 中可利用的 Binder 接口来展示攻击面的规模,并发现攻击面随着 Android 发布版本的增长而增长。 在 Android 11 中,超过 70% 的 Binder 接口受 BiTRe 影响或可以在其中使用。 我们通过 (1) 构建一个原型系统来证明攻击的可行性,该系统可以自动生成可执行程序以到达攻击面的大部分,以及 (2) 识别一系列漏洞,这些漏洞被谷歌承认并分配了 10 个 CVE。

使用 multiDEX 和 SO 文件保护 android 应用程序免受逆向工程(Protection android app with multiDEX and SO files from reverse engineering)

我们提出了一种防止逆向工程方法的方法。 我们的目标是防止静态重新打包攻击,并在解密和加载应用程序时提供更高的效率。 我们介绍了基于虚拟机 (VM) 的 MultiDEX 和共享对象 (SO) 保护方法; 在这种方法中,我们使用了新的基于堆栈的本机代码系统。 它在虚拟机下提供了严格的级别保护。 它利用字节码的多个动态虚拟机保护来最小化开销。 我们保护 MutiDex 文件和 SO 文件的方法的显着优势是可用的系统很少,可以同时处理这两种类型的文件。

FuzzingDriver:增加模糊器代码覆盖率的缺失字典(FuzzingDriver: the Missing Dictionary to Increase Code Coverage in Fuzzers)

我们提出了一个名为 FuzzingDriver 的工具,用于从任何目标程序的代码库中为基于覆盖的灰盒模糊器 (CGF) 生成字典标记。 FuzzingDriver 不会为模糊测试作业增加任何开销,因为它是预先运行的。 我们通过对六个开源目标进行模糊测试将 FuzzingDriver 与 Google 词典进行了比较,我们发现 FuzzingDriver 在所有测试中始终实现更高的代码覆盖率。 我们还在 FuzzBench 上执行了 8 个基准测试,以展示使用 FuzzingDriver 的字典如何优于 6 个广泛使用的 CGF 模糊器。 在未来的工作中,调查 FuzzingDriver 的字典对提高 bug 覆盖率的影响可能很重要。 视频演示:https://www.youtube.com/watch?v=Y8j_KvfRrI8

BEACON:具有可证明路径修剪的定向灰盒模糊测试(BEACON : Directed Grey-Box Fuzzing with Provable Path Pruning资源

本文介绍了 BEACON,它可以以可证明的方式有效地将灰盒模糊器引导到路径的海洋中。 也就是说,在计算达到目标的抽象先决条件的轻量级静态分析的辅助下,我们可以在运行时修剪 82.94% 的执行路径,而分析开销可以忽略不计(ă5h),但要保证修剪后的路径必须是虚假的 目标。 我们已经实现了我们的方法 BEACON,并将其与漏洞再现应用场景中的五个最先进的(定向)模糊器进行了比较。 评估结果表明,BEACON 平均比现有的定向灰盒模糊器快 11.50 倍,它还可以提高传统覆盖引导模糊器 AFL、AFL++ 和 Mopt 的速度,以 6.31 倍重现特定错误,11.86 x 和 10.92x 加速,分别。 更有趣的是,当用于测试漏洞补丁时,BEACON 发现了 14 个现有 CVE 识别漏洞的不完整修复和 8 个新错误,其中 10 个可通过分配新的 CVE id 进行利用。

Fuzzware:使用精确的 MMIO 建模进行有效的固件 Fuzzing(Fuzzware: Using Precise MMIO Modeling for Effective Firmware Fuzzing)资料

我们评估了我们在合成和真实世界目标上的方法,包括总共 19 个硬件平台和 77 个固件映像。 与最先进的工作相比,FUZZWARE 实现了高达 3.25 倍的代码覆盖率,我们的建模方法将输入空间的大小减少了高达 95.5%。 合成样本包含针对各种硬件交互的 66 个单元测试,我们发现我们的方法是第一个自动通过所有这些的通用重新托管解决方案。 FUZZWARE 发现了 15 个全新的 bug,包括之前被其他作品分析过的目标中的 bug; 总共分配了 12 个 CVE。

这个鬼鬼祟祟的小猪进军安卓广告市场:滥用移动传感器进行隐蔽数据泄露(This Sneaky Piggy Went to the Android Ad Market:Misusing Mobile Sensors for Stealthy Data Exfiltration)

在本文中,我们介绍了一种新的攻击向量,它滥用广告生态系统来提供利用移动传感器的复杂和隐秘的攻击。 这些攻击不依赖于任何特殊的应用权限或特定的用户操作,并且由于对 WebView 中传感器数据的访问控制不当,会影响所有包含应用内广告的 Android 应用。 我们概述了如何使用运动传感器数据在两种不同的攻击场景中推断用户的敏感触摸输入(例如信用卡信息),即应用内和应用间数据泄露。 前者针对的是展示广告的应用,后者则影响设备上运行的所有其他 Android 应用。 更糟糕的是,我们发现了 Android 的应用程序隔离、生命周期管理和访问控制机制中的严重缺陷,即使在显示广告的应用程序被移到后台或被用户终止后,这些漏洞也会导致持久的数据泄露。 此外,由于应用内广告可以“搭载”应用核心功能的权限,它们还可以从摄像头、麦克风和 GPS 等受保护的传感器获取信息。 为了对这一新兴威胁进行全面评估,我们对官方 Android Play 商店中可用应用中显示的广告进行了大规模的端到端动态分析。 我们的研究表明,野外的广告已经在访问和泄露从运动传感器获得的数据,因此强调需要更严格的访问控制策略和隔离机制。

通过无效引导知识推理的自动固件仿真(Automatic Firmware Emulation through Invalidity-guided Knowledge Inference)资料

由于硬件和固件之间的紧密耦合,为微控制器模拟固件具有挑战性。 这极大地阻碍了动态分析工具在固件分析中的应用。 最先进的工作通过观察未知外设的访问模式自动建模未知外设,然后在访问未知外设寄存器时利用启发式计算适当的响应。 然而,我们凭经验发现,这种方法和相应的启发式方法通常不足以模拟固件。 在这项工作中,我们提出了一种称为 µEmu 的新方法来模拟具有未知外围设备的固件。 与试图为每个外围设备构建通用模型的现有工作不同,我们的方法学习如何正确模拟各个外围设备接入点的固件执行。 它将图像作为输入,并通过将未知的外围寄存器表示为符号来象征性地执行它。 在符号执行期间,它推断规则以响应未知的外围访问。 这些规则存储在知识库中,在动态固件分析期间会引用该知识库。 µEmu在没有任何人工辅助的情况下,在外围驱动的一组单元测试中达到了95%的通过率。 我们还使用真实世界的固件样本评估了 µEmu,并发现了新的错误。

PGFUZZ:机器人车辆的策略引导模糊测试(PGFUZZ: Policy-Guided Fuzzing for Robotic Vehicles)

在本文中,我们介绍了 PGFUZZ,这是一种策略引导的模糊测试框架,它验证 RV 是否遵守涵盖用户命令、配置参数和物理状态的已识别安全和功能策略。 PGFUZZ 通过具有时间约束的时间逻辑公式表达所需的策略,作为对分析系统进行模糊测试的指南。 具体来说,它生成模糊输入,以最小化距离度量,以测量 RV 当前状态与策略违规的“距离”。 此外,它使用静态和动态分析将模糊测试工作集中在那些影响任何已执行策略的“真实值”的命令、参数和环境因素上。 这两种技术的结合使 PGFUZZ 显着提高了模糊测试过程的效率。我们在三个 RV 控制程序 ArduPilot、PX4 和 Paparazzi 上使用 56 个独特的策略验证 PGFUZZ。 PGFUZZ 发现了 156 个以前未知的错误,其中 106 个已被其开发人员承认。

预防和检测 Android 上的状态推理攻击(Preventing and Detecting State Inference Attacks on Android)

在这项工作中,我们展示了 Android 平台如何仍然受到状态推理攻击的影响。 我们系统地扩展了攻击面,我们设计了一个新的自动框架,发现了 18 个新的易受攻击的 API,这些 API 泄露了敏感信息,影响了 Android 8.1 和 9。作为第二个贡献,我们描述了恶意应用程序中的轮询行为,更重要的是,良性应用程序 ,发现允许它们正确分类的差异。 我们利用这些发现来设计和实现一种新的设备检测机制,即使在利用未知的易受攻击的 API 时,也能从根本上阻止状态推断攻击,而且开销可以忽略不计,而且不会牺牲可用性。

SymQEMU:二进制文件的基于编译的符号执行(SymQEMU: Compilation-based symbolic execution for binaries)

我们介绍了 SymQEMU,这是一种将基于编译的符号执行应用于二进制文件的新方法。 我们的评估表明,SymQEMU 明显优于最先进的二进制符号执行器,甚至跟上基于源的技术。 此外,SymQEMU 很容易扩展到许多目标架构,只需要几行代码即可支持 QEMU 可以处理的任何架构。 最后,我们通过在经过大量测试的 libarchive 库中发现以前未知的内存错误来展示 SymQEMU 的实际用途。