
Привет, Хабр! На связи команда UserGate uFactor, и мы продолжаем делиться нашими исследованиям: в этой статье проанализируем вредоносный файл, упакованный при помощи установщика Nullsoft Scriptable Install System.
Nullsoft Scriptable Install System (NSIS) — система создания установочных программ для Microsoft Windows с открытым исходным кодом, разработанная компанией Nullsoft (создателем плеера Winamp). NSIS была задумана как альтернатива InstallShield, предназначенного для коммерческих продуктов. Как и язык AutoIt, о котором мы рассказывали в одном из предыдущих материалов, NSIS также используется злоумышленниками для проведения кибератак.
Определить, что ВПО собрано при помощи NSIS, можно, например, используя Detect It Easy.

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

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

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

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


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

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

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

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


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

На рисунке 13 — основной алгоритм вредоносного сценария. Отдельно отметим, что, так как второй регион памяти (переменная Kriminalbetjent) изначально имеет атрибут PAGE_READWRITE, то исполняться будет шеллкод из региона Minerne. Фрагменты данных, которыми заполняются регионы памяти, представлены на рисунках 14 и 15.
Шеллкод заполнен «мусорными инструкциями» и антиотладочными приемами, и исследовать его довольно-таки проблематично. Дерево процессов, а также сетевая коммуникация при динамическом анализе продемонстрированы на рисунке 16. Нагрузка, которую пытается скачать шеллкод, на данный момент недоступна.
Стоит отметить, что байты, ранее записанные в регион памяти Kriminalbetjent, также присутствуют в одном из регионов памяти процесса msiexec.exe (см. рис. 16), но страница уже имеет атрибут PAGE_EXECUTE_READWRITE.




Заключение
Наше исследование началось с подозрительного файла. С помощью утилиты 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
vilgeforce
DetectItEasy не нужен, там в файле русским по белому написано "nsis.sf.net" что должно намекать