Hikedaya
В Dash'e под Chronostasis'ом.

Собственно, как с этой заразой бороться в случае заражения сети. Исходные данные следующие:

- Доменная сеть, серверы на Windows 2003, клиенты на XP x86 SP2 или SP3 (rus, eng).
- Антивирус есть, обновленный, но активную заразу не выкорчевывающий, хотя новую заразу отстреливает исправно.
- Активная зараза есть, пытается пробиться на другие машины.
- Серверы вычищены.
- Клиентов много, речи о том, чтобы лечить каждого руками не идет в силу их географической разбросанности.
- Вариант административного заражения сети исключен.

На помощь приходят две политики. Первая - расстановка всех нужных обновлений. Как уже было написано, их три: MS08-067, MS08-068, MS09-001. Тащим с сайта MS версии этих заплаток для всех языков, которые используются. В нашем случае их два - русский и английский. Все скачанное складываем в отдельную сетевую папку. В итоге получаем нечто вроде этого:
Каталог \хр.
Подкаталог \ms08-067. Файлы WindowsXP-KB958644-x86-ENU.exe и WindowsXP-KB958644-x86-RUS.exe
Подкаталог \ms08-068. Файлы WindowsXP-KB957097-x86-ENU.exe и WindowsXP-KB957097-x86-RUS.exe
Подкаталог \ms09-001. Файлы WindowsXP-KB958687-x86-ENU.exe и WindowsXP-KB958687-x86-RUS.exe

Материал для расстановки подготовлен. Теперь пишем сценарий установки:

Update.vbs

Вот так он выглядит. Сам файл сценария надо будет положить в каталог xp. После чего создается новый объект групповой политики, который привязывается к группе Domain Computers, а группа серверов исключается из области действия. В этой политике нужно будет задать в Параметрах компьютера сценарий загрузки. Сам сценарий представлен выше.
Что он делает. По-очереди проверяет наличие каждой заплатки в системе. Если не находит какую-то - устанавливает. После установки обновок выполняется принудительный запуск служб Автоматического обновления, Фоновой интеллектуальной передачи данных, и службы отправки сообщений об ошибках. Эти три службы блокируются заразой во время ее действия.

Обновления установлены. Следующий шаг - вынести заразу из памяти компьютера, если она там есть, и из места ее хранения - system32. Попутно вынести ключи реестра, которые ее запускают. В этом помогает, как уже тоже было написано, утилита от Касперского - Kkiller версии 3.4.1. Но с ней есть одна тонкость. Она категорически отказывалась работать вне пользовательского окружения. Иными словами - корректно у меня она срабатывала только тогда, когда пользователь уже зашел в систему. Здесь засада - для манипуляций с каталогом system32 нужны административные права, а у пользователя их нет и быть не должно. Получается, что запускаться Kkiller должен от имени администратора, а как такое можно обеспечить в момент захода обычного пользователя? Простое добавление в автозагрузку не поможет, назначение обычного сценария загрузки - аналогично, потому что все эти средства запускают приложения от имени того пользователя, что сейчас выполняет вход в систему. Казалось бы, ситуация не самая хорошая. Спасибо коллеге из Москвы, поведал он мне про утилиту lsrunase.exe, которая, будучи запущенной с определенным набором параметров, позволяет запустить какое-либо приложение от имени другого пользователя. Благодаря ей задача сводится к достаточно простой групповой политике, в которой будут участвовать следующие компоненты: сценарий входа в систему для пользователя, утилита lsrunase, файл kkiller.exe. Все три компонента нужно будет положить в сетевую папку, подобно обновлениям, описанным выше. Сценарий входа пользователя будет выглядеть примерно так:

RunKiller.bat

Как видно, сценарий прост до безобразия. Однако, есть один момент, кроется он в шифровании пароля пользователя - Encrypted-user-pass. Как зашифровать пароль? Ответ прост. Вместе с утилитой lsrunase распространяется и утилитка LSEncrypt.exe. Она-то и позволяет зашифровать любую текстовую информацию. Шифрованную же строку можно будет использовать в сценарии.
Мой подход базируется на следующем. Сценарий входа будет выполняться при каждом входе каждого пользователя, к которым будет применена политика. Что называется - параноидальный режим, а иначе нельзя. Само собой, что во время сканирования утилитка будет кушать какую-то часть ресурсов компьютера, но с этим придется мириться.
Должен сказать еще пару слов о самой lsrunase. Эта утилита является платной. Поэтому ссылок на ее загрузку здесь дано не будет. В качестве light-версии оной распространяется программа lsrunas - делает абсолютно то же самое, но с одним ограничением - она пароль не шифрует. Это значит, что в сценарии он будет прописан в открытом виде, равно как в таком же виде будет передан по сети. Если есть уверенность в том, что шифрование не столь важно - можно использовать ее: Страница разработчика.
После того, как сценарий подготовлен, прописываем его в групповой политике как сценарий входа пользователя. А затем остается только ждать, когда будет перезапущен компьютер. После этого произойдет установка необходимых заплаток, что исключит возможность повторного использования уязвимости, а затем, когда в систему войдет пользователь, запустится утилита Kkiller, которая уничтожит зловреда в памяти и основных местах его "обитания". После этого уже можно будет дать команду основному антивирусному средству на полное сканирование системы для очистки от всей остальной заразы.

Если приведенная выше информация кому-то поможет справиться с заражением сети, значит не все напрасно. Что до меня - мне остается только ждать понедельника и смотреть на логи контроллеров домена.

@музыка: Guano Apes - No Speech

@темы: Security, Viruses and Spam