极致反沙箱-银狐样本分析

看到有一篇写沙箱的文章,故找到原作者转载一下;

背景

近期看到一片推送说是发现了一个银狐的新样本,具有很强的反沙箱能力 原文在这里:https://mp.weixin.qq.com/s/htc8ZTbQ23kq3TEMlkqSfA?poc_token=HBgEqmajyJM4b9BvvEWIuC9KPieys6iw2QUbbqt5 我首先在wb沙箱查了下这个文件,确实没看到有啥行为,就带着好奇心分析了一把,在这里记录下。

极致反沙箱-银狐样本分析

这篇文章也主要是分析样本的反沙箱手段,详细的攻击细节可以参考上面的推文。

技术手段分析

简单直接的shellcode动态加载

这个shellcode加载也是很粗暴了(甚至都没有异或加密下),就是简单的VirtualAlloc分配可执行地址后,复制shellcode到动态内存,jmp跳转到shellcode执行。

极致反沙箱-银狐样本分析

shellcode入口

极致反沙箱-银狐样本分析
极致反沙箱-银狐样本分析

用了一个很常见的手段 call + pop的方式获取shellcode地址,然后进行解密。接下来动态单步跟踪到解密的循环处,通过条件断点断下解密完成的时机

极致反沙箱-银狐样本分析

解密完成后通过两个jmp指令来到解密后的真实shellcode的入口

极致反沙箱-银狐样本分析

接着跟进就会发现熟悉的shellcode操作,通过遍历PEB的LDR结构获取API地址

极致反沙箱-银狐样本分析

对抗细节

接下来直接分析dump下的内存

patch绕过(ETW/AMSI)

极致反沙箱-银狐样本分析

这一段的目的是patch ntdll.NtTraceEvent,用于绕过ETW。

极致反沙箱-银狐样本分析

接着patch了amsi.AmsiScanBuffer,用于绕过AMSI 接着进入正题,开始检测沙箱了。

检测Defender模拟器

这里就不留悬念了,直接给出这部分的全貌

极致反沙箱-银狐样本分析

首先通过检查样本运行起来的路径名,判断是不是”:myapp.exe”,如果是,直接退出进程(最开始想来应该是部分沙箱会将样本统一命名为myapp.exe后执行)

极致反沙箱-银狐样本分析

获取进程加载的ntdll的导出表条目,遍历导出函数,计算散列值,看是否命中一个hash黑名单(3个),如果命中,退出进程。

极致反沙箱-银狐样本分析

到这里我就很好奇它是想要检查哪3个api,由于hash是单向的,也没办法从hash得到api名,我只能试着搜了下这些hash,没想到最后在网上找到了它上面这一大堆操作的出处 https://github.com/hfiref0x/UACME/blob/master/Source/Shared/windefend.c 其中一个hash针对的api名是MpValidateVFSHandle,原来以上操作都是为了对抗Defender的模拟执行。

包括接下来利用Defender模拟执行环境某些api(NtIsProcessInJob、NtCompressKey)的硬编码的返回值来探测是否运行在Defender环境

极致反沙箱-银狐样本分析
极致反沙箱-银狐样本分析

检测沙箱(api假参数探测、分配大内存、物理内存、进程链检测、文件、cpu、时间)

接下来部分是真的在对抗沙箱了。

极致反沙箱-银狐样本分析
极致反沙箱-银狐样本分析

接着通过分配大内存、指定物理Numa节点分配内存反沙箱、如果内存分配失败检查进程是否加载”SxIn.dll”模块(这里没看懂这个模块是有啥特殊的,求大佬指点…) 这些操作如果失败了,直接退出进程

极致反沙箱-银狐样本分析
极致反沙箱-银狐样本分析

接着检查进程、进程链信息

极致反沙箱-银狐样本分析

只有满足以下任意一个条件才会继续执行

  1. 进程命令行参数列表中有一个参数为’t’
  2. 样本父进程/父父进程为Explorer进程
  3. MsiExec.exe进程存活 并且 当前进程的SID和AllocateAndInitializeSid初始化的SID一致

接下来常规的一些检测,检查cpu处理器数量、互斥体是否存在(防止双开)

极致反沙箱-银狐样本分析

接着判断进程是否具有管理员权限,如果不是,尝试runas执行提升权限

极致反沙箱-银狐样本分析

接着继续反沙箱,检测特殊文件、时间加速检测(GetTickCount+Sleep)

极致反沙箱-银狐样本分析

利用rdtsc指令和浮点运算指令计算指令运行的效率

极致反沙箱-银狐样本分析

如果这段指令运算超过0xA个时钟周期,就认为在沙箱环境中,退出执行。

对抗360

沙箱对抗完了,又继续对抗360,没完没了了…

极致反沙箱-银狐样本分析

先看下是否有360进程/窗口

极致反沙箱-银狐样本分析

接下来多次尝试通过发送窗口消息(WM_CLOSE)的方式关闭360

极致反沙箱-银狐样本分析

并且在用EnumWindows枚举窗口时候,在回调函数中针对360进程的窗口,发送WM_CLOSE和WM_QUIT消息,尝试关闭窗口;向360进程的所有线程发送WM_QUIT消息,尝试退出线程。

极致反沙箱-银狐样本分析

如果上面的工作做完了,360进程还是没被干掉,就要使出别的招了,通过下载反杀软的工具来对抗。这里链接失效了,我就不细探了,上面的推文里有涉及,主要是利用TrueSightKiller驱动强杀和利用句柄完成注入后强杀。如果还是不行…(360不行你认输吧,,,它太执着了),这玩意玩上了社工,给你弹窗诱导你退出

极致反沙箱-银狐样本分析

你如果不上这个当,那他就退出了。

defender加白

如果360进程不存在/被成功干掉了,会通过Powershell对指定目录加白

极致反沙箱-银狐样本分析

总结

这个样本利用了非常多的反杀软、沙箱的手段,其中有些还是否生效不得而知。简要总结下包括:

  1. patch绕过ETW、AMSI
  2. 检测Defender模拟执行特征
  3. 检测沙箱(cpu、api、内存、时间、文件)
  4. 窗口消息、线程消息、虚假诱导弹窗对抗360
  5. 驱动、句柄强杀

彩蛋

在圈子里交流发现,阿里云的沙箱(啥时候做的也不知道。。。)似乎能跑出来这个样本的一部分行为,能对上我分析的部分

极致反沙箱-银狐样本分析

平台链接在这里:https://ti.aliyun.com/#/sastiFile 感兴趣的朋友可以试试看,也很好奇为啥微步的没有成功,欢迎交流

参考

  • ioc: df2f4aad13fb6d08332e09fd47cd0c98
  • https://ti.aliyun.com/#/sastiFile
  • https://mp.weixin.qq.com/s/htc8ZTbQ23kq3TEMlkqSfA?poc_token=HBgEqmajyJM4b9BvvEWIuC9KPieys6iw2QUbbqt5
  • https://github.com/hfiref0x/UACME/blob/master/Source/Shared/windefend.c

安全的矛与盾

如果您对沙箱开发、二进制检测、逆向分析、edr规避等技术感兴趣,欢迎加入我们的交流群技术交流。

极致反沙箱-银狐样本分析

原文始发于微信公众号(安全的矛与盾):极致反沙箱-银狐样本分析

版权声明:admin 发表于 2024年8月3日 上午10:43。
转载请注明:极致反沙箱-银狐样本分析 | CTF导航

相关文章