### 做过其他免杀吗，比如结合 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` 等。这些工具通常包含了更高级的免杀技术