Старый знакомый – Win32/Conficker.C

редкая гадостьСтарая как мир фраза оказалась необычайно актуальной.

В очередной раз пришлось бороться со старым знакомым…

В очередной раз с переменным успехом т.к. силы явно не равны, но в итоге сопротивление червя-интеллектуала (на контроллеры собака… совался редко, главными объектами были выбраны сервера приложений, старался портить как можно меньше, но блокировал учетные записи до 150 штук за 10 минут) было сломлено и кривая потянувшаяся вверх в первый день инцидента неумолимо стала стремиться к отметке ноль.

Одна из методик борьбы с червем conficker является установка патча KB958644. Не стоит забывать что еще нужны

  • MS08-068 – KB957097
  • MS09-001 – KB958687

Ниже приведен скрипт для работы которого нужно подготовить файл Hostlist.txt со списком необходимых хостов.

Сразу после запуска скрипта производит запрос учетных данных под которыми будет производится работа, далее в зависимости от результатов работы формируется два файла:

  1. Offline.txt – сюда заносятся хосты которые выключены.
  2. Missing-KB958644.txt – в этот файл помещается список проблемных хостов на которых отсутствует нужный патч.
function Get-HotFix {
param (
[string[]]$ComputerName = ".",
[string]$Id = "",
[string]$Description = "",
$credential
)
trap {$false; continue}

if ((gwmi Win32_PingStatus -Filter "Address=’$ComputerName’").StatusCode -eq 0) {
if ($id -ne "" -and $Description -eq "") {
$id = $id.Replace("*","%")
$filter = "hotfixid LIKE ‘$id’"
} elseif ($id -eq "" -and $Description -ne "") {
$Description = $Description.Replace("*","%")
$filter = "description LIKE ‘$Description’"
} elseif ($id -ne "" -and $Description -ne "") {
Write-Host "WARNING: Use Id or Description parameter." -foregroundcolor yellow ;break
} else {
$filter = ""
}
if ($credential -eq $null) {
$HotFixes = get-wmiobject Win32_QuickFixEngineering -computerName $ComputerName -filter $filter | where-object {$_.hotfixid -ne "file 1"}
} else {
$HotFixes = get-wmiobject Win32_QuickFixEngineering -computerName $ComputerName -filter $filter -credential  $credential | where-object {$_.hotfixid -ne "file 1"}
}
$HotFixes
} else {
Write-Host "$($_) – Offline."
add-content $_ -path Offline.txt
}
}

$a = get-content Hostlist.txt
$credential = Get-Credential DOMAIN\User

$a | foreach { if (!(get-hotfix -id KB958644 -computername $_ -credential $credential)) {
Write-Host "$($_) – Missing KB958644."
add-content $_ -path Missing-KB958644.txt
} else {
Write-Host "$($_) – OK."
}
}

PS. к слову сказать приведенный скрипт с легкостью найдет все что его попросите, нужно только оперировать параметрами вызова процедуры

  • $Id – название патча
  • $Description – его описание
Буду благодарен, если поделитесь этой статьей:

Приглашаю присоединиться ко мне в следующих сервисах:
facebook Google Plus вКонтакте Twitter
Если Вам понравилась статья, то вы можете подписаться на RSS. А также бесплатно подписаться по E-mail и получать актуальную информацию в числе первых.
Получать обновления на email

Вы можете оставить комментарий.

Добавить комментарий

XHTML: Вы можете использовать тэги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>