Старый знакомый – Win32/Conficker.C
Старая как мир фраза оказалась необычайно актуальной.
В очередной раз пришлось бороться со старым знакомым…
В очередной раз с переменным успехом т.к. силы явно не равны, но в итоге сопротивление червя-интеллектуала (на контроллеры собака… совался редко, главными объектами были выбраны сервера приложений, старался портить как можно меньше, но блокировал учетные записи до 150 штук за 10 минут) было сломлено и кривая потянувшаяся вверх в первый день инцидента неумолимо стала стремиться к отметке ноль.
Одна из методик борьбы с червем conficker является установка патча KB958644. Не стоит забывать что еще нужны
- MS08-068 – KB957097
- MS09-001 – KB958687
Ниже приведен скрипт для работы которого нужно подготовить файл Hostlist.txt со списком необходимых хостов.
Сразу после запуска скрипта производит запрос учетных данных под которыми будет производится работа, далее в зависимости от результатов работы формируется два файла:
- Offline.txt – сюда заносятся хосты которые выключены.
- Missing-KB958644.txt – в этот файл помещается список проблемных хостов на которых отсутствует нужный патч.
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 – его описание
Похожие статьи
Приглашаю присоединиться ко мне в следующих сервисах:
Вы можете оставить комментарий.