Android锁屏勒索病毒分析

0x01 勒索病毒简介

勒索病毒是一种特殊的恶意软件,又被人归类为“阻断访问式攻击”(denial-of-access attack),其与其他病毒最大的不同在于手法以及中毒方式。其中一种勒索软件仅是单纯地将受害者的电脑锁起来,而另一种则系统性地加密受害者硬盘上的文件。所有的勒索软件都会要求受害者缴纳赎金以取回对电脑的控制权,或是取回受害者根本无从自行获取的解密密钥以便解密档案。

天下攘攘,皆为利往。自移动市场爆发式增长后,部分病毒制作者也瞄准这一块肥肉,针对性地开发各式各样伪装成辅助类的恶意软件,通过论坛、贴吧、Q群等途径广撒渔网,坐等受害者交付赎金。

0x02 样本信息

样本来源:ANVA反病毒联盟
应用名:刷赞小能手
包名:com.xcgdmmsj
SHA1:548B46CDF7D87849E3527AF87FE10A6AD29FC758

img

0x03 恶意行为分析

3.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等防逆向手段。

img

3.2 诱导用户激活设备管理器及重置PIN密码

入口处使用ADRTLogCatReader记录软件运行期间所产生的日志,然后调用activiteDevice()。

@Override 
public void onCreate(Bundle arg6) {
    ADRTLogCatReader.onContext(this, "com.aide.ui");
    super.onCreate(arg6);
    this.activiteDevice();
}

activiteDevice()中通过隐式intent弹出激活设备管理器界面,然后反射调用MyAdmin()。

img

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

img

PIN密文:
img

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

img

04-27 18:31:56.700 5960-5960/me.yaorc.myapplication I/MainActivity: The plaintext is ->> 3366

3.3 置顶弹窗,勒索用户

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

img

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

img

04-27 18:31:56.700 5960-5960/me.yaorc.myapplication I/MainActivity: The plaintext is ->> 加q2100311719

查看点击事件,逻辑是判断用户输入的内容,密钥正确则调用removeView()删除置顶弹窗并结束线程。解密算法与解PIN是一致的,都是获取raw下某个文件的内容后调用getsss()进行解密。此处的解锁密码为336699。

img

04-27 18:31:56.700 5960-5960/me.yaorc.myapplication I/MainActivity: The plaintext is ->> 336699

至此,该病毒的逻辑已理顺。通过伪装成"刷赞"类软件进行传播,运行后诱导用户激活设备管理器,然后调用API修改PIN密码和置顶要输入正确密钥才能取消的弹窗,在弹窗预留联系方式供用户联系制作者,对用户进行勒索。

在代码中发现另外一种随机密钥,但没用上。回到s服务的onCreate()方法,得知锁机码生成公式为:随机数+1010

img

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

img
img

img

解密锁机码,用于判断。

img

0x04 病毒清理及预防

4.1 前提:手机已root,开启usb调试。

  • 连接配置好adb环境的电脑,通过dumpsys命令 adb shell dumpsys activity top获取包名

    img

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

    img

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

    img

  • 最后在设置里取消激活设备管理器和卸载软件,重启手机即可。

4.2 手机无Root,未开启USB调试。建议备份数据后重新刷机。

4.3 预防建议

  • 去正规的应用市场下载APP;
  • 预装手机杀毒软件,锁机类病毒大部分能在运行前揪出来;

0x05 总结

  • 这一类恶意软件通常会伪装成辅助软件,如刷钻、刷赞、抢红包。
  • 诱导用户激活设备管理器,利用WindowManager和DeviceAdminReceiver实现置顶弹窗和PIN密码更改,加上震动、播放不良BGM等恶搞操作对不幸中招的用户施加心理压力。
  • 据各大安全公司的报道,勒索软件从木马制作、传播、收款已经发展成一条较为完整的黑色产业链。可以从传播源、收款账号配合社工进行溯源,找到这条船的掌舵手。

相关文章分享

猜你喜欢

转载自blog.csdn.net/yaorc911/article/details/80590380