当前位置: 首页 > news >正文

【安卓逆向】安卓病毒介绍及其简单案例分析

目录

引言

一、Android 病毒介绍及分析方法

1.1 Android 病毒预览

1.2 Android 病毒分析必备知识

1.3 Android 病毒的常见类型及恶意行为

1.3.1 常见病毒类型

1.3.2 常见病毒行为

1.4 病毒激活条件

1.5  Android 病毒的传播方式

1.6  Android 病毒分析的一般方法

二、经典安卓简单病毒案例分析

2.1 病毒分析-免流服务器

2.2 病毒分析-王者荣耀刷皮肤

2.3 病毒分析-秒抢红包


引言

        随着智能手机的普及,Android 系统成为了全球用户最广泛使用的移动操作系统之一。然而,Android 的开放性也使其成为了病毒和恶意软件的主要目标。Android 病毒不仅威胁用户隐私和财产安全,还可能对设备系统造成严重破坏。为了更好地理解和防范这些威胁,本文将从 Android 病毒的基本概念入手,详细介绍其常见类型、恶意行为、传播方式及分析方法。此外,本文还将通过几个经典案例,深入剖析 Android 病毒的运作机制。

一、Android 病毒介绍及分析方法

1.1 Android 病毒预览

        Android 病毒种类繁多,为了直观展示其危害,本文将以锁机病毒为例,深入分析其运作机制,帮助读者更直观地理解 Android 病毒的威胁。

1.2 Android 病毒分析必备知识

在分析 Android 病毒时,掌握 Android 的四大组件及权限相关知识至关重要。

(1) Activity - Android 的窗口界面

Activity 是用户与应用交互的界面,病毒常通过伪装成正常应用的 Activity 来诱骗用户。

(2)Service - Android 的后台服务

Service 在后台运行,病毒利用其执行恶意操作而不被用户察觉。

(3)BroadcastReceiver - 广播接收器/全局回调

BroadcastReceiver 用于接收系统广播,病毒通过监听特定广播触发恶意行为。

(4)ContentProvider - 内容提供商/注册表

ContentProvider 管理应用数据共享,病毒可能通过其窃取或篡改数据。

(5) 清单文件中权限的声明

AndroidManifest.xml 文件中的权限声明,病毒通过申请敏感权限实施恶意操作。

1.3 Android 病毒的常见类型及恶意行为

1.3.1 常见病毒类型

(1)信息窃取 (privacy)
   名称:a.privacy.GpsSpy.a (窃听幽灵)

(2)恶意扣费 (payment)
   名称:a.payment.suad.a (扣费内鬼)

(3)远程控制 (remote) 
   名称:a.remote.DieSms.a (致命短信)

(4)资费消耗 (expense) 
   名称:a.expense.vimob.a (TT 僵尸)

(5)诱骗欺诈 (fraud)

(6)流氓行为 (rogue)

(7)系统破坏 (system)

1.3.2 常见病毒行为

(1)获取用户手机信息
   - 使用 `TelephonyManager` 类获取手机号、MAC 地址、设备 ID、IMSI 号、SIM 卡序号、手机型号等。  
   - 后续操作:上传服务器或通过第三方服务获取详细位置。

(2)发送短信
   - 使用 `SmsManager` 类发送单条或多条短信,内容通常为通知病毒作者安装成功。

(3)获取联系人列表
   - 使用 `getContentResolver().query()` 获取联系人信息。  
   - 后续操作:上传服务器、发送到指定邮箱或群发带短 URL 的短信以扩散病毒。

(4)获取短信数据
   - 使用 `getContentResolver().query()` 获取短信内容。  
   - 后续操作:上传服务器、发送到指定邮箱、屏蔽控制短信或私自回复扣费短信。

(5)获取安装应用列表
   - 使用 `getPackageManager().getInstalledPackages()` 和 `getRunningAppProcesses()` 获取应用列表。  
   - 后续操作:上传服务器或检测是否有杀毒软件。

(6)获取 Root 权限
   - 使用 `Runtime.getRuntime().exec(cmd)` 执行底层命令。  
   - 后续操作:静默下载插件、加载恶意插件或静默安装 APK 文件。

(7)激活设备管理器防止卸载
   - 使用 `DevicePolicyManager` 和 `android.app.action.ADD_DEVICE_ADMIN` 激活设备管理器。  
   - 后续操作:隐藏自身图标。

(8)私自关闭 WiFi 并开启移动网络
   - 使用 `setWifiEnabled()` 和 `setMobileDataEnabled()` 控制网络连接。  
   - 后续操作:连接指定服务器上传程序包信息。

1.4 病毒激活条件

病毒安装后不一定立即启动,常见的激活条件包括:
(1)检测用户划屏解锁。
(2)检测用户开机。
(3)检测网络变化。

这些信息通常注册在 `AndroidManifest.xml` 文件中,熟悉四大组件和权限有助于快速定位恶意代码。

1.5  Android 病毒的传播方式

(1)浏览器搜索关键词 
   诱惑用户下载,如搜索“美女图片”、“激情视频”。

(2)短信传播下载地址 
   诱导用户下载,如短信内容为“孩子成绩”、“老婆丈夫出事”。

(3)捆绑正常 APP 
   伪装广告诱导用户下载。

(4)二维码 
   通过扫描二维码传播病毒。

(5)其他方式 
   加壳加密、免杀等技术手段。

1.6  Android 病毒分析的一般方法

分析 Android 病毒的步骤如下:

(1)上传至分析平台
   使用金山火眼或腾讯哈勃等平台初步分析病毒样本。

(2)反编译 APK 文件
   将 APK 文件反编译为可读代码,注意文件名应改为数字或英文。

(3)导入 IDE 分析
   将反编译后的代码导入 IDE,便于查看代码跳转。

(4)查看 AndroidManifest.xml
   找到入口类,查看申请的权限、广播监听类和服务类。

(5)定位关键 API
   搜索并分析关键 API,结合上下文理解病毒流程。

(6)安装病毒样本
   在测试手机中安装病毒样本,使用杀毒软件观察拦截的敏感 API。

(7)抓包分析
   使用抓包工具分析病毒上传的数据。

(8)动态分析加密字符串
   通过断点调试解析加密字符串,必要时修改 smali 代码。

(9)检查资源目录
   若未找到敏感 API,检查资源目录中是否存在可疑文件,如恶意 APK 或 SO 文件。

(10)分析 SO 文件 
    若病毒通过 SO 文件执行恶意代码,需具备 ARM 汇编知识。

通过以上步骤,可以有效分析 Android 病毒的运作机制,并采取相应的防护措施。

二、经典安卓简单病毒案例分析

所有样本程序安装均在模拟器中进行

2.1 病毒分析-免流服务器

点击安装核心,会有root权限申请:
Runtime.getRuntime().exec(cmd)

当安装核心之后,重启模拟器,会发现开机之后,有锁屏窗口,还发送大量短信

通过AndroidKiller反编译,分析组件和权限信息

再分析activity对应的布局文件

直接查看java代码中的az调用,az调用了copyAppToSystem

其中执行的命令有:
(1)获取root

(2)修改system目录权限
mount -o remount, rw /system/
(3)拷贝文件到系统目录
cp /storage/sdcard0/stk3.apk /system/app/
(4)修改文件权限
chmod 0777 /system/app/stk3.apk
(5)退出命令行
exit

stk3.apk的来源在onCreate函数中可以找到

根据以上分析,可以看出,stk3.apk才是真正的病毒文件,它被释放到SD中和系统目录中。
(1)/storage/sdcard0/stk3.apk
(2)/system/app/stk3.apk

免流服务器-清除病毒

删除sd卡中的stk3.apk
(1)进入shell
选用androidkiller中adb,执行 adb shell
(2)切换到SD目录
cd /storage/sdcard0/
(3)删除病毒
rm stk3.apk

删除system/app中的stk3.apk
(1)使用cd 切换根目录
(2)使用cd 切换到system/app
cd system/app
(3)删除病毒
rm stk3.apk

病毒分析-免流服务器-stk3.apk
Stk3.apk模仿系统应用痕迹很深。

从MainActivity找到 llxfc服务,在服务的代码中找到密码

密码:TFB4
解锁之后,可以使用模拟器中文件管理器删除病毒

2.2 病毒分析-王者荣耀刷皮肤

锁机密码:6699
特征字符串:lockNow,resetPassword
删除病毒时需要取消激活设备管理器,才能删除

2.3 病毒分析-秒抢红包

激活之后,显示的是上图界面,可以输入密码进行解锁,当重启之后,还会有密码,PIN码锁机,根据上一个案例,找特征字符串就可以解锁。

锁机密码是:8985

病毒分析-秒抢红包-第一层密码解密
从资源文件找到按钮ID以及代码

在代码中找到响应函数

使用smali注入方式,注入Log代码在解密函数的末尾,打印返回值

由于这个apk资源编译有问题,所以采用的方法就是将smali代码转为dex文件,然后再将源apk中的dex文件替换,再签名的方法。
编译smali代码为的dex命令:java -jar smali-2.2.0.jar a smali

使用Android监视器监控到日志信息:

相关文章:

  • 解决VMware虚拟机CentOS 7 忘记登陆密码问题
  • API接口安全中的数据加密实践:原理与实现详解
  • 【Java】——数据类型和变量
  • JAVA代码块
  • visual studio配置opencv
  • 【后端开发面试题】每日 3 题(十一)
  • 【linux】解决 Linux 系统中 root 用户无法打开图形界面问题
  • Python 的字符串格式化方法
  • 编程助手学Python--Deepseek对OpenAI的Python库调用GPT-4模型生成对话回复理解
  • docker 常用命令大全(二),docker 镜像操作 ,持续更新
  • 仅仅使用pytorch来手撕transformer架构(1):位置编码的类的实现和向前传播
  • 系统架构设计师知识小科普:系统架构评估
  • 【文献阅读】SPRec:用自我博弈打破大语言模型推荐的“同质化”困境
  • Linux上位机开发实战(qt编译之谜)
  • vue 仿deepseek前端开发一个对话界面
  • 3分钟复现 Manus 超强开源项目 OpenManus
  • 使用netlify部署github的vue/react项目或本地的dist,国内也可以正常访问
  • 人工智能混合编程实践:Python ONNX进行图像超分重建
  • PyTorch 和 Python关系
  • 先进制造aps专题三十一 免费企业高级计划和优化(Advanced Planning and Optimizer)产品FreeAPO简介
  • 趣看 | 五一黄金周:你拍风景,拍风景的人在拍你
  • 巴国家安全委员会授权军方自主决定对印反击措施
  • 驱逐行动再加码?特朗普或向利比亚和卢旺达遣送非法移民
  • 特朗普称美军舰商船应免费通行苏伊士运河,外交部:反对任何霸凌言行
  • 金融监管总局将出八大增量政策,李云泽详解稳楼市稳股市“组合拳”
  • 李云泽:再批复600亿元,进一步扩大保险资金长期投资试点范围