中国移动伪基站软件
Date: Aug 14, 2019
Tags: 分析报告
样本来源
通过10086发送的诈骗短信
文件与自动分析报告
恶意软件分析 & URL链接扫描 免费在线病毒分析平台 | 魔盾安全分析
分析工具
分析过程
第一次使用魔盾这个东西,感觉是挺好用的。
首先,关注包名,这肯定不是中国移动的,有这东西的可以卸载了。
之后看MainActivity能看到
那么,就是com.phone2.stop.activity.MainActivity
,所以去跟进这个类
能看到执行了几个函数然后初始化了一个字符串,跟进分析
C0058h.m510a
这个函数里面
调用StringBuffer,然后自认为很聪明的初始化了4个字符h~mx
,从自动分析的报告上看到这个地方是des密钥,虽然还没看到哪里是des,但是至少说明这个app还有分析的价值,那就继续往后看吧
getPackageManager().setComponentEnabledSetting(getComponentName(), 2, 1)
这里是开了个啥,但是我并不会写apk所以只能先搁置,大概理解为开启了某个权限
C0058h.m511a
检查是否
是否初始化手机号码,之后
所以在第一次启动的时候没有初始化手机号,那么就会返回false执行if中的语句
取得手机号,同理应该也是默认手机号
然后C0002f.m9a(C0051a.m360a(context).mo740d())
,能发现使用了函数mo740d()
这个是获取默认手机号,然后传入m9a()
这个函数是使用DES加密获取到的手机号然后存入sharedpreferences,这时的DES的key为123456
然后在这里就有个巨大的bug,我也不清楚程序员是咋想的
能看到上图的m580a
这个函数,是相当于hexdecode
函数,传入的数据即为获取到的数据,也就是手机号,那么在手机号的情况下手机号为11位不满足偶数位,他也没有填充,而且如下图所示,除了手机号用了这个方法,邮箱号和邮箱密码也用了同样的算法,那么邮箱号中特殊字符如@
就是没法转换的,所以这里一定会报错的鸭
写了个程序,可以自己测一下
import java.io.*;
class test
{
public static void main (String[] args) throws java.lang.Exception
{
System.out.println(bytesToHex(m580a("165")));
}
public static byte[] m580a(String str) {
byte[] bytes = str.getBytes();
int length = bytes.length;
byte[] bArr = new byte[(length / 2)];
for (int i = 0; i < length; i += 2) {
bArr[i / 2] = (byte) Integer.parseInt(new String(bytes, i, 2), 16);
}
return bArr;
}
public static String bytesToHex(byte[] bytes) {
StringBuffer sb = new StringBuffer();
for(int i = 0; i < bytes.length; i++) {
String hex = Integer.toHexString(bytes[i] & 0xFF);
if(hex.length() < 2){
sb.append(0);
}
sb.append(hex);
}
return sb.toString();
}
}
所以每次还是获取的默认值?想保存的数据一个都没存进去?这程序员可能思维跟我们不一样吧。。。。。。
反正依次调用的函数为:
- 初始化接收短信的手机号[是一个沈阳的手机号]
- 初始化发邮件的邮箱号[是163邮箱]
- 初始化收邮件的邮箱号[和发邮件的是同一个]
- 初始化发邮件邮箱密码
- 初始化endtime?[这里有点迷的就是难道这个东西还会自己停的嘛]
之后判断是否发送手机信息[phone_info],如果没有发过就通过手机号发送手机信息
也就是通过SMS发送手机基本信息到接收短信的手机号上
发送之前还会把一部分关键词改个写法,估计是bypass基站检测吧,但是换句话说,基站检测有这么弱的吗?
发送之后马上调用函数C0002f.m12b
删除刚刚发送的SMS信息
C0008d.m72a
随之调用这个函数启动多线程
这里的C0008d.m75d
是发送所有手机短信到接收邮箱,当短信同时包含
这两个东西的时候就不发了?
然后C0008d.m76e是发送通讯录联系人到接收邮箱,当联系人包含
这两个任意之一的时候也不发了?
有张三没李四,有悟空没八戒。。。。。。。。。我的思维是跟不上的
在MainActivity的最后是
貌似就跟他写的一样就是询问提高这个程序的权限吧
然后会在如下图所示的函数回调得到的结果,并且发送结果
调用m445b
创建启动服务
应该是启动服务吧,写的bootservice
启动的服务会监听短信接收动作,并且在自己启动的时候启动第二个服务SecondService
看事件函数onDestroy里有启动自己的操作,估计就是不让这么轻易的关闭这个服务,而且在SecondService里面也能看出这个第二个服务是个deamon,专门保护第一个服务的
在第一个启动的服务里会调用两个函数,m321a
和m322b
也就是这两个函数注册了监听短信的操作
到此为止应该就是差不多分析完了,这里面还有邮箱账号密码,有兴趣自己
诈骗信息公示
- 手机号:16532498033
- 邮箱:16532498033@163.com
估计都是小号,不过也公开一下吧