怎么进行SpyNote5.0 Client_APK逆向分析

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

怎么进行SpyNote5.0 Client_APK逆向分析

2、jadx-gui

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

怎么进行SpyNote5.0 Client_APK逆向分析

3、androidkiller

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

怎么进行SpyNote5.0 Client_APK逆向分析

3. 开始逆向分析

咱们开始对于Client_APK进行分析,通常喜欢将客户端生成的APK程序拖入androidkiller。拖入程序后androidkiller会自动进行反汇编,然后有程序分析结果。

怎么进行SpyNote5.0 Client_APK逆向分析

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

怎么进行SpyNote5.0 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个类,由于需要分析的代码比较多,所以有针对性的对于部分关键代码进行分析。

怎么进行SpyNote5.0 Client_APK逆向分析

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

3.1命令执行启动分析

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

怎么进行SpyNote5.0 Client_APK逆向分析

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

怎么进行SpyNote5.0 Client_APK逆向分析

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

怎么进行SpyNote5.0 Client_APK逆向分析

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等等,包含了工具所宣传的功能。

怎么进行SpyNote5.0 Client_APK逆向分析

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

怎么进行SpyNote5.0 Client_APK逆向分析

4. 总结

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

怎么进行SpyNote5.0 Client_APK逆向分析

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

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

看完上述内容,你们对怎么进行SpyNote5.0 Client_APK逆向分析有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

文章标题:怎么进行SpyNote5.0 Client_APK逆向分析,发布者:亿速云,转载请注明出处:https://worktile.com/kb/p/26763

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
亿速云的头像亿速云认证作者
上一篇 2022年9月18日 下午10:41
下一篇 2022年9月18日 下午10:43

相关推荐

  • MySQL主从延迟问题怎么解决

    什么是主从延迟 在讨论如何解决主从延迟之前,我们先了解下什么是主从延迟。 为了完成主从复制,从库需要通过 I/O 线程获取主库中 dump 线程读取的 binlog 内容并写入到自己的中继日志 relay log 中,从库的 SQL 线程再读取中继日志,重做中继日志中的日志,相当于再执行一遍 SQL…

    2022年9月18日
    4.2K00
  • Javascript如何实现没有map()的映射数组

    没有map()的映射数组 我们先介绍一下map方法。map()方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值,它会按照原始数组元素顺序依次处理元素。注意: map()不会改变原始数组,也不会对空数组进行检测。 下面我们来实现一个没有map的数组映射: // array.map(fu…

    2022年8月31日
    40900
  • Laravel中如何找到最慢的查询

    DB::listen() 幸运的是,在 laravel 中,我们可以定义一个在每次执行查询时调用的回调(参见 此处)。为此,请将以下代码添加到任何服务提供者(例如 AppServiceProvider): public function boot(){ DB::listen(function ($q…

    2022年9月8日
    56500
  • python如何实现重置递归限制

    重置递归限制 Python 限制递归次数到 1000,我们可以重置这个值: import sysx=1001print(sys.getrecursionlimit())sys.setrecursionlimit(x)print(sys.getrecursionlimit())#1-> 1000…

    2022年8月30日
    39500
  • jquery如何获取元素有几个子元素

    在jquery中,可以利用children()方法配合length属性来获取元素有几个子元素;children()方法可以返回被选元素的所有子元素,length属性可以获取包含jquery对象中元素的数目,语法为“$(指定元素).children().length;”。 本文操作环境:windows…

    2022年9月10日
    1.2K00
  • win11新建不了文本文档怎么解决

    在以往文章中,也有不少关于“win11新建不了文本文档怎么解决”的介绍,但内容并不是十分详尽。以下是小编最新整理的“win11新建不了文本文档怎么解决”相关知识,不仅内容详细,而且步骤、细节清晰,希望能够帮助大家解决一些工作中的疑惑。 方法一: 1、首先点开下面的“开始菜单” 2、在上方搜索看看能不…

    2022年6月27日
    1.5K00
  • MySQL乐观锁和悲观锁如何实现

    锁分类 MySQL的中锁按照范围主要分为表锁、行锁和页面锁。其中myisam存储引擎只支持表锁,InnoDB不仅仅支持行锁,在一定程度上也支持表锁。按照行为可以分为共享锁(读锁)、排他锁(写锁)和意向锁。按照思想分为乐观锁和悲观锁。 表结构 下面的SQL语句是表的结构: CREATE TABLE `…

    2022年9月8日
    54400
  • windows浩辰cad看图王图纸打开不显示怎么解决

    解决方法: 方法一: 1、首先我们要确保打开的图纸格式正确。 2、软件支持打开DWG、PDF、DXF这三种图纸格式。 3、此外,如果图纸本身数据错误也会导致显示不出来的问题。 方法二: 1、图纸太大也可能会导致无法在浩辰cad看图王中打开。 2、这时候我们需要在CAD本体中打开图纸,也可以用浩辰ca…

    2022年9月21日
    80300
  • 如何进行Apache Commons Collections反序列化漏洞分析与复现

    1.1 状态 完成漏洞挖掘条件分析、漏洞复现。 1.2 漏洞分析 存在安全缺陷的版本:Apache Commons Collections3.2.1以下,【JDK版本:1.7.0_80】Apache Maven 3.6.3。 POC核心代码: package com.patrilic.vul;imp…

    2022年9月8日
    89900
  • Java Valhalla Project项目是什么

    Valhalla项目的动机和原因 Oracle的Java语言架构师Brian Goetz在一次演讲中说,Valhalla项目的主要动机之一是希望使Java语言和运行时适应现代硬件。当Java语言诞生时(大约25年前撰写本文时),获取内存和算术运算的成本大致相同。 如今,这种情况已经发生了变化,内存提…

    2022年9月8日
    55600
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部