C2远控层面
C2, Command and Control, 命令与控制。主要是指攻击者通过与恶意软件的交互,对被害者进行控制,从而实施恶意活动的含义。从语义上来讲,C2即可用作为名词(基础设施)也可以作为动词(交互的行为),例如C2服务器(名词做定语)、攻击者进行C2攻击。另外,虽然在使用方法上C2适用于普遍的红队渗透攻击并在红队杀伤链中占据一定地位。但是在APT攻击中,APT攻击的目的往往不是为了破坏,而是为了窃密、监听。
常见杀软特点总结
杀软一般通过一下几点来检测恶意软件和行为:
1、静态查杀:最基本的查杀方式,主要通过对文件的特征码进行扫描,匹配已知的病毒特征库。如果发现文件特征码与病毒特征库中的某个病毒特征码相匹配,就判断该文件为病毒;部分杀软会在静态查杀时将程序放入沙箱中运行几秒的方式以检测程序是否是恶意程序。
2、动态(主动)查杀:通过在程序运行时扫描程序内存是否匹配病毒特征的方式主动发现恶意程序。在EDR中还会挂钩敏感的Windows API,在程序调用到被挂钩的API时检查函数参数和调用栈以检测恶意程序。
3、流量监控:监控网络流量,分析网络数据包,如果发现异常流量或者已知的恶意流量特征,就可能是恶意软件在进行网络活动。
4、行为监控:监控程序的运行行为,如文件操作、注册表操作等。如果发现某个程序的行为超出了正常范围,就可能是恶意软件。
常见杀软特点如下:
火绒:静态查杀能力弱,没有动态查杀,横向移动防护比较强,frp等内网穿透受影响。
360安全卫士/360杀毒:静态查杀能力较强,没有动态查杀,**如果开启了核晶模式,则行为查杀比较强,注入进程等敏感行为会被拦截;**核晶模式在物理机中默认开启,在虚拟机中默认关闭。
360QVM:360QVM 简单的说就是使用了机器学习辅助查杀,在360杀毒引擎设置中开启 360QVM 后静态查杀会变得非常流氓,有一点特征就会被查杀。
Windows Defender:静态查杀能力较强,动态查杀较强,监控 HTTP 流量。
卡巴斯基:普通版静态查杀能力一般,企业版静态查杀能力较强,动态查杀较强。
ESET:静态查杀能力较强,没有动态查杀。
按照静态查杀能力强弱排列如下:
火绒 < 360安全卫士、360杀毒、Windows Defender、卡巴斯基标准版 < 卡巴斯基企业版、ESET < 360QVM
按照动态查杀能力强弱排列如下:
火绒、360、ESET < 卡巴斯基 < Windows Defender
火绒、360、ESET 这几个没有动态查杀。
常见C2应用说明
CS(CobaltStrike)、MSF(Metasploit)、Viper、Ghost,比较小众的C2有Supershell、Manjusaka、sliver 等,还有个人开发的 C2。
后续研究会以CS 和 MSF测试。
C2语言
常见的用来制作免杀语言有C/C++、C#、Powershell、Python、Go、Rust等
C/C++:使用最多也是制作免杀的首选语言,很多高级的免杀技术都是使用C/C++来实现,Github 上很多高星的、优秀的免杀项目也是使用C/C++来实现。
C#:结合了C++的性能和Java的易用性,通过.NET框架来访问各种API,写起免杀来更为简单,但是基于.NET框架的语言也比其他语言更容易被检测到。
Powershell:基于.NET框架的脚本语言,可以很方便的执行,也可以很容易的将Powershell脚本转为C#程序,同C#一样也容易被检测到,2.0以上版本需绕过AMSI。
Python:语法简单,写起来容易,大部分学免杀的新手都会Python,认为Python容易,自己也懂Python,于是从 Python 开始学免杀,而结果恰恰相反,Pyhon写起免杀来比C/C++还要复杂,在C/C++中可以直接调用 Windows API,在 Python 中则要通过一层转化间接调用Windows API,而且Python打包的程序报毒比较高,体积比较大。
Go:适合编写高性能的网络应用程序,很多内网穿透工具和漏洞扫描工具如Frp、Fscan等都使用 Go 进行开发,学习 Go 语言免杀可以对这些工具进行免杀。
Rust:Rust性能同C/C++,结构比较整洁但是语法复杂,不适合新手选择。
其他:ASM、Nim、Java等
C2组成流程
shellcode -> loader -> exe
一般是上面3个流程,分别对上面某一个免杀