OneHalf: история компьютерного «коронавируса»
Попробуем запустить машину времени и заглянуть в 1994 год, когда компьютеры поразила эпидемия хитрого и коварного вируса.
vlada_maestro / shutterstock
Тимур Бакибаев
об авторе
Программирую с 1988 года. Ph.D., Senior Developer, SAP SE. Работал профессором, ERP-разработчиком в Microsoft Dynamics и много где ещё. Веду свой блог на Medium.
Это история о старом компьютерном вирусе OneHalf.3544, который так долго оставался незамеченным, что было уже слишком поздно для самоизоляции.
Эпидемия случилась в 1994 году. Может быть, кто-то из вас ещё помнит такое сообщение терминала MS-DOS:
Dis is one half. Press any key to continue…
Если нажали — пожалуйста, сразу же самоизолируйтесь!
Я с улыбкой вспоминаю об этом вирусе: где теперь мой старый добрый IBM PC 286 с его 40 МБ жесткого диска и 640 КБ оперативки? Когда-то я играл на нём в Prehistoric, Tetris, Prince of Persia и Dave 2. Отличное было времечко.
Этот вирус появился в 1994 году на компьютерах, работающих под MS-DOS. И он до сих пор может прятаться на некоторых древних машинах.
Что общего между OneHalf.3544 и SARS-CoV-2
Вирус OneHalf |
Коронавирус COVID-19 (SARS-CoV-2) | |
---|---|---|
Длительный инкубационный период | ✓ | ✓ |
Полиморфизм (способность изменяться) | ✓ | ✓ |
Скрытность | ✓ | ✓ |
Опосредованное заражение через предметы | ✓ | ✓ |
Непосредственное заражение от носителя к носителю | ? | ✓ |
Долгий инкубационный период и режим невидимки
Основной принцип OneHalf — не проявлять себя, пока не заразишь половину жёсткого диска. Именно отсюда и название «Одна половина». Как ему это удавалось и почему антивирусы его не замечали?
Во-первых, все заражённые файлы шифровались и становились длиннее на 3544 байта — в этом «хвосте» хранились случайно сгенерированный ключ и дешифратор. Каждый раз, когда пользователь обращался к файлу, вирус на лету декодировал его, а сам оставался незамеченным — следов его работы не было видно. Данные в файле шифровались побитовыми операциями исключающего «или» (XOR), которые затем в реальном времени расшифровывались вирусом по тому же алгоритму.
Во-вторых, OneHalf перехватывал контроль над операционной системой, подменял MBR на поддельный и отображал зашифрованные файлы так, как будто их размер не изменился. Потому антивирусы и не могли заметить ничего необычного. Даже размер свободной оперативной памяти показывался без учёта нагрузки от вируса — как будто он вообще её не использовал.
Зачем OneHalf скрывал занятые собой пару килобайт ОЗУ — кто их вообще считает? В те времена мы боролись за каждый килобайт, потому что максимальный объём оперативки был всего 640 КБ, и этого не хватало на всё: -) Например, перед запуском игры приходилось загружать в оперативку звуковой драйвер и драйвер мыши вместо драйверов CD-ROM и клавиатуры. Это уже потом в MS-DOS появился himem.sys внутри config.sys, который позволял использовать больше 640 КБ памяти.
Если вы даже заметите вирус и захотите его удалить, то пропадут все зашифрованные файлы, потому что вместе с инфекцией теряется и случайно сгенерированный ключ. Согласитесь, это непростой выбор…
Как вы думаете, сколько времени потребовалось OneHalf, чтобы заразить большую часть компьютеров по всему миру? Две недели? Месяц? Нет, гораздо дольше.
Вирус действовал в режиме невидимки, пока не инфицировал половину жёсткого диска. Он начал распространяться зимой 1994 года, а проявил себя только в середине мая. Но было уже слишком поздно и любой антивирус, обнаружив его, по сути, уничтожал все данные. Файлы-то были зашифрованы.
Да, со временем антивирусы стали умнее: сначала расшифровывали поражённые файлы и только потом удаляли вирус. Но это произошло совсем не сразу.
Полиморфизм: способность меняться
OneHalf.3544 генерировал ключи случайным образом, но дешифратор всегда оставался неизменным и запускался каждый раз при обращении к заражённому файлу. Как же инфекции удавалось остаться незамеченной?
Уже в те годы любой нормальный вирус изначально создавался полиморфным. Иначе он не продержался бы и суток: антивирусы постоянно сканируют файлы, ищут в них известные фрагменты вирусного кода и удаляют заражённые блоки.
OneHalf.3544 хранил в начале каждого файла специальную карту дешифратора — в ней был набор адресов, из которых дешифратор собирался по кусочкам. Эти кусочки были раскиданы по всему файлу. Поэтому ни один фрагмент кода в заражённых файлах не повторялся.
Опосредованное заражение: инфицирование через предметы
Чаще всего OneHalf передавался на дискетах. Как только операционная система получала доступ к дисководу, вирус запускался и проверял имена и размеры файлов. Он был хитрый и не хотел тревожить антивирусы, имеющие встроенную защиту от заражения. Поэтому не трогал файлы, в названиях которых встречались слова SCAN, CLEAN, FINDVIRU, GUARD, NOD, VSAFE, MSAV, CHKDSK, СПИД, ADINF или WEB.
Перед заражением вирус получал от операционной системы размер файлов, для того чтобы пропускать совсем маленькие. Причина в том, что дешифратор состоял из 10 фрагментов, которые требовалось скрыть внутри одного файла, а минимальное расстояние между этими кусочками кода составляло 10 байт.
После проверки OneHalf начинал записывать себя во все файлы и блокировал на время доступ к накопителю — никто не мог извлечь дискету, пока он не закончит работу. Расчёт был прост: пользователь не захочет её портить, а потом покупать новую.
В первую очередь OneHalf заражал EXE- и COM-файлы. Это стандартное поведение вирусов — ведь им надо было как-то запускаться, а именно эти файлы являются исполняемыми.
Кстати, в те времена многие антивирусы ограничивали проверку системы только такими файлами, потому что это был единственный способ распространения вирусов.
Непосредственное заражение: от носителя к носителю
Если два компьютера стояли рядом, вирус отправлял BLE-пакеты на соседнюю машину. BLE — это обычные пакеты Bluetooth с низким энергопотреблением, которые предлагали законнектиться другому компьютеру с заражённым. Все это было похоже на приглашение сразиться по сети в Doom-II, поэтому пользователь нажимал «Принять». Этого хватало, чтобы подключиться по Wi-Fi и получить доступ ко всем файлам жертвы.
Заражая машину по Wi-Fi, OneHalf уже не заботился о шифровании — он сразу считывал AUTOEXEC.BAT, смотрел весь список исполняемых файлов, которые уже были запущены, и сразу заражал их. После этого он отключался и возвращался назад в прошлое — в 1994 год, когда не существовало ни одной из этих технологий. Поэтому никто не знал, что компьютер теперь заразный.
Вообще-то легендарный Doom-II вышел лишь в сентябре 1994 года (через несколько месяцев после эпидемии OneHalf — компьютерного COVID-19), а стандарт BLE был опубликован только в 2006-м. Так что эта часть статьи — всего лишь шутка; -)