Вечер добрый, Хабр!

Решил немного изучить свежий сэмпл малваря 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.

Перед изучением, давайте убедимся, что содержимое файла не было зашифровано.

Рисунок 2 – проверка шифрования внутри файла.
Рисунок 2 – проверка шифрования внутри файла.

Так как файл зашифрован (Рисунок 2). Нам необходимо найти пароль и расшифровать.

Далеко ходить не будем, поищем пароль в .xlsx файле. После недолгих поисков, мы получаем дешифрованный файл, т.к. пароль был внутри, после запуска файла, данный пароль использовался для дешфировки и выполнения вредоносного кода(рисунок 3).

Рисунок 3 – поиск пароля внутри и дешифрование файла.
Рисунок 3 – поиск пароля внутри и дешифрование файла.

Теперь можно начинать анализ файла, воспользуемся утилитами oletools by DidierStevens.

Использование Oleid, не показало наличие вложенных VBA & XLM макросов и ссылок внутри документа.

Рисунок 4 – Проверка утилитой OleId на наличие вредоносных вложений.
Рисунок 4 – Проверка утилитой OleId на наличие вредоносных вложений.

Останавливаться не будем, взглянем на вывод oledump.py, он показывает наличие исполняемого файла binary в xlsx. Что ж, давайте экспортируем содержимое A2 в отдельный файл для дальнейшего анализа (Рисунок 5).

Рисунок 5 – oledump.py, экспорт исполняемого кода.
Рисунок 5 – oledump.py, экспорт исполняемого кода.

Итак, давайте запустим утилиту эмулирующую среду для запуска shellcode’а: scdbg. Установим findsc, ReportMode, CreateDump и.т.д (рисунок 6).

Рисунок 6 – настройка scdbg.
Рисунок 6 – настройка scdbg.

После эмуляции, в scdbg видно функции, которые вызваются (Рисунок 7):

  1. Функция GetProcAddress для получения адреса функции ExpandEnvironmentStringsW для расширения переменной среды.

  2. Вызов этой функции для последующего сохранения по корректному пути вредоносного файла.

  3. Получение адреса функции загрузки файла, с последующим вызовом её и сохранения вредоносного файла Cloud2.exe в %public%regasm_avch.exe.

  4. Исполнение загруженного файла.

Рисунок 7 – вызываемые вредоносным кодом функции.
Рисунок 7 – вызываемые вредоносным кодом функции.

Теперь, когда у нас есть адрес, загрузим файл. После загрузки, проанализируем содержимое. В первую очередь, на наличие пакера/протектора и языка, на котором написан код. Как мы видим на рисунке 8, исполняемый файл написан на C# и защищен при помощи протектора.

Рисунок 8 – информация об исполняемом файле DIEC.
Рисунок 8 – информация об исполняемом файле DIEC.

Перед анализом снимем протектор с файла (Рисунок 9).

Рисунок 9 – снятие протектора с исполняемого файла.
Рисунок 9 – снятие протектора с исполняемого файла.

Теперь можно приступать к статическому анализу файла, с использованием 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.
Рисунок 11 – динамический анализ FakeNet.
Рисунок 11 – динамический анализ FakeNet.

Выше и в TCPViewer мы видим C2 Server 208.67.105[.]162 (месторасположение USA, City: Middleton), с которым взаимодействует вредонос (выше на рисунке 11, до копирования и переименования себя, а на рисунке 12, уже после копирования и переименования с атрибутами h – hidden & s – system, для скрытия).

Рисунок 12 – TcpView.
Рисунок 12 – TcpView.

Cloud2.exe копирует себя с атрибутами h (hidden) & s (system) в директорию C:\Users\<Username>\AppData\Roaming\585711\127DE7.exe (с другим именем), чтобы визуально его невозможно было найти, даже после включения отображения скрытых файлов(Рисунок 13 и 14). К слову, hash файла также меняется.

Рисунок 13 – атрибуты директории и вредоносного с вредоносным файлом.
Рисунок 13 – атрибуты директории и вредоносного с вредоносным файлом.
Рисунок 14 – атрибуты вредоносного файла.
Рисунок 14 – атрибуты вредоносного файла.

Однако мы можем изменить атрибуты, чтобы файл стал нам вновь доступен (Рисунок 15).

Рисунок 15 – файл после изменения атрибутов.
Рисунок 15 – файл после изменения атрибутов.

Собственно, на этом небольшой разбор заканчивается. Описал некоторые техники и IoCи (индикаторы компрометации) в ходе выполнения анализа. При желании можно пойти дальше и выполнить более глубокий статический и динамический анализы.

С другой, не менее интересной, статьёй по ресерчу исполняемого кода с эксплойтами в PDF файлах, можно ознакомиться здесь.

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


  1. HemulGM
    06.09.2022 20:39
    +10

    А есть описание или информация, по какой причине какие-то бинарные данные внутри файла внезапно исполняются? Или я пропустил?


    1. LikeMySoul
      07.09.2022 09:34

      Скорее всего дырка excel вроде старенькой CVE-2008-0081. Можно ради интереса покопать свежие известные на exploitdb условном, но мне лень =)


    1. AntonyN0p Автор
      07.09.2022 09:35
      +1

      Справедливые вопросы, цели рассказть о структуре документа и запуске содержимого в статье не преследовал, но стоило об это рассказать, спасибо!
      Часто содержимое таких документов запускается после открытия документа, блягодарю Auto_open макросу. Порой с использованием эксплойтов =)


      1. AlexeyK77
        07.09.2022 10:26

        ну да, просто в статье было указано, что ни макросов ни OLE не было. Значит либо используется либо експлоит либо что-то другое, о чем было бы полезно знать. Заранее спасибо, если проясните этот момент


  1. tormozedison
    06.09.2022 21:14
    +6

    Что будет, если такой xlsx открыть не в Excel, а в любом другом офисном пакете, понимающем этот формат? Малварь не запустится?


    1. AntonyN0p Автор
      07.09.2022 09:36

      Зависит от способа запуска, другие офисные пакеты также могут поддерживать исполнение VBA макросов.


      1. tormozedison
        07.09.2022 13:50

        А, так это до сих пор делают на VBA, тогда где угодно можно открывать, предварительно отключив таковой, если поддержка имеется.


  1. KivApple
    06.09.2022 23:39
    +6

    Самым интересным было как исполняемый код из xlsx в отсутствии макросов смог запуститься. Однако именно эту самую интересную часть в статье я и не увидел.


    1. AntonyN0p Автор
      07.09.2022 09:36

      Спасибо, обязательно сделаю на эту тему статью!


  1. Wesha
    07.09.2022 00:10

    Ожидал, что сейчас страшный и ужасный XLSX откроют ZIP-ом (а XLSX — не что иное, как куча XML и не только файлов, запакованных в ZIP-архив) и начнут ковыряться в кишках, но аффтар уровня "скрипт-кидди", конечно, увы и ах :(


    1. AntonyN0p Автор
      07.09.2022 09:39
      +3

      Вы правы в том, что файл имеет сигнатуру PK - zip, но ошибаетесь что сможете распаковать и просматривать содержимое. В начале статьи этому посвящен материал, в котором описано, что содержимое файла зашифровано симметричным алгоритмом шифрования.
      P.S. "скрипт-кидди" - тоже неплохо, ведь учиться никогда не стыдно, особенно, если делишься знаниями =)


      1. 12rbah
        07.09.2022 11:03

        А вы смотрели как работает софт для рашифровки, автор просто использует либу для расшифровки docx, которая перебирает по словарю ? Конкретно этот кусок выглядит как перевод другой статьи, которую делали для псевдохакеров.

        Ну и сама либа не заточена под брутфорс, т.к. перебирает около 15-20 паролей в секунду, даже для словаря это не очень результат ну и как бы там представлено всего 3,5к паролей, в реальности используют словари гораздо больше, поэтому данный скрипт на практике будет работать со скрипом. Ниже на скрине пример работы скрипта.

        В целом данный материал неплох как мануал, но в целом он сыроват.


  1. AntonyN0p Автор
    08.09.2022 22:25

    Итак, как запускался вложенный туда oleObject1.bin:
    В случае когда установлен autoLoad = 1 или True, OLE object автоматически загружается при открытии файла (подробнее).

    В файле с зависимостями как раз видно наш oleObject1.bin с Id="rId3", который содержится в sheet1.xml.


    1. Wesha
      09.09.2022 01:11

      Вооооо! Вот и ответ на вопрос — а то мне тут, товарисч, панимаишь, вкручивает, что якобы "ошибаетесь что сможете распаковать и просматривать содержимое "