Pull to refresh

Легенды вирусостроения: В тисках шифратора

Reading time 5 min
Views 8.5K
cyfers
Лето 1994 года запомнилось многим. Чем оно запомнилось? Ответ не сложен, хотя прошло больше 15 лет, эти три строки у некоторых из читателей могут вызвать неприятные ощущения «под ложечкой»:

Dis is one half.
Press any key to continue…

Did you leave the room?


Если вам не довелось видеть этого в живую, то позвольте описать ощущения, возникающие у лицезреющих эти строки: недоумение (примерно 1 минуту), банальный страх (~2 минуты), лихорадочный поток мыслей (что это? что делать? — в среднем 5-10 минут), гнев (что за х…?) и снова лихорадочный поток мыслей и действий (где же эта гребаная дискета с Web’ом?), вот примерно те пограничные эмоциональные ощущения, которые чувствовали владельцы зараженных машин.

Если вы еще не догадались, то речь идет о вирусе, который большинство помнят как — OneHalf, хотя он также известен и под другими именами — Slovak Bomber, Explosion-II, Freelove.

Впервые вирус был обнаружен в мае 1994 года в США и Европе, но было уже поздно и вирус уже широко распространился по всему миру. Распространялся OneHalf в основном через съемные носители (тогда это были в основном дискеты). Он является чрезвычайно примечательным по своим свойствам даже сейчас, а в то время это было новое слово в ремесле вирмастеров, если можно так выразиться конечно.

Во-первых, OneHalf — полиморф (не первый и далеко последний, но современные вирусы без полиморфизма просто не выживают, для несведущих полиморфным считается такой вирус, каждая новая копия которого может ни в одном байте не совпадать с предыдущей), во-вторых, вирус был файлово-загрузочным (заражал MBR и boot-сектора дискет, а также COM и EXE файлы), в-третьих, тело вируса было зашифровано, в-четвертых, до создания нормальных средств противодействия, OneHalf гарантировано разрушал данные, ну и пожалуй последнее, стелс-функциональность, встроенная в вирус, позволяла оставаться ему невидимым для системы.

А теперь разберем некоторые детали



Зашифрованное тело вируса длиной 3544 байта в зараженном файле находится после конца файла, при этом зараженный файл содержит в себе 10 «пятен»-фрагментов кода расшифровщика и таблицу размещения «пятен», размещающуюся вначале файла и содержащую также информацию о смещении начала тела вируса от начала файла.

Зараженный файл (приращение длины 3544 байт):
  • Таблица размещения «пятен» кода расшифровщика
  • «Пятна», в которых содержится расшифровщик тела вируса
  • Тело зараженного файла
  • Зашифрованное тело вируса


Механизм заражения файлов



Эпидемия передавалась дискетно-ручным способом. При обращении зараженной системы к дискете для записи OneHalf перехватывал его и проверял размер, имя (не трогал файлы с именами SCAN, CLEAN, FINDVIRU, GUARD, NOD, VSAFE, MSAV, CHKDSK, AIDS, ADINF, WEB) и зараженность файла. Если размер, имя не соответствовали алгоритму или файл уже был заражен, то заражение не производилось. Если же файл был чист и соответствовал требованиям вируса, то производилось его заражение.

В файле создавались 10 пустых мест («пятен») для записи расшифровщика, при этом вирь создавал их в случайном порядке, при единственном условии — не менее 10 байт между ближайшими «пятнами». Маршрутная таблица размещения «пятен» кода расшифровщика размещалась в начале файла, в ней также хранился случайный ключ с помощью которого зашифровывалось тело вируса, которое находилось в конце заражаемого файла. В случае если по каким-то причинам запись не удавалась «пятна» уничтожались и файл оставался чистым, иначе зараженный файл записывался на дискету, ожидая свою следующую жертву.

Механизм заражения компьютера



При пользовании зараженной дискетой (загрузки с нее или запуске зараженного файла), вирус при помощи собственного обработчика прерывания Int12h оценивал размеры свободной оперативной памяти и наличие в ней своей копии — прерывание Int21h.

Если вируса в памяти не было и ее больше 4 [кБ], он искал признаки заражения MBR, если таковых не находилось он заражал MBR. Для этого он на место оригинального MBR записывал свой обработчик загрузки тела вируса, затем записывал 7 секторов кода своего тела в 7 секторов от конца нулевой дорожки диска в скрытых секторах, а после всего этого оригинальный MBR в восьмой сектор от конца нулевой дорожки диска. После записи своего тела на диск или при обнаружении уже зараженного MBR, OneHalf проверял память и при отсутствии своей копии переписывал ее с диска в память.

После того, как вирус оказывался загружен в оперативу, руль системы был у него в руках. Дальше злодей считывал из MBR нижнюю границу зашифрованной дорожки и если она не дошла до 7 дорожки от начала, то вирь шифровал две дорожки вверх от нижней границы уже зашифрованных, при этом использовался случайный ключ, содержащийся в MBR. Если шифрование прошло удачно, в MBR записывалось новое значение нижней границы зашифрованных дорожек. (для работы он использовал свои обработчики прерываний Int01h, Int12h, Int1Ch, Int13h, Int21h, Int24h). Если же нижняя граница дошла до 7 дорожки, шифрование не производилось во избежание повреждения системных областей диска.

Затем OneHalf анализировал три параметра: зашифрованость половины диска, кратность системной даты четырем и четность счетчика заражений (содержался в теле самого вируса); при положительной проверке на дисплей выводилось сообщение:

Dis is one half.
Press any key to continue…


а зловред ожидал нажатия той самой клавиши «Any».

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

При работе пользователь ничего не замечал, поскольку OneHalf, сидящий в памяти перехватывал обращения к уже зашифрованным дорожкам и расшифровывал их на лету без всяких тормозов, скрывал уменьшение размера оперативки и приращение длины зараженных файлов для всех программ кроме CHKDSK и Norton Commander, но это ничего не давало, поскольку при попытке трассировки вируса в памяти он 100%-но вешал систему циклом без выхода с помощью своего обработчика прерываний Int01h.

В зависимости от модификации OneHalf варьировались размеры приращений зараженных файлов, 3544, 3577 или 3518 байта, — в связи с чем в антивирусных базах версии так и назывались OneHalf.3544, OneHalf.3577 и OneHalf.3518.

Также в разных версиях OneHalf при зашифровке половины диска на дисплей выдавались разные сообщения:

Dis is one half.
Press any key to continue …

Dis is TWO HALF.
Fucks any key to Goping…

HET — фu3uke u ucTopuu B pacnucaHuu uy7!

Disk is Tpu half.
(Bepx, Hu3 u Pe6po)

Dis is 3 HALF !.
Fucks any key to LoHing…

A cup of Beer ?.
See you later…


Борьба



Почему произошла эта эпидемия? Мне думается, что дело было так. Вирус появился на свет где-то зимой 1994 года, ближе к весне произошло массовое распространение, продолжавшееся еще несколько месяцев незаметно для пользователей и разработчиков антивирусов. Первые известия о роковых строках на экранах дисплеев появились только в мае-июне, так как для полной шифровки винчестера емкостью 0.5 [ГБ], необходимо было перезагрузить компьютер около 500 раз, что при нормальной эксплуатации ПК занимало несколько месяцев. Поэтому OneHalf и был упущен, а эпидемия разошлась, чуть не став пандемией.

Что немаловажно, так это то, что для избавления от вируса недостаточно было простой перезаписи MBR, которая привела бы только к утере ключа к шифрованным данным, а вследствие этого и к потере данных. Для гарантированного избавления необходима была тонкая работа антивирусных утилит, как по обезвреживанию, так и по расшифровке данных.

Распространение вируса и его модификаций происходило еще несколько лет, но не такими взрывными темпами, даже сейчас он еще бродит по старым дискетам и раритетным компам.
OneHalf

P.S.



Какие я могу здесь подвести итоги? В общем не так уж и давно я осознал тот факт, что в школе и в универе нам не зря ставили «жбаны» (двойки :) если палили, что мы не проверяли только что вставленные в привод дискеты на вирусы, ох не зря…

→ OneHalf на сайте f-secure
→ OneHalf на securelist
→ OneHalf на viruslist
→ О OneHalf на страницах «Компьютер-информ»
Эссе Евгения Касперского о вирусе OneHalf [ENG]
Tags:
Hubs:
+109
Comments 63
Comments Comments 63

Articles