Android锁机病毒分析
0x01 样本信息
样本来源:ANVA反病毒联盟
应用名:刷赞小能手
包名:com.xcgdmmsj
SHA1:548B46CDF7D87849E3527AF87FE10A6AD29FC758

0x02 恶意行为分析
2.1 应用清单详情
从manifest.xml可得知该应用申请了发送短信、弹窗和震动等权限。分别注册了bbb和MyAdmin两个接收器,用于接收开机广播和激活设备管理器。
<?xml version="1.0" encoding="utf-8" standalone="no"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.xcgdmmsj" platformBuildVersionCode="23" platformBuildVersionName="6.0.1">
<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<uses-permission android:name="android.permission.VIBRATE"/>
<application android:debuggable="false" android:icon="@drawable/icon" android:label="刷赞小能手">
<activity android:name=".M" android:theme="@style/AppTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<service android:name="s"/>
<receiver android:name="bbb">
<intent-filter android:priority="2147483647">
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
<receiver android:description="@string/hello" android:name=".MyAdmin">
<meta-data android:name="android.app.device_admin" android:resource="@xml/my_admin"/>
<intent-filter>
<action android:name="android.app.action.DEVICE_ADMIN_ENABLED"/>
</intent-filter>
</receiver>
</application>
</manifest>
应用结构很简洁,没有涉及加固、混淆、加载so等防逆向手段。

2.2 诱导用户激活设备管理器及重置PIN密码
入口处使用ADRTLogCatReader记录软件运行期间所产生的日志,然后调用activiteDevice()。
@Override
public void onCreate(Bundle arg6) {
ADRTLogCatReader.onContext(this, "com.aide.ui");
super.onCreate(arg6);
this.activiteDevice();
}
activiteDevice()中通过隐式intent弹出激活设备管理器界面,然后反射调用MyAdmin()。

跟入MyAdmin(),继承了DeviceAdminReceiver(设备管理主类)并重写onEnabled(),先从resource/raw/pin.txt取出密文,通过M.getsss()进行解密,再调用resetPassword()重设PIN密码。同时反射启动s服务。


PIN密文:

解密算法:利用Base64加密自定义字符串转换的字节数组,使用subSequence()截取字符串得到一个新的字符序列,再用Base64进行解密得到明文。此处解密出的PIN密码为3366。

2.3 置顶弹窗,勒索用户
跟入s服务,在onCreate()中初始化弹窗,type设置为2010(用户点击Home键也没反应),再调用addView()置顶弹窗。

在界面留下解锁联系方式,解密内容为:加q2100311719

04-27 18:31:56.700 5960-5960/me.yaorc.myapplication I/MainActivity: The plaintext is ->> 加q2100311719
查看点击事件,逻辑是判断用户输入的内容,密钥正确则调用removeView()删除置顶弹窗并结束线程。解密算法与解PIN是一致的,都是获取raw下某个文件的内容后调用getsss()进行解密。此处的解锁密码为336699。

然后采取DES算法通过密钥"bah"解密内容"c29fe56fa59ab0db",通过DU()类初始化得到第二个密钥,对锁机码进行加密,保存在/data/data/com.xcgdmmsj/shared_prefs/bah.xml中



解密锁机码,用于判断。

0x03 病毒清除
3.1 前提:手机已root,开启usb调试。
-
连接配置好adb环境的电脑,通过dumpsys命令 adb shell dumpsys activity top获取包名

-
进入su模式,再使用am force-stop com.xcgdmmsj便可强制杀掉这个进程。

-
此时置顶弹窗已消失,但PIN密码也被重置了,需要删除/data/system/password.key

-
最后在设置里取消激活设备管理器和卸载软件,重启手机即可。
3.2 手机无Root,未开启USB调试。建议备份数据后重新刷机。
0x04 总结
- 这一类恶意软件通常会伪装成辅助软件,如刷钻、刷赞、抢红包。
- 诱导用户激活设备管理器,利用WindowManager和DeviceAdminReceiver实现置顶弹窗和PIN密码更改,加上震动、播放不良BGM等恶搞操作对不幸中招的用户施加心理压力。
- 据各大安全公司的报道,勒索软件从木马制作、传播、收款已经发展成一条较为完整的黑色产业链。可以从传播源、收款账号配合社工进行溯源,找到这条船的掌舵手。

浙公网安备 33010602011771号