Files
2025-09-25 03:59:29 +08:00

27 lines
3.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
### 做过其他免杀吗,比如结合 CS 和 MSF 的
**MSFvenom 生成的 Payload 如何免杀?**
`msfvenom` 是一个强大的命令行工具,用于生成各种 Payload。它自带了多种编码器(Encoder),可以对 Payload 进行编码来绕过简单的静态特征码检测
- **编码器(Encoders)**:最简单的免杀方法是使用 `msfvenom` 自带的编码器,例如 `shikata_ga_nai`。这个编码器会对 Shellcode 进行多态编码,使得每次生成的 Payload 都不一样。但是,这种方法对于现代杀软来说已经不够了,因为杀软可以识别出编码器本身的行为模式
- **利用模板文件(Templates)**:你可以使用 `-x` 参数指定一个合法的可执行文件(例如 `notepad.exe`)作为模板,`msfvenom` 会将 Payload 注入到这个文件中。这样可以改变文件哈希,并且文件看起来像一个正常的程序
- **自定义 Shellcode 和加载器(Loader**
- **生成纯 Shellcode**:使用 `-f raw``-f bin` 参数生成原始的 Shellcode 二进制文件,不带任何可执行文件头
- **编写自定义加载器**:用 C++、C# 或 PowerShell 等语言编写一个加载器,它的任务是将 Shellcode 加载到内存并执行
- **混淆加载器代码**:对加载器的代码进行混淆,比如使用花指令、字符串加密,以及反沙箱技术,来绕过杀软对加载器的静态检测
- **内存执行**:加载器可以使用一些技巧,如 `VirtualAlloc``WriteProcessMemory``CreateThread` 等 API,来分配内存、将 Shellcode 写入,并在新线程中执行。由于 Shellcode 只是数据,不直接在文件中,静态杀软很难发现它
**Cobalt Strike 生成的 Payload 如何免杀?**
Cobalt Strike 生成的 Beacon Payload 同样非常强大,但它的默认 Payload 也会被杀软识别。CS 的免杀需要更高级的技巧
- **分离 Payload 和 Stager**CS 的 Beacon Payload 通常分为两个阶段:一个小的 `Stager` 和一个大的 `Stageless` Payload。`Stager` 的任务是下载 `Stageless` Payload。你可以只生成 `Stager`,并对其进行混淆,而将 `Stageless` Payload 托管在自己的服务器上
- **使用自定义的 Shellcode 加载器(Loader**
- CS 可以导出原始的 Shellcode。你可以使用前面提到的方法,用自定义的加载器来加载它
- 很多攻击者会使用**反射式 DLL 注入**来加载 Payload。他们将 Shellcode 封装成一个 DLL,然后通过进程注入技术将 DLL 加载到另一个无害的进程中,以隐藏其行为
- **绕过行为检测**:CS 的 Beacon 在网络通信、权限提升等方面有很多特征,可能会被杀软的行为监控引擎捕获为了绕过这些检测:
- **混淆网络通信**:使用自定义的通信协议或加密方式,使得流量看起来不像 Beacon 的默认流量
- **进程注入的规避**:使用更隐蔽的进程注入技术,例如直接在内存中执行,而不是写入磁盘文件
- **使用合法的证书和签名**:对 Payload 文件进行代码签名,增加其可信度
- **使用第三方工具**:除了自己编写加载器,还有很多开源或商业的工具专门用于混淆和打包 MSF/CS 的 Shellcode,例如 `sliver``Mythic` 等。这些工具通常包含了更高级的免杀技术