История Индюка

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

На этот раз источником переполоха стал Индюк. Нет, не птица, а вредоносная программа, называющаяся по нашей классификации Virus.Win32.Induc.a

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

Но обо всем по порядку.

Начнем с самого названия вируса — Induc, которое можно читать и как Индюк (впрочем, некоторые решили, что это Индус, но это не так). Название прямым образом происходит из функционала самого вируса:

1. Будучи запущенным на компьютере жертвы (достаточно запустить какое-нибудь зараженное приложение), вирус проверяет, установлена ли Delphi. Его интересуют версии 4.0, 5.0, 6.0 и 7.0.

2. Если он обнаруживает, что Delphi установлена и версия правильная, он копирует из папки Source в папку Lib нужный ему .pas-файл, в данном случае это был sysconst.pas и дописывает в него свой код. Переименовав в .bak старый dcu-файл, зловред компилирует зараженный pas-файл и получает новый sysconst.dcu, который содержит зловредный код. Зараженный pas-файл больше не нужен, и он его удаляет.

Как видно, вирус внедряет свой код в файл с расширением dcu — «in dcu». Переставив пару букв местами, мы и получили название, которое нас вполне устроило — Induc.

Это еще один пример того, каким образом вредоносные программы получают свои имена (нас часто спрашивают об этом). И это же доказательство того, что именно «Лаборатория Касперского» была первой антивирусной компанией, добавившей в свои базы детектирование и лечение данного вируса.

После того как вирусу удалось внедрить свой код в sysconst.dcu, любая Delphi-программа, которая будет скомпилирована на этом компьютере, будет заражена. Это единственный функционал вируса, и кроме саморазмножения, он больше ничего не делает.

Что же примечательно здесь? В первую очередь, это способ размножения — вирус не заражает непосредственно исполняемые файлы, используя заражение файлов компилятора языка программирования. Данный способ не нов. Некоторые эксперты смогли вспомнить похожий вирус, существовавший в 90-е годы, работавший под MS-DOS и поражавший файлы на языке Pascal. Однако существует еще несколько примеров, из недавнего прошлого. Одним из них является Lykov.a, который дописывал свой код в исходные тексты программ на Visual Basic. Появился он в 2003 году, а через пару лет мы встретили его последователя — Lykov.b. Этот вариант поражал исходные файлы программ на VB.NET

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

Вторым интересным моментом является впечатляющая распространенность вируса. Уже на следующий день после добавления детектирования Индюк оказался в числе 70 наиболее распространенных вредоносных программ, по данным нашей Kaspersky Security Network. Речь идет о тысячах и десятках тысяч файлов. Скоро мы подведем итоги августа, и думаю, что Induc окажется в TOP-20. Потенциально речь может идти о миллионах его экземпляров по всему миру, что ничуть не уступает масштабам эпидемии того же червя Kido

Третий момент — пораженные Индюком приложения. Вирус существовал на компьютерах разработчиков программных продуктов, среди которых оказались весьма популярные и используемые большим количеством людей. Так, например, были обнаружены некоторые версии медиа-плеера AIMP и популярного инстант-мессенджера QIP, содержащие в себе данный вирус. Вирус был обнаружен в приложениях по всему миру, в том числе и на крупнейших сайтах с софтом, на дисках с программами, выпускаемых различными журналами и т.п.

Наличие Индюка в легальных программах, многие из которых уже давно считались «чистыми» и присутствовали в базах whitelisting массы вендоров, создало еще одну серьезную проблему. Проблему именно для индустрии, использующей whitelisting, в основном через «in-the-cloud» технологии. По сути дела, все существующие базы «чистых файлов» оказались испорчены — в них обнаружились зараженные файлы. Это потребовало полной ревизии баз и их зачистки. Одновременно это показало слабое место таких баз: в том случае, если подобные инциденты будут происходить в будущем, доверие к whitelisting неминуемо начнет падать.

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

Когда мы стали получать и анализировать зараженные файлы, то практически сразу обнаружили несколько троянских программ, занимающихся кражей аккаунтов банковских систем, зараженных этим вирусом. Это довольно забавный факт, который означает, что сами авторы этих троянцев оказались жертвами вируса и использовали зараженную Delphi. Все эти троянцы имеют бразильское происхождение, но созданы разными группами вирусописателей. Этот факт никоим образом не означает бразильского происхождения самого Индюка, — просто Бразилия является одной из немногих стран, в которой язык Delphi является самым популярным языком программирования (довольно широко он распространен и в России).

От истории с зараженными троянцами мы переходим к весьма важному вопросу: как долго вирус существовал незамеченным и почему?

Сразу необходимо сказать, что вирус был обнаружен 12 августа 2009 года русским программистом Александром Алексеевым, известным также под ником Gun Smoker. Этот человек оказался единственным, кто столкнулся с проявлением вируса и смог не только понять, что в действительности происходит, но и информировать об этом общественность и направить подозрительные файлы в антивирусную лабораторию. За что ему персональное большое спасибо.

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

По данным Gun Smoker наиболее ранние случаи появления зараженных файлов относятся к январю 2009 года. По нашей информации (у нас есть) зараженные файлы от конца 2008 года (ноябрь-декабрь). К сожалению, Delphi при компиляции файла не сохраняет дату линковки, что не дает нам возможности точно определить дату создания этих файлов. Можно с большой долей уверенности говорить как минимум о годичном существовании Индюка в «дикой природе».

Это означает, что мы имеем дело с беспрецедентным случаем — вредоносная программа больше года оставалась «невидимой» для антивирусных компаний. А это даже круче, чем история с руткитом Rustock, о которой мы писали в прошлом году.

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

Он не крадет данные, не взаимодействует с сетью, не рассылает спам — он не делает ничего, что может быть обнаружено. Если бы он нес в себе хоть какой-то функционал, то несомненно, был бы найден давно. И это, кстати, является ответом на вопрос: а что если теперь такой способ распространения вирусов станет популярным? Индюк представляет собой исключительно proof-of-concept, реализацию идеи. Возможно, он был написан кем-то просто на спор, или даже случайно, по ошибке. Такие вещи единичны и уникальны. Второй фазой может стать использование идеи киберпреступниками, но им неинтересно просто «разможение» — им необходимо что-то «делать» на пораженных системах. А все, что они могут «делать», обнаруживается в массе своей существующими технологиями. И уж по крайней мере не останется незамеченным на столь долгий срок.

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

Индюк преподал нам всем хороший урок. Антивирусным компаниям — на тему совершенства whitelisting и способности обнаруживать угрозы на ранней стадии. Разработчикам софта — на тему понимания того, как работают их языки программирования. Пользователям — очередной пример того, что неприятности могут поджидать нас где угодно, буквально на ровном месте и даже при использовании давно проверенных приложений.

Продолжение следует?

Публикации на схожие темы

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *