乐于分享
好东西不私藏

通过修改axml文件Anti-analysis的安卓恶意样本一例

通过修改axml文件Anti-analysis的安卓恶意样本一例

安卓恶意代码为对抗取证与分析,会利用混淆、加壳、加密等机制,其中针对逆向工具的对抗(Anti-Analysis)也是其常用的手法。

今天的样本就是很典型的一例,实践中发现这种处理手法的样本有不少,以前都是偷懒能反编就算了,知其然不知其所以然。想起来前阵子绿盟科技李志昕的一篇恶意代码分析报告中,提到了同样的处理方法(http://blog.nsfocus.net/xaingce-apk-sample-analyses/那么今天来实践一下。

0x01.异常情况

文件: xiangce.apk

大小: 230353 字节

MD5:51A98BC86F712A3EB4882DB83DA3BEE0

SHA1:AF39BF88CBCE5059E47264C8EF24F74C1AB2B7D0

使用AndroidKiller打开,会有异常报错。

JEB打开,可以反编译,仍然报错,同时查看AndroidManifest.xml的时候是空的。


那么到底是什么情况造成了这种异常呢?

0x02. decode

Win7环境下:

java -jar apktool-cli.jar d -f -r -s -o tmp/xaingce tmp/xaingce.apk

apktool-cli.jar下载:

链接: http://pan.baidu.com/s/1i4oWc2D 密码: nktm

命令完成以后,生成了名为xiangce的目录。

注:apktool-cli.jar需要用Apktool编译生成

官网说明:

How to Build Apktool from source

Apktool is a collection of 1 project,containing 4 sub-projects and a few dependencies.

   brut.apktool.lib – (Main, all the Library code)

   brut.apktool.cli – The cli interface of the program

   brut.j.dir – Utility project

   brut.j.util – Utility project

    brut.j.common- Utility project

The main project can be found below

下载地址https://github.com/iBotPeaches/Apktool

Requirements

   JDK (1.7)

   git

编译步骤:

We use gradle to build. It’s pretty easy.First clone the repository.

    1.gitclone git://github.com/iBotPeaches/Apktool.git(下载源码)

    2.cd Apktool(进入目录)

    3.For steps 3-5 use ./gradlew for unixbased systems or gradlew.bat for windows.

    4.[./gradlew][gradlew.bat] build fatJar -Builds Apktool, including final binary.

    5.Optional (You may build a Proguard jar)[./gradlew][gradlew.bat] build fatJar proguard

After 1-2 minutes you should have a jarfile at

./brut.apktool/apktool-cli/build/libs/apktool-xxxxx.jar

0x03AndroidManifest.xml修改

此时AndroidManifest.xml还不是明文格式,而是axml格式。我们回顾AndroidKiller一开始的报错,不难发现一个问题,本来该是0x00080003,结果读取出来是0x00080000。那么这串字符代表什么呢?二进制XML文件魔数为0x000800030,也就是说有人人为做了修改,目的就是为了让反编译工具报错,无法继续执行。

那么只需要将第1个字节的00修改为03即可。


但是,修改不止这一处:

0x000000200开始的4个字节内容为style内容相对于sting chunk开头位置的偏移量,因为style个数为0,所以此处的值为0x00000000才对。但样本的AndroidManifest.xml此处的值被改为0x00000003


除了手工修改以外,我们还可以借助010editor来更快捷的定位和修改。配合AXML模板,修改效率很高。模板下载: https://github.com/tomken/010_template_for_android

下图红色的两处修改以后,测试下是否可以解决异常问题。

0x04重打包

java -jar apktool-cli.jar  b -f -o tmp/xiangce_ok.apk  tmp/xiangce

tmp/xiangce重打包成apk

这时候我们再用AndroidKiller打开xiangce_ok.apk,发现AndroidManifest.xml文件可以正常反编译,但仍然存在其他错误,问题都出在xml文件上。

对所有这些xml文件都做刚才同样的修改处理,然后重新打包,再次测试。OK,搞定了~

0x05总结

这个样本是利用apk的容错机制,修改AndroidManifest.xml等文件,达到anti-analysis的目的。

JEB可以反编译,但是我们也需要知道原因,才能顺利的完成回编译。

尽管还存在一些问题,AndroidKiller确实挺好用的,未来可期。

大家可以自己修改试试看!今晚11点前睡觉!祝大家好梦!

本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » 通过修改axml文件Anti-analysis的安卓恶意样本一例

评论 抢沙发

5 + 8 =
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
×
订阅图标按钮