Virus.Win9x.CIH (
«Лаборатория Касперского»)
также известен как:
Win95.CIH (
«Лаборатория Касперского»),
W95/CIH.1019a (
McAfee), W95.CIH (
Symantec), Win95.CIH.1003 (
Doctor Web), W95/CIH-10xx (
Sophos), Win95/CIH.1003 (
RAV), PE_CIH.1003 (
Trend Micro), W95/CIH.A (
H+BEDV), W32/CIH.1019.A (
FRISK), Win95:CIH (
ALWIL), Win32/CIH (
Grisoft), Win95.CIH.Gen (
SOFTWIN), CIH.2 (
ClamAV), W95/CIH (
Panda), Win95/CIH (
Eset)
Описание опубликовано |
12 янв 2000
|
Также известен как "Чернобыль". Резидентный вирус, работает только под Windows95/98
и заражает PE-файлы
(Portable Executable). Имеет довольно небольшую длину - около 1Кб. Был
обнаружен "в живом виде" на Тайване в июне 1998 - автор вируса заразил
компьютеры в местном университете, где он (автор вируса) в то время
проходил обучение. Через некоторое время зараженные файлы были (случайно?)
разосланы в местные Интернет-конференции, и вирус выбрался за пределы
Тайваня: за последующую неделю вирусные эпидемии были зарегистрированы в
Австрии, Австралии, Израиле и Великобритании. Затем вирус был обнаружен и в
нескольких других странах, включая Россию.
Примерно через месяц зараженные файлы были обнаружены на нескольких
американских Web-серверах, распространяющих игровые программы. Этот факт,
видимо, и послужил причиной последовавшей глобальной вирусной эпидемии. 26
апреля 1999 года (примерно через год после появления вируса) сработала
"логическая бомба", заложенная в его код. По различным оценкам, в этот день
по всему миру пострадало около полумиллиона компьютеров - у них оказались
уничтожены данные на жестком диске, а на некоторых плюс к тому испорчено
содержимое микросхем BIOS на материнских платах. Данный инцидент стал настоящей
компьютерной катастрофой - вирусные эпидемии и их последствия никогда до
того не были столь масштабными и не приносили таких убытков.
Видимо, по тем причинам, что 1) вирус нес реальную угрозу компьютерам во
всем мире и 2) дата срабатывания вируса (26 апреля) совпадает с датой
аварии на Чернобыльской атомной электростанции, вирус получил свое второе
имя - "Чернобыль" (Chernobyl).
Автор вируса, скорее всего, никак не связывал Чернобыльскую трагедию со
своим вирусом и поставил дату срабатывания "бомбы" на 26 апреля по совсем
другой причине: именно 26 апреля в 1998 году он выпустил первую версию
своего вируса (которая, кстати, так и не вышла за пределы Тайваня) - 26
апреля вирус "CIH" отмечает подобным образом свой "день рождения".
Как вирус работает
При запуске зараженного файла вирус инсталлирует свой код в память Windows,
перехватывает обращения к файлам и при открытии PE EXE-файлов записывает в
них свою копию. Содержит ошибки и в некоторых случаях завешивает систему
при запуске зараженных файлов. В зависимости от текущей даты стирает Flash
BIOS и содержимое дисков.
Запись в Flash BIOS возможна только на соответсвующих типах материнских
плат и при разрешающей установке соответственного переключателя. Этот
переключатель обычно установлен в положение "только чтение", однако это
справедливо не для всех производителей компьютеров. К сожалению Flash BIOS
на некоторых современных материнских платах не может быть защищена
переключателем: одни из них разрешают запись в Flash при любом положении
переключателя, на других защита записи в Flash может быть отменена программно.
После успешного стирания Flash-памяти вирус переходит к другой
деструктивной процедуре: стирает информацию на всех установленных
винчестерах. При этом вирус использует прямой доступ к данным на диске и
тем самым обходит встроенную в BIOS стандартную антивирусную защиту от
записи в загрузочные сектора.
Известно три основные ("авторские") версии вируса. Они достаточно похожи
друг на друга и отличаются лишь незначительными деталями кода в различных
подпрограммах. Версии вируса имеют различные длины, строки текста и дату
срабатывания процедуры стирания дисков и Flash BIOS:
Длина Текст Дата срабатывания Обнаружен "в живом виде"
1003 CIH 1.2 TTIT 26 апреля Да
1010 CIH 1.3 TTIT 26 апреля Нет
1019 CIH 1.4 TATUNG 26 каждого месяца Да - во многих странах
Технические детали
При заражении файлов вирус ищет в них "дыры" (блоки неспользуемых данных)
и
записывает в них свой код. Присутствие таких "дыр" обусловлено структурой
PE-файлов: позиция каждой секции в файле выравнена на определенное
значение, указанное в PE-заголовке, и в большинстве случаев между концом
предыдущей секции и началом последующей есть некоторое количество байт,
которые не используются программой. Вирус ищет в файле такие неиспользуемые
блоки, записывает в них свой код и увеличивает на необходимое значение
размер модифицированной секции. Размер заражаемых файлов при этом не увеличивается.
Если в конце какой-либо секции присутствует "дыра" достаточного размера,
вирус записывает в нее свой код одним блоком. Если же такой "дыры" нет,
вирус дробит свой код на блоки и записывает их в конец различных секций
файла. Таким образом, код вируса в зараженных файлах может быть обнаружен
и как единый блок кода, и как несколько несвязанных между собой блоков.
Вирус также ищет неиспользуемый блок данных в PE-заголовке. Если в конце
заголовка есть "дыра" размером не менее 184 байт, вирус записывает в нее
свою startup-процедуру. Затем вирус изменяет стартовый адрес файла:
записывает в нее адрес своей startup-процедуры. В результате такого приема
структура файла становится достаточно нестандартной: адрес стартовой
процедуры программы указывает не в какую-либо секцию файла, а за пределы
загружаемого модуля - в заголовок файла. Однако Windows95 не обращает
внимания на такие "странные" файлы, грузит в память заголовок файла, затем
все секции и передает управление на указанный в заголовке адрес - на
startup-прецедуру вируса в PE-заголовке.
Получив управление, startup-процедура вируса выделяет блок памяти
VMM-вызовом PageAllocate, копирует туда свой код, затем определяет адреса
остальных блоков кода вируса (расположенных в конце секций) и дописывает их
к коду своей startup-процедуры. Затем вирус перехватывает IFS API и
возвращает управление программе-носителю.
С точки зрения операционной системы эта процедура наиболее интересна в
вирусе: после того, как вирус скопировал свой код в новый блок памяти и
передал туда управление, код вируса исполняется как приложение Ring0, и
вирус в состоянии перехватить AFS API (это невозможно для программ,
выполняемых в Ring3).
Перехватчик IFS API обрабатывает только одну функцию - открытие файлов.
Если открывается файл с расширением EXE, вирус проверяет его внутренний
формат и записывает в файл свой код. После заражения вирус проверяет
системную дату и вызывает процедуру стирания Flash BIOS и секторов диска (см.
выше).
При стирании Flash BIOS вирус использует соответствующие порты
чтения/записи, при стирании секторов дисков вирус вызывает VxD-функцию
прямого обращения к дискам IOS_SendCommand.
Известные варианты вируса
Автор вируса не только выпустил копии зараженных файлов "на свободу", но и
разослал исходные ассемблерные тексты вируса. Это привело к тому, что эти
тексты были откорректированы, откомпилированы и вскоре появились
модификации вируса, имевшие различные длины, однако по функциональности они
все соответствовали своему "родителю". В некоторых вариантах вируса была
изменена дата срабатывания "бомбы", либо этот участок вообще никогда не вызывался.
Известно также об "оригинальных" версиях вируса, срабатывающих в дни,
отличные от 26 [апреля]. Данный факт объясняется тем, что проверка даты в
коде вируса происходит по двум константам. Естественно, что для того, чтобы
поставить таймер "бомбы" на любой заданный день, достаточно поменять лишь
два байта в коде вируса.