安天近期发现一例针对中国政府机构的准APT攻击事件,在攻击场景中,攻击者依托自动化攻击测试平台Cobalt Strike生成的、使用信标(Beacon)模式进行通信的Shellcode,实现了对目标主机进行远程控制的能力。这种攻击模式在目标主机中体现为:无恶意代码实体文件、每60秒发送一次网络心跳数据包、使用Cookie字段发送数据信息等行为,这些行为在一定程度上可以躲避主机安全防护检测软件的查杀与防火墙的拦截。鉴于这个攻击与Cobalt Strike平台的关系,我们暂时将这一攻击事件命名为APT-TOCS(TOCS,取Threat on Cobalt Strike之意)
APT-TOCS这一个攻击的核心步骤是:加载Shellcode的脚本功能,通过命令行调用powershell.exe将一段加密数据加载到内存中执行。解密后的数据是一段可执行的Shellcode,该Shellcode由Cobalt Strike(一个自动化攻击测试平台)所生成。安天分析小组根据加载Shellcode的脚本进行了关联,亦关联出一个可能在类似攻击中的作为脚本前导执行文件的PE程序,但由于相关脚本可以通过多种方式来执行,并不必然依赖前导PE程序加载,且其是Cobalt Strike所生成的标准攻击脚本,因此无法判定该前导PE文件与本例攻击的关联。这种基于脚本+Shellcode的方式注入内存执行没有硬盘写入操作,使用信标(Beacon)模式进行通信,支持多信标通信,可以同时和多个信标工作。这种攻击方式可以不依赖载体文件进行攻击,而可以依靠网络投放能力和内网横向移动按需投放,这将会给取证工作带来极大的困难,而且目前的一些沙箱检测产品也对这种攻击无效。
APT-TOCS攻击尽管看起来已经接近APT水准的攻击能力,但并非更多依赖攻击团队自身的能力,而是依托商业的自动化攻击测试平台来达成。
APT-TOCS是利用了”powershell.exe”执行Shellcode的脚本实现对目标系统的远程控制。安天分析人员认为攻击者掌握较多种最终可以达成多种脚本加载权限的远程注入手段,如利用安全缺陷或漏洞直接实现脚本在主机上执行。同时,通过关联分析,发现如下的二进制攻击前导文件(以下简称Sample A),曾被用于类似攻击:
该PE样本中嵌入的脚本,与安天获取到的Shellcode脚本功能代码完全相同,但加密数据存在差异,该PE样本曾在2015年5月2日被首次上传到Virustotal。
该PE样本使用WinExec运行嵌入的恶意代码:
由此可以初步看到,这一”前导文件”可以被作为类似攻击的前导,依托系统和应用漏洞,不依赖类似文件,依然可以实现脚本的执行与最终的控制。
从目前来看,并不能确定这一前导样本与本起APT事件具有关联关系。
APT-TOCS攻击远控的核心部分是依托PowerShell加载的加密数据脚本(以下简称Sample_B),图1为脚本各模块之间的衍生关系和模块主要功能:
Sample B文件的内容(base64的内容已经省略)如下:
该部分脚本的功能是:将base64加密过的内容进行解密,再使用Gzip进行解压缩,得到模块1,并使用PowerShell来加载执行。
脚本1的内容(base64的内容已经省略)如下:
此部分内容的功能是将经过base64加密的数据解密,得到模块1,写入到powershell.exe进程内,然后调用执行。
该模块的主要功能是调用wininet模块的函数,进行连接网络,下载模块2的操作;并加载到内存中执行。
上图为使用HTTPGET请求,获取文件:http://146.0.***.***/hfYn。
模块2创建并挂起系统进程rundll32.exe:
写入模块3的数据:
模块3的数据虽然是以”MZ”开头,但并非为PE文件,而是具有后门功能的Shellcode。
该模块会连接两个地址,端口号为80:
146.0.***.*** (罗马尼亚)
dc.******69.info (146.0.***.***) (罗马尼亚)
发送请求数据,接收返回数据。
上述IP、域名和访问地址的解密方式是”异或0x69″。
从该模块的字符串与所调用的系统函数来判断,该模块为后门程序,会主动向指定的地址发送GET请求,使用Cookie字段来发送心跳包,间隔时间为60秒。心跳包数据包括校验码、进程ID、系统版本、IP地址、计算机名、用户名、是否为64位进程,并将该数据使用RSA、BASE64加密及编码。
由于进程ID与校验码的不同,导致每次传输的心跳包数据不相同。校验码是使用进程ID和系统开机启动所经过的毫秒数进程计算得出的。算法如下:
加密后的心跳包使用Cookie字段进行传输:
安天CERT分析人员关联的PE前导文件Sample_A和Sample B利用PowerShell的方法和完全相同,但正应为相关脚本高度的标准化,并不排除Sample_A与本次攻击没有必然联系。而基于其他的情况综合分析,我们依然判断是一个系列化的攻击事件,攻击者可能采用了社工邮件、文件捆绑、系统和应用漏洞利用、内网横向移动等方式实现对目标主机的控制。
而在分析”模块1″时,我们发现了”Beacon”等字符串,依托过往分析经验,怀疑该Shellcode与自动化攻击测试平台Cobalt Strike密切相关。于是,分析人员对使用Cobalt Strike生成的Beacon进行对比分析,验证两者之间的关系。
Cobalt Strike 是一款以metasploit(一个渗透测试平台)为基础的GUI的框架式渗透工具,Cobalt Strike的商业版,集成了服务扫描、自动化溢出、多模式端口监听、多种木马生成方式(dll木马、内存木马、office宏病毒和Beacon通信木马等)、钓鱼攻击、站点克隆、目标信息获取,浏览器自动攻击等。
我们将模块1与使用Beacon生成的Payload进行比较,发现只有三处数据不同,分别为:Get请求时所发送的Head数据、请求的文件名称和IP地址。
左侧为样本模块1,右侧为由Beacon所生成的模块,从图中对比来看,可以得出结论,模块1是由Beacon所生成。
在请求时的数据包截图如下:
分析人员将样本的模块2与Beacon相关的文件进行比较,发现两者的反汇编指令除了功能代码不同之外,其它指令完全一致,包括入口处的异或解密、加载系统DLL、获取函数地址、函数调用方式等,下面列举三处:
下面是样本模块3与Beacon所生成模块的Get请求比较,可以看出,两者都是使用Cookie来传输信息,该信息进行了加密,每间隔60秒主动发送请求,该数据为上线包/心跳包。
利用Cobalt Strike的攻击可以在目标系统中执行多种操作,如:下载文件、上传文件、执行指定程序、注入键盘记录器、通过PowerShell执行命令、导入PowerShell脚本、通过CMD执行命令、利用mimikatz抓取系统密码等。
Cobalt Strike具有以下特点:
使用自动化攻击测试平台Cobalt Strike进行攻击渗透方式具有穿透防火墙的能力,其控制目标主机的方式非常隐蔽,难以被发现;同时具备攻击多种平台,如Windows、Linux、Mac等;同时与可信计算环境、云检测、沙箱检测等安全环节和手段均有对抗能力。从安天过去的跟踪来看,这种威胁已经存在近五年之久,但依然缺乏有效检测类似威胁的产品和手段。
安天CERT分析小组之所以将APT-TOCS事件定位为准APT事件,是因为该攻击事件一方面符合APT攻击针对高度定向目标作业的特点,同时隐蔽性较强、具有多种反侦测手段。但同时,与我们过去所熟悉的很多APT事件中,进攻方具备极高的成本承担能力与巨大的能力储备不同,其成本门槛并不高,事件的恶意代码并非由攻击者自身进行编写构造,商业攻击平台使事件的攻击者不再需要高昂的恶意代码的开发成本,相关攻击平台亦为攻击者提供了大量可选注入手段,为恶意代码的加载和持久化提供了配套方法,这种方式降低了攻击的成本,使得缺少雄厚资金、也没有精英黑客的国家和组织依托现有商业攻击平台提供的服务即可进行接近APT级攻击水准,而这种高度”模式化”攻击也会让攻击缺少鲜明的基因特点,从而更难追溯。
我们不仅要再次引用信息安全前辈Bruce Schiner的观点”一些重大的信息安全攻击事件时,都认为它们是网络战的例子。我认为这是无稽之谈。我认为目前正在发生而且真正重要的趋势是:越来越多战争中的战术行为扩散到更广泛的网络空间环境中,这一点非常重要。通过技术可以实现能力的传播,特别是计算机技术可以使攻击行为和攻击能力变得自动化。”显然,高度自动化的商业攻击平台使这种能力扩散速度已经超出了我们的预测。
我们需要提醒各方关注的是,鉴于网络攻击技术具有极低的复制成本的特点,当前已经存在严峻的网络军备扩散风险。商业渗透攻击测试平台的出现,一方面成为高效检验系统安全的有利工具,但对于缺少足够的安全预算、难以承担更多安全成本的国家、行业和机构来说,会成为一场噩梦。在这个问题上,一方面需要各方面建立更多的沟通和共识;而另一方面毫无疑问的是当前在攻防两端均拥有全球最顶级能力的超级大国,对于有效控制这种武器级攻击手段的扩散,应该担负起更多的责任。
同时,APT-TOCS与我们之前所发现的诸多事件一样,体现了一个拥有十三亿人口、正在进行大规模信息化建设的国家,所面对的严峻的网络安全挑战;当然,也见证着中国用户与安全企业为应对这种挑战所做的努力。