2021.01.27-揭秘Lazarus组织最新活动中的新型间接命令执行攻击技术

APT Group
组织名称:Lazarus
关联组织:HIDDEN COBRA, Guardians of Peace, ZINC, NICKEL ACADEMY
战术标签:防御规避 
技术标签:社会工程学、间接命令执行
情报来源: New campaign targeting security researchers
TTPs导航:T1202

一、情报背景

近日,Google TAG安全部门披露了一起利用推特等社交媒体针对不同公司和组织从事漏洞研究和开发的安全研究人员的社会工程学攻击事件,经绿盟科技伏影实验室分析,确认此次事件为Lazarus组织针对网络安全行业的一次针对性网络攻击,并猜测其可能有更深层次的攻击意图和行动。绿盟科技攻击对抗技术研究团队M01N Team也针对此次事件展开了全面的分析研判,认定本次事件是一个典型的“明修栈道、暗渡陈仓”社会工程学攻击事件,也将在本文中揭秘该事件中Lazarus组织使用的一种新型间接命令执行攻击技术。

Lazarus组织是一支来自朝鲜半岛的APT组织。该组织自2007年就开始活跃,长期对韩国、中国、美国、印度等国家进行攻击活动。据国外安全公司的调查显示,Lazarus组织与2014年索尼影业遭黑客攻击事件,2016 年孟加拉国银行数据泄露事件,2017年美国国防承包商、美国能源部门及英国、韩国等比特币交易所被攻击等事件有关。而2017年席卷全球的最臭名昭著的安全事件“Wannacry”勒索病毒也被怀疑是该组织所为。

二、攻击技术分析

Lazarus组织的攻击者伪装成安全研究人员建立了一个研究博客和多个Twitter账号,这些伪装账号大都打上了Web开发、浏览器漏洞挖掘、Windows内核安全甚至CTF选手等一些身份标签,并会发布一些安全研究动态,同时相互评论转发来扩大影响力。

另外他们的博客(https://blog.br0vvnn [.] io)发表了多个已公开披露的漏洞分析文章,还包含一些不知情安全研究人员的来访评论,以图在安全研究人员中建立更高的信任度。

在建立了一定的研究影响力后,攻击者会主动寻找目标安全研究人员进行交流,并表达希望在漏洞研究方面进行更深入合作和交流的想法。此后攻击者便会向安全研究人员分享了一个Visual Studio的项目工程文件,该项目文件明为一些漏洞的POC代码,暗则是包含了等待目标研究员编译执行来触发的恶意命令和代码。

另外我们在梳理本次事件的攻击技术时,发现了该组织使用的一种新型间接命令执行技术并对其进行了扩展研究,以下将对该技术进行详细分析。

2.1 间接命令执行

首先我们来了解一下什么是间接命令执行,攻击者滥用允许执行命令的系统可信程序,绕过限制命令行解释器使用的安全限制,在无需调用cmd.exe的情况下间接完成命令执行的方法被称为间接命令执行技术(ATT&CK-T1202)。熟悉攻击技术的蓝军人员也将其归属为LOLBAS技术之一,攻击者可利用该技术进行防御规避,特别是因组策略等限制使用CMD的环境或规避EDR/EDP等终端安全检测防护的情况下执行系统命令。常见的方法包括程序兼容性助手(pcalua.exe)、适用于Linux的Windows子系统 (WSL)等。而本次曝光的通过Visual Studio工程项目配置文件在编译过程中完成命令执行的方法也属于间接命令执行。

2.2 利用Build Events特性于visual studio工程编译过程执行恶意命令

2.2.1 攻击技法揭秘

攻击者在此次攻击事件采用了在漏洞POC代码工程的.vcxproj项目文件中插入执行恶意Powershell命令的编译事件(Build Events)的攻击方法。

编译事件(Build Events)是MSBuild编译引擎在MSBuild项目(包括visual studio项目等)配置文件中提供的特性。编译事件共有3种,分别对应编译过程的不同阶段。正常情况下,它的作用是使得用户能够自定义在编译的各个阶段执行自定义的额外操作(例如提前对源代码进行修改等),实现对项目编译过程的灵活控制。

XML 元素描述
PreBuildEvent预先生成事件;在编译前执行自定义任务
PreLinkEvent预链接事件;在链接前执行自定义任务
PostBuildEvent后期生成事件;在编译完成后执行自定义任务

攻击者在此次事件中使用的是”PreBuildEvent”事件,Command元素中包含的Powershell命令将会在编译过程前被执行。经测试“PreLinkEvent”事件和“PostBuildEvent”事件同样可以触发完成命令执行。

在Visual Studio的项目属性页可以对几种生成事件进行可视化的查看与修改,例如本次攻击中在项目文件中出现的攻击命令在Visual Studio中的展示:

2.2.2 技术改进预测,命令行独立执行

本次事件中攻击者通过诱导受害者使用Visual Studio自行编译被投毒的项目文件,通过自定义编译时间实现恶意命令执行,获取对目标机器的控制。该种方法在钓鱼攻击手法上属于较为创新性的思路,但此种方法仍需用户进行比较复杂的交互手段,依赖性依旧比较大,也仅适用于类似此次事件当中的攻击场景。

在针对该攻击技术的研究中,本团队发现该攻击技术可以脱离对Visual Studio的依赖,而在命令行中利用MSBuild.exe独立执行,使得该攻击方法的适用范围从代码投毒钓鱼扩展到一种普遍适用的利用白名单程序的间接命令执行手法。

Visual Studio在进行项目文件的编译的过程中实际利用了MSBuild.exe编译引擎进行项目的编译,而.vcxproj项目文件实际是符合MSBuild编译引擎规范的XML文件,因此可以通过命令行调用MSBuild.exe实现项目的编译,进而通过项目文件中的”PreBuildEvent”编译事件利用MSBuild.exe程序绕过封锁实现自定义代码的执行。

首先在Visual Studio中为任意的C++项目添加“预先生成事件”

在.vcxproj项目文件中可以看到添加的”PreBuildEvent”事件:

接下来在编译过程中便会启动该程序(注意在编译输出中会有PreBuildEvent的提示)

此时的父子进程关系如下,可见Visual Studio主进程下的MSBuild.exe为新创建进程的父进程。由此可见一种检测思路是检测Visual Studio主进程下的可疑子进程,但是仅仅检测该进程是不够的,因为攻击者可以利用接下来介绍的方法,绕开对Visual Studio创建可疑进程的监测。

通过命令行直接执行以上步骤中生成的vcxproj文件可以直接触发编译过程,可见之前指定的notepad.exe程序被启动。

从进程关系来看,新启动的进程为MSBuild编译引擎的子进程,全过程未有Visual Studio进程的启动。

2.3 与代理执行技术的区别

作为蓝军技术研究人员,以往我们是知道MSBuild是一种非常常见的受信任开发者套件代理执行技术(ATT&CK-T1127.001),攻击者可以滥用MSBuild来代理执行恶意代码以达成防御规避的效果,.Net 4.0版本引入的MSBuild内联任务功能允许将C#代码插入到XML项目文件中,MSBuild将在执行编译的过程中执行内联任务中的恶意代码。比如:

MSBuild.exe编译引擎支持直接以符合格式规范的xml文件与csproj文件为参数,编译文件中嵌入的内联C#代码,根据代码功能的不同,攻击者可以利用该方法灵活地完成例如AWL Bypass、APC进程注入、Unmanaged PowerShell执行等攻击手法。

  • msbuild.exe pshell.xml
  • msbuild.exe project.csproj

以下为利用MSBuild的”UsingTask”元素创建执行内联C#代码的经典代码实现。这段代码利用.NET运行时Microsoft.Build.Tasks.Core.dll库文件创建任务,诸多的攻击方法皆是基于此经典结构。

事实上,也可以指定AssemblyFile为自定义的.NET程序文件,来实现自定义.NET程序文件的加载执行,但是如此操作便需要另外编译好的二进制文件,不如利用“Microsoft.Build.Tasks.Core.dll”编译内联汇编来的便捷与隐蔽。而本次的攻击技术实现并非执行恶意代码而是命令执行,再一次扩展了MSBuild的攻击向量。

三、攻击检测

以往基于Sysmon针对MSBuild内联任务代理执行恶意代码攻击的进程检测规则同样适用于本次编译事件触发间接命令执行的攻击检测。在之前的讨论的中我们可以得出结论,针对MSBuild.exe创建可疑子进程的基于父子进程关系检测依旧是行之有效的。对MSBuild.exe编译引擎创建Powershell.exe等可能被用于恶意攻击的进程需要进行重点关注与日志记录。同时,针对MSBuild.exe进程创建事件及文件操作事件,最好能检测文件内容,而监测其启动参数包含proj字符串也是一种临时解决方案,但存在被绕过的可能性。

MSBuild.exe编译引擎随.NET运行时在系统中预装,但具有本篇所介绍及其他的一些安全风险,对于没有使用需求的非技术人员建议禁用或限制该程序的执行。对于技术开发人员则更加需要提高警惕。

四、总结

回顾整个攻击事件,Lazarus组织此次的攻击活动完全是一个极具针对性的钓鱼攻击事件,新颖的社工思路和长周期的攻击前铺垫工作让处于安全研究的顶尖技术人员也难逃其手,所以这也是一个非常好的案例来说明“人才是最大的漏洞”,作为安全研究人员更应该从此次事件中汲取教训,也建议可能的受害者,包括安全研究人员及其所属公司做好自身的安全检查和加固。

另外此次事件中新出现的间接命令执行攻击方法,也呼吁各安全厂商及各单位安全部门对此提高关注度,做好对应的技术防护和应急工作。

关于 M01N:

绿盟科技M01N安全研究团队

我们专注于Red Team技术、APT等高级攻击技术、战术及威胁研究,涉及Web安全、终端安全、AD安全、云安全等多个领域的攻击技术研究。通过研判现网攻击技术发展方向,以攻促防,为风险识别及威胁对抗提供决策支撑,全面提升安全防护能力。

我们是一个低调的团队,但我们在技术的探索绝不低调,欢迎有相同志趣的小伙伴加入我们,共同研究红队技术,也非常欢迎对红队技术、红队工具研究方向有兴趣的同学联系与交流。

Location: 北京、西安、武汉

Spread the word. Share this post!

Meet The Author

Leave Comment