首页
社区
课程
招聘
[原创]简单的分析
2012-12-19 23:44 16134

[原创]简单的分析

2012-12-19 23:44
16134
对android的逆向分析一般如下所示。首先是观察其权限。如下


接着查看接收器,服务等等,如下图


具体步骤如下:首先从BootReceiver入手,主要是利用android.intent.action.PHONE_STATE以及android.intent.action.BOOT_COMPLETED这两个动作启动ManageService。即当手机重启或者电话状态改变时启动服务ManageService。

转移到ManageService服务,代码如下

其中b 为定时器,判断条件为j.a(this.a, j.l(this)) 。转到类j类查看器函数a作用。转跳以后发现j类中函数a的个数很多,我们在定位函数a时需要借助一些条件进行排除。
首先j.a(this.a, j.l(this))的参数个数为2,j.l的返回类型为string。通过以上一些条件,我们可以确定j.a函数的代码。而参数this.a根据定义为context类型。

从而我们可以定位出函数j.a。代码如下

我们可以确定下来该判断条件就是是否存在该安装包,如果存在则停止。不存在则启动服务startService(new Intent(this, Providers.class))。转跳到Providers,其部分代码如下

可以看到主要是要对j.a进行判断,可以看到,这里面的两个参数都是string类型的,据此我们定位到j.a。代码如下。可以看到jd-gui解析失败。大体可以看到是执行linux指令

可以利用smali文件进一步判断,其smali代码如下

主要的作用是将assets中的config.dat(其本身为apk)变为config.apk,并且安装。

接着查看Providers。其构造函数onCreate 如下

其中比较重要的是(new n(this.a).a()),(new e(this.a, this.b).a()) 这两个条件。定位到n.a()函数,其代码如下。


可见n.a()函数主要是对crptdat0进行操作,利用魔法字可以很容易的判断其文件格式,发现标识符为elf,为so文件。使用IDA打开,观察strings table可以快速判断其文件的主要作用,该文件的作用进行root.

定位到e.a()函数

充分说明需要根据参数个数,类型,返回值等进行准确定位。同时对于附件中的文件我们也应该仔细分析
利用IDA分析assets中的so文件crptdat1,查看字串表,发现其主要作用是查看是否存在线程数限制(该漏洞的主要原理是因为线程数超过范围),如果没有限制,则利用srptdat0来进行root.


查看附件中的config.dat文件(本身为apk文件),进行分析。打开APK文件,我们首先观察期权限,以及是否存在图标等情况。如下图可见,说明该文件不存在图标,而且开机自启动,具有很多敏感权限,以服务的形式运行。

接着看代码,比较快捷的办法直接是查看敏感函数。这里我们可以看到它是可以静默发送彩信的。

上传IMSI等信息

其他的各位自己接着看。主要是利用定时器自动上传信息,推送广告,下载恶意软件等等

样本附上,希望起到抛砖引玉的作用。 9be49854ceb927aafd7d425885802b95.apk

[培训]《安卓高级研修班(网课)》月薪三万计划,掌 握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

上传的附件:
收藏
点赞3
打赏
分享
最新回复 (16)
雪    币: 63
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
bluegb 2012-12-20 00:04
2
0
前排学习....多谢LZ
雪    币: 1413
活跃值: (401)
能力值: (RANK:270 )
在线值:
发帖
回帖
粉丝
Claud 6 2012-12-20 09:31
3
0
remount /system的目的是什么?
config.dat里面又有什么?
雪    币: 74
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
windflyer 2012-12-20 09:43
4
0
remount 的目的是让system目录可写吧
雪    币: 247
活跃值: (42)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
arsusanh 2012-12-20 22:54
5
0
有点意思,呵呵。
雪    币: 90
活跃值: (106)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
羽风的星 1 2012-12-20 23:09
6
0
其实最后两张是config的图片
雪    币: 1413
活跃值: (401)
能力值: (RANK:270 )
在线值:
发帖
回帖
粉丝
Claud 6 2012-12-20 23:17
7
0
看漏了。谢谢~
雪    币: 11
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hizhh 2012-12-21 20:04
8
0
pref.dat解密,里面存了一些联网网址
DDPackageName=com.android.providers.manage
ORName=profile
RName=synch
UploadServer=http://xol5.com/03/
UploadServer=http://zo4j.com/02/
TaskProxy=http://76.73.1.58:6080/AIPlan_APP/MSServlet
TaskProxy=http://76.73.1.58:7080/AIPlan_APP/MSServlet
TaskProxy=http://76.73.1.58:8080/AIPlan_APP/MSServlet
FeedProxy=http://bu7k.com/U3_man.jsp
FeedProxy=http://yo5k.com/Conver03_go.jsp
FeedProxy=http://te6a.com/Bc/Mj001.jsp
雪    币: 67
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
VicentWJ 2012-12-22 00:19
9
0
感谢楼主的分享,这对于分析某些apk提供了一个基本的思路,并且其中自动安装apk自动root的方法也非常的好。

但是我这里补充一点我个人的一些看法:对于大型的apk,代码量非常庞大,并且源码错综复杂,如此分析追踪流程非常的费力,而且非常容易接近重点部分。

我个人认为,即使现在大型的应用程序都是用了代码混淆,源码很难分析,但是我们可以利用源码混淆本身的限制,(例如,资源文件无法做手脚)来进行技巧性的快速定位。

当然,我也是新手, 只是在楼主的基础上发表一些个人的看法,对楼主的奉献精神表示非常的崇敬和感谢!
雪    币: 90
活跃值: (106)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
羽风的星 1 2012-12-24 01:00
10
0
其实只是为了展示一下基本的分析流程,真实的分析过程往往比较迅速,比较好的办法是敏感函数以及字符串的的快速定位,资源文件在APK文件中很多字串以及图标,以及音频文件等等,是展示给感染用户的一节界面的资源集合,本质上和其他正常文件无二,当然也会有些把恶意的URL隐藏其中,但是前提是没有加密并且已经被判断为恶意url。此外,混淆虽不能对资源文件做手脚,但是对资源文件的调用却已经混淆,所以资源文件的意义往往是启发式或者后台的可疑行鉴别的使用。个人看法,仅供参考。
雪    币: 90
活跃值: (106)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
羽风的星 1 2012-12-24 01:01
11
0
其实只是为了展示一下基本的分析流程,真实的分析过程往往比较迅速,比较好的办法是敏感函数以及字符串的的快速定位,资源文件在APK文件中很多字串以及图标,以及音频文件等等,是展示给感染用户的一节界面的资源集合,本质上和其他正常文件无二,当然也会有些把恶意的URL隐藏其中,但是前提是没有加密并且已经被判断为恶意url。此外,混淆虽不能对资源文件做手脚,但是对资源文件的调用却已经混淆,所以资源文件的意义往往是启发式或者后台的可疑行鉴别的使用。个人看法。
雪    币: 761
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
赤子Anatta 2013-1-21 15:05
12
0
好厉害!这些网址是怎么解出来的?
雪    币: 761
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
赤子Anatta 2013-1-21 15:08
13
0
嗯,这个是当年很火的droiddream病毒,楼主分析的比较详细也很精彩!实际上,可以用脚本扫描快速定位恶意模块,但是这是最基本的分析流程的方法,也最可靠。我等分析人员也需要努力学习!
最后,向楼主表示感谢!
雪    币: 1546
活跃值: (1461)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ndaye 2013-7-27 11:01
14
0
初入安卓,还不太懂!
感谢楼主分享!
雪    币: 250
活跃值: (251)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
OnlyEnd 2014-3-19 22:57
15
0
感谢楼主提供的思路。学习了
雪    币: 184
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
黑鹰十月 2014-12-8 14:20
16
0
感谢楼主提供的思路
雪    币: 223
活跃值: (32)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
新小白 2018-10-10 10:19
17
0
新手上路,学到了,谢谢楼主
游客
登录 | 注册 方可回帖
返回