1. SpyNote5.0 是什么?

SpyNote是用来创建Android恶意程序的工具。它的功能引人注目,读取联系人、录音、命令执行、应用管理、键盘记录、GPS定位等等。这些功能对于研究安Android端恶意程序起到承上启下的作用。咱们能够通过一系列文章对于它的使用初步了解,《SpyNote V5.0图形化工具远程管理Android手机教程》、《小心,Android木马工具SpyNote免费啦!远程监听就是这么简单》、《当心,安卓远控(spynote)升级了……》等等。

2. 准备工具

对于SpyNote5.0 Client_APK的逆向分析却鲜有人问津,下面我简单介绍使用工具,然后开始进入逆向分析环节。

1、SpyNote5.0
下载地址:https://github.com/soDLL/SpyNote OR https://github.com/miladzero/SpyNote

2、jadx-gui

下载地址: https://github.com/skylot/jadx/releases

3、androidkiller

下载地址: https://www.guguzhu.com/soft/270509.html

3. 开始逆向分析

咱们开始对于Client_APK进行分析,通常喜欢将客户端生成的APK程序拖入androidkiller。(如何生成客户端请见上文的几篇文章) 拖入程序后androidkiller会自动进行反汇编,然后有程序分析结果。

在左侧按照继承关系分类Activity、Receiver、Service和应用权限(Uses-Permisson),能够看到客户端需要的应用权限很多。右侧则是smail汇编窗口和工作台。通过这个工具能清楚看到权限以及各类继承关系,但是工具版本比较低,代码还原的不完善。我将工具换成jadx-gui,然后继续开始逆向分析,将Client_APK导入。

咱们能看到三个包,分别是android.support,con.eset.ems2.gp,yps.eton.application。其中android.support为安卓本支持包其中包括低版本、v4、v7,con.eset.ems2.gp为配置包里面包含了host、client_name等信息,yps.eton.application则是咱们需要分析的。

打开yps.eton.application,咱们能看到14个类,由于需要分析的代码比较多,所以有针对性的对于部分关键代码进行分析。

通过之前androidkiller分析结构能够看到,A、F、G、k 这个写类继承了Service,Service 在安卓系统中代表后台持续运行。咱们不妨猜下,Client_APK中需要持续运行的可能会有什么?也许是关键对象会持续运行、受控、监听、多线程等等。咱们本次分析的重点是它部分功能以及如何识别流量。

3.1命令执行启动分析

咱们从A方法开始,A方法开始启动服务,遍历了R对象,取第三个元素,如果他等于1则执行j()。否则在判断a()是否已经被实例化后启动服务。在之后会继续判断j()是否具备root权限。

继续看j(),j()中使用执行su命令后,将Do I have root?写入文件/system/sd/temporary.txt,对于是否为root权限进行了判断。

接着看h(),之中使用了多线程,获取R对象中的存储的配置参数,采用循环和socket回传信息。

3.2 Base64编码应用部分功能分析

在查看A对象的导入列表时候发现之中包含android.util.Base64,说明在运行之中使用了base64编码。紧接着搜索关键字Base64,能够看到Base64包裹着((BitmapDrawable) applicationIcon).getBitmap(),其实内部就是应用图标。客户端将一些信息通过c0c1c3a2c0c1c分割以9xf89fff9xf89结尾进行传递,对于异常信息和选项采用fxf0x4x4x0fxf分割传递。

public void k() {new Thread(new Runnable() {public void run() {String str;try {StringBuffer stringBuffer = new StringBuffer();PackageManager packageManager = A.this.getApplicationContext().getPackageManager();for (ApplicationInfo applicationInfo : packageManager.getInstalledApplications(128)) {if (packageManager.getLaunchIntentForPackage(applicationInfo.packageName) != null && !packageManager.getLaunchIntentForPackage(applicationInfo.packageName).equals("")) {try {Date date = new Date(packageManager.getPackageInfo(applicationInfo.packageName, 4096).firstInstallTime);String str2 = packageManager.getLaunchIntentForPackage(applicationInfo.packageName) != null ? (applicationInfo.flags & 1) == 1 ? "system" : "user" : "";Drawable applicationIcon = packageManager.getApplicationIcon(applicationInfo.packageName);String str3 = new String();if (applicationIcon != null) {Bitmap bitmap = ((BitmapDrawable) applicationIcon).getBitmap();ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();bitmap.compress(CompressFormat.JPEG, 50, byteArrayOutputStream);str = Base64.encodeToString(byteArrayOutputStream.toByteArray(), 2);} else {str = str3;}stringBuffer.append(packageManager.getApplicationLabel(applicationInfo) + "c0c1c3a2c0c1c" + applicationInfo.packageName + "c0c1c3a2c0c1c" + str + "c0c1c3a2c0c1c" + str2 + "c0c1c3a2c0c1c" + date.toString() + "c0c1c3a2c0c1c" + A.this.getPackageName() + "9xf89fff9xf89");} catch (NameNotFoundException e) {A.this.h("applicationsfxf0x4x4x0fxf[My/Exception]" + e.getMessage().toString());}}}A.this.h("applicationsfxf0x4x4x0fxf" + stringBuffer.toString());} catch (Exception e2) {A.this.h("applicationsfxf0x4x4x0fxf[My/Exception]" + e2.getMessage().toString());}}}).start();}

3.3 信息获取部分功能分析

b方法是A对象中最长的方法,里面包含着switch case语句分支太多导致反汇编异常。观察注释不难看出,里面实现了大多数的获取信息的逻辑。例如:Device info、System info、Sim info、WIFI info等等,包含了工具所宣传的功能。

在b方法的重写里面有些地方值得注意,这里用于获取存储路径。传输路径信息的分隔符使用e1x1114x61114e。文件名信息分隔符使用-1c0c1c3a2c0c1c-1c0c1c3a2c0c1c-1c0c1c3a2c0c1c。通过这些信息能够较为准确的判断客户端传递时的操作。

4. 总结

在分析过程中能够看到各个功能的实现。Client使用了未加密和Base编码传输,传输过程中最明显的是分割符号。通过程序能够有效地判断,Client的传输行为。于是对于传输过程进行抓包。

图中明显看到分隔符号和base64编码内容。对于这点咱们可以在Snort中编写规则进行识别,识别示例:

alert tcp any any -> any any (content:"fxf0x4x4x0fxf"; sid:1; msg:SpyNote5.0 Client;)

AndroidAPK逆向分析:

http://www.hetianlab.com/expc.do?ec=ECID172.19.104.182014053009520900001

点击阅读原文做实验!

别忘了投稿哦

大家有好的技术原创文章

欢迎投稿至邮箱:edu@heetian.com

合天会根据文章的时效、新颖、文笔、实用等多方面评判给予200元-800元不等的稿费哦

有才能的你快来投稿吧!

了解投稿详情点击——重金悬赏 | 合天原创投稿涨稿费啦!

SpyNote5.0 Client_APK逆向分析相关推荐

  1. Android逆向分析工具ded的使用

    今天使用了ded做逆向分析,瞬间比Apktool高大上了,功能太强大了,不过还有升级版,明天研究.吼吼~ 详细内容可以参考这篇论文:A Study of Android Application Sec ...

  2. CRC原理及其逆向分析方法

    CRC原理及其逆向破解方法: 介绍: 这篇短文包含CRC原理介绍和其逆向分析方法,很多程序员和破解者不是很清楚了解 CRC的工作原理,而且几乎没人知道如何逆向分析它的方法,事实上它是非常有用的. 首先 ...

  3. (60)逆向分析 KiSwapThread —— 找就绪线程和空闲线程

    一.回顾 上一篇博客,我带着以下的问题逆向分析了 KiSwapContext 和 SwapContext 这两个函数: SwapContext 有几个参数,分别是什么? SwapContext 在哪里 ...

  4. (49)逆向分析KiSystemService/KiFastCallEntry调用内核函数部分(SST,SSDT,SSPT)

    一.回顾 前两篇博客,我逆向分析了 KiSystemService 和 KiFastCallEntry 填充_KTRAP_FRAME 结构体的代码,二者大同小异,主要的区别是 sysenter 只改了 ...

  5. (48)逆向分析 KiFastCallEntry 函数填充 _KTRAP_FRAME 部分

    一.回顾 上一篇博客我逆向了 KiSystemService 函数填充 _KTRAP_FRAME 部分. 逆向分析 KiSystemService 函数填充 _KTRAP_FRAME 部分 里面涉及了 ...

  6. (47)逆向分析 KiSystemService 函数填充 _KTRAP_FRAME 部分

    一.回顾 之前的课程,我们学习了API系统调用在3环部分做的事情,有两种方式进0环,分别是中断门和快速调用,分别调用两个不同的函数 KiSystemService 和 KiFastCallEntry. ...

  7. Linux Security Module逆向分析实战

    Linux Security Module逆向分析实战 本文记录了对某发行版Linux中一个安全模块(LSM)的逆向过程,该LSM对系统中待运行的程序进行安全校验,数据流穿越内核态与用户态,涉及系统内 ...

  8. 安卓 sharedpreferences可以被其它activity读取_【安卓逆向】“一份礼物”之我要o泡逆向分析...

    最近安卓手机有个恶搞程序"一份礼物"登上热搜. 该app的效果是打开之后手机便会以最大音量循环播放"我要o泡"音乐,并且无法调小音量,无法退出程序,甚至无法关机 ...

  9. Android无需权限显示悬浮窗, 兼谈逆向分析app

    前言 最近UC浏览器中文版出了一个快速搜索的功能, 在使用其他app的时候, 如果复制了一些内容, 屏幕顶部会弹一个窗口, 提示一些操作, 点击后跳转到UC, 显示这个悬浮窗不需要申请android. ...

最新文章

  1. 机器学习实战 - 读书笔记(04) - 朴素贝叶斯
  2. 读取STM32单片机-ID操作
  3. mysql snowflake_雪花算法-snowflake
  4. 事件机制(事件冒泡与事件捕获)
  5. java完成键盘动作_java实现鼠标和键盘动作后台监听
  6. 算法训练 字符串编辑(java)
  7. Spring Cloud 启动Eureka的Client(客户端)时,项目一启动就停止,控制台无任何报错信息
  8. 试试既然没人玩,没得试验了
  9. linux的夹子的权限,linux系统下MegaCli使用方法
  10. C程序设计,贪吃蛇程序
  11. wangEditor + vue双向绑定(光标游走问题)
  12. 英语听力采用计算机化考试,高考英语复习资料及听力机考特点与应对建议
  13. 课程实训-校园导游系统
  14. 2022年湖北省文化产业示范园(基地)发展专项资金申报条件以及奖励补贴情况!
  15. 虚拟机配置可用的DNS服务器
  16. Win10怎么隐藏任务栏时间 如何看不到右下角时间
  17. STM32F40x 最小系统
  18. ESLint:可组装的JavaScript和JSX检查工具
  19. m.555lu.co/vlist.php_新浪微博V2接口演示程序-Powered by Sina App Engine
  20. WE WANT U ┃中天微 国防科技大学2017届硕士专场校园宣讲会

热门文章

  1. Gluster的配置及离线安装
  2. 输入法自定义短语笔记/md常用配置/搜狗输入法自定义词库推荐
  3. 1328C Ternary XOR
  4. 《疯狂Android讲义》第二版目录
  5. 史上最全的javascript知识点总结,浅显易懂。
  6. 抖音直播带货后如何复盘?抖音直播间高效复盘法
  7. 电商交易背景知识合集第一季
  8. 经验说丨华为云视频Cloud Native架构下实践
  9. opencv实现matlab的median()函数
  10. 1002-过河卒-洛谷-luogu-动态规划dp