Зловреды выбирают Lisp и Delphi
dl // 30.03.25 23:26
Исследователи из Пирейского унверситета, Афинского исследовательского центра и Делфтского технического университета на днях опубликовали любопытный препринт «Coding Malware in Fancy Programming Languages for Fun and Profit».
Как отмечается в исследовании, в текущей ситуации с обвальным появлением нового вредоносного кода (26 миллионов образцов только за начало 2025 года) одним из основных способов его идентификации остается статический анализ.
[Не забывайте при копировании материала указывать полный адрес источника: //bugtraq.ru/rsn/archive/2025/03/01.html]
Естественно, авторы зловредов это прекрасно знают и стараются по возможности применять всевозможные техники обфускации. И внезапно проще всего оказывается использовать не такой популярный язык, как традиционные C/C++. Так, недавний противоукраинский зловред от APT29 Masepie (видимо, Мазепа) был написан на Питоне, их же Zebrocy использует смесь Delphi, Python, C# и Go, Akira переехал с С++ на Rust, BlackByte с C# на Go и т.п.
С одной стороны, здесь есть признаки наивного security through obscurity — чем меньше людей знают язык, тем сложней ожидать ручного распознавания, и тем меньше образцов будет для автоматического. С другой стороны, основанные на распознавании сигнатур алгоритмы могут просто перестать работать на других языках. Haskell и Lisp, например, используют принципиально отличающуюся от C модель исполнения кода. Dart и Go добавляют в исполняемые файлы множество функций из стандартных библиотек, усложняя даже элементарные программы.
Еще более важным фактором, чем редкость языка, оказалась (не)популярность компилятора — так, гораздо хуже распознавались образцы, скомпилированные такой экзотикой, как Pelles C, Tiny C и Embarcadero Delphi (sic transit gloria mundi).
И хуже всего дело оказалось с языками, которые сами усложняют жизнь анализаторов, размазывая по исполняемому файлу строки с шелл-кодом непредсказуемым образом. Больше всего тут отличились Rust, Phix, Lisp и Haskell.