大半夜的收到这样一条短信,是以学校平时发送短信的端口发送的,而且青大的用校园网手机号的几乎都收到了
不用说,这肯定不是伪基站,而是学校群发短信的平台被入侵了。
短信上的那个链接是非常典型的钓鱼网站,而且只能用手机或者电脑改 ua 看。
可以注意到最后一张图,会提示你下载一个 apk,我就简单的逆向了一下,看和之前遇到的手段是否一样。
解压缩,拿到 classes.dex,dex2jar 处理,再解压缩就拿到所有的 classes,果然非常弱智,一点保护和混淆都没有。
再反编译 classes 文件的时候遇到了麻烦,我的工具不知道为什么抽风,很多函数只能显示函数名,而函数的内容没法显示,只好就再用 IDA 了。
//一些配置
public static final String APPLICATION_ID = "com.jmz.fandroid";
public static final String BUILD_TYPE = "release";
public static final boolean DEBUG = false;
public static final String FLAVOR = "";
public static final int VERSION_CODE = 1;
public static final String VERSION_NAME = "1.0";
入口是 MainActivity,然后弹框提示
var4.setTitle("系统提示");
var4.setMessage("激活成功,安卓手机稍后会提示是否允许接收发送短信等提示,请一定要选择永久允许,否者我们将无法根据系统来给您充值话费,请认真操作!");
接下来是设置设备管理器和隐藏图标,让一般用户无法自行卸载。
// 设备管理器权限
Intent var1 = new Intent("android.app.action.ADD_DEVICE_ADMIN");
var1.putExtra("android.app.extra.DEVICE_ADMIN", this.mComponentName);
var1.putExtra("android.app.extra.ADD_EXPLANATION", "");
//隐藏桌面图标
PackageManager var1 = this.getPackageManager();
this.mComponentName = new ComponentName(this, MainActivity.class);
var1.setComponentEnabledSetting(this.mComponentName, 2, 1);
之后就会执行MyIntentService.class
里面的函数,但是我看不到函数内容,就换用 IDA 继续看。
截图是这个类的方法列表和 init 函数的内容,可以看到这个类具有的功能有
- 从指定的 url 获取信息
- 发送设备当前在线状态
- 将数据发送到指定的 url 上去
- 打电话
- 获取联系人
- 获取短信内容
- 发送短信
url,发送短信的手机号码都在 init 函数中,明文可见。里面还有一条测试短信,内容是
失恋算个啥?轻轻的,你走吧,千万别后悔,因为只要你一挥手,就会发现,已经有那等不及的意中人,正偷偷摸摸拉你的手!测试短信不收费
online 函数会把手机的型号,手机号码等放在 query string 中发送出去
获取短信内容
查询出现的两个域名的 whois 信息,发现都是同一个人注册的,还有 qq 邮箱。
还真是黑产牛
app 中发送信息的 url 直接打开是一个后台,简单试了下,应该没注入,admin + 6位数的密码跑了大部分也没跑出来。
这个和以前逆向的 app 的区别是短信联系人等内容是发送到服务器的,而不是发送到邮箱。之前我们就直接拿到了邮箱的账号密码了,然后继续找到后台,那个比较挫,access 数据库存在注入,然后拿到了账号密码,贴几张图。