某CCC-BASE的逆向

背景

很早之前就已经分析过一遍,一直放在。今天突然又看到了,放着也是放着,索性拿出来分享一下,很多东西的细节省略了,这里只是谈及用到了什么技术,具体细节需要自己去学习;这里的版本是22-03-14,时间比较久了,有些可能说的不全,可能和你的分析有差别,以你的为准。

分析

为了方便描述,这里就从驱动入口开始,去掉敏感信息,初始化MJ函数。之后初始化了一个事件。后面会创建了一个符号连接,之后会提到。

 这样就有了两个符号连接,这里称为A和B,A是用来初始化的,B是用来获取各个信息。来看看A中有什么东西(通信数据被加密,可逆,这里省略),内容很多,挑感兴趣的说一下。

反调试

每次通信时会检测的东西,前提是打开反调试。获取debugport、检测peb、queryprocess 1f、ticketcount是否大于5000,检测到之后结束被调试的进程

顺便分离内核调试

初始化各种数据

api初始化,获取各个函数的地址

 ssdt/shadowssdt、pagelist、gTimerHashTable、lasspid、crsspid、以及win32k的某些偏移(对窗口、绘制等东西不熟,所以这里获取到的某些结构,我也不知道是什么)、ptebase等一些数据。

获取物理内存的使用和vad的偏移,以及获取ssdt表的各个函数

 初始化系统线程,每十秒执行一次

枚举受保护进程的FreezeCount

 20一次的枚举debugport、threadhinden、检测内核线程、以及和时间相关的东西

 

 30s一次的内核调试器分离,vm代码中有SharUserData的相关检测、以及KdRefreshDebuggerNotPresent,检测到bugcheck蓝屏

 其他功能

进程、线程、dll回调、ob都注册了,看看检测了什么东西。

时间检测

 vt和SharUserData检测

 mapping检测

 shellcode检测,和mdl有关,这里先看一看

 一些不常见检测

intelPT和nmi中断相关的blog在分析之后也看到过,不过比我当时分析的更详细,更具体,这里简单描述一下,这两个功能的目的都是中断下来检测当前的rip是否在收保护的进程中操作,如果是这里会保存下来,给你标记下来。

https://bbs.pediy.com/thread-273980.htm

https://bbs.pediy.com/thread-274613.htm

 hook 0e是的,它真的还在,不过做的方式是替换页表,而且在kpti开启的情况下会蓝屏,具体可以参考看雪的blog,这里就是给一个假的cr3,记录访问这个cr3的进程,好消息是17763不支持(难道是有什么难言之隐,就算没有,也只有在不支持内核页表隔离的系统上跑)

 MiTrackPtesAborted、MiDeadPteTrackerSListHead、MmTrackPtes mdlmapping映射检测,简单来说就是当mapp结束之后会插入到MiDeadPteTrackerSListHead链表,这里会开一个线程去检测这里面的数据

其他地方的线程暂停检测 

检测线程的栈信息

 当前计算机信息收集获取ataport.sys、storport.sys、CLASSPNP.sys、ndis、scsi等一些计算机网络、串口、文件的驱动,调用他们并获取计算机的信息,这里需要注意的是只支持19041一下的版本,瞧不起我19041以上的用户?这里的信息可以通过符号路径B获取到对应的数据

 还有很多接口,这里就不一一列举了。

符号链接B的接口

这里也列举几个有意思的接口,其中有几个可以利用的接口,mdlread,以及内核内存读,这里没有写。

 以及很多接口

 这里选两个受害者出来看看,第一个是取消apc,通过将ethread下的SchedulerApc直接ret的方式取消apc的调用

 第二个是调整当前进程的vad属性,参考blog​​​​​​​可以看看

 其实里面还有很多内容,有兴趣的可以自己去学习学习。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值