0x00 背景
近期,在狩猎中,捕获到一批高度免杀的CobaltStrike样本,经过分析,目前这些免杀样本具备以下几种特征,第一,不在拘泥于传统的C++作为编程语言,也会采用C#或者Golang,或者脚本语言也会在整个攻击链中使用不同的语言,使用C++可能对使用者的要求有所提高,但是免杀效果可能更好。第二,对于shellcode的加密方式,不在拘泥于传统的异或或者AES,Base等公开的加密编码算法,也会采用一些好玩的,个性化的编码算法进行shellcode加密。第三,在开辟内存空间的时候,也不在使用传统的VirtualAlloc等R3层的API函数,更多的使用基于底层的API函数,第四,在调用shellcode过程中,也不像往常一样使用常规的方式调用shellcode,而是利用一些API的机制(CreateThread),或者回调机制(EnumSystemLocalesW),以及APC。