вторник, 23 июня 2009 г.

Удаляем “Левые” задания вида AT*.JOB


Вирус-червь Win32/Conficker создает в планировщике левые задания вида At*.job.

Для очистки компьютера от этой грязи написал скрипт на PowerShell.


Скрипт для очистки с одного компьютера.


param(

[string]$Computer,

[string]$Process = 'rundll32.exe',

[string]$FolderPath = 'c:WINDOWSTasks',

[string]$ObjectName = 'at',

$User

)

#################################################################################################################

if ($Computer -eq "" -and $Process -ne "" -and $FolderPath -ne "" -and $ObjectName -ne "") {

Write-Host "ERROR: Use Computer parameter." -foregroundcolor blue ;break

}

if ($User -is [String]) {

$Connection = Get-Credential -Credential $User

}

if ($FolderPath -like "*:*") {

$FolderPath = $FolderPath.replace(":","$");

Write-Host "The path parametre has been changed on $FolderPath " -foregroundcolor Green

}

if ($ObjectName -notlike "*'*'*") {

$ObjectName = $ObjectName+'*';

Write-Host "The path parametre has been changed on $ObjectName" -foregroundcolor Green

}

#################################################################################################################

$ArrInfo = @();

$InfoProcess = @();$InfoTasks = @();$counterProcess = 0;$counterTasks = 0

#################################################################################################################

if ($Connection -eq $null) {

$InfoTasks = Get-ChildItem -LiteralPath $Computer$FolderPath -ErrorAction SilentlyContinue | where {$_.PSIsContainer -eq $false -and $_.PSChildName -like $ObjectName}

if ($InfoTasks -like $ObjectName){

$InfoProcess = gwmi "win32_process" -ComputerName $Computer -filter "name='$Process'" | % {$counterProcess++;$_.terminate()}

$InfoTasks | % {$counterTasks++;$_.delete()}

}

}

else {

$InfoTasks = Get-ChildItem -LiteralPath $Computer$FolderPath -ErrorAction SilentlyContinue | where {$_.PSIsContainer -eq $false -and $_.PSChildName -like $ObjectName}

if ($InfoTasks -like $ObjectName){

$InfoProcess = gwmi "win32_process" -ComputerName $Computer -filter "name='$Process'" -Credential $Connection | % {$counterProcess++;$_.terminate()}

$InfoTasks | % {$counterTasks++;$_.delete()}

}

}

#################################################################################################################

$ArrInfo = "" | select @{e={$Computer};n='Компьютер'},

@{e={$Process};n='Процесс'}, @{e={$counterProcess};n='Остановлен процесс'}, @{e={$ObjectName};n='Имя файла'}, @{e={$counterTasks};n='Удален объект'}

#################################################################################################################

$ArrInfo


Для очистки компьютеров в сети нужно видо изменить скрипт используя следующее:


1. Параметры

param(

[int[]]$a,

[int[]]$b = 1..254

)


2.Функции проверки

Function ping ($Name){

$ping = new-object System.Net.NetworkInformation.Ping

if ($ping.send($Name).Status -eq "Success" ) { $True }

else { $False }

}


Function nbtstat ($Name) {

$nbtstat = c:WINDOWSsystem32nbtstat.exe -A $Name | % {$_ -replace " *",""}

if ($nbtstat.SyncRoot[6] -ne "Узелненайден.") { $True }

else { $False }

}


4. Создаем список ИП-адресов и переборам проходимся по ним

$IPNetwork = @()

foreach ($y in $a) {foreach ($x in $b) {$IPNetwork += $("192.168.$y.$x")}}


foreach ($ip in $IPNetwork){

$Alive = ;

$NetName =

$Alive = ping $ip


if ($Alive -eq $True){

$NetName = nbtstat $ip


if ($NetName -eq $True){


Часть скрипта для очистки берем из первого

}}}

0 коммент.:

Отправить комментарий

 

Also Sprach Brandmaior Copyright © 2009