大半夜的收到这样一条短信,是以学校平时发送短信的端口发送的,而且青大的用校园网手机号的几乎都收到了

QQ20151226-3.png

不用说,这肯定不是伪基站,而是学校群发短信的平台被入侵了。

短信上的那个链接是非常典型的钓鱼网站,而且只能用手机或者电脑改 ua 看。

QQ20151226-4.png

QQ20151226-5.png

QQ20151226-6.png

可以注意到最后一张图,会提示你下载一个 apk,我就简单的逆向了一下,看和之前遇到的手段是否一样。

解压缩,拿到 classes.dex,dex2jar 处理,再解压缩就拿到所有的 classes,果然非常弱智,一点保护和混淆都没有。

QQ20151226-7.png

再反编译 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 继续看。

QQ20151226-8.png

截图是这个类的方法列表和 init 函数的内容,可以看到这个类具有的功能有

url,发送短信的手机号码都在 init 函数中,明文可见。里面还有一条测试短信,内容是

失恋算个啥?轻轻的,你走吧,千万别后悔,因为只要你一挥手,就会发现,已经有那等不及的意中人,正偷偷摸摸拉你的手!测试短信不收费

online 函数会把手机的型号,手机号码等放在 query string 中发送出去 QQ20151226-9.png

获取短信内容 QQ20151226-10.png

查询出现的两个域名的 whois 信息,发现都是同一个人注册的,还有 qq 邮箱。

QQ20151226-12.png

Screenshot_2015-12-26-13-30-55-018_QQ.png

还真是黑产牛

QQ20151226-13.png

app 中发送信息的 url 直接打开是一个后台,简单试了下,应该没注入,admin + 6位数的密码跑了大部分也没跑出来。

QQ20151226-14.png

这个和以前逆向的 app 的区别是短信联系人等内容是发送到服务器的,而不是发送到邮箱。之前我们就直接拿到了邮箱的账号密码了,然后继续找到后台,那个比较挫,access 数据库存在注入,然后拿到了账号密码,贴几张图。

QQ20151130-0.png

QQ20151130-4.png

QQ20151201-1.png