PowerShell 后门配置 | Windows 安全隐患解析
PowerShell控制台与Bash不同,支持多个配置文件。这些配置文件的执行顺序如下:所有用户,所有主机:Windows:$PSHOME\Profile.ps1Linux:/opt/microsoft/powershell/7/profile.ps1macOS:/usr/local/microsoft/powershell/7/profile.ps1所有用户,当前主机:Windows:$PSHOME\Microsoft.PowerShell_profile.ps1Linux:/opt/m
PowerShell 控制台与 Bash 不同,支持多个配置文件。这些配置文件的执行顺序如下:
所有用户,所有主机:
- Windows:
$PSHOME\Profile.ps1 - Linux:
/opt/microsoft/powershell/7/profile.ps1 - macOS:
/usr/local/microsoft/powershell/7/profile.ps1
所有用户,当前主机:
- Windows:
$PSHOME\Microsoft.PowerShell_profile.ps1 - Linux:
/opt/microsoft/powershell/7/Microsoft.PowerShell_profile.ps1 - macOS:
/usr/local/microsoft/powershell/7/Microsoft.PowerShell_profile.ps1
当前用户,所有主机:
- Windows:
$HOME\Documents\PowerShell\Profile.ps1 - Linux:
~/.config/powershell/profile.ps1 - macOS:
~/.config/powershell/profile.ps1
当前用户,当前主机:
- Windows:
$HOME\Documents\PowerShell\Microsoft.PowerShell_profile.ps1 - Linux:
~/.config/powershell/Microsoft.PowerShell_profile.ps1 - macOS:
~/.config/powershell/Microsoft.PowerShell_profile.ps1
PowerShell 中的 $PROFILE 变量存储当前会话中可用的配置文件路径。要查看配置文件路径,可以显示 $PROFILE 变量的值。$PROFILE 变量的不同属性存储其他配置文件的路径。例如,在 Windows PowerShell 控制台中,$PROFILE 变量的值如下:
- 当前用户,当前主机:
$PROFILE - 当前用户,当前主机:
$PROFILE.CurrentUserCurrentHost - 当前用户,所有主机:
$PROFILE.CurrentUserAllHosts - 所有用户,当前主机:
$PROFILE.AllUsersCurrentHost - 所有用户,所有主机:
$PROFILE.AllUsersAllHosts
由于 $PROFILE 变量的值在不同用户和主机应用程序中会变化,建议在每个 PowerShell 主机应用程序中查看其值。
要查看 $PROFILE 变量的当前值,可以输入以下命令:
$PROFILE | Select-Object *

这些配置文件可以像 Bash 配置文件一样用于放置后门程序。

默认情况下,这些文件不存在。接下来我们进行试验。
创建 C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1,并在其中输出字符 "I am a Backdoor":
Write-Host "I am a Backdoor"

在 cmd 中输入 powershell 进入 powershell。

创建 C:\Windows\System32\WindowsPowerShell\v1.0\Microsoft.PowerShell_profile.ps1,并在其中输出字符 "I am the second Backdoor"。

在 powershell 中输入 powershell 进入新的 powershell。

创建 C:\Users\Administrator\Documents\WindowsPowerShell\profile.ps1,并在其中输出 "I am the third Backdoor"。由于 WindowsPowerShell 目录不存在,我们需要先创建目录和文件。


在 powershell 中输入 powershell 进入新的 powershell。

创建 C:\Users\Administrator\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1,并在其中输出 "I am the fourth Backdoor"。因为目录已创建,我们直接创建文件。

在 powershell 中输入 powershell 进入新的 powershell。

这四个配置文件均可正常使用。
尝试重启电脑,再次进入 powershell,确认配置文件仍然有效。

现在有一个疑问,如果不是进入 powershell 控制台,直接执行正常的 powershell 脚本会执行吗?编写一个向控制台输出 "Hello World" 并弹出消息框的脚本 demo.ps1:
Write-Host "Hello World"
# 弹出一个消息框
Add-Type -AssemblyName PresentationFramework
[System.Windows.MessageBox]::Show("Hello, World!")在第一个后门文件中额外插入 powershell 代码,将 "I am a Backdoor" 写入到桌面的 backdoor.txt 中。

先是在 cmd 中进行测试:
powershell ./demo.ps1


删除 backdoor.txt,图形化右键执行 demo.ps1。



也就是说,这类后门对所有的 powershell 程序有效。
Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
















