Естественный отбор или эпидемия Conficker (W32.Downadup)


Можно сколь угодно ругать и авторов недостаточно защищенных операционных систем и авторов вирусов.
Вирусов с годами не становится меньше от того, что за головы их создателей назначаются крупные суммы, а пойманные преступники получают по заслугам.
А эта самая общеизвестная незащищенность некоторых операционных систем, по большей части, порождена вынужденными компромиссами из-за необходимости обратной совместимости с собственными старыми продуктами и разработками сторонних производителей. Операционные системы, де-факто являющиеся стандартом, не только становятся все защищеннее и надежнее от версии к версии, но и их текущие обнаруженные уязвимости уже много лет решаются производителем достаточно оперативно.

Но Conficker (он же Downup, Kido, или даже Win32.HLLW.shadowbased) в очередной раз показал, что уж от собственной глупости человека невозможно уберечь. Ни навязчивыми предупреждениями, ни напоминаниями о необходимости обеспечения собственной комфортной жизни.
Да, средство автообновления давно и надежно интегрировано в ОС, да, специально для корпоративной среды выпущен совершенно бесплатный инструмент для централизованного обновления клиентов. Но на личных компьютерах автообновление зачастую принудительно отключается для экономии трафика, а потратить два часа времени на чтение документации и еще час на разворачивание сервиса WSUS ленится большинство системных администраторов.

Впрочем, ни для кого не секрет, что в большинстве случаев обновления отключаются не столько для экономии трафика, сколько для предупреждения установки очередной версии WGA сервиса (проверки подлинности ключа). Увы, но подавляющее большинство системных администраторов не задумывается о том, что вся ответственность за использование нелицензионного ПО лежит целиком и полностью лично на них, а не генеральном директоре, который не желает вынимать из оборота существенные средства на покупку товара, который и так у него уже есть.
Ну да ладно, незнание законов не освобождает от ответственности, а каждый человек сам хозяин своей судьбы. Один рискует бизнесом из-за изъятия оборудования с установленными контрафактными программными продуктами, второй рискует собственной свободой из-за нежелания адекватно объяснять риски для бизнеса первого.

Кстати, скажу по большому секрету, цикл установки обновлений с использование WSUS возможен не только в полностью автоматическом режиме. Но человек, не желающий один раз потратить время на изучение простейших сервисов облегчения собственной жизни, тем более не захочет тратить лишние десять минут в неделю на то, чтобы использовать сервис в полном соответствии со своей средой и потребностями. А уж о том, чтобы следить за выходом критических обновлений безопасности и вручную устанавливать только их, я даже боюсь заикаться 😉

За свою практику я несколько раз встречал отчаянных героев, что при поголовном доступе в Интернет и открытых USB портах даже не использовали простейший антивирус. Но, как правило, многочисленные трояны в интернет очень быстро осуществляли функцию естественного отбора и показывали, что профессия системного администратора создана для менее самонадеянных.

Так что же делать, если в девять утра сначала на одном, затем на втором-третьем-двенадцатом компьютере срабатывает уведомление об обнаруженном вирусе. При этом каждый раз антивирус предлагает перезагрузить компьютер для возможности удаления угрозы, а зараженный файл со странным именем каждый раз новый. И если через минуту после перезагрузки антивирус снова срабатывает?
Наиболее логичный ответ в виде выхода в окно из окна этажом повыше, не решит проблему, так как лично я бы сначала вызвал нашему герою лучшую бригаду реанимации, а затем заставил исправлять собственные ошибки.

Вкратце напомню, как может распространяется Conficker:

  1. Пытается скопировать себя в общие папки на машинах в сети, используя имя локального пользователя с зараженной машины и пароль из своего словаря. Для ежедневного запуска с целью дальнейшего распространения червь создает на заражаемой машине назначенное задание:
    rundll32.exe %variable%.dll, %random_string%
  2. Копирует себя на существующие сменные носители, при этом используются имена файлов:
    %drive%\RECYCLER\S-%variable1%\%variable2%.%variable3%
  3. Также червь создает следующий файл: %drive%\autorun.inf
    Таким образом, вредоносная программа запускается каждый раз при подключении зараженного носителя. Хотя против этого варианта заражения вполне успешно работает любой адекватный антивирус. Если уж по какой-либо причине автозапуск не выключен на уровне политики домена.
  4. Отключает следующие сервисы:
    • Windows Security Center Service (wscsvc)
    • Windows Automatic Update Service (wuauserv)
    • Background Intelligent Transfer Service (BITS)
    • Windows Defender Service (WinDefend)
    • Windows Error Reporting Service (ERSvc)
    • Windows Error Reporting Service (WerSvc)
  5. Блокирует доступ к сайтам основных антивирусных компаний и к windowsupdate

Итак, предположим мы те самые балбесы, что в крупной сети так и не настроили централизованный сервис обновлений. И только что нам позвонил директор с вопросом, когда возникшая проблема будет ликвидирована, компания перестанет терять деньги из-за вынужденного простоя и отчего так случилось, что рабочие станции оказались незащищенными от угрозы о которой, судя по свежим результатам использования поисковика, уже известно несколько месяцев.

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

  1. Любой рабочей станции с установленным на ней Linux
  2. Любого дистрибутива Linux с поддержкой работы без установки
  3. Любого КПК, способного подключиться к сети. Не обязательно, кстати, даже офисной. Благо wifi растет буквально из стен вокруг.
  4. Чистой рабочей станции, за 20 минут развернутой из образа внутри виртуальной машины. Вирус поражает хост машину на уровне выше, чем драйвер сетевого интерфейса. И вовсе не обязательно вводить эту чистую рабочую станцию внутрь зараженной сети: кто мешает сразу поместить ее изолированную подсеть?

Для упрощения, предполагается, что все рабочие станции принадлежат одному домену и в сети не имеется удаленных сегментов, связь с которыми осуществляется по 56k модему. Также предположим, в нашей сети имеются только Windows XP, 2003, Vista. И языки установленных систем ограничиваются русским и английским.

  1. Скачиваем необходимые обновления для каждой языковой версии каждой из используемых в сети версий ОС. Рекомендую начать вот с этих трех ссылок:
    • http://www.microsoft.com/technet/security/bulletin/MS08-067.mspx
    • http://www.microsoft.com/technet/security/Bulletin/MS08-068.mspx
    • http://www.microsoft.com/technet/security/bulletin/MS09-001.mspx
  2. Скачиваем любую бесплатную утилиту для лечения Conficker, которая поддерживает работу из командной строки. Например, вот эту:
    http://download.eset.com/special/EConfickerRemover.exe
  3. Вооружаемся надежным антивирусом, который поддерживает работу из командной строки и мы хорошо понимаем, как его правильно настроить. Наиболее верным решением будет использовать антивирус, отличный от того, что уже установлен на рабочих станциях. Ну и, разумеется, антивирус должен быть легально приобретен, потому как за чужую работу по решению наших проблем нужно платить, а не подло воровать.
  4. Выбираем сервер в нашей сети, гарантированно доступный с каждой из рабочих станций. Отключаем его от сети, запускаем в командной строке EConfickerRemover.exe -autoclean -reboot, дожидаемся окончания перезагрузки, устанавливаем все ранее скачанные обновления, убеждаемся, что обновления установлены.
  5. Создаем на выбранном нами сервере общую папку superzaplatka$ с полным доступом для группы Everyone на общий ресурс и доступом только на чтение на уровне NTFS, создаем рядом с ней общую папку szReports$, с полным доступом для группы Everyone на общий ресурс и на уровне NTFS, размещаем в корне первой папки следующие файлы:
    • Все ранее скачанные обновления.
    • Консольный антивирус, пустой файл sz1.txt
    • Бесплатную утилиту для удаления Conficker
    • Файл настройки антивируса.
      Например, для DrWeb, создадим файл drwfall.ini следующего содержания:
      [Windows]
      ScanFiles = All
      ScanSubDirectories = Yes
      ExcludeFiles = *.zip, *.rar, *.ar?, *.tar, *.cab, *.lzh, *.7z, *.bz2, *.tgz, *.iso, *.nrg, *.mdf, *.img, *.jar, *.vmdk, *.hlp, *.ini, *.inf, *.chm, *.ht*, *.pnf, *.msi, *.msp, *.xml, *.sql, *.log, *.txt, *.gz
      HeuristicAnalysis = Yes
      CheckEMailFiles = No
      CheckArchives = No
      EnableDeleteArchiveAction = No
      InfectedFiles = Cure
      PromptOnAction = No
      PromptFloppy = No
      TestMemory = Yes
      TestStartup = Yes
      TestBootSectors = Yes
      LogToFile = Yes
      LogStatistics = Yes
      LogArchived = No
      LogFormat = ANSI
      LogFileName = c:\superzaplatka\%computername%.log
      UseDiskForSwap = Yes
      RestoreAccessDate = No
      WaitAfterScan = No
      VirusBase=»*.vdb»
      EnginePath=»drweb32.dll»
    • Командный файл runnme.cmd следующего содержания:
    • md c:\superzaplatka
      copy \\НАШ_ВЫБРАННЫЙ_СЕРВЕР\superzaplatka$\*.* c:\superzaplatka\*.* /y
      cd c:\superzaplatka
      EConfickerRemover.exe -autoclean -reboot
      rem Таким образом, если компьютер был заражен, он будет исцелен и немедленно перезагружен.

      if exist c:\windows\nap goto :imvista
      if exist %systemroot%\nap goto :imvista

      rem И это, кстати, крайне дурацкий способ определения версии ОС 😉

      if exist %systemroot%\$NtUninstallKB958644$ goto no958644

      rem Если существует папка деинсталяции обновления, значит, оно уже установлено.
      rem Иначе последовательно устанавливаем все возможные версии обновления.
      rem Обновление самостоятельно не даст установить себя на некорректную версию или язык системы.
      rem Так зачем делать еще одну проверку?

      call WindowsServer2003.WindowsXP-KB958644-x64-RUS.exe /quiet /norestart
      call WindowsServer2003.WindowsXP-KB958644-x64-ENU.exe /quiet /norestart
      call WindowsServer2003-KB958644-x86-RUS.exe /quiet /norestart
      call WindowsServer2003-KB958644-x86-ENU.exe /quiet /norestart
      call WindowsXP-KB958644-x86-RUS.exe /quiet /norestart
      call WindowsXP-KB958644-x86-ENU.exe /quiet /norestart
      :no958644

      if exist %systemroot%\$NtUninstallKB958687$ goto no958687
      call WindowsServer2003.WindowsXP-KB958687-x64-RUS.exe /quiet /norestart
      call WindowsServer2003.WindowsXP-KB958687-x64-ENU.exe /quiet /norestart
      call WindowsServer2003-KB958687-x86-RUS.exe /quiet /norestart
      call WindowsServer2003-KB958687-x86-ENU.exe /quiet /norestart
      call WindowsXP-KB958687-x86-RUS.exe /quiet /norestart
      call WindowsXP-KB958687-x86-ENU.exe /quiet /norestart
      :no958687

      if exist %systemroot%\$NtUninstallKB957097$ goto no957097
      call WindowsServer2003.WindowsXP-KB957097-x64-RUS.exe /quiet /norestart
      call WindowsServer2003.WindowsXP-KB957097-x64-ENU.exe /quiet /norestart
      call WindowsServer2003-KB957097-x86-RUS.exe /quiet /norestart
      call WindowsServer2003-KB957097-x86-ENU.exe /quiet /norestart
      call WindowsXP-KB957097-x86-RUS.exe /quiet /norestart
      call WindowsXP-KB957097-x86-ENU.exe /quiet /norestart
      :no957097

      :imvista
      call Windows6.0-KB958687-x64.msu /quiet /norestart
      call Windows6.0-KB958687-x86.msu /quiet /norestart
      call Windows6.0-KB958644-x64.msu /quiet /norestart
      call Windows6.0-KB958644-x86.msu /quiet /norestart
      call Windows6.0-KB957097-x64.msu /quiet /norestart
      call Windows6.0-KB957097-x86.msu /quiet /norestart

      if exist c:\sz1.txt goto isztxt
      copy c:\superzaplatka\sz1.txt c:\sz1.txt
      shutdown -r -f -t 0
      :isztxt

      call drwebwcl.exe %systemroot% /adwd /cud /go /ha /icd /scp:10 /sd /tb /tm /ts /ini:drwebfall.ini
      call drwebwcl.exe «c:\Documents and Settings\» /adwd /cud /go /ha /icd /scp:10 /sd /tb- /tm- /ts- /ini:drwebfall.ini
      call drwebwcl.exe «c:\users\» /adwd /cud /go /ha /icd /scp:10 /sd /tb- /tm- /ts- /ini:drwebfall.ini
      copy c:\superzaplatka\*.log \\НАШ_ВЫБРАННЫЙ_СЕРВЕР\szReports$\*.log /y
      cd ..
      rd /s/q c:\superzaplatka

    • Командный файл runnmeondc.cmd следующего содержания:
      md c:\superzaplatka
      copy \\НАШ_ВЫБРАННЫЙ_СЕРВЕР\superzaplatka$\*.* c:\superzaplatka\*.* /y
      cd c:\superzaplatka
      EConfickerRemover.exe -autoclean
      WindowsServer2003.WindowsXP-KB958644-x64-RUS.exe /quiet /norestart
      WindowsServer2003.WindowsXP-KB958644-x64-ENU.exe /quiet /norestart
      WindowsServer2003-KB958644-x86-RUS.exe /quiet /norestart
      WindowsServer2003-KB958644-x86-ENU.exe /quiet /norestart
      WindowsServer2003.WindowsXP-KB958687-x64-RUS.exe /quiet /norestart
      WindowsServer2003.WindowsXP-KB958687-x64-ENU.exe /quiet /norestart
      WindowsServer2003-KB958687-x86-RUS.exe /quiet /norestart
      WindowsServer2003-KB958687-x86-ENU.exe /quiet /norestart
      WindowsServer2003.WindowsXP-KB957097-x64-RUS.exe /quiet /norestart
      WindowsServer2003.WindowsXP-KB957097-x64-ENU.exe /quiet /norestart
      WindowsServer2003-KB957097-x86-RUS.exe /quiet /norestart
      WindowsServer2003-KB957097-x86-ENU.exe /quiet /norestart

      cd ..
      rd /s/q c:\superzaplatka

      shutdown -r -f -t 0

  6. На любом контроллере домена запускаем оснастку «Active Directory Users and Computers», на уровне домена создаем новую групповую политику со следующими настройками:
    • В Computer Configuration -> Windows Settings -> Scripts -> Startup добавляем следующий элемент Script Name:
      \\НАШ_ВЫБРАННЫЙ_СЕРВЕР\superzaplatka$\runnme.cmd
    • В Computer Configuration -> Windows Settings -> Security Settings -> File System добавляем следующий элемент %systemroot%\Tasks в открывшемся меню настройки безопасности добавляем группу Everyone и запрещаем ей доступ на запись и выполнение.
    • В Computer Configuration -> Administrative Templates -> System -> Scripts включаем параметр Run Startup Scripts Asynchronously и выключаем параметр Run Startup Scripts Visible
  7. Копируем созданную политику в те OU, для которых заблокировано наследование политик.
  8. Подключаем первый вылеченный сервер обратно в сеть и с каждого из контроллеров домена выполняем
    \\НАШ_ВЫБРАННЫЙ_СЕРВЕР\superzaplatka$\runnmeondc.cmd
  9. Просим всех пользователей перезагрузить рабочие станции, перезагружаем все рядовые сервера.
  10. Из содержимого папки \\НАШ_ВЫБРАННЫЙ_СЕРВЕР\szReports$ узнаем, кто выполнил просьбу о перезагрузке и насколько эффективен наш текущий антивирус в ежедневной защите рабочих станций. Многих ждут неприятные сюрпризы.
  11. Убеждаемся, что червь более не размножается в нашей сети.
  12. Отменяем ранее созданную политику, удаляем на рабочих станциях и серверах все созданные червем запланированные задания. Удаляем на всех серверах и рабочих станциях файл c:\sz1.txt

Ваш отзыв