首页
社区
课程
招聘
[原创]HoneyBadger系列一 开篇,虚拟机调试器来了
发表于: 2023-1-11 02:57 20669

[原创]HoneyBadger系列一 开篇,虚拟机调试器来了

2023-1-11 02:57
20669

各位坛友好,HoneyBadger是我写的一整套Android逆向分析工具,总共分为2个部分,一个是针对JNI层,一个是针对Java层。
本文主要是JNI层工具的介绍,对Java层感兴趣的请移步 HoneyBadger系列二 Android App全量监控也来了
水平有限,献丑了。

(新手请直接下翻跳到工具介绍部分,《初衷》部分默认读者均为有实际VM对抗经历者)
最近几年,随着移动安全的不断发展,分析样本是越来越困难了,有效对抗的手段也逐渐的转移到了so层,其中最有效的大概就是vm了,而且越来越多,也越来越强.
这就不得不让人思考:如何高效的对抗VM?以及层出不穷的奇技淫巧?
下面是我从这2个层面去思考的过程。

vm说到本质上,它增加的不是难度,而是工作量,所以从这个角度说,对抗没难度,只要汇编功底扎实都可以,我们关心的应当是高效,那么如何高效呢?
从实战的痛苦经验/经历出发,我认为,要解决高效问题首先要解决的是:对抗vm应该采用什么策略或者思路或者步骤,方案确定后工作量也就能预判了,这大概属于方法论范畴。
我实践的尝试过程是基于PE编辑/重组技术,实现PE的近似还原,如果能够相对快速的实现PE还原,或者大幅度的降低分析成本,那目的就基本达到了,思路在此抛砖引玉。

首先,伪码一,表示保护前的原代码:

然后,伪码二,表示在经过vm后的代码,大约如下(仅为便于描述,其实vm不vm的,具体保护形式不重要,因为即便是简单的几行花指令玩好也能急剧增加分析成本,万变不离其宗):

关键点:假如我们能够将上面的vm伪码(伪码二)处理为,伪码三:

那么,从伪码三转换为伪码一也是一样的原理,从而达到PE文件近似还原的目的也就有了可能。注意这里的近似还原不是说字节码和原始一模一样,而是从分析的角度一样,比如逻辑、可读性、直接丢到IDA后看到的效果等。
所以,我们要考虑的便是如何实现从伪码二到伪码三这个过程。

要实现这个过程,需要具备如下能力:

如果有以上的能力,PE还原就基本没问题了。
所以,我想要实现这个能力。

总有一些牛人或独辟蹊径、或功力深厚,使用一些不常见的做法,或者很巧妙的做法,让人烦不胜烦。
虽然我们可以选择拼体力、拼自己的工具链、拼积累,但这是一件绵绵无绝期的事情,玩的多了就会发现没啥意思,我不再喜欢时间花在这种事情上。
同时,很多时候,我们不关心算法是什么,而是只是想知道干了什么。
所以,我想要 直接 就能知道样本做了什么。

总结下来,我想要的就2点:

为了实现这两点,于是我写了2个东西

是的,我自己完整的实现了一款虚拟机。
虚拟机才是一切的基础核心,调试器只是界面,调试器原本是不想写的,而且其实也是没有必要的。

那么,上述的vm对抗思路可行否?
答案:已验证可行. demo验证很容易。
实战验证较麻烦,曾经20多天分析完的vm样本,3天可丢进IDA进行后续分析,只是仍有很多需要处理的地方,尚未形成工具化,所以暂不公开,待我忙完后如果论坛里没有相关讨论实践,我就来一篇完整实操。

可以直接知道样本做了什么了吗?
可以了,可打印一切日志,想要的,都可以有。

为什么要自己写而不用qemu?unicorn?以及其他?
这个解释起来又容易又不容易,主要看人,一句话描述的话就是:我认为不合适。所以就不解释了。
站在巨人肩膀上的未必是巨人。

为了应对JNI和JAVA层之间交互,从而脱离了虚拟机的监视范围的情况,于是我又处理了下面这个

同上,目的仍然是监视一切,当前的能力包括:

由于时间有限,且一直是自用,所以一直都是ROM版本,懒得弄成独立的bin。
对详情感兴趣的请移步 HoneyBadger系列二 Android App全量监控也来了

至此,花费数年,尽管仍有很多工作需要处理,但我想干的事情的地基已经完成,首先放出调试器。

在日常的分析中,SO的静态分析往往满足不了需求,从而需要动态调试。
而Android so的动态调试却可能遇到各种坎坷,用起来总是不爽快,却又无能为力,无能为力很重要。
此次的HoneyBadger版本提供了arm调试器功能,以期望解决这个问题。
以及不久的将来上文所述的PE编辑功能最终会可视化的体现到这里。

此arm调试器的原理是:基于HoneyBadger自身的虚拟机引擎,实现本地虚拟执行并实现调试功能。

支持的指令集:
Arm/ArmV7, 需要Arm64的朋友请耐心等待,不会太久了。
想要x86/x64来玩Windows上exe\dll\驱动的朋友需要等待的久一些,可能很久。但是,也会有的,一是因为我要实现自动挖掘漏洞的思路印证是计划的一部分,二是因为我很想换姿势重新玩一下VMP,以及其他高强度保护。

运行环境:
Windows X64 , 需要Mac/Linux版本的朋友请耐心等待,这个倒是没啥,纯属当前有点懒。

HoneyBager调试器目前提供了5个tab,分别是配置、反汇编、日志、断点、模块。





其他没什么需要解释的,都是常见的调试功能

当我写界面之后,才发现这个工作量也很大,区段、字符串、句柄、线程、监视、结构体定义、跳转高亮、DB、条件断点...都要写但还没咋写...
且要处理的细节超多...
原本想抄x64dbg的界面控件,说起来都是泪,现在x64dbg的源码只剩下ini等几个工具类和图标,其他全部删除重写了...

现在工具还有诸多不完善,希望直接用成熟产品的朋友还请耐心等待一段时间再用。

愿意当免费小白鼠的朋友,可以测试,发现问题、有需求、有建议都可以直接反馈给我,我一向很勤奋,应当更新速度不会太慢。

不在乎界面、明确知道自己需要什么的大佬也可以测试,需要的东西在日志文件中应当全都有,不论是遇到问题还是有需求直接反馈给我即可。

还请大家多一些宽容理解,我只是一个普通程序员,无法做到一次性完美,需要时间去完善。

下载地址: https://github.com/honeybadger8mg/honeybadger/releases

第二篇在这里
HoneyBadger系列二 Android App全量监控也来了

谢谢大家。

 
:start
    add
    cmp
    jmp
    bx
:end
:start
    add
    cmp
    jmp
    bx
:end
:start
    while(true)
        switch(translate()) {
            case vm_add:{
                break;
            }
            case vm_cmp:{
                break;
            }
            case vm_jmp:{
                break;
            }
            case vm_bx: {
                break
            }
        }
:end
:start
    while(true)
        switch(translate()) {
            case vm_add:{
                break;
            }
            case vm_cmp:{
                break;
            }
            case vm_jmp:{
                break;
            }
            case vm_bx: {
                break
            }
        }
:end
:start
    vm_add();
    vm_cmp();
    vm_jmp();
    vm_bx();
:end
:start
    vm_add();
    vm_cmp();
    vm_jmp();
    vm_bx();
:end
 

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2023-1-12 09:50 被eightmg编辑 ,原因:
收藏
免费 15
支持
分享
最新回复 (25)
雪    币: 3970
活跃值: (3559)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
提示找不到libcrypto.dll
2023-1-11 08:07
0
雪    币: 233
活跃值: (1346)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
不错,看起来很牛逼...................
加油,大佬
2023-1-11 09:16
0
雪    币: 233
活跃值: (1346)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
希望能坚持做下去,别烂尾
2023-1-11 09:16
0
雪    币: 343
活跃值: (1056)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
黑屏 提示找不到libcrypto.dll
什么操作系统?具体运行环境发一下,我测试下
2023-1-11 11:20
0
雪    币: 19
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
6
eightmg 什么操作系统?具体运行环境发一下,我测试下

windows 10 系统,启动exe 提示找不到libcrypto-1_1-x64.dll

最后于 2023-1-11 11:50 被jilay编辑 ,原因:
2023-1-11 11:49
0
雪    币: 4116
活跃值: (1034)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
jilay eightmg 什么操作系统?具体运行环境发一下,我测试下 windows 10 系统,启动exe 提示找不 ...
win11也有这个提示
2023-1-11 14:21
0
雪    币: 4116
活跃值: (1034)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
8

系统win11 22H2


最后于 2023-1-11 14:25 被Papaya.编辑 ,原因:
2023-1-11 14:23
0
雪    币: 1671
活跃值: (215852)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
9
优秀
2023-1-11 15:03
0
雪    币: 343
活跃值: (1056)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
10
黑屏 提示找不到libcrypto.dll
已修复,请重新下载
2023-1-11 16:08
0
雪    币: 343
活跃值: (1056)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
11
jilay eightmg 什么操作系统?具体运行环境发一下,我测试下 windows 10 系统,启动exe 提示找不 ...
已修复,请重新下载
2023-1-11 16:08
0
雪    币: 343
活跃值: (1056)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
12
Papaya. win11也有这个提示
已修复,请重新下载
2023-1-11 16:08
0
雪    币: 860
活跃值: (4145)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
13
eightmg 已修复,请重新下载


最后于 2023-1-11 20:26 被王麻子本人编辑 ,原因:
2023-1-11 20:24
0
雪    币: 116
活跃值: (1012)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
支持一下大佬
2023-1-11 23:26
0
雪    币: 0
活跃值: (69)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
火钳刘明
2023-1-12 01:48
0
雪    币: 180
活跃值: (112)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
主插件 是啥?
2023-2-1 14:21
0
雪    币: 562
活跃值: (4190)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
牛逼
2023-2-1 17:46
0
雪    币: 685
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
18
牛逼,下载试试
2023-2-2 19:03
0
雪    币: 551
活跃值: (1522)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
赞一个!
2023-2-21 10:01
0
雪    币: 51
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
20

无法定位程序输入点 CreateEventW于动态链接库

api ms win core synch 1 2 0.dll上

2023-5-7 21:48
1
雪    币: 3525
活跃值: (31011)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
好东东
2023-5-8 09:19
0
雪    币: 3836
活跃值: (4142)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
牛逼
2023-5-19 23:41
0
雪    币: 263
活跃值: (454)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
23
2023-8-14 18:39
0
雪    币: 4230
活跃值: (4939)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
工程不小,点赞
2023-8-14 19:34
0
雪    币: 400
活跃值: (795)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Da_
25
Mark
2023-11-8 20:13
0
游客
登录 | 注册 方可回帖
返回
//