Чума для Windows: история одного червя

Знаменитые Rustok.C и Sinowal - зловреды нового поколения вредоносных программ - заставили попотеть антивирусные компании по всему миру и ввергли в глубокий шок простых пользователей. Сегодня я буду говорить о нашумевшем черве, который имеет три различных названия, постоянно мелькающие в новостных сводках RSS-лент разнообразных ресурсов IT-тематики. Вы, наверное, уже догадались, что же это за он? Правильно, это Conficker, он же Kido и Downadup. Ну что ж, приступим к анализу и начнем, пожалуй, с отголосков прошлого, а точнее, с 2008 года.

2008

Впервые о Conficker заговорили еще в октябре 2008 года. 23 числа того месяца, компания Microsoft обнаружила критическую уязвимость во всех ОС Windows, связанную с системной службой Server. Уязвимость существует из-за ошибки в библиотеке netapi32.dll при обработке RPC запросов. Как утверждают, удаленный пользователь может с помощью специально сформированного RPC запроса вызвать переполнение буфера в стеке и вызвать отказ в обслуживании системы или выполнить произвольный код на целевой системе с привилегиями учетной записи SYSTEM. Именно этой дырой и воспользовались разработчики червя. И именно через нее он и ведет свое активное размножение, скачивая свои копии из Интернета. Причем разработчики вируса научились постоянно менять свои сервера, что не дает возможности отследить распространение Conficker. Периодически червь случайным образом генерирует около 50 тыс. доменных имен в сутки, к которым обращается для получения исполняемого кода. При получении с сайта исполняемого файла червь сверяет электронно-цифровую подпись и если она совпала, запускает файл. За считанные месяцы вирусом были заражены миллионы компьютеров по всему миру. Лидирующие строки по распространенности Conficker’а занимают Китай, Россия и Бразилия, что видно из диаграммы на рисунке 1.

По состоянию на февраль 2009 года в этих странах специалисты по компьютерной безопасности насчитали 260.000, 200.000 и 175.000 случаев заражения соответственно. Всего, по последним данным, червь заразил более 13.000.000 машин. Неплохо, не так ли? Причем 10.000.000 были инфицированы за первые 4 дня распространения! Статистика заражения операционных систем за 4 дня активной жизни червя видна на рисунке 2. Наиболее пострадали операционные системы Windows XP SP1 и более ранние версии. Чуть меньше пострадали системы Winsows XP SP2 и выше.

Что же делает червь, когда попадает на компьютер потенциальной жертвы? Идем далее.

В тылу врага

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

• %System%\[Random].dll
• %Program Files%\Internet Explorer\[Random].dll
• %Program Files%\Movie Maker\[Random].dll
• %All Users Application Data%\[Random].dll
• %Temp%\[Random].dll
• %System%\[Random].tmp
• %Temp%\[Random].tmp

Причем всем этим файлам вирус присваивает дату создания и изменения, взятую из системного файла %System%\kernel32.dll, что исключает возможность поиска недавно созданных файлов. Далее червь блокирует доступ к сайтам разработчиков антивирусного ПО, например, f-secure.com, drweb.com, kaspersky.ru, вследствие чего пользователь не может скачать утилиты, необходимые для удаления червя, или просто получить техническую помощь у специалистов компании. Помимо этого, вирус в обязательном порядке отключает внутренние службы Windows: автоматическое обновление (Windows Update), отчеты об ошибках (Windows Error Reporting), Центр Безопасности Windows (Windows Security Center) и Windows Defender. Тем самым он не дает системе автоматически скачать и установить заплатки, что делает жизнь червя продолжительной и продуктивной. Остается ручной способ, но и тут разработчики обошли нас – Conficker перехватывает вызов API функций, отвечающих за работу с DNS. При попытке выполнить DNS-запрос браузеры используют функции DNS_Query_A или DNS_Query_W, которые контролируются червем. В случае если юзер посмел вызвать нежелательный сайт, червь попросту блокирует его. В итоге мы получаем запрет на посещение ресурсов, связанных с лечением ПК от вирусов, антивирусных компаний, запрет на скачивание антивирусных утилит и обновлений.

Следующим шагом в работе червя является распространение. Вот тут авторы вируса явно преуспели, наделив свое детище довольно обширным функционалом. Первым в списке будет ранее оговоренная ошибка в службе Server, позволяющая выполнить произвольный код. О ней я писал выше, поэтому останавливаться не буду, а лишь добавлю интересную особенность: для того, чтобы быстрее распространяться, вирус делает небольшую поправку в реестре, значительно увеличивая количество возможных TCP-подключений. И в обязательном порядке делает невозможным использовать данную уязвимость другими особями путем перехвата вызова функции NetpwPathCanonicalize. Вторым способом размножения стал банальный и уже всем поднадоевший способ репликации через USB-накопители. При этом вирус в виде переименованной DLL-библиотеки, сохраняется в папке RECYCLER. Не помешало бы заметить, что файл Autorun.inf хорошо обфусцируется червем, дабы слабенькие сигнатурные сканеры не смогли распознать заразы. И когда уже придет мощная эвристика на смену сигнатурам? На рисунке 3 можно увидеть код файла Autorun.inf, созданного Conkicker.

Запуск копии осуществляется командой «Open=rundll32.exe .\RECYCLER\[случайное имя].vmx». Кроме всего этого, червь реализует P2P механизм обмена обновлениями, что позволяет ему рассылать обновления удалённым копиям, минуя управляющий сервер. Как и огромное число других червей, Conficker так же ведет поиск компьютеров с открытым доступом к ADMIN$ или защищенным простыми паролями. Для этого вирус вызывает системную функцию NetServerEnum для поиска компьютеров в сети. После того как червь получит список пользователей, он начинает брутить их, используя пассы из небольшого и заранее составленного разработчиками списка. Кусочек такого списка виден ниже на рисунке 4:

А так же пытается подобрать пароли вида «имя пользователя», «имя пользователя наоборот», «имя пользователя»+ «имя пользователя» и тому подобные комбинации. Если атака удалась, вирус создает на удаленном компьютере свою копию опять же под случайным именем и расширением. Затем там же создается ежедневное задание для Планировщика, с помощью которого и запускается вирус по следующему принципу - rundll32.exe [random filename].[random extension], [random]. Как вы должны были заметить, ничего нового в способах распространения нет, однако каков результат! А для чего все это создавалось? На этот вопрос постараюсь ответить дальше.

Задание выполнено

Для чего же можно использовать столь огромный бот-нет? О, ну тут пределом может стать только ваша фантазия. Задачи могут быть разными – от банального распространения спама, автокликинга и продажи трафика до мощнейших DDoS атак и распространения опасных вредоносных программ. На этой зомби-сети можно поднять очень большие деньги. Многие антивирусные компании прогнозировали, что запуск бота произойдет 1 апреля 2009 года, однако они ошиблись. Чуть позже уже зараженные машины начали проявлять активность, путем загрузки вредоносного кода, известного под именем Waledac. Также большую популярность получили загрузки лже-антивирусов. Что будет дальше? Остается только гадать, хотя прогнозы неутешительные: падение Интернета и тому подобная чепуха. Лично я и мои товарищи-аналитики из SASecurity gr. не считаем, что это произойдет по одной, но весомой причине – червь попросту прекратит свое существование. У него отпадет возможность реплицировать, качать из Интернета всякую гадость, генерировать домены и вообще он перестанет быть бот-нетом. Так что авторам червя невыгодно производить перегрузку каналов. А для того, чтобы этого вообще не произошло, даже если кто-то захочет, надо бы удалить червя со своего ПК или, ежели его еще у вас нет, просто обезопасить себя. Как это сделать, читаем далее.

Профилактика и лечение заразы

Многие источники – СМИ и специалисты по информационной безопасности – уверяют, что полностью обезопасить систему от проникновения Conficker нельзя. Специалисты из SASecurity gr. опровергают это мнение, и лично я хочу привести вам отличный способ, который поможет иммунизировать систему. Первое, что вы должны сделать – убедиться, что ваш ПК еще не заражен. Это можно сделать, посетив какую-нибудь страничку антивирусной компании, вроде Kaspersky.ru. Если вам это не удалось – это может быть первым симптомом. Вторым является большое количество открытых портов. В этом случае советую вам лечиться, как - укажу ниже, а пока только об иммунизации. Так вот, если же в системе червя еще нет, первое что надо сделать – скачать патч для службы Server – бюллетень MS08-067 и установить его. Сделать это можно по ссылке
сайт . Для максимальной безопасности лучше было бы вообще отключить эту службу, но это советую делать только если вы уверены, что она вам не понадобится. Далее следует в обязательном порядке запретить автозапуск на съемных носителях и жестких дисках (на CD и DVD дисках я пока еще не видел подобного). Информацию по отключению автозапуска можно найти в предыдущих номерах КГ или в Интернете. Третьим шагом на нашем пути станет установка антивирусного ПО и сетевого экрана, если таковых еще не имеется. В обязательном порядке следует обновить антивирусные базы. Четвертый шаг – отключение службы «Планировщика заданий». Уверен, что вы его даже не используете. И последним, пятым шагом станет установка качественного и сложного пароля на систему. Не банальный, вроде «pass112», а действительно хороший, в стиле «R8#lUq2EfgC$». Вот и все! Все эти действия закроют основные каналы распространения червя и помогут защитить систему от заражения.

Если же Вы уже заражены, то следуйте следующей инструкции:
1. Удалить ключ из системного реестра - HKLM\SYSTEM\CurrentControlSet\Services\netsvcs
2. Удалить строку «%System%\<<>>.dll» из следующей записи реестра:
[HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SvcHost] «netsvcs».
3. Перезагрузить ПК
4. Удалить оригинальный файл червя, где его искать – смотрите описание способов заражения компьютеров из «В тылу врага». Делать это советую в Total Commander с включенной опцией «Показывать скрытые/системные файлы».
5. Со всех съемных носителей удаляем копии червя и файлы Autorun.inf (имена и расположение копий можно как раз посмотреть в этом файле).
6. Теперь попросите у друга или найдите на дисках утилиту Dr.Web CureIt и просканируйте вашу систему на наличие зловредов. Желательно, чтобы это была последняя версия программы со всеми обновлениями.
7. На всякий случай можно ребутиться.
8. Пересоздать или удалить файл hosts из system32\drivers\etc. Это позволит вновь обращаться к разнообразным ресурсам в сети, вроде сайтов антивирусных компаний.

Это ручной способ удаления Conficker. Есть, конечно, еще и автоматизированные способы, вроде разнообразных утилит от Symantec, F-Secure и так далее, но все же, лучше это делать самому. Тем более, что мы не имеем доступа к этим утилитам из-за активного зловреда ;).

Заключение

Вот так вот обычный червь с простыми и давно известными, но отлично продуманными фишками поразил весь свет. Удручает то, что до сих пор, начиная с октября 2008 года, существует реальная угроза заражения, а вирус продолжает распространяться. Специалисты компании Symantec заявляют о том, что вредоносная программа Conficker продолжает распространяться с высокой скоростью и в настоящее время ежедневно инфицирует до 50 тысяч компьютеров. Обидно, что многие крупные компании не смогли противостоять опасности вовремя. И даже сейчас не могут нормально помочь пользователям справиться с заразой. Но самое интересное то, что за достоверную информацию об авторах вредоносной программы предлагается награда в размере 250 тысяч долларов. Такие немаленькие деньги предлагает компания Microsoft. Так что если вы располагаете какой-либо информацией, обращайтесь к мелкомягким за зелеными, только смотрите, как-бы вместо награды вас самих не приобщили к делу :)!

Никита Булай


Компьютерная газета. Статья была опубликована в номере 28 за 2009 год в рубрике безопасность

©1997-2024 Компьютерная газета