草庐IT

Android病毒分析基础(一)

博客0214 2023-03-28 原文

前期准备

环境准备

主要就是Android开发的环境,详细的可以参考非充老师白皮书第一章,其中包含了Win、Linux环境,如果需要mac环境配置可以自行检索,或者公众号留言,我们会在后期文章中专门增加一篇。

工具准备

反编译工具

1、apktool
2、jeb
3、jadx
4、GDA

样本获取网站

koodous
appscan

在线查杀检测工具

FileLine 静态代码检测:火线 | FireLine | 静态代码检测

腾讯移动安全实验室:在线查毒-安全实验室-腾讯手机管家官方网站

deguard:DeGuard | Statistical Deobfuscation for Android

魔盾安全分析:恶意软件分析 & URL链接扫描 免费在线病毒分析平台 | 魔盾安全分析

腾讯哈勃分析系统:腾讯哈勃分析系统

腾讯金刚:金刚 - 腾讯安全应急响应中心

virustotal:免费的可疑文件分析服务的网站

INTEZER ANALYZE

malpedia

alienvault

溯源分析工具

站长工具
微步情报社区
天眼查

标准文档

主要标准文档:《移动互联网恶意程序描述格式》

恶意程序属性主分类

排序 编码 属性主分类
1 payment 恶意扣费
2 privacy 信息窃取
3 remote 远程控制
4 spread 恶意传播
5 expense 资费消耗
6 system 系统破坏
7 fraud 诱骗欺诈
8 rogue 流氓行为

下面我们以其中一个分类看一下主要有那些恶意行为。

信息窃取

在用户不知情或未授权的情况下,获取涉及用户个人信息、工作信息或其它非公开信息的,具有信 息窃取属性。

包括但不限于具有以下任意一种行为的移动互联网恶意程序具有信息窃取属性:

  • 在用户不知情或未授权的情况下,获取短信内容的;
  • 在用户不知情或未授权的情况下,获取彩信内容的;
  • 在用户不知情或未授权的情况下,获取邮件内容的;
  • 在用户不知情或未授权的情况下,获取通讯录内容的;
  • 在用户不知情或未授权的情况下,获取通话记录的;
  • 在用户不知情或未授权的情况下,获取通话内容的;
  • 在用户不知情或未授权的情况下,获取地理位置信息的;
  • 在用户不知情或未授权的情况下,获取本机手机号码的;
  • 在用户不知情或未授权的情况下,获取本机已安装软件信息的;
  • 在用户不知情或未授权的情况下,获取本机运行进程信息的;
  • 在用户不知情或未授权的情况下,获取用户各类帐号信息的;
  • 在用户不知情或未授权的情况下,获取用户各类密码信息的;
  • 在用户不知情或未授权的情况下,获取用户文件内容的;
  • 在用户不知情或未授权的情况下,记录分析用户行为的;
  • 在用户不知情或未授权的情况下,获取用户网络交易信息的;
  • 在用户不知情或未授权的情况下,获取用户收藏夹信息的;
  • 在用户不知情或未授权的情况下,获取用户联网信息的;
  • 在用户不知情或未授权的情况下,获取用户下载信息的;
  • 在用户不知情或未授权的情况下,利用移动终端麦克风、摄像头等设备获取音频、视频、 图片信息的;
  • 在用户不知情或未授权的情况下,获取用户其它个人信息的;
  • 在用户不知情或未授权的情况下,获取用户其它工作信息的;
  • 在用户不知情或未授权的情况下,获取其它非公开信息的。

后续文章我们会找专门的样本来详细介绍标准中的一些属性。

分析方法

快速分析方法

  • 直接找对应行为的API,比如获取手机号码,是getLine1Number方法获取。
  • 直接使用上述章节中提到的在线查杀检测工具,根据查杀后的信息进行具体的行为分析。
  • 通过抓包软件抓取数据包后在代码中定位找到关键点

常规分析方法

  • 先用在线查杀工具或者本地部署的一些静态分析工具进行分析,然后根据查杀后的信息定位关键代码;
  • 在测试真机或者模拟器上运行样本,看看大体的行为,并抓包看看有哪些网络行为,也可以查看一下日志打印;
  • 有了上述分析做前提,我们就可以反编译样本进行代码分析,然后定位关键点
  • 首先看一下manifest中的组件信息,找到入口;
  • 随后顺着入口继续分析Service,Thread,AyncTask等,并配合关键API定位;

病毒样本特征提取

  • 最早的样本入库为了不出问题都是直接入样本的MD5或者SHA1等,这一点比较简单,只要病毒分析师分析确认后提取对应样本的MD5即可,这种方法不存在误杀情况。
  • 再后来增加了签名信息,但是由于Android开发的爆炸式增长,开发恶意程序的成本降低,很多平台直接可以同时生成双客户端,而且签名也是平台默认签名,即使有些个人开发者也会使用默认的debug签名信息,所以这个点很容易误杀。
  • 因为以上信息都是较为固定的,只要病毒稍作改动,以上信息都会变,查杀范围较小,后来增加了一些多维度特征,比如恶意程序会申请的权限、会调用的API、存在的恶意代码的包名等,通过更多维度更多信息去定位某个类型的病毒,这样的话病毒改动不大的话都会被查杀,不过这样肯定也会误杀。
  • 再后来就是将以上特征全部整合,分成很多更小的维度,利用机器学习来分析更多的样本,不断优化特征集,尽可能的减少误杀,这种方式前期需要病毒分析师进行大量工作,提取不同维度的特征值,给每一个样本加标签,然后不断的优化。

疑难问题解决

无法解压-Android 应用伪加密

首先了解下什么样的apk,是经过经过伪加密的:

我们使用解压软件解压需要密码的很大可能就是伪加密的apk。

其实这种加密的效果不大,我们可以使用工具处理后即可。

可在公众号回复“Android 应用伪加密”获取工具

AndroidManifest.xml反编译失败

由于修改AndroidManifest.xml,导致apktool无法反编译

正常的:

修改后的:

将其中的00 00 00 03改为00 00 00 00,保存后重新反编译即可

可在公众号回复“AndroidManifest.xml文件反编译失败”获取工具

某工具反编译后代码不全

如下图,正常反编译后部分代码无法正常查看,这可能是针对jeb反编译做了防护,可以使用其他工具查看。

这种情况还有可能是odex文件,我们直接用jeb反编译是无法正常分析的,需要将odex或者vdex等转成dex文件。

下图使用010 Editor等工具查看dex文件后发现不是传统的dex.035开头,这就需要工具转换成dex文件。

可在公众号回复“odex转dex”获取工具,处理后再看文件格式及为正常的dex文件了,再反编译应该就正常了。

公众号文章:
https://mp.weixin.qq.com/s/-TUsohTUuP1QlK6Hr0vkVQ

参考文章:
https://blog.csdn.net/u011266992/article/details/61192333
https://white.anva.org.cn/rel/file/ydwj.pdf

本文由博客一文多发平台 OpenWrite 发布!

有关Android病毒分析基础(一)的更多相关文章

  1. postman接口测试工具-基础使用教程 - 2

    1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,

  2. 软件测试基础 - 2

    Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功

  3. ES基础入门 - 2

    ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear

  4. 安卓apk修改(Android反编译apk) - 2

    最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路

  5. 【网络】-- 网络基础 - 2

    (本文是网络的宏观的概念铺垫)目录计算机网络背景网络发展认识"协议"网络协议初识协议分层OSI七层模型TCP/IP五层(或四层)模型报头以太网碰撞路由器IP地址和MAC地址IP地址与MAC地址总结IP地址MAC地址计算机网络背景网络发展        是最开始先有的计算机,计算机后来因为多项技术的水平升高,逐渐的计算机变的小型化、高效化。后来因为计算机其本身的计算能力比较的快速:独立模式:计算机之间相互独立。    如:有三个人,每个人做的不同的事物,但是是需要协作的完成。    而这三个人所做的事是需要进行协作的,然而刚开始因为每一台计算机之间都是互相独立的。所以前面的人处理完了就需要将数据

  6. 建模分析 | 平面2R机器人(二连杆)运动学与动力学建模(附Matlab仿真) - 2

    目录0专栏介绍1平面2R机器人概述2运动学建模2.1正运动学模型2.2逆运动学模型2.3机器人运动学仿真3动力学建模3.1计算动能3.2势能计算与动力学方程3.3动力学仿真0专栏介绍?附C++/Python/Matlab全套代码?课程设计、毕业设计、创新竞赛必备!详细介绍全局规划(图搜索、采样法、智能算法等);局部规划(DWA、APF等);曲线优化(贝塞尔曲线、B样条曲线等)。?详情:图解自动驾驶中的运动规划(MotionPlanning),附几十种规划算法1平面2R机器人概述如图1所示为本文的研究本体——平面2R机器人。对参数进行如下定义:机器人广义坐标

  7. 网站日志分析软件--让网站日志分析工作变得更简单 - 2

    网站的日志分析,是seo优化不可忽视的一门功课,但网站越大,每天产生的日志就越大,大站一天都可以产生几个G的网站日志,如果光靠肉眼去分析,那可能看到猴年马月都看不完,因此借助网站日志分析工具去分析网站日志,那将会使网站日志分析工作变得更简单。下面推荐两款网站日志分析软件。第一款:逆火网站日志分析器逆火网站日志分析器是一款功能全面的网站服务器日志分析软件。通过分析网站的日志文件,不仅能够精准的知道网站的访问量、网站的访问来源,网站的广告点击,访客的地区统计,搜索引擎关键字查询等,还能够一次性分析多个网站的日志文件,让你轻松管理网站。逆火网站日志分析器下载地址:https://pan.baidu.

  8. ABB-IRB-1200运动学分析MATLAB RVC工具分析+Simulink-Adams联合仿真 - 2

    一、机器人介绍        此处是基于MATLABRVC工具箱,对ABB-IRB-1200型号的微型机械臂进行正逆向运动学分析,并利Simulink工具实现对机械臂进行具有动力学参数的末端轨迹规划仿真,最后根据机械模型设计Simulink-Adams联合仿真。 图1.ABBIRB 1200尺寸参数示意图ABBIRB 1200提供的两种型号广泛适用于各作业,且两者间零部件通用,两种型号的工作范围分别为700 mm 和 900 mm,大有效负载分别为 7 kg 和5 kg。 IRB 1200 能够在狭小空间内能发挥其工作范围与性能优势,具有全新的设计、小型化的体积、高效的性能、易于集成、便捷的接

  9. 关于Qt程序打包后运行库依赖的常见问题分析及解决方法 - 2

    目录一.大致如下常见问题:(1)找不到程序所依赖的Qt库version`Qt_5'notfound(requiredby(2)CouldnotLoadtheQtplatformplugin"xcb"in""eventhoughitwasfound(3)打包到在不同的linux系统下,或者打包到高版本的相同系统下,运行程序时,直接提示段错误即segmentationfault,或者Illegalinstruction(coredumped)非法指令(4)ldd应用程序或者库,查看运行所依赖的库时,直接报段错误二.问题逐个分析,得出解决方法:(1)找不到程序所依赖的Qt库version`Qt_5'

  10. ruby-on-rails - 如何使用 ruby​​-prof 和 JMeter 分析 Rails - 2

    我想使用ruby​​-prof和JMeter分析Rails应用程序。我对分析特定Controller/操作/或模型方法的建议方法不感兴趣,我想分析完整堆栈,从上到下。所以我运行这样的东西:RAILS_ENV=productionruby-prof-fprof.outscript/server>/dev/null然后我在上面运行我的JMeter测试计划。然而,问题是使用CTRL+C或SIGKILL中断它也会在ruby​​-prof可以写入任何输出之前杀死它。如何在不中断ruby​​-prof的情况下停止mongrel服务器? 最佳答案

随机推荐