身边随时可能发生的网络攻击,短信拦截码分析!
小编不定时干货分享来了,之前拿到的几个恶意样本,简单分析来学习一下
冒充10086发过来的短信,要积分兑换现金,然后点进去链接要输入银行卡密码
这里我们点激活
然后退回桌面
一会儿这个app就自己消失了,隐藏自己
进入应用管理页面 可以看到无法卸载
我们将apk文件改后缀为rar并解压得到classes.dex文件
这里通过dex2jar
jar2smali可以将dex文件反编译为smali代码
得到classes-out文件夹
然后自己造了一个轮子,用来提取一些关键信息,比如url链接,手机号,邮箱等等,主要还是通过正则表达式来进行匹配
代码如下
脚本还很垃圾 师傅们轻喷~
# coding:utf-8
import os
import re
a =[]
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:
b = 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 =[x 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(i *2, i *2+1),16);
int low = Integer.parseInt(hexStr.substring(i *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,设备的手机号等
来源于网络
*本文章仅供技术交流分享,请勿做未授权违法攻击,雨笋教育不负任何责任。具体请参考《网络安全法》。
身边随时可能发生的网络攻击,短信拦截码分析!相关推荐
- Android应用源码安卓短信拦截木马项目源码
温馨提示:本资源由源码天堂整理提供下载转载时请留下链接说明:http://code.662p.com/view/9174.html 安卓短信拦截木马源码主要功能就是开机后台启动,拦截本机收到的短信并且 ...
- Android的BroadcastReceiver 广播 短信拦截
如何去理解BroadcastReceiver(广播)?其实可以这样想,首先我们要有一个发送广播的"媒体",在这个例子中,我们暂且用activity组件作为这个媒体,当然以后会用到s ...
- 关于Android短信拦截
今天参加了培训公司筹划的面试,主要是关于安卓客户端的技术面试,总结这次面试我决定写一些总结,首先就是关于我所写的手机通讯录的短信拦截功能的介绍:手机在接收到短信后会发出一段广播,我们只需 ...
- “短信拦截马”黑色产业链与溯源取证研究
猎豹科学院 · 2015/09/10 14:04 0x00 引言 根据猎豹安全实验室的云端监控数据显示,近1个月截获的"短信拦截"类样本变种数量超过10万,影响用户数达数百万之多. ...
- 6月12日云栖精选夜读:【干货】iOS 11 短信拦截功能初探
在iOS 11 beta 1出来以后,我们发现新增了SMS fraud extension(恶意短信拦截插件),该插件在经过用户的授权后可以用于拦截用户的恶意短信. 热点热议 [干货]iOS 11 短 ...
- android手机短信拦截的实现
以前刚开始接触android时对诸如短信拦截之类的功能很感兴趣,网上很多文章都介绍了使用广播接收android.provider.Telephony.SMS_RECEIVED的动作,从而接收到SMS信 ...
- 短信拦截木马背后的黑色产业
从2013年5月至今,AVL移动安全团队持续监测到了一类高活跃高危害的短信拦截类型木马.短信拦截马,顾名思义是一种可以拦截他人短信木马,就是让被攻击者收不到短信,并将短信内容截取到攻击者手机上. 此类 ...
- Android-实现对指定电话的短信拦截和来电拦截
用service的onCreate/onDestroy来控制广播的监听(电话,sms). 先写一个这样的框架,具体功能不实现: /*** 用TelSmsBlackService来控制广播监听(电话,s ...
- 关于Android短信拦截(二)
题外话:因为这是一篇来自百度的文章,并且在好多网站中都有转载,但却没有标明出处,所以我也搞不清作者是何人,特在此声.另外,关于这个例子的实现,一定要注意权限的设置,我在这里例子的实验中,由于没有找到S ...
最新文章
- 数据中心网络架构 — CLOS 网络架构的起源于发展
- 人体关键点颜色和预处理
- java applet 游戏_Java Applet实现五子棋游戏
- Java 建模:UML 工作簿,第 1 部分
- 流控思路——多消费者定量生产(第100篇)
- Spring Boot加载指定属性文件
- Kubernetes之StatefulSet
- 私有云中Kubernetes Cluster HA方案
- Ubuntu chmod 命令
- 线性代数(同济) 第六版 复习
- python读取dbf并导出excel格式_Python导出DBF文件到Excel的方法
- 将数组分成两部分,使得这两部分的和的差最小
- 财帮子(caibangzi.com)网站架构
- ICEM 准备工作-常用操作
- 世纪佳缘 小秘书 (可自动吸引异性关注)
- c++ IO多路复用
- python解决数学问题
- c语言运算符 4,C语言运算符
- 数据结构之 红黑树(左倾红黑树) java实现
- 为什么磁盘1次随机读需10ms