导语:恶意程序并不是根据控制端发送的不同指令执行不同窃取用户隐私数据的操作,而是从服务端获取代码进行动态加载,实现无声地模拟与广告网站的自动交互包括模拟点击和输入高级服务订阅的授权代码,窃取受害者的短信、账号、设备信息并上传至服务器。
导读:何为“间谍”?《说文解字》解释道:“谍,军中反间也。”使用反间计当然需要三寸不烂之舌,这是“谍”的本义。“间”怎么会跟“谍”联系起来了呢?“间”本来写作“闲”,清代文字训诂学家段玉裁为《说文解字》所作的注释说:“开门月入,门有缝而月光可入。”因此“间”的本义就是门缝,泛指缝隙,有缝隙就可以使用反间计了,故称“间谍”。
这期我们分析的间谍软件较上期分析间谍软件RBMusic有较大不同,恶意程序并不是根据控制端发送的不同指令执行不同窃取用户隐私数据的操作,而是从服务端获取代码进行动态加载,实现无声地模拟与广告网站的自动交互包括模拟点击和输入高级服务订阅的授权代码,窃取受害者的短信、账号、设备信息并上传至服务器。
1.样本信息
攻击者将恶意代码集成到应用的广告插件中,所以这四个样本的恶意行为基本相同,都具有获取服务端代码进行动态加载的远控行为和窃取用户短信、账号、设备信息的窃取隐私行为。但是他们的服务器地址有所不同。
表1-1 样本信息
2.程序运行框架
2.1流程图
恶意软件只攻击目标国家。大多数受感染的应用程序都包含一个移动国家代码列表(MCC),但它会把美国或加拿大排除在外。受害者必须使用其中一个国家的SIM卡才会继续执行动态加载DEX文件操作。程序开始从服务器获取动态加载DEX文件的代码,加载的类名、函数名以及参数。申请开启通知权限,启动监听短信通知服务,如果程序接收到短信通知会发送一个广播。接着加载DEX文件,在DEX文件中注册接收短信信息的广播,上传用户账户以及设备信息,并解析从服务端返回的数据包括需要加载的订阅高级服务的网页url、授权代码、匹配短信信息的正则表达式、以及模拟点击的javascript代码等。然后加载网页和javascript代码模拟点击。等待带有确认代码的SMS消息,并使用正则表达式提取它。最后将获取的设备和短信等信息上传至服务器。
图2-1 流程图
2.2远控框架
从服务器获取动态加载DEX文件的代码,加载的类名、函数名以及参数。参数包含DEX文件中所用到的服务器地址。第二阶段从传入的参数服务器地址中获取需要加载的订阅高级服务的网页url、授权代码、匹配短信信息的正则表达式、以及模拟点击的javascript代码等信息。
图2-2 远控框架
3.病毒技术原理分析
3.1监听短信
注册PermissionActivity用于管理通知权限。注册NoteService用于监听短信通知。
图2-3 注册组件
检测应用是否开启通知权限。
图2-4 检测通知权限
如果应用没有开启相应权限。则弹框请求权限。
图2-5 请求通知权限
如果应用已开启通知权限,监听短信通知,获取短信内容并发送发action_text广播。
图2-6 监听短信通知
权限请求界面结束时获取各种设备信息并上传至服务器。
图2-7 获取设备信息
将获取的设备信息上传至服务器:http://171.***.25.***.18000/backend/api/collect。
图2-8 上传设备信息
3.2加载DEX
病毒在应用的Application初始化时加入了自己的代码,并将自己代码集成在mopub广告插件中。
图2-9 程序开始调用
获取SIM卡的移动国家码和移动网络码,排除美国和加拿大两个国家。启动线程。
图2-10 获取SIM卡信息
连接服务器:http://3.***.143.***/api/shAKNLHIsXk=Y29tLmhlbGxvLnN3ZWV0YW5nbGUuaG9yb3Njb3BlIzQ2MDAx0LJ。服务器url的K值是根据包名、SIM卡信息、随机数而产生的。
图2-11 连接服务器
获取服务器返回值,返回的数据已经过DES加密。
图2-12 获取服务器返回数据
将获取的返回值保存到配置文件中并进行DES解密。密钥为whijgyxx硬编码在代码中。
图2-13 解密服务器返回数据
解析并以换行符分割数据得到以下数据。
1、https://th-eu-jet.***-eu-central-1.***.com/s8-5-release:用于获取将要加载的DEX文件代码。
2、http://18.***.46.15/ :作为参数传入DEX文件的函数调用。
3、tdelXB :作为参数传入DEX文件的函数调用。
4、com.plane.internal.Entrance :作为加载DEX文件的类名。
5、initialize :作为加载DEX文件的函数调用。
图2-14 解析数据
连接服务器:https://tb-eu-jet.***-eu-central-1.*** .com/s8‐5‐release,获取DEX文件代码。将获取的代码写入最开始创建的文件中。
图2-15 从服务器下载DEX文件
循环读取文件,每次读取128字节写入另一文件中,形成真正将要加载的DEX文件。
图2-16 创建需加载的DEX文件
加载DEX文件。并调用com.plane.internal.Entrance类中的函数initialize。传入参数http://18.***.46.15/和tdelXB。
图2-17 加载DEX文件
3.3订阅服务
将传入的参数配置为服务器url和TAG_SMS。
图2-18 配置参数
注册广播,用于接收短信通知所发送的广播从而获取短信内容。
图2-19 注册广播
获取设备信息上传至服务器:http://cp.****.com/backend/api/v1/dsp/cpi/postback/。
图2-20 获取设备信息并上传
获取用户设备信息以及用户账号信息并上传至服务器:http://18.***.46.15/api/ldjb/。不同应用上传的服务器地址不一定一样,http://18.***.46.15/api/ldjb/这个地址获取不到返回数据,所以我们从服务器地址为http://52.***.93.217/api/ldjb/这个地址中获取了返回数据。
图2-21 获取用户账号信息并上传
获取用户账号信息,并将获取的账号信息进行字符替换。
图2-22 获取用户账号信息
接收服务器返回数据,数据被加密。
图2-23 接收服务器返回数据
解密返回数据,密钥是将本机IMSI、唯一序列号、包名经过一定处理得到的。
图2-24 解密服务器返回数据
解析从服务器获取的数据,并将数据保存为JSON格式。
图2-25 解析服务器返回数据
初始化WebView,实现javascript与Java的交互。
图2-26 初始化WebView
加载网页。加载的网页地址是上面已解析的服务器返回值,根据不同的地区设置不同的Ajax异步请求字段。
图2-27 加载网页
当网页加载完成发送MSG_HOLD消息。
图2-28 发送MSG_HOLD消息
监听消息,根据不同的消息标志执行不同操作。
图2-29 监听消息
接收MSG_HOLD(网页加载完成)消息。通过加载javascript代码,实现javascript与Java互动,调用onPageDump函数。
图2-30 加载javascript代码
通过加载上方服务器返回的cmd标签值来加载javascript代码模拟点击,订阅服务。
图2-31 模拟点击服务
服务订阅完成,等待带有确认代码的SMS消息,并使用正则表达式提取短信内容。
图2-32 提取短信内容
所以工作完成后,将获取的短信、设备、错误码、网络状况等信息上传至服务器。
图2-33 获取短信、设备信息
将获取的信息上传至http://18.*** .46.15/api/report。
图2-34 上传短信、设备信息
4.服务器域名统计
包名:com.hello.sweetangle.horoscope
http://3.***.143.26/api/sh%s?k=%s
https://tb-eu-jet.***-eu-central-1.****.com/s8-5-release
http://18.***.46.15/
包名:com.Ignite.amino.clean
http://3.***.143.26/api/ckwsI3?icc=
http://tb-eu-jet.***-eu-central-1.****.com/s8-5-dsp-release
http://52.***.93.217/
包名:com.tr.rushphoto
http://3.***.143.26/api/sh%s?k=%s
https://tb-eu-jet.***-eu-central-1.***.com/s8-7-release
http://18.***.46.15/
包名:com.anti.mysecurity
http://3.***.143.26/api/ckwkc2?icc=
http://tb-eu-jet.***-eu-central-1.***.com/s8-5-dsp-release
5.安全建议
· 让你的设备保持最新,最好将它们设置为自动补丁和更新,这样即使你不是最熟悉安全的用户,你也能得到保护。
· 坚持去正规应用商店下载软件,避免从论坛等下载软件,可以有效的减少该类病毒的侵害。
· 安装好杀毒软件,能有效的识别已知的病毒。