# 基于 Windows 的其他持久化技术

#### **主机账户**

在 Windows 中，主机账户 (中国网友喜爱称为影子账户) 是一种特殊的账户，特点是以 **$** 结尾。主机账户也可以享有用户账户的各种权限，甚至提升特权。而主机账户的好处在于使用 net user 命令不会显示出我们后门的主机账户。创建主机账户很简单，正如添加用户账户一样，我们甚至可以将其添加到高权限组中，或赋予 ACL。

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/YO1FjAN30oN7rcWn-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/YO1FjAN30oN7rcWn-image.png)

我们可以看到，在添加后，net.exe 确实不能显示出该主机帐号。但如果我们直接检视该账户，是能看到各种详细信息的。

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/ZUWLQH5jfzWkIAKK-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/ZUWLQH5jfzWkIAKK-image.png)

尽管不会被 net user 命令枚举出来，蓝队依旧有较多方法让被后门主机账户得以显现，例如检查 SAM 数据库、检查注册表、使用上一章节提到的诸如 WinPEAS、SeatBelt 等本地侦查工具等

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/i2WIc1rgR1WQFV0g-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/i2WIc1rgR1WQFV0g-image.png)

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/n5FkU6FXJYBN84ho-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/n5FkU6FXJYBN84ho-image.png)

并且，如果选择创建主机账户以实现持久化，那么目标主机需要对外开放可远程登陆的服务，例如 RDP，WinRM，SSH 等。

####   


#### **PowerShell 侧写**

每当用户运行 PowerShell.exe 的时候，PowerShell 侧写文件会被加载。我们可以通过执行命令 $Profile | select \* 来查询所有的 PowerShell 侧写，共有 4 个可能的位置：

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/Fj76mEc1ZwUgDWbG-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/Fj76mEc1ZwUgDWbG-image.png)

```powershell
C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1
C:\Windows\System32\WindowsPowerShell\v1.0\Microsoft.PowerShell_profile.ps1
C:\Users\<用户名>\Documents\WindowsPowerShell\profile.ps1
C:\Users\<用户名>\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
```

但是，显示出来的位置并不一定有现存的 profile.ps1 文件，我们可以自己新建一个。考虑到用户 serveradm 对 Web02 具有本地管理员权限，所以我们可以来到 AllUsersAllHosts 所对应的侧写目录：

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/SLIFDG19d1MDyg0U-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/SLIFDG19d1MDyg0U-image.png)

为了验证概念，我们在侧写中运行 calc.exe，然后移动到该目录下。运行一个新的 PowerShell 进程，会发现计算器弹出来了。

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/Mu40MxwvALP2rS2X-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/Mu40MxwvALP2rS2X-image.png)

####   


#### **终端侧写**

如果当前主机安装了 Windows Terminal，在版本较新的个人主机上会相对常见，我们可以修改终端的侧写文件从而实现持久化，原理类似 PowerShell 侧写。Windows Terminal 是 Windows 10 以及更新版本中替代 Command Prompt 的，并集成了多种 Shell，包括 CMD，PowerShell，Azure Shell 等。

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/wCgUQhDfcMkW5WVE-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/wCgUQhDfcMkW5WVE-image.png)

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/TfuxbGePIlY5Jeyx-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/TfuxbGePIlY5Jeyx-image.png)

我们定位到 **C:\\Users\\&lt;用户名&gt;\\AppData\\Local\\Packages\\Microsoft.WindowsTerminal\_&lt;Package ID&gt;\\LocalState** 中，编辑 settings.json。

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/AeoWSqW71isgQOy1-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/AeoWSqW71isgQOy1-image.png)

我们注意一下 **defaultProfile**，即默认侧写的 GUID。下面，包含了各种 Shell 的配置，其中 PowerShell 作为目前默认的 Shell。我们可以插入恶意的程序作为后门，这样每次用户打开 Terminal，就会触发指向的应用程序。这里，我们还指定了以提升特权运行。

```json
            {
                "guid": "{与<defaultProfile> GUID 值相同}",
                "name": "Proof Of Concept",
                "commandline": "%SystemRoot%\\System32\\calc.exe",
                "elevate": true
             },
```

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/PLdi0qiBnVbNyioU-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/PLdi0qiBnVbNyioU-image.png)