Android木马HongTouTou(又名ADRD)分析报告

2024-02-16 00:10

本文主要是介绍Android木马HongTouTou(又名ADRD)分析报告,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

、 基本信息

病毒名称:Trojan/Android.Adrd.a[Clicker]
病毒别名:HongTouTou、ADRD
病毒类型:木马
样本MD5:A84997B0D220E6A63E2943DA64FFA38C
样本CRC32:A42850DE
样本长度:1,316,981 字节
原始文件名:Newfpwap_com_liveprintslivewallpaper.apk
出现时间:2011.01.27
感染系统:Android 2.0及以上

二、 概述

ADRD木马(又名HongTouTou木马)被植入十余款合法软件中(图1),通过多家论坛、下载站点分发下载实现大范围传播。其主要行为包括:开启多项系统服务;每6小时向控制服务器发送被感染手机的IMEI、IMSI、版本等信息;接收控制服务器传回的指令;从数据服务器取回30个URL;依次访问这些URL,得到30个搜索引擎结果链接;在后台逐一访问这些链接;下载一个.apk安装文件到SD卡指定目录。感染该木马的手机将产生大量网络数据流量,从而被收取流量费用。攻击者通过增加搜索链接的访问量而获益。用户可以下载安天提供的Android恶意代码专杀工具AVL PK for Android检测手机是否感染这一木马,并卸载相应软件将其清除。


图1 正常软件与被植入木马的软件

三、 样本特征

截止本分析报告发布,安天已经检测到ADRD木马(又名HongTouTou木马)被植入到下列Android软件:

本报告涉及的样本中,ADRD木马被植入一款名为“动态脚印动态壁纸”(英文名“Live Prints Live Wallpaper”)的软件之中,于1月27日出现在国内所有主流手机论坛之中。被植入软件包括两部分:

1. 正常程序liveprints:
1) 服务LivePrints:android.service.wallpaper.WallpaperService
2) Activity:.LivePrintsSettings
2. 恶意代码com.xxx.yyy:
1) 接收器com.xxx.yyy.MyBoolService,用于启动(android.intent.action.BOOT_COMPLETED)
2) 接收器com.xxx.yyy.MyAlarmReceiver,自定义行为(com.lz.myservicestart)
3) 接收器com.xxx.yyy.NetWorkReceiver,响应网络状态变化(android.net.conn.CONNECTIVITY_CHANGE)
4) 接收器com.xxx.yyy.CustomBroadCastReceiver,响应电话状态(android.intent.action.PHONE_STATE)
5) 服务 com.xxx.yyy.MyService
样本需要获取系统的以下权限(图2):


图2 样本需要多项系统权限

特征字符串包括:
?im=
?im=

imeiimsi
myupdate.apk
UNINET
UNIWAP
cmnet
cmwap
四、 行为分析 接收器行为分析
1. com.xxx.yyy.MyBoolService
木马通过这一接收器实现随系统开机而启动,然后发送com.lz.myservicestart广播消息,并设置一个2分钟后激活的Alarm。
2. com.xxx.yyy.MyAlarmReceiver
接收到com.lz.myservicestart广播后,启动MyService服务。
3. com.xxx.yyy.NetWorkReceiver
检查phone_start中的started标志,以判断MyService服务是否启动。如果没有,则将其启动。
4. com.xxx.yyy.CustomBroadCastReceiver
当通话状态变为空闲(即通话结束),修改phone_start中的started标志状态为启动,并启动MyService服务。
5. MyService
MyService启动后,首先尝试获取手机的IMEI和IMSI码。如果获取失败,等待6分钟后再次尝试。
下一步,查看网络连接状态。如果没有连接,则尝试打开网络连接。如果连接失败,则等待6分钟后再次尝试。访问APN设置中的配置信息,将其与”UNINET”、”UNIWAP”、”cmnet”、”cmwap”进行比较,以判断连接类型。
下一步,检查update_flag.xml中oldtime字段保存的样本上一次与控制服务器通信的时间,如果距离现在已经超过6小时,则搜集本机信息,再次向控制服务器发送数据,并更新oldtime(图3)。


图3 样本每6小时向控制服务器发起连接

恶意行为分析
该样本的主要恶意行为图4所示。其中所有步骤均在后台运行,对用户不可见。


图4 主要恶意行为示意图

1、 向控制服务器发送IMEI/IMSI和版本信息
MyService获取手机中的以下信息(图5): netway:取值1表示正常访问,取值0表示使用代理


图5 获取IMEI和IMSI码

接下来按下列方式和顺序构建一个明文字符串<string>:
<string> = Imei + “&” + imsi + “&” + netway + “iversion” + “oversion”
用DES算法对上述字符串加密(使用密钥“48734154”),得到密文字符串<enstring>。然后将密文字符串与控制服务器地址组成一个完整的URL:
?im=<enstring>
最后,向这个URL发送一个HTTP POST请求,从而将加密了的手机IMEI、IMSI码和版本信息一起发送到控制服务器adrd.taxuan.net。
2、 从控制服务器接收控制指令
样本接收控制服务器adrd.taxuan.net的应答消息,应答的数据为DES加密的密文,使用密钥“48734154”解密,然后根据解密所得明文的第二个字符执行下一步操作:
指令0:当前函数将后续字符串返回给调用函数;
指令1:开始执行第3步(连接数据服务器);
指令2:当前函数将后续字符串返回给调用函数;
指令3:开始执行第8步(连接更新服务器)。
3、 向数据服务器发送IMEI/IMSI
按下列方式和顺序构建一个明文字符串<string>:
<string> = Imei + “&” + imsi
用DES算法对上述字符串加密(使用密钥“48734154”),得到密文字符串<enstring>。然后将密文字符串与数据服务器地址组成一个完整的URL:
?im=<enstring>
最后,向这个URL发送一个HTTP POST请求,从而将手机IMEI、IMSI码发送到数据服务器adrd.xiaxiab.com。
4、 从数据服务器接收URL列表
样本接收数据服务器adrd.xiaxiab.com的应答消息,应答的数据为DES加密的密文,使用“48734154”解密,得到如下明文(中间部分省略):

这篇关于Android木马HongTouTou(又名ADRD)分析报告的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/712947

相关文章

Olingo分析和实践之EDM 辅助序列化器详解(最佳实践)

《Olingo分析和实践之EDM辅助序列化器详解(最佳实践)》EDM辅助序列化器是ApacheOlingoOData框架中无需完整EDM模型的智能序列化工具,通过运行时类型推断实现灵活数据转换,适用... 目录概念与定义什么是 EDM 辅助序列化器?核心概念设计目标核心特点1. EDM 信息可选2. 智能类

Olingo分析和实践之OData框架核心组件初始化(关键步骤)

《Olingo分析和实践之OData框架核心组件初始化(关键步骤)》ODataSpringBootService通过初始化OData实例和服务元数据,构建框架核心能力与数据模型结构,实现序列化、URI... 目录概述第一步:OData实例创建1.1 OData.newInstance() 详细分析1.1.1

Olingo分析和实践之ODataImpl详细分析(重要方法详解)

《Olingo分析和实践之ODataImpl详细分析(重要方法详解)》ODataImpl.java是ApacheOlingoOData框架的核心工厂类,负责创建序列化器、反序列化器和处理器等组件,... 目录概述主要职责类结构与继承关系核心功能分析1. 序列化器管理2. 反序列化器管理3. 处理器管理重要方

SpringBoot中六种批量更新Mysql的方式效率对比分析

《SpringBoot中六种批量更新Mysql的方式效率对比分析》文章比较了MySQL大数据量批量更新的多种方法,指出REPLACEINTO和ONDUPLICATEKEY效率最高但存在数据风险,MyB... 目录效率比较测试结构数据库初始化测试数据批量修改方案第一种 for第二种 case when第三种

解决1093 - You can‘t specify target table报错问题及原因分析

《解决1093-Youcan‘tspecifytargettable报错问题及原因分析》MySQL1093错误因UPDATE/DELETE语句的FROM子句直接引用目标表或嵌套子查询导致,... 目录报js错原因分析具体原因解决办法方法一:使用临时表方法二:使用JOIN方法三:使用EXISTS示例总结报错原

MySQL中的LENGTH()函数用法详解与实例分析

《MySQL中的LENGTH()函数用法详解与实例分析》MySQLLENGTH()函数用于计算字符串的字节长度,区别于CHAR_LENGTH()的字符长度,适用于多字节字符集(如UTF-8)的数据验证... 目录1. LENGTH()函数的基本语法2. LENGTH()函数的返回值2.1 示例1:计算字符串

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

Android ClassLoader加载机制详解

《AndroidClassLoader加载机制详解》Android的ClassLoader负责加载.dex文件,基于双亲委派模型,支持热修复和插件化,需注意类冲突、内存泄漏和兼容性问题,本文给大家介... 目录一、ClassLoader概述1.1 类加载的基本概念1.2 android与Java Class

怎样通过分析GC日志来定位Java进程的内存问题

《怎样通过分析GC日志来定位Java进程的内存问题》:本文主要介绍怎样通过分析GC日志来定位Java进程的内存问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、GC 日志基础配置1. 启用详细 GC 日志2. 不同收集器的日志格式二、关键指标与分析维度1.

MySQL中的表连接原理分析

《MySQL中的表连接原理分析》:本文主要介绍MySQL中的表连接原理分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、环境3、表连接原理【1】驱动表和被驱动表【2】内连接【3】外连接【4编程】嵌套循环连接【5】join buffer4、总结1、背景