VirusHunter предупреждает всех пользователей ПК о распространении очень опасного деструктивного файлового вируса Win32.Maniac.B (aka Win32.Sality, Sector), поражающего Win32-программы и экранные заставки, похищающего конфиденциальную пользовательскую информацию, а также удаляющего некоторые типы данных с винчестера компьютера...


Детальное описание вируса Win32.Maniac.B.

1. Источники попадания в машину.

Этот раздел полностью идентичен приведенному в описании варианта Win32.Maniac.A (aka Win32.Sality, Sector).


2. Инсталляция в систему.

Win32.Maniac.B является резидентным зашифрованным вирусом-паразитом, использующим для своего распространения тела Windows-приложений (т.н. PE-файлы, содержащие в своих заголовках метку "PE"; к таковым относятся программы с 32-битным кодом, написанные на языках высокого уровня, таких как, например, C++ Builder, Borland Turbo Pascal (Delphi) и пр., создаваемые для работы в среде Windows). Дееспособен под всеми существующими на сегодняшний день Windows-системами.
Данный вирус имеет очень много сходства с др. файловым полиморфик-крипт-вирусом - Win32.Parasite (aka Win32.Parite.b, Parite.2), а также содержит в себе ряд шпионских и деструктивных процедур.
Вирус не способен существовать как самостоятельная программа (т.е. в виде рабочего файла, содержащего только вирусный код), т.к. выполнен в виде логического программного блока (не содержит заголовка и, соответственно, т.н. "точки входа" - место в коде заголовка файла, с которого производится считывание стартового адреса программы и начинается ее выполнение), внедряемого в Windows-приложения и использующего заголовки зараженных им файлов для получения управления и последующего запуска. Поражает системные файлы с расширениями "EXE" (программы и самораспаковывающиеся архивы/инсталляторы) и "SCR" (экранные заставки для Рабочего стола).
Код вируса представляет собой совокупность 2-х компонентов:

1. Дроппер (активатор основной программы), имеющий размер около 1,5-2 кб; написан на языке нижнего уровня (языке машинных команд) - Ассемблере. Данный компонент предназначен для расшифровки основного вирусного компонента с последующим его извлечением, установкой в систему и запуском на выполнение, а также для возможности запуска зараженного программного файла.

2. Основной компонент, производящий поиск и заражение файлов, а также различные вредоносные процедуры, включая и деструктивные. Представляет собой DLL-файл (динамическую библиотеку Windows), написанный на языке высокого уровня - Microsoft Visual C++ v5.0. В теле зараженного файла данный компонент содержится в сжатом и зашифрованном виде: сжатие DLL-тела реализуется при помощи "выщелкивания" нулевых байт (детально этот метод я не рассматриваю в данном описании, т.к. существенного значения он не имеет), а его шифрование - при помощи полиморфик-алгоритма, ключ к которому содержит дроппер-компонент вируса.
Схематически код вируса можно изобразить примерно так:


Используя механизм полиморфик-шифрования своего тела в зараженных файлах, вирус значительно усложняет пользователю визуальное выявление инородного кода в инфицированных фалах - последовательность кода в 16-ти ричном представлении (ASCII) в одном файле совершенно не похожа на этот же самый вирусный код, но уже в др. файле.
При запуске инфицированного файла на еще незараженной машине управление получает дроппер-код вируса (в своем роде - подпрограмма-"мастер"), который расшифровывает Основной компонент, "разжимает" его и записывает под нижеуказанным названием в один из следующих системных подкаталогов:

для Windows 9X/ME:

%windir%\SYSTEM\wcmlogon.dll

для Windows 2K/XP:

%windir%\System32\wcmlogon.dll

Данный файл имеет размер 24576 байт, никакими утилитами компрессии не обработан, но отдельные участки его кода зашифрованы двумя различными крипт-алгоритмами (неполиморфными). Представляет собой PE DLL-файл (динамическую библиотеку Windows - модульное приложение) и запускается на выполнение непосредственно дроппер-компонентом.
wcmlogon.dll имеет следующие параметры: текущие дата и время модификации соответствуют реальному времени, когда последний был записан на диск; файл носит только атрибут "архивный" (archive).
После своего запуска wcmlogon.dll, как правило, остается резидентно в памяти компьютера вплоть до завершения работы Windows. Никаких ключей для возможности автозапуска данного файла при последующих стартах системы в реестре не создается. Механизм активации данного компонента следующий: при запуске зараженного файла вирусный дроппер, получающий управление в теле этого файла, проверяет наличие в системной памяти следующей "метки"-идентификатора:

kuku_joker_v3.06

Эта метка создается библиотекой wcmlogon.dll на время своей работы и используется для инициализации заражения системы. Она расшифровывает данный идентификатор из своего тела (использует алгоритм расшифровки по смещению кода на величину XOR 66h) и устанавливает его в память. Таким образом, если указанный идентификатор присутствует в памяти, то это свидетельствует о заражении системы и дроппер-компонент вируса не производит повторной установки Основного компонента в систему. Если же идентификатор в памяти отсутствует, то дроппер-код производит вышеописанную процедуру инсталляции и запуска файла wcmlogon.dll.
При осуществлении тех или иных действий вирус может на короткое время создавать в папке временных файлов системы (подкаталог \TEMP\) файлы *.tmp, в которые записывает часть своего кода и некоторые промежуточные данные:

для Windows 9X/ME:

%windir%\TEMP\*.tmp

для Windows 2K/XP:

\Documents and Settings\%user%\Local Settings\TEMP\*.tmp

, где %user% - имя текщего пользователя. После отработки данные файлы вирус удаляет.


3. Внедрение вируса в потоки данных активных процессов.

Этот раздел полностью идентичен приведенному в описании варианта Win32.Maniac.A.


4. Заражение PE EXE- и SCR-файлов.

Сразу же после инсталляции в систему вирус расшифровывает (XOR 66h) и запускает процедуру поиска и заражения файлов. Алгоритм поиска и количество заражаемых вирусом файлов зависит от версии ОС Windows. Под Windows 9X/ME он сканирует все логические диски компьютера, сетевые (при локальных соединениях с др. компьютерами) и внешние диски/носители информации (например, USB Flash и CardReaders), начиная с диска C: (флоппи-дисководы A: и B: вирус игнорирует), и заражает все подходящие по определенным параметрам EXE- и SCR-файлы (см. далее по тексту). Заражение производится как в системных, так и в пользовательских папках.
Вирус заражает не все программные файлы, а только те из них, которые соответствуют следующим требованиям:

 - файл имеет расширение "EXE" или "SCR";

 - файл является Windows PE-файлом (проверяется по формату заголовка файла - вот почему некоторые файлы, сжатые специфическими утилитами компрессии и криптации, вирус не заражает);

 - файл находится не в корневом не в основном подкаталоге системной папки Windows (т.е. не как C:\WINDOWS\*.* и не как C:\WINDOWS\System32\*.*) - это требование вирус соблюдает только для Windows 2K/XP, хотя иногда ошибается и может заразить и некоторое количество файлов в данных местах. При этом может иметь место последовательное появление системных сообщений вида



, что связано с системной проверкой оригинальности ее файлов-компонентов, расположенных в определенных подкаталогах (в частности, в \WINDOWS\ и \WINDOWS\System32\).

Каждый подходящий по параметрам файл заражается только 1 раз (вирус определяет его зараженность довольно сложным способом, производя при этом ряд специальных проверок участков кода).
Файлы заражаются один за другим в порядке очередности. При обнаружении подходящего файла вирус проверяет не загружен ли последний на выполнение и, если файл не задействован в работе, то wcmlogon.dll считывает и запоминает его параметры - дату и время модификации, а также атрибуты, после чего приступает к редактированию файла (при этом вирус обходит ограничение редактирования при наличии у файла атрибута "read only" - только для чтения).
При заражении файла вирус дописывает свое зашифрованное тело в его конец. Для этого wcmlogon.dll считывает полный вирусный код из тела последнего из запущенных зараженных файлов - местоположение этого файла дроппер-компонент передает компоненту wcmlogon.dll в виде переменной и тот хранит ее в памяти. Затем вирус считывает последние 20480 байт уже зараженной программы и копирует их в зарезервированное пространство текущего заражаемого файла, а далее корректирует его заголовок: изменяет "точку входа" (место в коде заголовка файла, с которого производится считывание стартового адреса программы и начинается ее выполнение), заменяя оригинальный стартовый адрес (предварительно запоминает его) ссылкой на стартовый адрес своего дроппер-кода, который располагается примерно в нескольких сотнях байт от начала вирусного тела в заражаемом файле. Затем wcmlogon.dll записывает в первые несколько сотен байт вирусного кода в теле зараженной программы (в те байты, которые расположены перед кодом дроппер-компонента) оригинальный (исходный) стартовый адрес программы. После этого wcmlogon.dll шифрует полиморфик-крипт-алгоритмом все 20480 байт вирусного тела в заражаемом файле (кроме участка кода в 1,5-2 кб с дроппер-компонентом - к нему вирус не применяет полиморфик-крипт-метод). Только после всех перечисленных манипуляций wcmlogon.dll завершает редактирование уже зараженного файла, перезапоминает его со всеми внесенными изменениями и присваивает ему исходные атрибуты, а также дату и время модификации до заражения. В результате, внешне зараженный файл отличается от исходного лишь увеличением размера на величину 20480 байт.

Файл до заражения (слева) и после (справа):


В процедуре заражения файлов автор вируса допустил 2 серьезные ошибки, из-за которых "Maniac.B"может испортить оригинальный код заражаемых файлов и они безвозвратно утрачивают свою работоспособность (подробности см. в п.6 этого описания).
Запуск зараженного файла происходит следующим образом: первым получает управление дроппер-код вируса, который проверяет наличие упомянутой "метки"-идентификатора, и, соответственно, либо сперва производит процедуру инсталляции в систему Основного компонента, а уже потом расшифровывает, считывает и запускает стартовый адрес оригинальной программы, либо сразу производит запуск оригинальной программы и завершает при этом свою работу. Схематически процесс запуска зараженной программы можно изобразить примерно следующим образом (соответствующие пропорции размеров секций на рис. не учитываются):


Обычно запущенная зараженная программа открывается с опозданием до нескольких секунд, но иногда дроппер-код по каким-то причинам "тормозит" и процесс запуска программы может затянуться на довольно долгое время. Также при ситуации, когда на одновременное выполнение запускается значительное количество зараженных файлов, машина входит в полный ступор и дальнейшая работа системы не представляется возможной вплоть до принудительной перезагрузки машины (нажатие кнопки Reset на системном блоке стационарного компьютера и кнопки питания для ноутбука), а при заражении значительного количества программ, установленных в автозагрузку системы, работа системы невозможна вообще даже на мощных компьютерах.
Иногда, заражая файлы в каком-нибудь каталоге, вирус "забывает" заразить некоторые из них, после чего последние могут довольно долгое время оставаться чистыми.


5. Действия вируса во время работы в сети Интернет.
Похищение конфиденциальных пользовательских данных.

Этот раздел практически полностью идентичен приведенному в описании варианта Win32.Maniac.A за исключением нескольких несущественных деталей.


6. Деструктивные процедуры.

Содержащиеся в коде вируса ошибки, а также производимые им деструкции практически полностью идентичны тем, что и в варианте Win32.Maniac.A. Единственным отличием является то, что по ходу второй деструктивной процедуры Win32.Maniac.B удаляет не EXE-файлы, имена которых содержат фрагмент BIDEF (т.е. компоненты антивируса BitDefender Professional), а EXE-файлы, имена которых содержат фрагмент TOTAL (в первую очередь, это компонент файлового менеджера Total Commander - Totalcmd.exe).


7. Прочее.

Помимо всех вышеперечисленных вещей, вирус также может:

 - в зависимости от каких-то условий создавать в памяти следующие "метки"-идентификаторы:

_Mem_Temp_v3.06
KUKU v3.06 exp


 - пытаться искать в системе какой-то файл sysdll.dll.

Также в зависимости от неустановленных условий компонент wcmlogon.dll может просто-напросто отключаться от всех потоков данных и завершать свою работу.
В коде вируса содержится то же самое зашифрованное послание, адресованное Игорю Данилову (ООО "Доктор Веб") и Евгению Касперскому (ЗАО "Антивирусная Лаборатория Касперского"), что и в варианте Win32.Maniac.A.


8. Детектирование вируса и лечение машины.

На момент разработки данного описания антивирусные программы уже обнаруживали вирус Win32.Maniac.B под следующими номенклатурными названиями:

Антивирус Kaspersky AntiVirus: Virus.Win32.Sality.m (лечит зараженные файлы; компонент вируса wcmlogon.dll детектирует как Virus.Win32.Sality.k)

Антивирус BitDefender Professional: Win32.Sality.G (не лечит, а только удаляет зараженные файлы)

Антивирус DrWeb: Win32.HLLP.Sector (лечит зараженные файлы)

В принципе, самостоятельно осуществить процесс лечения от вируса для рядового пользователя просто нереально, если учесть все вышеизложенные приемы, которые использует вирус. Поэтому наиболее оптимальным решением вирусной проблемы, на мой взгляд, является перенос винчестера на др. неинфицированную машину, его подключение к ней, как второстепенного, с последующим пролечиванием всей находящейся на нем информации. В процессе лечения файл wcmlogon.dll, детектируемый под вышеуказанными номенклатурными названиями, необходимо просто удалить. После процесса лечения испорченные или удаленные вирусом программы необходимо заменить из резервной копии или полностью переустановить. Также некоторые программы, будучи зараженными, но не испорченными вирусом, после лечения также могут оказаться нерабочими - причиной является встроенная в такие программы процедура проверки оригинальности их кода, которая заключается в подсчете т.н. CRC-значения (контрольных сумм) определенных участков кода файлов и сопоставлении полученных значений с оригинальными. К таким программам относится, например, Nero Burning ROM (программа для записи СD- и DVD-дисков). Учитывая тот факт, что вылеченные файлы содержат в своих заголовках некоторое количество измененных вирусом байт, вышеуказанная программа и ей подобные при своем запуске сразу же выдают соответствующее сообщение о расхождении значений контрольной суммы с оригинальным и завершают свою работу. Такие файлы также следует заменить.
Кроме того, было замечено, что некоторые из вылеченных файлов, несмотря на свою работоспособность, могут функционировать некорректно: например, вылеченный Far Manager перестал обрабатывать EXE-файлы, а компонент антивируса Касперского, который не попал в "черный список" вируса, но был заражен и также вылечен, "криво" запускал движок сканирования файлов, что приводило к некорректной процедуре поиска вирусов. В таких случаях тоже рекомендуется заменять некорректные файлы оригинальными, взятыми из резервной копии.
Следует отметить, что некоторое количество вирусных копий может присутствовать в файлах с расширениями "CHK" (последние являются файлами, резервируемыми некоторыми версиями ОС Windows в случаях обнаружения сбойных кластеров на жестком диске системным приложением Scandisk).

Также рекомендуется сменить пароли на подключение к сети Интернет, к почтовым ящикам и т.п.

На данный момент разработаны и выложены на нашем сайте описания следующих вариантов данного вируса:

Win32.Maniac.A
Win32.Maniac.C
Win32.Maniac.D


Исследование вредоносного кода и разработка описания: Бройде Герман (aka VirusHunter)
Дата создания: 22.02.2007
Дата внесения последних изменений: 09.01.2008
Автор описания: Бройде Герман (aka VirusHunter)


Rambler's Top100

0.00142288208008