【免杀】C2免杀 | 概念篇
一、什么是 C2 ?
Command and Control(命令与控制)的缩写,是指攻击者用来远程控制被入侵设备(如计算机、服务器等)的通信架构。C2 攻击 是指攻击者在目标系统中植入远程控制恶意软件(如木马、僵尸网络、后门),然后通过 C2 服务器 远程指挥被感染的设备执行各种恶意活动。
主流C2工具示例:Cobalt Strike(CS)
二、C2 免杀 主要针对 Windows
原因如下:
1、目标群体多
Windows 在企业、政府、个人用户中的市场占有率最高;
红队、APT、恶意攻击者最常面对的是 Windows 主机。
2、杀软与EDR防护机制强
Windows 系统中广泛部署了:
- 杀毒软件(如 Defender、360、卡巴等);
- EDR 系统(如 CrowdStrike、SentinelOne、火绒终端防护);
攻击者必须开发出各种免杀技巧绕过检测。
3、Windows 系统机制更复杂
有大量易于利用的 API(如 APC、DLL注入、WMI、COM);
系统自带的“白利用工具”丰富(LOLBAS 工具集);
支持 PE 文件、Shellcode、DLL、反射加载等多样的攻击载体。
4、其他平台也有免杀需求,但相对较少:
系统平台 | 是否常见免杀目标 | 特点 |
---|---|---|
Linux | ❌ 一般不需要免杀(权限薄弱处少) | 杀软少,用于服务器攻击场景 |
macOS | ❌ 罕见,市场小 | 有针对性的APT攻击会考虑 |
Android/iOS | ⭕ 但不是 C2 免杀常规目标 | 主要在移动端攻击中处理签名绕过 |
三、C2 免杀 相关概念
C2免杀的制作主要围绕以下三个层面:
1、Shellcode
Shellcode 是精心构造的二进制指令集,通常用于漏洞利用或恶意软件中,直接在目标系统的处理器上运行,常用于绕过安全机制以执行恶意操作(如打开命令行“Shell”,故名Shellcode)。
下图为CS生成的shellcode示例:
.c文件(可读)
.bin文件(不可读,部分可读)
2、Loader
什么是加载器(Loader)?
操作系统有操作系统的加载器;软件层面,开发中不同语言有不同语言的加载器...
它是程序运行中不可或缺的一个步骤,加载器会将程序置放在存储器中,让它开始运行。加载程序的步骤包括,读取可执行文件,将可执行文件的内容写入存储器中,之后开展其他所需的准备工作,准备让可执行文件运行。当加载完成之后,操作系统会将控制权交给加载的代码,让它开始运作。
加载器本质上就是一段专门设计的代码! 就是一个“迷你程序”(比如Windows的Loader
、安卓的ClassLoader
)。
从开机到玩游戏,背后都是各种加载器代码在默默干活
那么,在C2免杀中,加载器又是什么,起什么作用?
Github上关于加载器的一些项目:
GitHub - knownsec/shellcodeloader: shellcodeloader
GitHub - xf555er/ShellcodeLoader: This is my FirstRepository
3、exe
可执行PE文件,可进行降熵、签名等一系列操作