Привет, Хабр! На связи команда UserGate uFactor, и мы продолжаем делиться нашими исследованиям: в этой статье проанализируем вредоносный файл, упакованный при помощи установщика Nullsoft Scriptable Install System.

Nullsoft Scriptable Install System (NSIS) — система создания установочных программ для Microsoft Windows с открытым исходным кодом, разработанная компанией Nullsoft (создателем плеера Winamp). NSIS была задумана как альтернатива InstallShield, предназначенного для коммерческих продуктов. Как и язык AutoIt, о котором мы рассказывали в одном из предыдущих материалов, NSIS также используется злоумышленниками для проведения кибератак.

Определить, что ВПО собрано при помощи NSIS, можно, например, используя Detect It Easy.

Рисунок 1. Получение информации о файле при помощи Detect It Easy
Рисунок 1. Получение информации о файле при помощи Detect It Easy

Для извлечения содержимого из установочного файла можно воспользоваться архиватором 7-Zip.

Рисунок 2. Просмотр содержимого инсталлятора NSIS при помощи 7-Zip
Рисунок 2. Просмотр содержимого инсталлятора NSIS при помощи 7-Zip

Извлечем все файлы, поместим их в директорию и проанализируем.

Рисунок 3. Инсталлятор и извлеченные из него файлы
Рисунок 3. Инсталлятор и извлеченные из него файлы

После просмотра содержимого файлов стоит обратить внимание на файл Basted.Non.

Рисунок 4. Фрагмент содержимого файла Basted.Non, отображаемый в hex-редакторе
Рисунок 4. Фрагмент содержимого файла Basted.Non, отображаемый в hex-редакторе

Откроем файл в Notepad++ и изучим внимательнее.

Рисунок 5. Фрагменты содержимого файла Basted.Non, открытые в текстовом редакторе (1)
Рисунок 5. Фрагменты содержимого файла Basted.Non, открытые в текстовом редакторе (1)
Рисунок 6. Фрагменты содержимого файла Basted.Non, открытые в текстовом редакторе (2)
Рисунок 6. Фрагменты содержимого файла Basted.Non, открытые в текстовом редакторе (2)

В коде, представленном на рисунках 5 и 6, есть переменные Colloque и Hexonic, содержащие кажущиеся бессмысленными текстовые сообщения (выделены красным), а также функция Logjam (выделена зеленым), которая начиная с седьмого символа этого текста начинает формировать строку с шагом восемь символов. Также в код добавлены «мусорные инструкции».

Для деобфускации сохраним основной массив текста (переменную Colloque) в файл и воспроизведем сценарий (см. рис. 7). Дополнительно стоит отметить, что переменная Hexonic преобразуется в IEX.

Рисунок 7. Основной фрагмент кода для деобфускации
Рисунок 7. Основной фрагмент кода для деобфускации

После запуска сценария получаем деобфусцированный код.

Рисунок 8. Вывод деобфусцированного кода
Рисунок 8. Вывод деобфусцированного кода

После преобразования кода в читаемый вид (рис. 9) следует обратить внимание на то, что значения некоторых переменных представлены в виде шестнадцатеричных строк. Также есть строка (выделена зеленым), которая преобразуется через функцию Logjam (выделена красным), уже упомянутую ранее. Если применить к ней деобфускацию, получится следующий результат: $Anfordring -bxor $danabluen.

XOR-ключом является 189 dec (bd — в hex-формате), он выделен желтым цветом. Функция Counteraggressions, предназначенная для XOR-операций, выделена синим. Функция Bitterish отвечает за конвертацию строк в виде hex-значений в байты.

Рисунок 9. Фрагмент деобфусцированной переменной и ее преобразование в читаемый вид
Рисунок 9. Фрагмент деобфусцированной переменной и ее преобразование в читаемый вид

Дополним сценарий алгоритмом преобразования и расшифровки строк.

Рисунок 10. Фрагмент кода для деобфускации и расшифровки строк
Рисунок 10. Фрагмент кода для деобфускации и расшифровки строк
Рисунок 11. Вывод с расшифрованными строками
Рисунок 11. Вывод с расшифрованными строками

Преобразуем вывод в читаемый вид.

Рисунок 12. Фрагмент кода с расшифрованными строками в читаемом виде
Рисунок 12. Фрагмент кода с расшифрованными строками в читаемом виде

На рисунке 13 — основной алгоритм вредоносного сценария. Отдельно отметим, что, так как второй регион памяти (переменная Kriminalbetjent) изначально имеет атрибут PAGE_READWRITE, то исполняться будет шеллкод из региона Minerne. Фрагменты данных, которыми заполняются регионы памяти, представлены на рисунках 14 и 15.

Шеллкод заполнен «мусорными инструкциями» и антиотладочными приемами, и исследовать его довольно-таки проблематично. Дерево процессов, а также сетевая коммуникация при динамическом анализе продемонстрированы на рисунке 16. Нагрузка, которую пытается скачать шеллкод, на данный момент недоступна.

Стоит отметить, что байты, ранее записанные в регион памяти Kriminalbetjent, также присутствуют в одном из регионов памяти процесса msiexec.exe (см. рис. 16), но страница уже имеет атрибут PAGE_EXECUTE_READWRITE.

Рисунок 13. Основной алгоритм кода, преобразованный в читаемый вид
Рисунок 13. Основной алгоритм кода, преобразованный в читаемый вид
Рисунок 14. Фрагмент нагрузки для Minerne
Рисунок 14. Фрагмент нагрузки для Minerne
Рисунок 15. Фрагмент нагрузки для Kriminalbetjent
Рисунок 15. Фрагмент нагрузки для Kriminalbetjent
Рисунок 16. Дерево процессов, а также сетевая коммуникация при динамическом анализе
Рисунок 16. Дерево процессов, а также сетевая коммуникация при динамическом анализе

Заключение

 Наше исследование началось с подозрительного файла. С помощью утилиты Detect It Easy мы определили, что это инсталлятор NSIS. Содержимое инсталлятора извлекли с помощью 7-Zip. Один из извлеченных файлов содержал многоуровневую обфускацию, после его анализа мы установили, что ВПО относится к семейству GuLoader. Модуль, загружаемый из интернета, на момент исследования был недоступен.

 Как и в случае вредоноса, написанного на языке AutoIt, для доставки ВПО GuLoader на атакуемую систему используется легитимный инсталлятор, позволяющий упаковать файл. Внутри основного вредоносного файла — всe по классике: XOR-шифрование и «мусорный» код, затрудняющий анализ. Как и в предыдущих материалах, мы смогли частично восстановить техники злоумышленников, а также получить дополнительные индикаторы, проведя ручной анализ, и не дали заражению распространиться.

IoC

# Download Payload

http://energigroup[.]hu/nNifdlrg32.bin

# filepath

%APPDATA%\Local\Temp\Liste\Chambrays28\Folkevognsrugbrdene\Basted.Non

Basted.Non

8c216f66e8374e616d44d14c9c875497

ed495bc4ddbd10ec45e22ba94bdb4b4c82b6acaf

9ea81c8c46e2a8999e75c17e5e27887915638672b01946e4fb3fb7166934fb97

 

----------------------------------

 

# filepath

%APPDATA%\Local\Temp\Liste\Chambrays28\Folkevognsrugbrdene\Chelicerate.Tur

Chelicerate.Tur

 

de7d9362c8b4bb9162093ac7d0a432dc

719babc0986b013d8b1349bd56c9ad697fcec16b

389095f9cf77f78a7831021b84a312ce2b85637a9ac2ad8b922d11cee7e98fb6

 

----------------------------------

sample.exe

 

2a3b0c09fb6332a4c35439c0741a3c61

1de70829cc27202b8b64235fb19829d32ac72ee1

67e5c1745d2c3382e6f20e2d7cd876acb687f7859aae4cd2b6b9fae6ca5a441e

Комментарии (1)


  1. vilgeforce
    25.08.2025 12:39

    DetectItEasy не нужен, там в файле русским по белому написано "nsis.sf.net" что должно намекать