Search
Write a publication
Pull to refresh
75.21

Легитимный язык в руках злоумышленников: декомпиляция ВПО на AutoIt

Reading time5 min
Views606

Привет, Хабр! На связи команда UserGate uFactor, и мы снова хотим рассказать о наших исследованиях в области кибербезопасности. Этот материал — продолжение рассказа о вредоносном программном обеспечении, используемом в кибератаках. В прошлый раз мы рассказывали о мощном ВПО DarkWatchman, в этот — рассмотрим не самый сложный вредонос, использующий скомпилированные сценарии на скриптовом языке AutoIt. Злоумышленники часто используют этот язык для создания ВПО.

AutoIt — свободно распространяемый язык для автоматизации выполнения задач в Microsoft Windows. Он позволяет создавать скрипты автоматизации (иногда называемые макросами), способные имитировать действия пользователя, такие как текстовый ввод и воздействие на элементы управления системы и программ, а также реагировать на события (например, выполнять определенные действия при открытии окна с определенным заголовком). Такие скрипты полезны для выполнения часто повторяющихся задач, таких как инсталляция идентичных наборов программ на большое количество компьютеров.

Язык AutoIt прост, внешне схож с Visual Basic и по функциональности близок к языкам общего назначения, но отличается от них наличием встроенных средств, легко предоставляющих доступ к событиям, процессам, элементам графического интерфейса системы и программ. Язык включает GUI-фреймворк, позволяющий использовать в скриптах несложные Windows-формы с типовыми графическими компонентами.

Рассмотрим на примере один из таких образцов ВПО. Подробнее об AutoIt можно почитать на сайте разработчика.

Для анализа PE-файла необходимо сначала получить общую информацию о нем. Для этого можно воспользоваться программным обеспечением Detect It Easy.

Рисунок 1. Сведения о файле, полученные с помощью Detect It Easy
Рисунок 1. Сведения о файле, полученные с помощью Detect It Easy

Обратите внимание на рисунок 1. Используется библиотека AutoIt (версии 3). Для декомпиляции есть множество скриптов и программ, и если не получается извлечь данные одним инструментом, попробуйте другой. В нашем случае для декомпиляции использовалась программа AutoIt Extractor. Поскольку файл 32-битный (см. рисунок 1), необходимо использовать соответствующий экстрактор (x86).

Рисунок 2. Сохраняем скрипт
Рисунок 2. Сохраняем скрипт
Рисунок 3. Сохраняем дополнительный файл
Рисунок 3. Сохраняем дополнительный файл

 Как видно по рисункам 2 и 3, AutoIt Extractor указывает на то, что в исполняемом файле находятся скрипт и бинарный файл. При сохранении файлы были названы следующим образом:

 ·        1.txt — для скриптового сценария;

·        2.bin — для бинарного файла.

Рисунок 4. Файл 1.txt — извлеченный скрипт, 2.bin — извлеченный бинарный файл, DHL<...>.exe — исследуемый образец
Рисунок 4. Файл 1.txt — извлеченный скрипт, 2.bin — извлеченный бинарный файл, DHL<...>.exe — исследуемый образец

Рассмотрим скрипт 1.txt.

Рисунок 5. Фрагмент извлеченного скрипта
Рисунок 5. Фрагмент извлеченного скрипта
Рисунок 6. Фрагмент извлеченного скрипта
Рисунок 6. Фрагмент извлеченного скрипта

Основное внимание предлагаю обратить на начало сценария. По рисункам 5 и 6 видно, что скрипт содержит обфусцированные строки. Если внимательно их изучить, можно увидеть, что обфускация совсем проста (в строках последовательность символов dycw заменяется пустым значением). Для деобфускации понадобится текстовый редактор, например Sublime.

Рисунок 7. Фрагмент кода после удаления dycw
Рисунок 7. Фрагмент кода после удаления dycw

На рисунке 7 последние две строки указывают на то, что будет выделена память и в нее запишутся данные из переменной $yzbwapzvk, а далее осуществится переход на данные по адресу, смещенному от начала на 9136 (dec), то есть в памяти будет записан и исполнен шеллкод. Теперь необходимо деобфусцировать значения в переменной $yzbwapzvk, поэтому для начала данные необходимо преобразовать в одну строку (убрать лишние переносы $yzbwapzvk &=), далее — удалить из получившейся длинной строки dycw и получить следующее.

Рисунок 8. Фрагмент деобфусцированных данных
Рисунок 8. Фрагмент деобфусцированных данных

На рисунке 8 видно, что значения будут интерпретированы как hex — на это указывает 0x в начале. Для преобразования строки в байты и сохранения в бинарный файл можно воспользоваться CyberChef или написать скрипт, который выполнит данную операцию.

Рисунок 9. Преобразуем шеллкод в бинарный файл при помощи CyberChef
Рисунок 9. Преобразуем шеллкод в бинарный файл при помощи CyberChef

Скачаем получившийся бинарный файл. Теперь его можно отладить в OllyDbg при помощи созданной нами простой самописной программы («подсобки»). Наша «подсобка» открывает скачанный бинарный файл, читает байты в память и переходит на начальный адрес. Также при переходе на начальный адрес необходимо заменить значение в регистре на точку входа в шеллкод.

Рисунок 10. Код «подсобки» для перехода на шеллкод
Рисунок 10. Код «подсобки» для перехода на шеллкод
Рисунок 11. Правим регистр EAX на оригинальную точку входа, учитывая смещение 9136 dec (23B0 hex)
Рисунок 11. Правим регистр EAX на оригинальную точку входа, учитывая смещение 9136 dec (23B0 hex)

В самом начале в память записывается ключ расшифровки.

Рисунок 12. Шеллкод и ключ расшифровки
Рисунок 12. Шеллкод и ключ расшифровки

Алгоритм шеллкода — получение адресов WinAPI.

Рисунок 13. Используемые в дальнейшем функции WinAPI
Рисунок 13. Используемые в дальнейшем функции WinAPI

Далее происходит расшифровка файла Lityerses, заполнение в нем IAT адресами WinAPI, полученными ранее, запуск процесса svchost (легитимного файла) и перезаписывание его адресного пространства кодом Lityerses.

Рисунок 14. Открытие файла Lityerses
Рисунок 14. Открытие файла Lityerses
Рисунок 15. Создание процесса svchost
Рисунок 15. Создание процесса svchost

Файл Lityerses — это тот бинарный файл, который мы извлекли при помощи AutoIt Extractor (см. рис. 3). Ключ для его расшифровки — CAF24LGHR9ZJZAU7IC (см. рис. 13), шифрование производится обычным XOR. Для демонстрации расшифровки воспользуемся CyberChef, откроем бинарный файл 2.bin в hex-редакторе и скопируем байты в CyberChef, указав плагины From Hex и XOR.

Рисунок 16. Копируем содержимое файла 2.bin (Lityerses)
Рисунок 16. Копируем содержимое файла 2.bin (Lityerses)
Рисунок 17. Значения до расшифровки (при помощи CyberChef)
Рисунок 17. Значения до расшифровки (при помощи CyberChef)
Рисунок 18. Расшифрованный файл
Рисунок 18. Расшифрованный файл

Заключение

Как и в случае ВПО DarkWatchman, у вредоноса, созданного c помощью AutoIT, есть своеобразные техники уклонения от автоматизированных средств защиты информации:

  • использование скриптового сценария в PE-файле;

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

  • выделение памяти и исполнение шеллкода;

  • дешифровка полезной нагрузки с использованием XOR-ключа;

  • внедрение в легитимный процесс (svchost) и исполнение файла Lityerses.

Это уже третий материал о ВПО (статья №1, статья №2), и, как можно увидеть, их объединяет тема применения скриптов — такие замысловатые методы дают возможность злоумышленникам провести результативную атаку. Мы показали, как статический и динамический анализ позволяют восстановить структуру и поведение вредоносного кода, а детальный ручной разбор — выявить применяемые злоумышленниками тактики и техники и, в свою очередь, своевременно защитить инфраструктуру от кибератаки.

IoC
DHL 3581220-182024.exe
02c502ba320e1c185a31592f0fe0321c
3cd24a1d94d6189ac9309bb073844d7567d9fcf3
dfa35d9e470b10f5e1e92b3367ba6d5b275b0b886e79e4818874534e200ee8b8


dicryptLityerses.dat 

8a9952aeb5219bfbc67cf521cbd895b3
da7ee8dbf5617dda53f5108fbf7896756b529780
09504e5d5003575c34b7cc4d4d835718706e2e4c4929ef27c3f9a60af02f3927


Lityerses.bin

6c60eee833bca5b96571cfcd3cf49717
5835f3004cf70bd7a61bc0f79319bf4fb9e5a82d
d2efa4ba46b5f0f9bc1411137ac4fc38b2274536612b0ed858f277cf4eac7c1f


script.txt

6b3f7a7c97752fd2cd6add0f0586f444
7beb7f4e14c52751b4f217ac4fc3ffc8c2509f1a
8ed04a68013bb0e17a5db57d7f417fb2f7152fc0c528b2adf2b07d4869c8ac8b

Tags:
Hubs:
+6
Comments2

Articles

Information

Website
www.usergate.com
Registered
Founded
2001
Employees
201–500 employees
Location
Россия