2003 г
Укрощение червей, или Синдром врожденного иммунодефицита
Крис Касперски, Журнал Сетевых Решений LAN
На фоне повальной эпидемии Интернет-червей
представляется весьма уместным рассказать как о механизмах их распространения,
так и о способах выявления, предотвращения и удаления заразы. Насколько мне
известно, до сих пор нет ни одной статьи в полной мере, освещающей эту
проблему. Большинство авторов в основном упираются в несколько вирусов и в
качестве основного средства лечения предлагают использовать антивирус, что, во-первых,
сильно смахивает на рекламу (антивируса), а во-вторых, подавляющее большинство
пользователей крайне неохотно и не оперативно обновляют антивирусные базы, в
результате чего беда не заставляет себя ждать.
История
Исторически
сложилось так, что титул первого Интернет-червя закрепился за так называемым
"Вирусом Морриса", а некоторые даже присуждают ему звание первого
компьютерного вируса вообще. На самом же деле это предположение неверно. Черви
в изобилии водились в глобальных (локальных) сетях еще до Морриса, и
"заслуга" последнего состоит лишь в том, что ошибки, допущенные при
реализации вируса, привели к чрезмерной активности червя и, как
следствие, – колоссально возросшему сетевому трафику, который межсетевые
узлы просто не смогли обрабатывать! Случившийся паралич сети вызвал массовую
истерию сродни той, что сопровождалась недавней атакой на SQL-серверы. Тем не менее, никаких
уроков из случившегося человечество так и не извлекло. Ведущие разработчики ПО
по-прежнему не несут никакой ответственности за его качество и не предпринимают
ничего, чтобы это качество хоть немного повысить. Вместо того, чтобы
сконцентрироваться на одной конкретной версии и довести ее до ума, компании
предпочитают вкладывать деньги в наращивание избыточной функциональности продукта,
только преумножающей его дыры.
В
1992 году, если верить "Вирусной Энциклопедии" Евгения
Касперского, "…вирусы для не IBM-PC
и не MS-DOS практически забыты: "дыры" в глобальных сетях закрыты,
ошибки исправлены, и сетевые вирусы-черви потеряли возможность для
распространения". Утверждение насчет отсутствия дыр – это сильно,
но слишком уж неубедительно. Многие из дыр, обнаруженных еще до червя Морриса
остаются не заткнутыми до сих пор, не говоря уже о том, что буквально каждый
день обнаруживаются все новые. "Дальше так жить нельзя"
(с) Анекдот.
Современная ситуация
По данным
Лаборатории Касперского на сегодняшний день популярность различных типов
сетевых червей распределяется так:
- первое место занимают почтовые черви, на
долю которых приходится 95,6% всех сетевых червей вообще;
- на втором месте с большим отрывом идут LAN-черви, использующие для своего распространения
протоколы локальных сетей и удерживающие 2,5% "рынка" сетевых
червей;
- третье место занимают чуть менее популярные P2P-черви,
распространяющиеся по Peer-to-Peer сетям (таким, например, как
KaZaA) – 1,7%;
- и наконец, четвертое место с боем удерживают IRC-черви, распространяющиеся по
каналам IRC (Internet
Relay Chat) и удерживающие лишь 0,2%.
В силу
указанных обстоятельств, наибольший интерес представляют именно почтовые черви,
поэтому основной упор статьи будет сделан именно на них.
Механизмы распространения червей
Жизненный цикл
любого вируса (и червя в частности) начинается с процесса доставки его тела на
целевой компьютер. Почтовые черви, как это и следует из их названия, внедряются
в электронную почту и попадают в почтовый ящик жертвы вместе с зараженным
письмом. Однако любой программный код сам по себе инертен, т. е. не
способен ни на какие самостоятельные действия и для
активации вируса операционная система должна явным или неявным способом
передать ему управление.
Ну, с
"явным" способом все более или менее ясно. Приходит некоему
пользователю письмо, ненавязчиво предлагающее запустить вложенную в него
программу (порой тщательно замаскированную под звуковой файл или графическое
изображение). Если жертва окажется слишком наивной (жадной/доверчивой/глупой),
то вирус имеет хорошие шансы захватить бразды правления в свои руки. Пресечь
такой способ распространения вирусов очень просто – достаточно не открывать
никакие файлы, полученные из сети. Менее жесткая мера – открывать лишь те
файлы, которые заведомо не содержат исполняемого кода, и/или присланы тем
адресатом, кому вы безоговорочно доверяете. По моим наблюдениям, порядка 99%
сетевых червей данного типа приходят от совершенно неизвестных жертве лиц либо
же выдают себя несвойственным "отправителю" стилем письма. Оставшийся
1% приходится на умышленные заражения и сигнализирует о том, что жертвам
следует сузить свой круг общения, исключив из него всех потенциально
неблагонадежных адресатов.
К сожалению,
даже предприняв весь комплекс описанных выше защитных мер, вы не сможете
полностью обезопасить себя и свой компьютер, – ведь ряд вирусов получают
управление неявно, т. е. без каких-либо действий со стороны
пользователя вообще! Ошибки реализации (или, попросту, "дыры")
используемых жертвой программ, приводят к тому, что полученные из сети данные
компьютер молчаливо интерпретирует как исполняемый код со всеми вытекающими
отсюда последствиями. Иногда приходится слышать: дескать, без действий
пользователя здесь все равно не обходится и, чтобы вирус захватил управление,
жертва как минимум должна запустить почтового клиента и получить письмо (читать
его совсем необязательно, некоторые вирусы активируются уже на стадии загрузки
письма с сервера). А это – какие ни какие, а все таки действия! На самом
деле, для заражения обращаться к каким бы то ни было серверам совершенно
необязательно, – каждый компьютер, подключенный к сети, обязан принимать
все присланные на его имя пакеты, независимо от того, запрашивал он их или нет
(принятый пакет потом, конечно, можно и прибить, если окажется что он не
"наш", но – обратите свое внимание – это будет уже потом).
Наличие ошибок в модулях TCP/IP позволяет вирусам (пусть и
теоретически) заражать компьютер посылкой всего одного-единственного TCP- или даже IP-пакета! От пользователя же
требуется только одно – установить на свой компьютер уязвимую операционную
систему и войти в Интернет, т. е. не сделать ровным счетом ничего!
("ничего" – потенциально опасного с его точки зрения имеется
ввиду).
Поскольку
найти неуязвимую операционную систему и недырявое программное обеспечение к ней
не представляется возможным [1], –
каждый
из компьютеров, подключенных к сети, потенциально уязвим, и гарантированно
защититься от вирусной атаки нельзя. Вопреки распространенному заблуждению,
антивирусы (даже самые свежие и совершенные) – крайне неэффективное
средство для борьбы с "заразой". И нашумевшая атака на SQL-серверы, – лучшее
тому подтверждение.
Никто, разумеется,
не говорит, что антивирусы вообще бесполезны, ведь именно благодаря им
"выдыхаются" все вирусные атаки, но – задумайтесь –
"отбить" атаку совсем не тоже самое, что "предотвратить".
Практика показывает, что более или менее успешно предотвращаются лишь атаки
вирусов с длительным "инкубационным" периодом, – т. е.
промежутком времени между заражением жертвы и началом активных (и, зачастую,
крайне деструктивных) действий. Лишь в исключительных случаях специалистам по
безопасности удается опередить вирусов и "выловить" их прежде, чем
пострадает хотя бы один пораженный компьютер. Как нетрудно установить,
вероятность этого события прямо пропорциональна интенсивности распространения
вируса, т. е. до истечения своего инкубационного периода вирус должен ухитриться
заразить хотя бы одного специалиста по безопасности, которому по тонким
косвенным признакам повезет обнаружить "спящего" вируса. Причем за
оставшееся до часа "икс" время, его штамм должен успеть дойти до
разработчиков одного или нескольких популярных антивирусов. Те же, в свою
очередь, должны не только оперативно изготовить противоядие, но и каким-то
фантастическим образом разослать его всем (или по крайней мере части)
зараженных пользователей. Это слишком маловероятно, чтобы о таком способе
защиты стоило серьезно говорить!
С другой
стороны, – промежуток времени между "официальным" открытием
новой дыры и моментом появления первых вирусов, использующих ее в своих целях,
в подавляющем большинстве случаев очень велик и колеблется от нескольких
месяцев до… двух-трех лет! Если хотя бы пару раз в год посещать сервер www.microsoft.com на предмет скачивания новых
"заплаток", то с вероятностью близкой к единице, вирусных атак
второго типа (происходящих без вашего участия) вам гарантированно удастся
избежать. Действительно, квалификация основной массы вирусописателей слишком
низка, чтобы вести самостоятельный поиск дыр в системе и все, что им
остается – надеяться на помощь открытых источников (как-то: рассылки по
безопасности, хакерские конференции и журналы соответствующей направленности).
Те же, кто способен искать такие дыры, в случае их обнаружения в первую
очередь, как правило, оповещают разработчиков дырявого ПО и специалистов по
информационной безопасности и лишь затем передают эту информацию гласности. Редкие
исключения, если они и случаются, не меняют картины, – ведь для создания
нового вируса требуется значительно больше времени, чем для ликвидации той или
иной уязвимости.
И в заключение
этого раздела позвольте сформулировать следующий тезис: непременным условием
распространения сетевых червей является наличие "дыр" в программном
обеспечении жертвы и/или непродуманные действия пользователя.
Методики противодействия вирусам
Народная
мудрость гласит: "если хочешь быть здоров – закаляйся". Говоря
другими словам: лечись не новомодными лекарствами, а просто не доводи себя до
болезни вообще, заблаговременно повышая свой иммунитет. К сожалению, в мире
компьютеров эту поговорку практически никогда не вспоминают, ну а
руководствуются ею вообще считанные единицы. Несколько утрируя, можно сказать,
что мы имеем дело с синдромом врожденного иммунодефицита. А ведь вирусы –
не спят! И день ото дня становятся все коварнее, изощреннее и… сильнее! Рост
пропускной способности каналов Интернет позволяет злоумышленникам поражать
воистину астрономическое число компьютеров за рекордно короткое время.
Единственный способ противостоять антивирусам – увеличить защищенность
своего узла. О том, что именно следует для этого сделать, рассказано ниже.
Резервное копирование
Прежде чем
говорить о резервном копировании, следует заметить, что целостности ваших
данных угрожают не столько вирусы, сколько сбои оборудования, ошибки
программного обеспечения, неверные действия операторов и, наконец, те самые
трубы отопления, которые в любой момент могут прорвать. По общему мнению
специалистов по информационной безопасности, вирусы составляют лишь малую часть
от всех причин разрушения данных вообще. Высокая надежность современной
вычислительной техники создает обманчивую иллюзию ее полной благонадежности, и
о необходимости своевременного резервного копирования подавляющее большинство
пользователей просто забывают. И это-то в наш век победного шествия резервных
накопителей всех видов и емкостей! Ладно, стримеры – это долго, Iomega Zip' – слишком дорого, но
что мешает приобрести CR-RW? Мизерная стоимость самого
привода, практически бесплатные "болванки" и сумасшедшая скорость
записи позволяют резервировать содержимое своего жесткого диска хоть каждый
день, тратя на это не более десятка минут (вообще-то, резервировать весь диск
целиком нет никакой нужды, – достаточно записать лишь измененные за день
файлы). Наличие резервной копии позволяет быстро "подняться" после
любого сбоя, к минимуму сводя убытки от потерянной информации.
Причем при
перезаписи информации недопустимо затирать прежнюю копию, – ведь нет
никаких гарантий, что свежие версии файлов уже не заражены (и/или искажены)
вирусом, а если так - резервная копия потеряет свой смысл, ведь она
будет содержать те же самые данные, что имеются на жестком диске! По меньшей
мере следует иметь две-три резервных копии, сделанных в различные моменты
времени. Например, на один диск записывать информацию каждый день, на
другой – раз в одну-две недели, ну а на третью – раз в месяц. Чем
больше вы имеете копий, тем безболезненней окажется "откат" в случае
вирусной атаки.
Также следует
учесть возможность появления вирусов, поддерживающих перезаписываемые диски и
уничтожающих содержащиеся на них данных (или же, что более сложно, но
технически все-таки осуществимо, заражающие файлы непосредственно на CD-RW). Следовательно, при восстановлении
информации с резервной копии никогда не вставляйте диск в пишущий
привод, – лучше воспользуйтесь обычным CD-ROM'ом.
Переход на защищенные операционные системы
Масштабы то и
дело возникающих вирусных эпидемий не в последнею очередь объясняются тем, что
во офисах подавляющего большинства компаний и корпораций установлена изначально
незащищенная Windows 98,
представляющая собой лакомую мишень для вирусов и хакеров. Да, конечно, Windows 2000/XP стоит намного дороже, а их
преимущества (далеко не очевидные на первый взгляд) сводятся как раз к защищенности
и никаких других преимуществ у них просто нет. Степень защищенности же –
это и есть то свойство, на котором многие предпочитают экономить. Действительно,
пока гром не грянет и жаренный петух не клюнет, руководители фирм зачастую
вообще не задумываться о безопасности. Зато потом, когда вирусная (хакерская)
атака свершится, они приводят совершенно фантастические цифры о стоимости
утерянных данных. Помилуйте! Если хотя бы 1% от заявленной суммы был бы
потрачен на грамотную защиту ваших компьютеров, оставшиеся 99% сейчас были бы с
вами! Про необходимость резервного копирования уже было сказано выше
(собственно, эту необходимость никто и не оспаривает), а вот насчет
целесообразности оснащения рабочих станций Windows 2000/XP
единого мнения даже среди специалистов по информационной безопасности нет и
достаточно многие из них считают такую меру неоправданным расточительством. Так
что окончательное решение этого вопроса остается за вами.
Уменьшение привилегий пользователей до минимума
Операционные
системы семейства NT
выгодно отличаются от Windows 98/Me тем, что позволяют
пресекать потенциально опасные действия пользователей и серьезно ограничивают
полномочия запущенных этими пользователями приложений. В частности, запрет на
модификацию исполняемых файлов делает распространение большинства вирусов
просто невозможным! Правда, сетевые черви, вообще не внедряющиеся ни в какие
файлы и довольствующиеся лишь заражением оперативной памяти, выживут и в NT, но! – правильная
политика разграничения доступа к файлам документов сведет последствия
деструктивных действий вируса к минимуму. К сожалению, многие безалаберно
относящиеся к собственной безопасности пользователи постоянно сидят в системе
под "Администратором", а потом удивляются: почему эта хваленая NT их не спасает?
И даже те
пользователи, которые входят в систему с правами "простых
пользователей" и без нужды их не повышают, практически никогда не
задумываются о целесообразности запрета модификации тех файлов, которые в
данный период времени ими не используются. Причем следует отметить уязвимость
службы Run As, позволяющей запускать
программы от имени других пользователей. На первый взгляд никакой угрозы как
будто бы нет, – все запускаемые таким образом программы требуют явного
ввода пароля, и вирусы "добраться" до них как будто не могут.
Увы, – мне придется вас жестоко разочаровать. Во-первых, даже начинающему
программисту ничего не стоит написать программу, отслеживающую появление
диалогового окна "запуск программы от имени другого пользователя" и
похищающую вводимый этим самым пользователем пароль. Во-вторых, коль скоро та
или иная программа запущена, вирус сможет захватить над ней управление просто
эмулируя ввод с мыши и/или клавиатуры! Несмотря на то, что пока таких вирусов
все еще нет, никогда не позволяйте себе запускать более привилегированные
программы из менее привилегированных. Лучше, завершив текущий сеанс работы,
войдите в систему под соответствующим пользователем снова. И –
внимание! – работая под администратором, ни в коем случае не запускайте ты
программы, которые могут быть модифицированы с привилегиями обычного
пользователя!
Сокращение избыточной функциональности программ
Монстроузность
современного программного обеспечения чрезвычайно затрудняет его тестирование и
практически не оставляет никаких надежд на выявление всех дыр в разумные сроки.
Причем большая часть функциональных возможностей того же Outlook'а явно избыточна и реально
требуется лишь небольшой части пользователей. Вот например просмотр HTML-формата писем. Спору
нет – это удобно. Но вот необходимо ли? Без HTML-писем в подавляющем большинстве
случаев можно и обойтись, а уж поддержка скриптов в письмах и подавно не нужна
(разве что спаммерам банеры крутить).
Создание
собственного минимально функционального почтового клиента – далеко не
такая сложная задача, каковой кажется в начале. У меня, в частности, на это
ушло всего два вечера и, обращаясь к корпоративным пользователям, я хочу
сказать: поверьте, стоимость разработки персонального почтового клиента
пренебрежительно мала по сравнению с общими расходами, выделяемыми на
обеспечение безопасности. Минимально функциональный почтовый клиент в
действительности настолько прост, что имеется вполне реальная возможность
реализовать его без дыр. А отсутствие дыр автоматически отсекает все, неявно
запускающиеся вирусы!
Единственная
серьезная проблема заключается в обработке HTML-писем. Реализация собственного браузера – затея
практически нереальная, а использование готовых компонентов от InternetExplorer или NetscapeNavigator с неотвратимой
неизбежностью наследует все их дыры, потому ваш почтовый клиент окажется
защищен ничуть не лучше того же OutlookExpress!
Однако, кто сказал, что почтовый клиент должен содержать полноценный браузер?
Поддержки десятка основных тегов для комфортного чтения писем вполне
достаточно.
Методики обнаружения
Самый простой
(но далеко не самый надежный) метод обнаружения вирусов сводится к
приобретению, установке и периодическому запуску одному или нескольких антивирусов. Если не лениться и хотя бы
эпизодически обновлять антивирусные базы, то (по моим наблюдением) более 80%
всех вирусных атак будут успешно отбиты. Домашним пользователям, не имеющим на
своих компьютере ничего ценного, такая надежность может покажется вполне
удовлетворительной, но в отношении корпоративных пользователей это не так!
Стоит ли говорить, что может натворить даже один-единственный вирус,
пробравшийся в корпоративную сеть и своевременно не разоблаченный? Тем более,
что компаниям (особенно большим) приходится сталкиваться не только со
"слепыми", но и с целенаправленными атаками. Другими словами, –
вирусами, написанными специально для атаки на данную конкретную компанию и
потому никакими антивирусами не распознаваемыми (вот только не надо кричать про
эвристический анализ, – любой ребенок его без труда обойдет). Кстати,
хотите позабавиться? Создайте файл следующего содержания и, откомпилировав его,
натравите на него свой любимый антивирус на предмет выяснения: не зависнет ли?
.386
.model flat, STDCALL
.code
start:
@xxx:
jmp @xxx
end start
Самый свежий
на момент написания этих строк антивирус Евгения Касперского 4.0,
запущенный с настройками по умолчанию, "мертво" виснет! Это –
хороший показатель дальновидности (то есть, в данном случае как раз
недальновидности) разработчиков и уровня культуры программирования вообще.
Мониторинг изменения файлов
Внедрившись в
систему, вирус начинает в ней размножаться и вот тут-то его можно и
"подсечь", – достаточно лишь периодически контролировать
целостность существующих файлов и отслеживать появление новых. Существует
большое количество утилит, выполняющих такую операцию (на ум сразу же приходят AdInfo от "Диалог
Науки" и DiskInspector
от "Лаборатории Касперского"), однако в Windows 98 и Windows 2000/XP для решения поставленной задачи можно
обойтись и штатными средствами, – достаточно запустить утилиту SFC.EXE. Несмотря на то, что хитрые вирусы
могут эту программу и обмануть, степень достоверности результатов проверки
весьма высока и на этом ловится подавляющее большинство вирусов, включая и тех,
что в силу своей новизны еще не детектируются антивирусами AVP и Dr. Web.
Разумеется, качество проверки уже упомянутых выше AdInfo и DiskInspector много выше, и
обмануть их практически невозможно (во всяком случае вирусов, способных
похвастаться этим, до сих пор нет). Правда, некоторые вирусы, стремясь
замаскировать свое присутствие, просто удаляют базы с информацией о проверяемых
файлах, но эффект от этой "хитрости" получается совершенно
обратный, – самим фактом такого удаления вирусы демаскируют свое
присутствие! Какие конкретно файлы были заражены – это уже другой вопрос
(если не можете ответить на него сами, – поручите эту работу специалистам,
главное только, чтобы вирус был вовремя обнаружен).
Стоит
отметить, что операционные системы класса NT (к которым принадлежат и Windows 2000/XP)
запрещают обычным пользователям модифицировать системные файлы, равно как и
вносить потенциально опасные изменения в конфигурацию системы, а потому выжить
в такой среде вирусу окажется очень и очень трудно. С некоторой натяжкой можно
даже сказать, что вообще невозможно. Как уже отмечалось выше, не стоит
экономить на безопасности, ставя на рабочие места не NT, а более дешевую Windows 98/Me.
Контроль за обращениям к файлам
Хорошим
средством обнаружения вторжений (как вирусных, так и хакерских) служит щедро
разбросанная приманка, – файлы, к которым легальные пользователи в силу
своих потребностей не обращаются, но которые с высокой степенью вероятности будет
заражены вирусом или затребованы хакером. В первом случае в роли наживки могут
выступить любые исполняемые файлы вообще, а во втором – любые файлы с
интригующими именами (например, "номера кредитных карточек менеджеров
фирмы.doc").
Как обнаружить
сам факт обращения к файлам? Ну, во-первых, операционная система сама
отслеживает дату последнего обращения к документу (не путать с датой его
создания), узнать которую можно через пункт "Свойства" контекстного
меню выбранного файла. Опытные пользователи могут получить ту же самую
информацию через популярную оболочку FAR Manager –
просто нажмите <Ctrl-5>
для отображения полной информации о диске. И, если дата последнего открытия
файла вдруг неожиданно изменилась, – знайте, к вам пришла беда и надо
устраивать серьезные разборки с привлечением специалистов, если, конечно, вы не
можете справится с заразой собственными силами. Конечно, опытные хакеры и
тщательно продуманные вирусы такую примитивную меру могут обойти, но… практика
показывает, что в подавляющем большинстве случаев они об этом забывают.
В самых
ответственных случаях можно воспользоваться файловым монитором Марка
Русиновича, свободно распространяющимся через сервер http://www.sysinternals.com. Ни один существующий вирус не пройдет
незамеченным мимо этой замечательной утилиты, кстати, в упакованном виде
занимающей чуть более полусотни килобайт и контролирующий доступ к диску на
уровне дискового драйвера. К тому же она выгодно отличается тем, что сообщает
имя программы, обратившийся к файлу-приманке, тем самым позволяя точно
дислоцировать источник заразы и отсеять ложные срабатывания (ведь и сам
пользователь мог по ошибке обратится к "подсадному" файлу, также не
следует забывать и об антивирусных сканерах, открывающих все файлы без
разбора).
Эффективность
предложенной методики автор готов подтвердить своим личным опытом, авторитетом
и репутацией. Пожалуй, это наилучшее и притом бесплатное решение из всех.
(Заметим, что ручного анализа протоколов файлового монитора очень легко
избежать, поручив эту работу компьютеру, и программу, осуществляющую это, за
"спасибо" напишет даже студент).
Контроль за состоянием системы
Не все вирусы,
однако, внедряют свой код в чужие исполняемые файлы. Спрятавшись в дальнем
уголке жесткого диска (как правило, это Windows\System,
содержимое которой никто из пользователей не знает и не проверяет), они
изменяют конфигурацию системы так, чтобы получать управление при каждой
загрузке (или, на худой конец, – эпизодически). Самые "тупые"
вирусы прописывают себя в "Автозагрузку" (см. Пуск -> Программы -> Автозагрузка), а
подавляющее большинство остальных – в следующую ветку системного реестра:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run].
Конечно, существуют и более экзотические способы (вроде файлов config.sys/autoexec.bat
в Windows 98/Me и config.nt/autoexec.nt
в Windows 2000/XP), но они практически не
находят себе применения.
Также богатую
информацию несет и количество оперативной памяти, выделенной на момент загрузки
системы (узнать его можно через "Диспетчер задач"). Просто
запомните его (или запишите где-нибудь на бумажке), а затем – при каждой
загрузке системы – сверяйте. И хотя теоретически возможно внедриться в
систему без изменения объема выделенной памяти, встречаться с такими вирусами
на практике мне до сих пор не доводилось. На всякий случай, запустив тот же
"Диспетчер задач", перейдите ко вкладке "Процессы", в меню
"Вид" выберите "Все столбцы" и взведите галочки напротив
всех характеристик, которые вы хотите контролировать (как правило – это
все характеристики процесса и есть), далее поступайте аналогично: запомните
начальное состояние каждого запускаемого процесса на заведомо
"чистой" машине, а при всех очередных запусках – сверяйте с этим
эталоном. Если не хотите делать это вручную, – любой программист с радостью
напишет вам соответствующую утилиту, после чего незаметно проникнуть в вашу
систему смогут только гении или боги.
Ненормальная сетевая активность
Часто вирусы
(и внедренные хакерами троянцы) выдают себя тем, что проявляют ненормальную
сетевую активность (обращение по нетипичным для данного пользователя сетевым
адресам и/или портам, резко возросший трафик или подозрительное время). Начнем
с того, что практически ни один вирус не анализирует учетные записи
распространенных почтовых клиентов и, стало быть, самостоятельно определить
адрес вашего почтового сервера не может. Как же тогда черви ухитряются
распространятся? Да очень просто: часть из них использует жестко прошитые
внутри себя адреса бесплатных SMTP-серверов,
другие же связываются с получателями писем напрямую, т. е. обращаются
непосредственно к их почтовому серверу. И то, и другое демаскирует вирус,
исключая конечно тот случай, когда по иронии судьбы и вирус, и зараженная им
жертва используют один и тот же сервер исходящей почты. Учитывая, что подавляющее
большинство корпоративных пользователей использует свой собственный сервер для
рассылки почты, вероятностью случайного совпадения адресов можно пренебречь.
Для
протоколирования сетевого трафика существует огромное множество разнообразных
программ, самая доступная из которых (хотя и не самая лучшая) – netstat, входящая в штатный пакет поставки операционных
систем Windows 98/Me и Windows 2000/XP.
Также имеет
смысл приобрести любой сканер портов (ищите его на хакерских сайтах или, на
худой конец, воспользуйтесь все той же netstat) и периодически осматривать все порты своего
компьютера, – не открылись ли среди них новые. Некоторые сетевые черви
устанавливают на заражаемые компьютеры компоненты для удаленного
администрирования, которые чаще всего работают через TCP- и реже – через UDP-протоколы. Утилита netstat позволяет
контролировать на предмет открытых портов и те, и другие.
Анализ полученных из сети файлов
Подавляющее
большинство почтовых червей распространяет свое тело через вложения (также
называемые аттачментами) и, хотя существует принципиальная возможность создания
вирусов, целиком умещающихся в заголовке или основном теле письма, на практике
с такими приходится сталкиваться крайне редко, да и живут они все больше в
лабораторных условиях. Таким образом, задача выявления почтовый червей сводится
к анализу корреспонденции, содержащей подозрительные вложения.
Вот мы берем в
руки исполняемый файл (часто переименованный в jpg или wav). Как узнать: какое у него
назначение? Четкий ответ на этом вопрос дает лишь дизассемблирование, т. е. перевод машинных кодов в
ассемблерные мнемоники и полная реконструкция всего алгоритма. Разумеется,
дизассемблирование – необычайно трудоемкая и требовательная к квалификации
администратора операция, но ведь можно поступить и проще! На помощь приходит
утилита DUMPBIN, входящая в штатный комплект
поставки любого Windows-компилятора.
Запускаем ее со следующими ключами: "DUMPDIN /IMPORTS
имя_файла" и получаем полные сведения о всех импортируемых данным файлов
динамических библиотеках и API-функциях.
Что делает каждая из них? Это можно прочитать в Platform SDK, взятом с того же самого
компилятора. В частности, многие сетевые черви демаскируют себя тем, что
импортируют библиотеку WS2_32.DLL,
содержащую в себе реализации функций WINSOCKS. Конечно, эти функции используют не только вирусы, но и
легальные программы, но в любом случае, анализ импорта позволяет установить
приблизительную функциональность программы. С другой стороны, отсутствие явного
обращения к функциям WINSOCKS
еще не гарантирует отсутствия обращения к ним вообще. Вирус вполне может
вызывать их и динамически, по ходу своего выполнения, и тогда соответствующих
библиотек в списке импорта просто не окажется! Собственно, этого и следовало
ожидать, – учитывая что некоторые вирусы являются настоящей головоломкой
даже для опытных профессионалов, надеяться выловить их такими примитивными
средствами – по меньшей мере было бы наивно. К счастью, такие
"ужастики" в живой природе встречаются крайне редко и подавляющее большинство
вирусов пишется лицами, делающими в программировании свои первые шаги, поэтому
предложенная автором методика их "творения" очень даже обнаруживает!
Методики удаления
Удаление
вирусов из системы, вероятно, самая простая операция из всех, рассмотренных
выше. Очень хорошо зарекомендовала себя следующая методика: после установки
операционной системы и всех сопутствующих ей приложений, просто скопируйте
содержимое диска на резервный носитель и затем, – когда будет зафиксирован
факт вторжения в систему (вирусного или хакерского – не важно), –
просто восстановите все файлы с резервной копии обратно. Главное преимущество
данного способа – его быстрота и непривередливость к квалификации
администратора, (или, в общем случае, лица, осуществляющего удаление вирусов).
Конечно, следует помнить о то, что: а) достаточно многие программы, тот же
Outlook Express,
например, сохраняют свои данные в одном из подкаталогов папки Windows и, если почтовую базу не
зарезервировать отдельно, то после восстановления системы она просто исчезнет,
что не есть хорошо; б) некоторые вирусы внедряются не только в файлы, но
так же и в boot- и/или MBR-сектора, и для удаления
их оттуда одной лишь перезаписи файлов недостаточно; в) вирус может
перехватить системные вызовы и отслеживать попытки замещения исполняемых
файлов, имитируя свою перезапись, но не выполняя ее в действительности.
Поэтому, более
надежен следующий путь: загрузившись с заведомо стерильного CD-диска (или, на худой конец, дискеты),
вы удаляете папки Windows
(WINNT) и Program Files, а затем
начисто переустанавливаете операционную систему вместе со всеми приложениями.
Конечно, это медленно, но… ничего более лучшего предложить, по-видимому, просто
невозможно.
Естественно, в
случае заражения известными вирусами, можно прибегнуть и к помощи антивирусов,
однако существует весьма высокая вероятность столкнуться с некорректным
удалением вируса из файлов, в результате чего система либо полностью теряет
свою работоспособность, либо вирус остается не долеченным и
"выживает", и зачастую после этого уже не детектируется
антивирусом. Уж лучше просто удалить зараженный файл, восстановив его с
резервной копии! Конечно, это не гарантирует того, что в системе не осталось
компонентов, скрыто внедренных вирусом, однако такие компоненты (если они
вообще есть) могут быть обнаружены по одной из описанных выше методик. Правда
это требует определенного времени и не факт, что оно окажется меньшим, чем
требуется для полной переустановки операционной системы.
Заключение
Пренебрежительное
отношение к собственной безопасности – бесспорное зло. Ведь пораженная
вирусом жертва страдает от него не одна, – она пусть и непредумышленно
заражает всех остальных. С другой стороны, паническая боязнь вирусов – зло
еще большее и Салтыковым-Щедриным в "Премудром Пескаре" злорадно, но
тем не менее справедливо высмеянное. Не стоит, право же, лишать себя радости
обитания во Всемирной Паутине, только потому, что в ней существует такие подлые
твари, как хакеры и вирусы (хакеры – в ругательном смысле этого слова, я
ничего не имею против обобщенного образа хакера вообще).