-
-
[原创]极致反沙箱-银狐样本分析
-
发表于:
2024-8-1 14:41
6567
-
df2f4aad13fb6d08332e09fd47cd0c98
近期看到一片推送说是发现了一个银狐的新样本,具有很强的反沙箱能力
原文在这里:https://mp.weixin.qq.com/s/htc8ZTbQ23kq3TEMlkqSfA?poc_token=HBgEqmajyJM4b9BvvEWIuC9KPieys6iw2QUbbqt5
我首先在wb沙箱查了下这个文件,确实没看到有啥行为,就带着好奇心分析了一把,在这里记录下
这篇文章也主要是分析样本的反沙箱手段,详细的攻击细节可以参考上面的推文。
这个shellcode加载也是很粗暴了(甚至都没有异或加密下),就是简单的VirtualAlloc分配可执行地址后,复制shellcode到动态内存,jmp跳转到shellcode执行。
用了一个很常见的手段 call + pop的方式获取shellcode地址,然后进行解密。
接下来动态单步跟踪到解密的循环处,通过条件断点断下解密完成的时机
解密完成后通过两个jmp指令来到解密后的真实shellcode的入口
接着跟就会发现熟悉的shellcode操作,通过遍历PEB的LDR结构获取API地址
接下来直接分析dump下的内存
这一段的目的是patch ntdll.NtTraceEvent,用于绕过ETW。
接着patch了amsi.AmsiScanBuffer,用于绕过AMSI
接着进入正题,开始真正的对抗了。
这里就不留悬念了,直接给出这部分的全貌
首先通过检查样本运行起来的路径,判断是不是":\myapp.exe",如果是,直接退出进程(最开始想来应该是部分沙箱会将样本统一命名为myapp.exe后执行)
获取进程加载的ntdll的导出表条目,遍历导出函数,计算散列值,看是否命中一个hash黑名单(3个),如果命中,退出进程。
到这里我就很好奇它是想要检查哪3个api,由于hash是单向的,也没办法从hash得到api名,我只能试着搜了下这些hash,没想到最后在网上找到了它上面这一大堆操作的出处
https://github.com/hfiref0x/UACME/blob/master/Source/Shared/windefend.c
原来以上操作都是为了对抗Defender的模拟执行。
包括接下来利用Defender模拟执行环境某些api(NtIsProcessInJob、NtCompressKey)的硬编码的返回值来探测是否运行在Defender环境
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课