XWorm: технический анализ

akok

Команда форума
Администратор
Ассоциация VN
Сообщения
24,720
Реакции
13,565

Что такое вредоносное ПО XWorm?​

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

К сожалению, злоумышленники широко используют эту угрозу — нередко можно увидеть ее в десятке наиболее часто используемых вредоносных программ по версии ANY.RUN .


Динамический анализ песочницы XWorm​

В ходе поиска новых угроз мы обнаружили интересный образец , загруженный нашими пользователями в Публичные материалы. Скачал с файлообменника «Mediafire» в RAR-архиве с паролем:

image-1024x576.jpg
После запуска угроза была идентифицирована сетевыми правилами Suricata как XWorm:

image-5-1024x116.png
Мы решили проверить образец на VT, чтобы убедиться, что это действительно XWorm, но на момент написания статьи нам не удалось его там найти:

MicrosoftTeams-image-75-300x252.png
Первичный анализ по индикаторам, установленным на процессе 2784, выявил, что ПО добавляет в автозагрузку свой ярлык ( MITRE T1547.001 ) и использует планировщик задач ( MITRE T1053.005 ):

image-4.png
Использование планировщика необходимо для перезапуска программного обеспечения с повышенными привилегиями, на что указывает параметр «/RL HIGHEST».

MicrosoftTeams-image-76-1024x157.png
Согласно данным файловой операции, программное обеспечение устанавливается в каталог Public ( MITRE T1074.001 ):

image-7.png
Интересно, что программа пытается подключиться к удаленному серверу, но ответа не получает ( MITRE T1571 ):

MicrosoftTeams-image-77-1024x113.png
Мы решили перезапустить образец и проверить наличие дополнительных действий. К сожалению, он вылетел практически сразу после запуска:

image-8.png
Мы заинтересовались выяснением причины «сбоя» и обнаружили, что образец, запущенный пользователем, и образец, перезапущенный нами, демонстрируют разные модели поведения. В частности, перезапущенный образец запрашивает службу для определения внешнего IP-адреса ( MITRE T1590.005 ) перед сбоем. Обычно помимо IP-адреса такие сервисы предоставляют возможность определить, работает ли программное обеспечение на виртуальном хосте:

image-9-1024x146.png
Именно это и делает XWorm — он пытается проверить, запущен ли он на физической машине пользователя или нет.

Чтобы решить эту проблему, в ANY.RUN есть полезная функция под названием Residential Proxy , которая позволяет скрыть ваше фактическое местоположение и убедить программное обеспечение в том, что оно работает на компьютере реального пользователя. Вы можете выбрать любое местоположение, если оно нацелено на вредоносное ПО, требующее IP-адреса из определенных стран:

image-10.png
Перезапуск с включенной опцией Residential Proxy прошел успешно, и XWorm продемонстрировал свою активность.


Дополнительно мы активировали опцию прокси-сервера MITM, чтобы узнать, какие данные передаются в Telegram ( MITRE T1102 ):

image-11-1024x511.png
Очевидно, что программное обеспечение передает свою версию (XWorm V3.1), имя пользователя машины, версию операционной системы и, вероятно, хэш новой жертвы ( MITRE T1082 ).

Статический анализ X-червей​

Первый шаг — поместить нашего субъекта в DIE — утилиту для первоначального анализа.

image-12.png
Как мы видим, мы имеем дело с .NET-вариантом, поэтому сразу открыли его в dnSpy.

image-13.png
Нас сразу встречает неутешительная картина — обфускации подверглись все участники программы ( MITRE T1027 ). Компания DIE не смогла распознать пакер даже при проверке «эвристического сканирования».

Нашей первой мыслью было попробовать использовать de4dot для упрощения дальнейшего анализа.

image-14.png

image-15.png
Как видим, мало что изменилось, поэтому надо продолжать анализировать то, что имеем.

Реверс-инжиниринг: дополнительные методы защиты от уклонения и усиление устойчивости​

Чтобы замедлить анализ и скрыться от систем обнаружения, в образце используются следующие технологии:

1. Обнаружение виртуализации с помощью WMI-запроса «Select * from Win32_ComputerSystem» и проверка на работу в средах VmWare или VirtualBox ( MITRE T1047 )

image-16-1024x319.png


2. Обнаружение отладчика с помощью функции API CheckRemoteDebuggerPresent.

image-17-1024x243.png


3. Проверка загруженной динамической библиотеки SbieDll.dll, характерной для Sandboxie, которая представляет собой изолирующую программу на основе песочницы.

image-18.png


4. Запрос на проверку того, размещена ли текущая машина или находится в дата-центре (это окончательно проясняет, почему образец изначально «разбился»)

image-19.png


Образец также закрепляется за счет использования реестра и планировщика задач:

image-20-1024x537.png

Реверс-инжиниринг: извлечение конфигурации Xworm​

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

1693328564284.png

Изучив перекрестные ссылки, мы приходим к методу, который выглядит следующим образом:

1693328545117.png

Как мы видим, некоторые поля проходят этап переназначения, после обработки методом «Vc1fSJ4D04O6qGeP2fzA5lFCv8a7buXvJb4sHwuhuifI09pX». Давайте посмотрим на это поближе.

1693328525234.png

Сначала хэш MD5 вычисляется на основе значения поля «hArf0quX6jL4F88ywQTiLn52eBzsJ6HreaOqb0WGSa89u» из предполагаемого раздела настроек.

Затем полученное значение дважды копируется во временный массив (возможно, разработчик вредоносной программы допустил ошибку отклонения на единицу при использовании метода Array.Copy, в результате чего MD5 не копируется полностью дважды; последний скопированный байт после первого копирования перезаписывается при последующем копировании, так что последний байт результирующего массива всегда равен нулю). Полученный массив используется как ключ для расшифровки входящих строк base64 с использованием AES в режиме ECB.

Также интересно, что используемое поле также является мьютексом.

1693328511988.png

Теперь у нас есть вся необходимая информация для расшифровки настроек.

1693328492341.png



Наш окончательный ключ AES выглядит так: «01d31d5e811fce422987107f962c4001d31d5e811fce422987107f962c406600».

1693328475262.png

И вот мы добрались до ядра выборки нашей цели.

Результат можно посмотреть в CyberChef здесь .

Окончательное сопоставление конфигурации выглядит следующим образом:

Хозяин6[.]tcp.eu.ngrok[.]io
Порт13394
AES-ключРабы!-.;!2Swezy999!(xxx
СплиттерXwormmm
Время сна3
USB-файлUSB.exe
МьютексLz8qftMH08V7f1rq
Файл журнала%temp%\\Log.tmp
токен телеграмма6674821695:AAExQsr6_hmXk6hz7CN4kMSi9cs9y86daYM
Идентификатор чата Telegram5865520781
Если целью является не углубленное изучение вредоносного ПО, а быстрое получение конфигурации, этого можно эффективно достичь, запустив образец в ANY.RUN. Этот метод обеспечивает простой способ доступа к необходимой информации без необходимости тщательного анализа, что потенциально экономит часы работы.

1693328427157.png

Посмотрите это в действии сами здесь .

МОК​

Проанализированные файлы​

MD5F6BB396FD836F66CD9F33CA4B0262DD7
SHA1BFC7036E32A59AC25DB505D263B5F4CADE24C53C
SHA2561073FF4689CB536805D2881988B72853B029040F446AF5CED18D1BC08B2266E1
SS 6144:bfIbSc83qUhcX7elbKTua9bfF/H9d9n+:bLc83q3X3u+G

МИТРА (АРМАТАК)​

ТактикаТехникаОписание
TA0003: НастойчивостьT1547: ключи запуска реестра/папка запускаДобавляет ярлык в папку автозагрузки
TA0003: НастойчивостьT1053: Запланированная задачаИспользует планировщик задач
TA0009: КоллекцияT1074: Промежуточное хранение локальных данныхВредоносная программа сохраняется в папке Public.
TA0011: Командование и контрольT1571: Нестандартный портПодключается к удаленному серверу
TA0043: ПризнаниеT1590: IP-адресаПроверяет IP работающей системы
TA0011: Командование и контрольT1102: Двунаправленная связьОбщается через Telegram
TA0007: ОткрытиеT1082: Обнаружение системной информацииСобирает информацию о компьютере жертвы
TA0005: Уклонение от защитыT1027: Запутывание командЗапутывает исполняемый файл
TA0002: ИсполнениеT1047: Инструментарий управления WindowsСобирает системную информацию для обнаружения виртуализации.
TA0005: Уклонение от защитыT1027: Встроенные полезные нагрузкиСохраняет информацию во мьютексе

DNS-запросы​

  • 6[.]tcp[.]eu[.]ngrok[.]io

Больше образцов для ваших исследований​

https://app.any.run/tasks/d3858744-f1b2-4a9b-8ef7-deccada2a160/
https://app.any.run/tasks/75f66fd6-d989-4f06-a348-c65e135e8ab4/
https://app.any.run/tasks/5fab7db5-267e-46f6-a374-0f42de1cb328/
https://app.any.run/tasks/b9275944-39fe-42cb-9eae-6b2e05f0892f/
https://app.any.run/tasks/803758bf-387b-42e2-80cc-f20e7140cac4/

 
Назад
Сверху Снизу