Вечер добрый, Хабр!
Решил немного изучить свежий сэмпл малваря Loki (31.08), который содержится в Excel документе и используется для фишинговой рассылки. В этой небольшой статье основное внимание уделено практической части поиска, извлечения и небольшого разбора поведения вредоноса. Надеюсь, что данная статья будет полезной с теоретической и практической точек зрения.
Утилиты и скрипты:
file;
msoffcrypto-crack.py;
msoffcrypto-tool;
oletools;
scdbg;
Detect It Easy (diec);
InetSim;
FakeNet;
PoweShell;
strings.
Свежий Анализ malicious Excel document с вредоносным вложением Loki malware (sha256: 4973d12a201434d409e66ebbb6568eb38fbb379181e166a1eca399df1f24682b) от 31.08.2022г. Вложения используются в фишинговых атаках и имеют определенную динамику поступления, за последний месяц (рисунок 1) на сайте https://bazaar.abuse.ch/.
![Рисунок 1 – динамика поступления сэмплов с документами, содержащими LokiBot. Рисунок 1 – динамика поступления сэмплов с документами, содержащими LokiBot.](https://habrastorage.org/getpro/habr/upload_files/842/d39/b97/842d39b97e0f6f79a3451e45e9f6879e.png)
Перед изучением, давайте убедимся, что содержимое файла не было зашифровано.
![Рисунок 2 – проверка шифрования внутри файла. Рисунок 2 – проверка шифрования внутри файла.](https://habrastorage.org/getpro/habr/upload_files/01d/6be/f61/01d6bef618adf65ba287fd9993508c9f.png)
Так как файл зашифрован (Рисунок 2). Нам необходимо найти пароль и расшифровать.
Далеко ходить не будем, поищем пароль в .xlsx файле. После недолгих поисков, мы получаем дешифрованный файл, т.к. пароль был внутри, после запуска файла, данный пароль использовался для дешфировки и выполнения вредоносного кода(рисунок 3).
![Рисунок 3 – поиск пароля внутри и дешифрование файла. Рисунок 3 – поиск пароля внутри и дешифрование файла.](https://habrastorage.org/getpro/habr/upload_files/70c/d81/f93/70cd81f93f9504ad552a2dd5785289c8.png)
Теперь можно начинать анализ файла, воспользуемся утилитами oletools by DidierStevens.
Использование Oleid, не показало наличие вложенных VBA & XLM макросов и ссылок внутри документа.
![Рисунок 4 – Проверка утилитой OleId на наличие вредоносных вложений. Рисунок 4 – Проверка утилитой OleId на наличие вредоносных вложений.](https://habrastorage.org/getpro/habr/upload_files/e9b/452/c9b/e9b452c9b8e963f0dc5dedb84d816af0.png)
Останавливаться не будем, взглянем на вывод oledump.py, он показывает наличие исполняемого файла binary в xlsx. Что ж, давайте экспортируем содержимое A2 в отдельный файл для дальнейшего анализа (Рисунок 5).
![Рисунок 5 – oledump.py, экспорт исполняемого кода. Рисунок 5 – oledump.py, экспорт исполняемого кода.](https://habrastorage.org/getpro/habr/upload_files/92f/6b1/322/92f6b13221fd7636fcb76f3462336981.png)
Итак, давайте запустим утилиту эмулирующую среду для запуска shellcode’а: scdbg. Установим findsc, ReportMode, CreateDump и.т.д (рисунок 6).
![Рисунок 6 – настройка scdbg. Рисунок 6 – настройка scdbg.](https://habrastorage.org/getpro/habr/upload_files/b92/e78/ea0/b92e78ea01401539f82575b60c9a527a.png)
После эмуляции, в scdbg видно функции, которые вызваются (Рисунок 7):
Функция GetProcAddress для получения адреса функции ExpandEnvironmentStringsW для расширения переменной среды.
Вызов этой функции для последующего сохранения по корректному пути вредоносного файла.
Получение адреса функции загрузки файла, с последующим вызовом её и сохранения вредоносного файла Cloud2.exe в %public%regasm_avch.exe.
Исполнение загруженного файла.
![Рисунок 7 – вызываемые вредоносным кодом функции. Рисунок 7 – вызываемые вредоносным кодом функции.](https://habrastorage.org/getpro/habr/upload_files/8d9/b13/ec2/8d9b13ec2126bef1c7598e6fef83c03b.png)
Теперь, когда у нас есть адрес, загрузим файл. После загрузки, проанализируем содержимое. В первую очередь, на наличие пакера/протектора и языка, на котором написан код. Как мы видим на рисунке 8, исполняемый файл написан на C# и защищен при помощи протектора.
![Рисунок 8 – информация об исполняемом файле DIEC. Рисунок 8 – информация об исполняемом файле DIEC.](https://habrastorage.org/getpro/habr/upload_files/f0c/ca7/e9a/f0cca7e9a9338d4b4260ed9f6f334069.png)
Перед анализом снимем протектор с файла (Рисунок 9).
![Рисунок 9 – снятие протектора с исполняемого файла. Рисунок 9 – снятие протектора с исполняемого файла.](https://habrastorage.org/getpro/habr/upload_files/f38/e74/152/f38e74152451aec5511c660f8a37d389.png)
Теперь можно приступать к статическому анализу файла, с использованием dnSpy (бесплатная утилита), IDA Pro или на худой конец пройтись strings, чтобы найти читаемые строки. Также можно посмотреть функции в сэмпле вредоноса. Вредонос взаимодействует со следующими ресурсами (следует из кода исполняемого файла Cloud2.exe.1):
http://can-sat.netai[.]net/livestream/
Загружает файлы:
http://tempuri[.]org/_CAN_SATDataSet.xsd
http://tempuri[.]org/_CAN_SATDataSet1.xsd
http://tempuri[.]org/_CAN_SATDataSet2.xsd
Содержит алгоритм шифрования AES (работает с ключами 128, 192 или 256 бит). И много других интересных функций, полный список можете посмотреть сами.
На этом небольшой статический анализ завершается и начинается динамический=)
Динамический анализ при помощи FakeNet (Рисунок 10 и 11) и InetSim, показывает нам куда обращается вредонос во время запуска:
![Рисунок 10 – динамический анализ FakeNet. Рисунок 10 – динамический анализ FakeNet.](https://habrastorage.org/getpro/habr/upload_files/f17/630/713/f17630713191e02d3f234bdb631b2f1e.png)
![Рисунок 11 – динамический анализ FakeNet. Рисунок 11 – динамический анализ FakeNet.](https://habrastorage.org/getpro/habr/upload_files/577/ed7/a56/577ed7a56554dff748dab00645560ca6.png)
Выше и в TCPViewer мы видим C2 Server 208.67.105[.]162 (месторасположение USA, City: Middleton), с которым взаимодействует вредонос (выше на рисунке 11, до копирования и переименования себя, а на рисунке 12, уже после копирования и переименования с атрибутами h – hidden & s – system, для скрытия).
![Рисунок 12 – TcpView. Рисунок 12 – TcpView.](https://habrastorage.org/getpro/habr/upload_files/964/03b/e4f/96403be4ffcf3338504b5b043009b1e3.png)
Cloud2.exe копирует себя с атрибутами h (hidden) & s (system) в директорию C:\Users\<Username>\AppData\Roaming\585711\127DE7.exe (с другим именем), чтобы визуально его невозможно было найти, даже после включения отображения скрытых файлов(Рисунок 13 и 14). К слову, hash файла также меняется.
![Рисунок 13 – атрибуты директории и вредоносного с вредоносным файлом. Рисунок 13 – атрибуты директории и вредоносного с вредоносным файлом.](https://habrastorage.org/getpro/habr/upload_files/7c0/7d5/b2b/7c07d5b2b78639dd1ecf18bd00442585.png)
![Рисунок 14 – атрибуты вредоносного файла. Рисунок 14 – атрибуты вредоносного файла.](https://habrastorage.org/getpro/habr/upload_files/cc9/13f/9be/cc913f9be41ae89e38ac17936e7c3b2a.png)
Однако мы можем изменить атрибуты, чтобы файл стал нам вновь доступен (Рисунок 15).
![Рисунок 15 – файл после изменения атрибутов. Рисунок 15 – файл после изменения атрибутов.](https://habrastorage.org/getpro/habr/upload_files/ae0/138/820/ae013882060a185888bf9e5d23ac1c86.png)
Собственно, на этом небольшой разбор заканчивается. Описал некоторые техники и IoCи (индикаторы компрометации) в ходе выполнения анализа. При желании можно пойти дальше и выполнить более глубокий статический и динамический анализы.
С другой, не менее интересной, статьёй по ресерчу исполняемого кода с эксплойтами в PDF файлах, можно ознакомиться здесь.