Skip to main content

Почему злоумышленики выбирают Visual Basic?

В рубрике
5 votes

Копаясь недавно в коллекции вредоносов, которые недавно поступили в нашу лаборатория, я обнаружил необычно большое количество вредоносных самплов, написаных на Visual Basic. Я решил разобраться, в чем дело и действительно ли имел место рост.

Для начала я просмотрел статистику детектирования от нашей внутренней системы автоматизированного анализа. Мои предположения подтвердились (рост с 3% в Сентябре до 7% в Октябре):

Stats 1

Допуская, что система могла допустить неточность при детектировании (во что мне не очень верится:) ), я собрал статистику с Virustotal о детектировании нашей 2-ух месячной выборки наиболее популярными антивирусными продуктами. И снова та же картина (по дженерику Avast рост c 6% в Сентябре до 8% в Октябре):

Stats 2

Уточню, что в выборке были только валидные PE (Portable Executable) EXE и DLL файлы из коллекции. Всего в тестовой выборке присутствовало 183 430 самплов, обработанных нашей системой динамического анализа.
Семейства, которые вошли в статистику были следующие:

Avast: Win32:VB
Vipre: Worm.Win32.Vobfus
Microsoft: Worm:Win32/Vobfus, TrojanDownloader:Win32/Beebone, VirTool:Win32/VBInject
Ikarus/Emsisoft: Trojan.VB, Trojan.Win32.Vobfus
Trend Micro: WORM_VOBFUS
DrWeb: Trojan.VbCrypt
Kaspersky: Trojan.Win32.Jorik.VBNA

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

Если наша гипотеза верна, тогда возникает закономерный вопрос – что делает VB таким привлекательным среди злоумышленников. Попробуем разобраться.
Для примера возьмем сампл Trojan.Win32.Diacam (Trojan.Win32.VB.qms).

Открываем файл в дизассемблере IDA:

Ida

Видим набор непонятных названий переменных и функций, которые никак не проливают свет на вредоносную активность троянца.

Оказывается, при компиляции MSVB компилятор создает некоторую оболочку, через которую обменивается запросами с API операционной системы. При этом для вызова практически всех системных функций используется вызов DllFunctionCall. Кроме того, точка вход (Entry Point) всех Native VB приложений состоит из вызова ThunRTMain, которому передается указатель на структуру данных, необходимых для запуска приложения.

Entry Point

Настоящий же код начинается с последовательности «0xE9E9E9E9», однако дизассемблер не захотел преобразовывать данные в код:

Code section

Более подходящим способом анализа VB самплов является VBDecompiler. Однако, максимальная польза будет только от декомпиляции P-Code VB (специальный байт-код для VB интерпретатора), а не более популярного Native VB.

VB Decompiler

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

Crypted Strings

При запуске в «песочнице» мы можем получить извлеченный файл и проанализировать его.

Dump

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

Strings

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

В заключение, отметим что, зачастую злоумышленники используют дополнительные средства запутывания кода и шифрования данных, как, например, в рассмотренном выше примере. Однако и сама VB платформа является крайне «неприятной» для анализа как вирусным аналитиком, так и автоматизированной системой. Поэтому среди VB детектов мы обнаруживаем в основном дженерики на шифрованный/обфусцированный VB код.

А вы программировали когда-нибудь на Visual Basic? Легко ли писать код? Что с производительностью?

Аватар пользователя Kotsyuba

Саша, интересный материал. Спасибо Smile Подтвердило мои мысли насчет того, что языки подобного рода, несмотря на свою простоту позволяют злоумышленникам не редко обходить сложные технологии детектирования, как это было около года назад с семействами Trojan-Ransom/Winlock и прочими, vkhost ит.д.

Аватар пользователя Volkova Natalia

Спасибо большое, за такой интересный и очень поучительный материал! =)

Аватар пользователя Шевченко Станислав

Саш, большое спасибо за подробный материал. Информация очень интересная, тем, что обычно VB не рассматривается как что-то серьезное, когда говорят о программировании - твоя информация, еще раз подтверждает факт, что программировать можно на любом языке, и что не важен выбор среды разработки - важен сам результат. Конечно же результат работы злоумышленников - это злые дела, но даже на этих примерах мы можем исследовать такую сложную область как языки программирования и их использование в сфере компьютерной безопасности
Спасибо и ждем следующих твоих исследований

Аватар пользователя Александр Адамов

Спасибо за коменты, друзья! Smile Для себя понял, что исследования могут захватывать тебя с головой. И пока не найдешь ответ на интересующий вопрос - не можешь спокойно спать по ночам Smile

Аватар пользователя Николай

Это точно! Такое бывает. Smile

Аватар пользователя Шевченко Станислав

Саш, да любая идея, которая тебя увлекает - это здорово. Конечно если она мешает сну - это не очень хорошо сказывается на здоровье Smile
Однако, сейчас почему то мало слышно о самих идеях, которые кого-то увлекают. Хотя если оглянуться по сторонам информации для идей и исследований больше чем достаточно. Вот такой парадокс идей много, а увлеченных идеями - мало.