Sean Brian Townsend про «криптовіруси»

Sean Brian Townsend про «криптовіруси»

«Процес» публікує блог Sean Brian Townsend про «шифровані» комп’ютерні віруси. Текст опубліковано зі згоди автора мовою оригіналу

Люди часто путают корень “крипто” в словах “криптография” и “криптовалюта”. И если между первым и вторым есть определенная связь, то еще занятнее с компьютерными вирусами. Терминология складывалась хаотически, и “шифрованные” вирусы называют полиморфными, а если шифрование навесное, чтобы зловредный код не детектировался антивирусами, то “крипторами”. Первый такой вирус V2P6 появился в 1989 году и с тех пор технология практически не поменялась. Перед основным кодом идет небольшая подпрограмма, как правило случайный ARX-шифр, потому что сложение, циклические сдвиги и исключающее-ИЛИ легко обратимые функции.

Время шло. Обитатели вирусной сцены потихоньку впитывали технологию, но основное времяпровождение вирмейкеров сводилось преимущественно к склокам между собой о том, чей говноморфик на паскале лучше, бесконечным тусовкам в ньюсах и IRC и фантазиям о том, можно ли сделать вирус “фуллморфным”, чтобы менялась не только коротенькая процедура шифрования, но и весь код целиком. И так продолжалось до конца девяностых, пока наконец-то не появился свет в конце туннеля – RegSwap и Lexotan от Vecna, Mistfall за авторством Z0MBiE и Metaphor (Mental Driller). Все из группы #29A Не смотря на относительную простоту, те вирусы на порядок интереснее, чем унылый Стакснет, или еще какой-нибудь всратый BlackEnergy переделанный из краденного говнобота. С точки зрения политической или военной науки они может и представляют интерес, но технологий там – ноль. Скучища.

Развитие очень сильно тормозила общая склонность всех хакеров к байтоёбству. “Настоящие кодеры пользуются только ассемблером” и стремление к минимализму, которое укоренилось в хакерских мозгах еще со времен компьютеров вроде TX-0, PDP-1, и микрокомпьютеров 80-х. То что по-умному называется “преждевременная оптимизация”. Пока наконец-то, уже в нулевых не стало понятно, что для того чтобы изменять отдельные инструкции нужен ассемблер, дизассмеблер и компоновщик, и писать их лучше на Си, чтобы не офигеть в процессе. Потому Mistfall (названный в честь рассказа Джорджа Мартина) мне кажется куда более интересным, чем люто сложный Metaphor. Он разбирает программу-жертву на отдельные инструкции, смешивает с кодом вируса и собирает обратно. Проблема в том, что дизассемблирование – алгоритмически неразрешимая задача. Нельзя написать программу, которая посмотрит на байты и определит, что это? Код или данные? Адрес или константа. Фундаментальное свойство фон Неймановской архитектуры.

Между тем, “недетируемость” сводиться не к тому, чтобы тасовать инструкции как колоду карт, а к тому чтобы автоматически изменять её поведение, наращивая (или хотя бы не теряя) сложность, то есть нужно выяснить что программа делает, а не как выглядит (что тоже алгоритмически неразрешимая задача, и это бьет больше по антивирусам, чем по вирусам). Mental Driller писал о том, что желательно декомпилировать программу до промежуточного представления (IR), я же, по-прежнему, убежден, что нужно подняться ещё выше, как минимум до абстрактных синтаксических деревьев (AST). Декомпиляция действо еще более сложное, чем дизассемблирование, потому что трансляция программы в машинный код – процесс с потерей информации. Жаль, что за последние лет десять, а то и больше, ничего нового в этой области не появлось, и джуны-реверсеры по-прежнему тренируются на Мистфолле. С двухтысячного и по сей день.
Куда-то исчезло в людях ощущение прекрасного. Я как-то сделал мистфолл-подобный код – Lacrimae (потому что “lacrimae rerum”). Антивирусный разработчик, который его анализировал, попытался меня подколоть, дав довольно специфическую трактовку Вергилия. По его мнению Эней в храме размышляет о “тщетности сражений”. Герой троянской войны, предок основателей Рима и тщетность. Никогда не слышал ничего смешнее. Стоит процитировать этот отрывок полнее: “Слезы — в природе вещей, повсюду трогает души смертных удел; не страшись: эта слава спасет нас, быть может. Молвит и душу свою услаждает картиной бесплотной”.

Content Protection by DMCA.com