使用WSL2对Windows进行持久性控制

使用WSL2对Windows进行持久性控制

我不认为这是它的本意

使用WSL2对Windows进行持久性控制
适用于 Linux 2 (WSL2) 的 Windows 子系统

介绍

我真的很喜欢在 Windows 环境中进行开发。这是一个成熟的环境,拥有特权升级、利用和持久性控制的机会。大多数时候,当我们想到持久性之类的东西时,我们正在考虑诸如计划任务、启动二进制文件和注册表运行密钥修改之类的途径,以及我们如何使用这些途径直接与攻击者机器进行快速通信。

因此,本周进行了修补,我正在考虑如何使用上述某些过程设置额外的漏洞利用渠道。请注意,这些本身都不是过于隐秘的,因此尝试将其与另一个受信任的本地进程链接在一起是关键。

向 WSL2 打个招呼。

适用于 Linux 2 的 Windows 子系统

微软对 Windows 的子系统Linux 的定义是:

WSL 2 是适用于 Linux 架构的 Windows 子系统的新版本,它支持适用于 Linux 的 Windows 子系统在 Windows 上运行 ELF64 Linux 二进制文件。它的主要目标是提高文件系统性能,以及增加完整的系统调用兼容性

通过一些基本的 Powershell 命令并在“打开或关闭 Windows 功能”菜单中添加 WSL2,可以在 10-15 分钟内设置 WSL2 环境。安装完所有内容后,快速重启将启动更改。

我经常在 WSL2 中使用 Ubuntu 20.04,因为它可以轻松集成到 Visual Studio Code 中。这使我可以在我正在开发它的 Windows 环境中测试 Python 编码,并在本机 Linux 环境中测试它。

这句话的最后一部分是这里最重要的部分——原生 Linux 环境。

持久性

Windows Powershell 和命令行界面允许在已安装的 WSL2 发行版中执行命令。

使用WSL2对Windows进行持久性控制
通过 Windows 终端和 WSL 命令运行 cat /etc/passwd

能够通过终端本地执行命令让我开始思考——如果我可以执行这样的命令,我可以将这样的命令添加到注册表值或任务计划程序中。所以这就是我所做的。请记住,此过程假定您已经在主机上泄露了一个用户帐户,或者已经创建了一个。

HKCU\Software\Microsoft\Windows\CurrentVersion\Run 键的基本修改,以包含一个新值,该值指向位于 Ubuntu 环境中的基本 Bash 反向 shell。

使用WSL2对Windows进行持久性控制
指向 Kali 机器的简单 Bash 反向 shell
reg add “HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run” -v screendoor /t REG_SZ /d ‘“C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -windowstyle hidden -c wsl — distribution ubuntu-20.04 — exec bash /home/themayor/temp.sh”’
使用WSL2对Windows进行持久性控制
添加注册表键值以在 WSL2 Ubuntu 20.04 中执行 Bash 反向 shell

在我的外部 Kali 机器上启动反向侦听器后,我重新启动了我的 Windows 主机并重新登录到反向 shell。

使用WSL2对Windows进行持久性控制
WSL2 Ubuntu 20.04 发行版中的反向 shell

Pivoting

我们现在有了一种持久访问主机的机制。除了 Ubuntu 环境之外,我们还可以访问与主机用户相同的文件权限以及与 Windows 用户相同的命令执行(执行受限于 shell 可用性)。

使用WSL2对Windows进行持久性控制
从 WSL2 Ubuntu 20.04 执行的 Powershell 命令

为了尽量减少 Windows 主机本身的占用空间,我们可以利用 WSL2 Ubuntu 环境作为进入主机的立足点。有很多不同的方法可以做到这一点,但为了在本文中简单起见,我们将使用 Metasploit 的 web_delivery 模块来获取 Meterpreter 会话。生成有效负载,将其复制并粘贴到您当前的反向 shell 中,然后执行。

使用WSL2对Windows进行持久性控制
从 WSL2 Ubuntu 机器访问 Meterpreter
使用WSL2对Windows进行持久性控制
arp -a 和 ip a 命令的结果

运行 arp -a 将为我们提供子网上的主机 IP 地址,但是 WSL2 不使用 /24 子网。执行 ip a 命令为我们提供了 /20 形式的子网,如上所示。

在这一点上,Pivoting是微不足道的。我们需要先在 Metasploit 中创建路由并生成一个 SOCKS 代理。

使用WSL2对Windows进行持久性控制
172.22.80.0/20 子网上的 Metasploit 自动路由生成
使用WSL2对Windows进行持久性控制
设置 SOCKS4a 代理

我们现在可以使用 Proxychains 将来自 Kali 的流量通过 WSL2 Ubuntu 发行版代理到主机本身。

使用WSL2对Windows进行持久性控制

最后的想法

如引言中所述,作为攻击性安全操作者,我们随时可以使用各种工具来帮助我们在客户端环境中实现目标。随着防守的增加,我们也需要适应重新回到顶端。

我希望您今天在这里学到了一些新的东西,我鼓励您也可以在自己的实验室和环境中进行测试。

参考

https://docs.microsoft.com/en-us/windows/wsl/about

from

转载请注明出处及链接

Leave a Reply

您的电子邮箱地址不会被公开。 必填项已用 * 标注