-
-
[原创]对某恶意app的简单分析
-
发表于:
2016-3-2 17:43
11265
-
好吧,这个app其实是一个钓鱼网站拿下了的,钓鱼网站当然已经沦陷,网站源码到手,发现钓鱼app,服务器到手。但是本着学习的态度,按自己的理解分析了恶意app,如果说错了,请指正,小弟就这里班门弄斧了。
拿到apk第一件事情,就是运行看下他的行为,然而很无情地被360给杀掉了。于是关了360了,在电脑上安装一个安卓模拟器。
安装完是一个中国移动图标的应用,当我们点击打开的时候,神奇的一慕出现了。
申请屏幕控制权限,点击激活之后,发现.....................
toast了一个字符串,骚年别急,你真的以为他是卸载了?但是我们的确看不见app了
这种低劣的欺骗手段怎么能骗得了我们,果断打开apkkiller分析,apkkiller里面集成了dex2jar,adb,apktool等工具,还是蛮顺手的。
载入之后发现不能还原成java,那没办法,我们硬着头皮上就是了(代码做了干扰,但是我很菜,暂时没空去研究怎么去干扰,不过不影响我们的分析)
3个activity,7个receiver,3个service,以及后面许许多多的权限 READ_SMS(读短信),SEND_SMS(发短信)。首先看下配置信息:
3个activity,7个receiver,3个service,以及后面许许多多的权限 READ_SMS(读短信),SEND_SMS(发短信)。首先看下配置信息:
1.隐藏方式
看到程序的入口,第一个运行的activity,里面做了什么?我们进去看下,(当然是smali代码,不是java,代码相当长,逆向大哥可以去看看,只截取关键代码)
里面一个函数a值得注意,
调用getPackManger方法获取一个tPackManger实例,然后调用了MyApplication类里面的b函数,用tPackManger调用getComponentEnabledSetting方法。
把结果传回V2,当v2等于0的时候,跳到cond_0
Cond_0里面主要是setComponentEnabledSetting,里面传入参数,我们查看官方api得知他们的含义
跟踪参数:
V2,v3的值分别是 1,2。结合api,我么可得知
那么还原的源代码大概就是:
p.setComponentEnabledSetting(getComponentName(),
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,PackageManager.DONT_KILL_APP);
里面还有一些goto逻辑,不是很复杂,分析出来的大致代码是
PackageManager packageManager = getPackageManager();
ComponentName componentName = new ComponentName(this, StartActivity.class);
int res = packageManager.getComponentEnabledSetting(componentName);
if (res == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT
|| res == PackageManager.COMPONENT_ENABLED_STATE_ENABLED) { packageManager.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);
} else { packageManager.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_DEFAULT,
PackageManager.DONT_KILL_APP);
}
一段隐藏图标的代码,此后还开启了一个后台服务和一系列BroadcastReceiver(广播接收器)。
[ATTACH]103424&stc=1&d=1456911190[/IMG]
总结下mainactivity的主要事件就是隐藏图标,并toast”手机版本不兼容........,,以卸载”来迷惑用户,其实在后台偷偷的开启了一个服务,服务是在后台看不见的,会偷偷的运行。
2.行为分析
跟进服务,跟踪到
果然是contentprovider用来获去短信内容,包括
等等,发送人,内容等等信息。同样的还会获取手机联系人。继续
为每件业务开了独立线程。当然还有Mainservice里面也是获取各个铭感信息,并且申请权
还有这么多广播接收器,看字面意思就知道检测短信,网络,电话等等实时的变化。后面还有很多很多类,
(邮件的一些设置)
其中一些比较铭感的字符引起我注意,顺藤摸瓜,继续跟踪
这个类里面主要是作者的测试代码,包括判断安卓版本之类的,还有
果然最后还是被我找到了惊喜。
其中还有一些接收控制者指令做对应的操作,代码比较冗余,就没看了。
3.总结
这是一款安卓木马,主要收集本机的一些信息,比如短信,手机联系人等等发送到控制者的163邮箱。同时还接受控制者的指令(控制方式为接受短信,然后自动删除控制者发出的指令短信),比如锁屏之类的。其实抓个包,也许就能看到邮箱的密码。(ps:邮箱我并没有登陆成功,可能上次服务器被搞之后,作者改了,不过查到号码是重庆人。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)