小编不定时干货分享来了,之前拿到的几个恶意样本,简单分析来学习一下

冒充10086发过来的短信,要积分兑换现金,然后点进去链接要输入银行卡密码

这里我们点激活

然后退回桌面

一会儿这个app就自己消失了,隐藏自己

进入应用管理页面 可以看到无法卸载

我们将apk文件改后缀为rar并解压得到classes.dex文件

这里通过dex2jar

jar2smali可以将dex文件反编译为smali代码

得到classes-out文件夹

然后自己造了一个轮子,用来提取一些关键信息,比如url链接,手机号,邮箱等等,主要还是通过正则表达式来进行匹配

代码如下

脚本还很垃圾 师傅们轻喷~

# coding:utf-8

import os

import re

=[]

ips =[]

emails =[]

emails_fin =[]

phones =[]

def deleteSameNum(num):

num.sort()

last = num[-1]

for i in range(len(num)-2,-1,-1):

if last == num[i]:

del num[i]

else:

last = num[i]

return num

def bianli(rootdir):

for root,dirs,files in os.walk(rootdir):

for file in files:

= os.path.join(root,file)

a.append(b)

for dir in dirs:

bianli(dir)

rootdir = 'classes-out/' # dex文件 dex2smali

bianli(rootdir)

for i in a:

file = open(i,'r')

con = file.read()

con1 = re.findall(r'[0-9a-zA-Z_]{0,19}@[0-9a-zA-Z]{1,13}\.[com,cn,net]{1,3}',con)

con2 = re.findall(r'1[35678]\d{9}',con)

con3 = re.findall(r'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+',con)

ips.append(con3)

phones.append(con2)

emails.append(con1)

def zhuan_(ffff):

ffff_fin =[]

ffff =[for x in ffff if x] # remove 空元素

for i in ffff:

for i2 in i:

ffff_fin.append(i2) # two 2 one

return ffff_fin

print deleteSameNum(zhuan_(emails))

print deleteSameNum(zhuan_(phones))

print deleteSameNum(zhuan_(ips))

可以得到一个地址

['//wap.dzf10086.com/kk/ch.php']

将apk文件直接载入jeb分析

查看manifest文件

<?xml version="1.0" encoding="UTF-8"?>

<manifest android:versionCode="1" android:versionName="1.0" package="iuxkikw.zkjaksj.jhyvu" xmlns:android="http://schemas.android.com/apk/res/android">

<uses-permission android:name="android.permission.WRITE_SMS" />

<uses-permission android:name="android.permission.SEND_SMS" />

<uses-permission android:name="android.permission.INTERNET" />

<uses-permission android:name="android.permission.READ_SMS" />

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<uses-permission android:name="android.permission.RECEIVE_SMS" />

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

<uses-permission android:name="android.permission.INTERNET" />

<uses-permission android:name="android.permission.READ_PHONE_STATE" />

<application android:allowBackup="true" android:debuggable="true" android:icon="@drawable/qqq" android:label="@string/app_name" android:theme="@style/AppTheme">

<activity android:label="@string/app_name" android:name="com.fhgfd.heee.MainActivity">

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

<receiver android:description="@string/app_name" android:label="@string/app_name" android:name="com.fhgfd.heee.kc" android:permission="android.permission.BIND_DEVICE_ADMIN">

<meta-data android:name="android.app.device_admin" android:resource="@xml/xyz" />

<intent-filter>

<action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />

</intent-filter>

</receiver>

<receiver android:name="com.fhgfd.heee.kd">

<intent-filter android:priority="2147483647">

<action android:name="b.b.b" />

<action android:name="android.provider.Telephony.SMS_RECEIVED" />

<action android:name="android.intent.action.BOOT_COMPLETED" />

<action android:name="android.intent.action.USER_PRESENT" />

</intent-filter>

<intent-filter>

<action android:name="android.intent.action.PACKAGE_ADDED" />

<action android:name="android.intent.action.PACKAGE_REMOVED" />

<data android:scheme="package" />

</intent-filter>

</receiver>

<service android:name="com.fhgfd.heee.kse" />

</application>

</manifest>

可以看到一些比较危险恶意的权限

这里就是激活设备管理器了

还向病毒制作者发送的短信 来通知告诉病毒制作者

入口还是MainActivity

看看MainActivity

ksj类

kapi类

可以知道是通过aes加密

写个简单的脚本来解密一下

package com.example.lib.tttest1;

import javax.crypto.Cipher;

import javax.crypto.spec.SecretKeySpec;

publicclass tttest1 {

publicstaticbyte[] parseHexStr2Byte(String hexStr){

if(hexStr.length()<1)

returnnull;

byte[] result =newbyte[hexStr.length()/2];

for(int i =0; i < hexStr.length()/2; i++){

int high = Integer.parseInt(hexStr.substring(*2, i *2+1),16);

int low = Integer.parseInt(hexStr.substring(*2+1, i *2+2),16);

result[i]=(byte)(high *16+ low);

}

return result;

}

publicstatic String decrypt(String content, String key){

try{

Cipher cipher = Cipher.getInstance("AES");

cipher.init(2,new SecretKeySpec(tttest1.parseHexStr2Byte(key), "AES"));

String v3 =new String(cipher.doFinal(tttest1.parseHexStr2Byte(content)));

return v3;

}

catch(Exception e){

e.printStackTrace();

}

returnnull;

}

publicstaticvoid main(String[] args){

String a = decrypt("37349EC2F427A1AF812DA757988CB9DE", "AE920882F4F5818501AB6256F91691D5");

System.out.println(a);

}

}

得到一个手机号

13066310152

ksj.cvh 就是 手机号的值

传入kapi.s函数的第一个参数

这里是获取手机设备的IMEI

this.getSystemService("phone").getDeviced()

String number = telephonyManager.getLine1Number();

获取手机号码 获取用户本机号码

向制作病毒的人的手机发送拦截的短信

ka类

向这个地址发出http网络请求

把用户的手机信息回传到这个地址

ke类

监控用户收件箱变化

删除拦截到的短信在用户短信收件箱的记录

kd类

用来收到收短信received,然后停止广播

获取短信内容

message.getOriginatingAddress()

获取发信人的手机号

message.getMessageBody()

获取短信内容,然后就是把短信发送到病毒制作者的手机上

通过分析可以知道该apk程序具有以下恶意意图

1.拦截短信

2.隐藏图标 诱导激活设备管理器权限无法卸载

3.监控收件箱 删除拦截到的短信在用户短信收件箱的记录

4.向病毒制作者的一个手机号 和 网站 发送拦截到的短信包括发送者的手机号,设备信息IMEI,设备的手机号等

来源于网络

*本文章仅供技术交流分享,请勿做未授权违法攻击,雨笋教育不负任何责任。具体请参考《网络安全法》。

身边随时可能发生的网络攻击,短信拦截码分析!相关推荐

  1. Android应用源码安卓短信拦截木马项目源码

    温馨提示:本资源由源码天堂整理提供下载转载时请留下链接说明:http://code.662p.com/view/9174.html 安卓短信拦截木马源码主要功能就是开机后台启动,拦截本机收到的短信并且 ...

  2. Android的BroadcastReceiver 广播 短信拦截

    如何去理解BroadcastReceiver(广播)?其实可以这样想,首先我们要有一个发送广播的"媒体",在这个例子中,我们暂且用activity组件作为这个媒体,当然以后会用到s ...

  3. 关于Android短信拦截

           今天参加了培训公司筹划的面试,主要是关于安卓客户端的技术面试,总结这次面试我决定写一些总结,首先就是关于我所写的手机通讯录的短信拦截功能的介绍:手机在接收到短信后会发出一段广播,我们只需 ...

  4. “短信拦截马”黑色产业链与溯源取证研究

    猎豹科学院 · 2015/09/10 14:04 0x00 引言 根据猎豹安全实验室的云端监控数据显示,近1个月截获的"短信拦截"类样本变种数量超过10万,影响用户数达数百万之多. ...

  5. 6月12日云栖精选夜读:【干货】iOS 11 短信拦截功能初探

    在iOS 11 beta 1出来以后,我们发现新增了SMS fraud extension(恶意短信拦截插件),该插件在经过用户的授权后可以用于拦截用户的恶意短信. 热点热议 [干货]iOS 11 短 ...

  6. android手机短信拦截的实现

    以前刚开始接触android时对诸如短信拦截之类的功能很感兴趣,网上很多文章都介绍了使用广播接收android.provider.Telephony.SMS_RECEIVED的动作,从而接收到SMS信 ...

  7. 短信拦截木马背后的黑色产业

    从2013年5月至今,AVL移动安全团队持续监测到了一类高活跃高危害的短信拦截类型木马.短信拦截马,顾名思义是一种可以拦截他人短信木马,就是让被攻击者收不到短信,并将短信内容截取到攻击者手机上. 此类 ...

  8. Android-实现对指定电话的短信拦截和来电拦截

    用service的onCreate/onDestroy来控制广播的监听(电话,sms). 先写一个这样的框架,具体功能不实现: /*** 用TelSmsBlackService来控制广播监听(电话,s ...

  9. 关于Android短信拦截(二)

    题外话:因为这是一篇来自百度的文章,并且在好多网站中都有转载,但却没有标明出处,所以我也搞不清作者是何人,特在此声.另外,关于这个例子的实现,一定要注意权限的设置,我在这里例子的实验中,由于没有找到S ...

最新文章

  1. 数据中心网络架构 — CLOS 网络架构的起源于发展
  2. 人体关键点颜色和预处理
  3. java applet 游戏_Java Applet实现五子棋游戏
  4. Java 建模:UML 工作簿,第 1 部分
  5. 流控思路——多消费者定量生产(第100篇)
  6. Spring Boot加载指定属性文件
  7. Kubernetes之StatefulSet
  8. 私有云中Kubernetes Cluster HA方案
  9. Ubuntu chmod 命令
  10. 线性代数(同济) 第六版 复习
  11. python读取dbf并导出excel格式_Python导出DBF文件到Excel的方法
  12. 将数组分成两部分,使得这两部分的和的差最小
  13. 财帮子(caibangzi.com)网站架构
  14. ICEM 准备工作-常用操作
  15. 世纪佳缘 小秘书 (可自动吸引异性关注)
  16. c++ IO多路复用
  17. python解决数学问题
  18. c语言运算符 4,C语言运算符
  19. 数据结构之 红黑树(左倾红黑树) java实现
  20. 为什么磁盘1次随机读需10ms

热门文章

  1. scrapy实践二(selenium爬取腾讯漫画【失败】)
  2. 福昕风腾破解版安装教程
  3. linux系统报错01031,从ORA-01031报错看密码文件故障
  4. UnityShader——挺进体积光
  5. 股权证明pos记账权是根据不同节点_主流共识机制PoS、PoW与DPoS、PoU对比演变
  6. 如何清除谷歌浏览器缓存
  7. 职场中的天龙八部——北漂18年(53)
  8. C语言 typedef 简介
  9. 服务器蓝屏显示3b,win7蓝屏代码3b怎么回事_网站服务器运行维护
  10. linux 数据恢复