Allatori混淆动态调试分析

Allatori混淆动态调试分析0x00前言在家的某天正刷的抖音小姐姐的时候,朋友突然给我扔来一个jar包说是有后门叫我调试分析一下并且把后门去掉。起初以为也没多大事,只要查看代码中疑似后门的地

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

Allatori混淆动态调试分析

0x00 前言

在家的某天正刷的抖音小姐姐的时候,朋友突然给我扔来一个jar包说是有后门叫我调试分析一下并且把后门去掉。起初以为也没多大事,只要查看代码中疑似后门的地方去掉并且重新打包就好了,但是现实总是残酷的,jd-gui打开jar包,META-INF\META-INF.MANIFEST.MF

文件中定义的入口点方法除了定义了一些变量以外,并没有调用任何代码,这下就尴尬了。

而后想拿IDEA进行动态调试jar包,而这些混淆后的类中只有变量的定义,这下无从下手了,随后又试了recaf等反编译工具都不行。思索许久,找到了方法能进行动态调试。思索一个问题,在Java中植入后门的话目前我所能知道的实际上也就2种方法,一个就是解压缩文件落地到指定目录,然后使用反射调用落地的这个exe。第二种则是直接调用JNI或JNA加载dll文件实现加载shellcode。

0x01 Allatori 混淆器

先来看看这个混淆器是如何进行混淆的。

官网:http://www.allatori.com/

原理

在混淆的使用进行加密,并且在Class类中会生成一个静态的解密方法,在使用到字符串的地方,调用解密方法解密,参数就是加密后的字符串。

使用

该混淆器分为两种方式分别是强加密方式 和快速混淆方式,强加密方式会获取调用堆栈。

下载 Allatori-7.1-Demo.zip
然后进入目录 Allatori-7.7-Demo\tutorial\step01\files

  • Clean.bat:清除 log.xml 以及生成混淆的文件
  • config.xml:混淆的配置文件
  • mousegestures-1.2.jar、test.jar:被混淆的 jar 包
  • MouseGesturesOriginal.bat:混淆前 jar 的测试命令
  • MouseGesturesObfuscated.bat:混淆后 jar 的测试命令
  • RunAllatori.bat:执行生成混淆 jar 的命令

官方默认对除了 public 修饰的类、方法、区域放开,其余的都会混淆处理。

修改config.xml文件:

<config>
    <input>
        <jar in="CVE-2020-14882-Gui_Exoloit.V2.2.jar" out="obf-test.jar"/>
        <jar in="mousegestures-1.2.jar" out="obf-mousegestures-1.2.jar"/>
    </input>

    <keep-names>
        <class access="protected+">
            <field access="protected+"/>
            <method access="protected+"/>
        </class>
    </keep-names>

    <property name="log-file" value="log.xml"/>
</config>
 <jar in="CVE-2020-14882-Gui_Exoloit.V2.2.jar" out="obf-test.jar"/>

这里面填写需要混淆和输出的jar包

混淆完成后,扔到jd-gui里面

Allatori混淆动态调试分析

发现部分代码已经查看不了。

0x02 调试分析

jar包调试可查看该篇文jar包调试技巧,这里拿个自写的POC工具进行调试。存在后门jar包在此不做演示。

JDB动态调试

JDB是 The Java Debugger 的简称,它可以用来debug一个Java程序,同时它是 JPDA 的一个参考实现,只是这个实现是基于命令行的。只要熟记几个命令,在受限环境下debug还是很好用的。并且在安装JDK的时候会自带该命令。

Allatori混淆动态调试分析

启动调试模式

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005 -jar .\obf-test.jar

调试连接

jdb -connect com.sun.jdi.SocketAttach:hostname=localhost,port=5005

Allatori混淆动态调试分析

在jdb命令行执行命令即可进行断点调试。

classes   //加载已经类名

Allatori混淆动态调试分析

 stop in com.nice0e3.Processor.auto  //断点设置
 step //执行当前行

Allatori混淆动态调试分析

加载到这里已经可以看到调用了com.nice0e3.Processor.vuln_12_2()方法

stop in com.nice0e3.Processor.vuln_12_2
step

Allatori混淆动态调试分析

 eval  com.nice0e3.HttpClient.getRandomUserAgent() //该功能相当于IDEA调试中的ALT+F8的表达式求值功能

Allatori混淆动态调试分析

移除后门

在调试中找到加载后门的方法,并将类进行反编译把方法中执行后门的方法删除即可,一般都为void方法,删除为空方法即可。不影响正常使用。

分析得知该后门为远程请求文件 , 反射调用java.lang.ProcessBuilder执行cmd.exe /c C:\windows\temp\xxx.exe进行执行后门程序。

0x03 结尾

在使用该方法前,咨询了一下我的几个做安卓逆向的朋友该情况的解决方法。但回答都是进行远程调试,拿到混淆的字段或方法等,写脚本继续批量反编译。该方法比较麻烦没有进行尝试。即便去除后门后,建议工具等东西还是在虚拟机里运行较为恰当。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119876.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python 读json_python json文件

    python 读json_python json文件python中和json读写相关的主要是json模块的以下四个函数dumps()将一个python对象编码为json对象 loads()讲一个json对象解析为python对象 dump()将python对象写入文件 load()从文件中读取json数据1、dumps()和loads()主要用于Python和json对象的相互转化。importjsonprices…

    2022年10月12日
    0
  • 微商分销管理系统开发解决方案

    微商分销管理系统开发解决方案微商分销管理系统开发-专业微商分销管理系统解决方案微商分销管理系统是能掌控代理商所以大数据及代理管理体系,通过系统能对产品的生产、仓储、分销、物流运输、市场巡检及消费者等环节进行采集跟踪,实现产品生产环节、销售环节、流通环节…

    2022年5月17日
    34
  • 至强e5处理器天梯图_e系列cpu天梯图

    至强e5处理器天梯图_e系列cpu天梯图lintel的至强CPU(Xeon)是为服务器准备的,优点核心数、线程数超多,对多任务处理优势明显,现在很多桌面电脑也会搭配志强CPU,用于游戏挂机,多任务处理等等。那么你们知道至强CPU性能排行榜,志强CPU中哪个最强,感兴趣的朋友一起来看看至强系列cpu天梯图,由本站2020年6月发布。至强CPU单线程跑分和多线程跑分性能排行榜:至强系列cpu天梯图2020:(数据比较多,大家可以使用CTR…

    2022年9月20日
    0
  • 数据库中间件简介_数据库中间件还用吗

    数据库中间件简介_数据库中间件还用吗数据库中间件可以简化对读写分离以及分库分表的操作,并隐藏底层实现细节,可以像操作单库单表那样操作多库多表,主流的设计方案主要有两种:1、服务端代理:需要独立部署一个代理服务,该代理服务后面管理多个数据库实例,在应用中通过一个数据源与该代理服务器建立连接,由该代理去操作底层数据库,并返回相应结果。优点是支持多语言,对业务透明,缺点是实现复杂,实现难度大,同时代理需要确保自身高可用2、客户端代理:在连接池或数据库驱动上进行一层封装,内部与不同的数据库建立连接,并对SQL…

    2022年10月24日
    0
  • php 第三方登录总结OAuth协议

    php 第三方登录总结OAuth协议

    2021年10月25日
    57
  • 2020年保密在线考试答案_2022保密教育线上培训考试30题

    2020年保密在线考试答案_2022保密教育线上培训考试30题2022年度保密教育线上培训考试参考答案选择题根据工作需要,指定定密责任人可以是本机关、本单位内设机构负责人;根据刑法第398条规定,国家机关工作人员违反保守国家秘密法的规定,故意或者过失泄露国家秘密,情节严重的,处三年以下有期徒刑或者拘役;机密级国家秘密是重要的国家秘密,泄露会使国家安全和利益遭受严重的损害;涉密人员使用普通手机,正确的做法是:不在通信中涉及国家秘密、不在手机上存储、处理、传输涉及国家秘密的信息、不在涉密公务活动中开启和使用位置服务功能;泄露军事设施秘密,或者为境外的机构、组

    2022年9月22日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号