Рубріки: Новини

Зловмисне ПЗ важче виявити, якщо воно написано застарілими мовами, такими як Delphi та Haskell

Дмитро Сімагін

Розробники зловмисного програмного забезпечення, які прагнуть уникнути його виявлення, активно використовують менш популярні мови програмування, такі як Delphi або Haskell. Про це стверджується в публікації науковців з Університету Пірея (Греція) та Делфтського технологічного університету (Нідерланди), пише The Register.

Зловмисного програмного забезпечення дуже багато: лише в перші місяці 2025 року з’явилося майже 26 мільйонів нових екземплярів шкідливого коду. І одним із основних способів виявлення хакерських програм є статичний аналіз.

Автори зловмисного програмного забезпечення знають про це, і багато з них докладають зусиль, щоб заплутати свій код або застосувати методи захисту від пісочниці чи налагодження. Один зі способів зробити це — використання мови програмування, яка не широко використовується для розробки шкідливого програмного забезпечення, яке зазвичай пишеться на C або C++.

«Хакери все частіше включають у свій арсенал нетипові мови програмування, щоб ускладнити зворотне проектування та виявлення», — зауважують автори дослідження.

«Наприклад, хакерська група APT29 нещодавно використала Python у своєму зловмисному програмному забезпеченні Masepie проти України, а в зловмисному софті Zebrocy вони використовували суміш Delphi, Python, C# і Go. Так само програмне забезпечення-вимагач Akira перейшло з C++ на Rust, програмне забезпечення-вимагач BlackByte перейшло з C# на Go, а Hive було перенесено на Rust».

Певною мірою це просто варіація безпеки через фактор невідомості — коли менше людей знайомі з певною мовою, можна очікувати менше ручного виявлення, а автоматизовані інструменти матимуть менше зразків.

Автоматичні механізми виявлення на основі сигнатур виявленого зловмисного програмного забезпечення не працюватимуть, якщо зловмисне програмне забезпечення було переписано іншою мовою. Дослідники відзначають, що в деяких мовах, таких як Haskell і Lisp, використовується модель виконання, яка відрізняється від шкідливих програм, розроблених на C. Інші, такі як Dart і Go, можуть додавати велику кількість функцій до виконуваного файлу як частину свого стандартного середовища, ускладнюючи навіть прості програми.

Щоб краще зрозуміти, чому певні мови краще протистоять аналізу, ніж інші, автори дослідили набір із майже 400 000 виконуваних файлів Windows від Malware Bazaar.

Вони виявили не лише те, що використовувана мова програмування впливає на швидкість виявлення зловмисного програмного забезпечення, але й те, що вибір компілятора має значення. «Хоча можна було б очікувати, що менш використовувані мови програмування, наприклад Rust і Nim, матимуть гірший рівень виявлення, оскільки розрідженість зразків не дозволить створити надійні правила, використання компіляторів, які не використовуються широко, наприклад Pelles C, Embarcadero Delphi та Tiny C, має більш значний вплив на рівень виявлення», — заявляють вони.

Переглянувши більш обмежений набір даних, зосереджених на APT (передові постійні загрози), вчені стверджують, що з часом автори APT урізноманітнили свій вибір мов програмування та компіляторів.

Один із способів вивчення відмінностей зловмисного програмного забезпечення між мовами програмування включав оцінку того, наскільки двійкові файли протистоять зіставленню шаблонів шелл-коду — процесу пошуку шкідливих наборів інструкцій.

Результати показали значні відмінності між мовами та підкреслили, чому зловмисне програмне забезпечення легше знайти більш поширеними мовами. 

«Зразки, написані на таких мовах, як C і C++, як правило, зберігали всі байти коду оболонки в послідовному порядку або мали фіксований проміжок між байтами, що призводило до відносно прямого виявлення. Однак інші мови продемонстрували значну фрагментацію байтів і варіації в схемі пам’яті, що ускладнювало статичне виявлення», — пишуть автори дослідження.

Вони згадують Rust, Phix, Lisp і Haskell як мови, які розподіляють байти коду оболонки нерегулярно або неочевидними способами.

Існують й інші причини, через які менш популярні мови можуть ускладнювати ідентифікацію зловмисного програмного забезпечення, наприклад, складність виконуваних функцій, кількість виконаних непрямих викликів і переходів, а також кількість створених потоків.

«Зловмисне програмне забезпечення переважно пишеться на C/C++ і компілюється за допомогою компілятора Microsoft», — підсумовують автори. «Однак… наша робота практично показує, що, перемістивши кодову базу на іншу, менш використовувану мову програмування або компілятор, автори зловмисного програмного забезпечення можуть значно знизити рівень виявлення своїх двійкових файлів».

Останні статті

Більше 8 млрд грн податків. Стільки сплатили резиденти Дія.City в І кварталі 2025 року

Резиденти Дія.City сплатили до бюджету понад 8 млрд грн податків в І кварталі 2025 року.…

18.04.2025

Китайських офісних працівників закликають менше працювати. Це має допомогти місцевій економіці

У Китаї закликають офісних працівників не працювати надто багато — держава сподівається, що вільний час…

18.04.2025

ChatGPT значно покращив пошук місць по фото. Це посилює проблеми конфіденційності

Експерти звертають увагу на тривожну тенденцію: люди все частіше використовують ChatGPT, щоб визначити місцезнаходження, зображене…

18.04.2025

Середовище розробки IntelliJ IDEA оновлено до версії 2025.1

Компанія JetBrains випустила нову версію мультимовного середовища розробки IntelliJ IDEA 2025.1. Оновлена IDE отримала численні…

18.04.2025

Discord впроваджує функцію сканування обличчя для перевірки віку користувачів

Платформа обміну миттєвими повідомленнями Discord впроваджує функцію перевірки віку за допомогою сканування обличчя. Зараз вона…

18.04.2025

Wikipedia випустила спеціальний датасет, щоб відволікти увагу ботів

Wikipedia намагається захистити себе від тисяч різноманітних ботів-скрейперів, які сканують дані цієї платформи для навчання…

18.04.2025