前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PowerShell 配置文件后门 | Windows 后门系列

PowerShell 配置文件后门 | Windows 后门系列

作者头像
意大利的猫
发布2024-01-12 15:54:26
1510
发布2024-01-12 15:54:26
举报
文章被收录于专栏:漫流砂漫流砂

cmd 没有类似于 bash 的配置文件,但是 powershell 是有的

PowerShell 控制台支持以下基本配置文件。配置文件按照执行顺序列出。

  • 所有用户,所有主机
    • 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

$PROFILE 自动变量存储当前会话中可用的 PowerShell 配置文件的路径。

若要查看配置文件路径,请显示 PROFILE 变量的值。还可以在命令中使用 PROFILE 变量来表示路径。

PROFILE 变量存储“当前用户,当前主机”配置文件的路径。其他配置文件保存在 PROFILE 变量的注释属性中。

例如,$PROFILE 变量在 Windows PowerShell 控制台中具有以下值。

  • 当前用户,当前主机 - $PROFILE
  • 当前用户,当前主机 - $PROFILE.CurrentUserCurrentHost
  • 当前用户,所有主机 - $PROFILE.CurrentUserAllHosts
  • 所有用户,当前主机 - $PROFILE.AllUsersCurrentHost
  • 所有用户,所有主机 - $PROFILE.AllUsersAllHosts

由于每个用户和每个主机应用程序中 $PROFILE 变量的值发生更改,因此请确保在所使用的每个 PowerShell 主机应用程序中显示配置文件变量的值。

若要查看 $PROFILE 变量的当前值,请键入:

PowerShell

代码语言:javascript
复制
$PROFILE | Select-Object *
代码语言:javascript
复制
AllUsersAllHosts       : C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1
AllUsersCurrentHost    : C:\Windows\System32\WindowsPowerShell\v1.0\Microsoft.PowerShell_profile.ps1
CurrentUserAllHosts    : C:\Users\Administrator\Documents\WindowsPowerShell\profile.ps1
CurrentUserCurrentHost : C:\Users\Administrator\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

这些配置文件中都可以类似 Bash 配置文件一样,在其中放置后门程序

默认情况下都不存在这些文件

接下来进行试验

创建 C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1 输出字符 I am a Backdoor

代码语言:javascript
复制
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

代码语言:javascript
复制
Write-Host "Hello World"

# 弹出一个消息框
Add-Type -AssemblyName PresentationFramework 
[System.Windows.MessageBox]::Show("Hello, World!")

在第一个后门文件中额外插入powershell 代码,将 I am a Backdoor 写入到桌面的 backdoor.txt

先是在 cmd 中进行测试

代码语言:javascript
复制
powershell ./demo.ps1

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

也就是说这类后门对所有的 powershell 程序有效

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-01-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 NOP Team 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档