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