Android样本Repack重打包检测思路

2023-10-14 08:59

本文主要是介绍Android样本Repack重打包检测思路,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 什么是Android样本重打包,为什么要检测重打包

(1)apk是zip,很容易做repack
(2)repack后,被抄袭,redirect ad,或者插入malicious payloads
(3)repack带来的影响、问题:

  • 游戏,被repack后,能做很多事情
  • repack银行app后,可能直接转移用户的资金
    (4)repack的定义:两个APP,如果代码相似度超过80%,并且是由不同的开发者签名,则可以被认为是repack(参考1)
    (5)app中有大量SDK代码。有的SDK代码比app核心代码多,所以app相似度就高。所以检测时最好能做SDK移除
    (6)作者发现,数据集中,被多次repack的样本,还都release到google play了
    参考1是一篇介绍该领域研究的综述,介绍非常详细全面,值得细读。

用JEB打开Repack的样本,如果样本没有严重的混淆或者加壳,也能看到Repack后的样本,被插入了一些(恶意)的代码,如下图所示:

在这里插入图片描述

这是笔者曾经发现并且报给 Google Security 团队的恶意样本。

2. 检测思路1:manifest tag

manifest中如果有类似 “platformBuildVersionName___6.0-2704002” 的tag,就说明是被重打包过。 应为这样的tag是一个重打包工具apktool会默认加上的,可以通过大批量manifest文件的统计能找出一大批类似的标记。apktool做样本重打包时,会调用aapt,aapt就会加上这样的tag。所以这种检测思路,是不会有FP的,但是肯定有FN。因为这个tag是可以被抹掉的。

3. 检测思路2:string_ids中的字符串的偏移位置

参考2提到了一种方法,和检测思路1类似,也是找到了样本重打包的标记。这种方法是解析DEX文件结构,string_ids中的字符串的偏移位置(地址),在没有repack过的app中是有序的,在repack后的app中是无序的。

在这里插入图片描述

4. 检测思路3:相似性icon,code

这种思路,是使用LSH之类的来计算代码相似性,再根据开发者证书不同,来进行判断。如果代码相似,并且又插入了敏感权限,就可能是潜在的恶意代码injection。

5. 总结

Android样本重打包检测,可以发现恶意代码注入的情况。检测思路是根据manifest找到tag,或者DEX文件字符串地址偏移顺序。大多检测思路都是根据相似性来实现的。当然还能使用机器学习之类的做检测,或者直接根据特征向量做比对/相似性检索。也可以研究不同的重打包工具,做重打包后的统计分析来寻找tag。根据tag来检测,FP为0但FN应该会比较高。相似性的思路,一定会有FP(比如开发者换证书)。

参考

  1. Li Li etc. Rebooting Research on Detecting Repackaged Android Apps: Literature Review and Benchmark. 2019

  2. Hugo Gonzalez etc. Exploring Reverse Engineering Symptoms in Android apps

这篇关于Android样本Repack重打包检测思路的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/209466

相关文章

C++ 检测文件大小和文件传输的方法示例详解

《C++检测文件大小和文件传输的方法示例详解》文章介绍了在C/C++中获取文件大小的三种方法,推荐使用stat()函数,并详细说明了如何设计一次性发送压缩包的结构体及传输流程,包含CRC校验和自动解... 目录检测文件的大小✅ 方法一:使用 stat() 函数(推荐)✅ 用法示例:✅ 方法二:使用 fsee

Android DataBinding 与 MVVM使用详解

《AndroidDataBinding与MVVM使用详解》本文介绍AndroidDataBinding库,其通过绑定UI组件与数据源实现自动更新,支持双向绑定和逻辑运算,减少模板代码,结合MV... 目录一、DataBinding 核心概念二、配置与基础使用1. 启用 DataBinding 2. 基础布局

Android ViewBinding使用流程

《AndroidViewBinding使用流程》AndroidViewBinding是Jetpack组件,替代findViewById,提供类型安全、空安全和编译时检查,代码简洁且性能优化,相比Da... 目录一、核心概念二、ViewBinding优点三、使用流程1. 启用 ViewBinding (模块级

OpenCV实现实时颜色检测的示例

《OpenCV实现实时颜色检测的示例》本文主要介绍了OpenCV实现实时颜色检测的示例,通过HSV色彩空间转换和色调范围判断实现红黄绿蓝颜色检测,包含视频捕捉、区域标记、颜色分析等功能,具有一定的参考... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

Python程序打包exe,单文件和多文件方式

《Python程序打包exe,单文件和多文件方式》:本文主要介绍Python程序打包exe,单文件和多文件方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python 脚本打成exe文件安装Pyinstaller准备一个ico图标打包方式一(适用于文件较少的程

Maven项目打包时添加本地Jar包的操作步骤

《Maven项目打包时添加本地Jar包的操作步骤》在Maven项目开发中,我们经常会遇到需要引入本地Jar包的场景,比如使用未发布到中央仓库的第三方库或者处理版本冲突的依赖项,本文将详细介绍如何通过M... 目录一、适用场景说明​二、核心操作命令​1. 命令格式解析​2. 实战案例演示​三、项目配置步骤​1

Spring Boot项目打包和运行的操作方法

《SpringBoot项目打包和运行的操作方法》SpringBoot应用内嵌了Web服务器,所以基于SpringBoot开发的web应用也可以独立运行,无须部署到其他Web服务器中,下面以打包dem... 目录一、打包为JAR包并运行1.打包为可执行的 JAR 包2.运行 JAR 包二、打包为WAR包并运行

Python将字库文件打包成可执行文件的常见方法

《Python将字库文件打包成可执行文件的常见方法》在Python打包时,如果你想将字库文件一起打包成一个可执行文件,有几种常见的方法,具体取决于你使用的打包工具,下面就跟随小编一起了解下具体的实现方... 目录使用 PyInstaller基本方法 - 使用 --add-data 参数使用 spec 文件(

Python MCPInspector调试思路详解

《PythonMCPInspector调试思路详解》:本文主要介绍PythonMCPInspector调试思路详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋... 目录python-MCPInspector调试1-核心知识点2-思路整理1-核心思路2-核心代码3-参考网址