Привет Emotet! Исследуем вредоносный документ Excel
Исследуем вредоносный документ с вновь набирающим популярность трояном Emotet.
Основная цель моих статей: предоставить практически полезные способы обнаружения вредоносной активности в файлах, дампах и.т.д, а также поделиться знаниями, на поиск которых, у меня ушло достаточно много времени.
Статья выходит довольно обширная, в связи с этим, будет состоять из двух частей, т.к. здесь я постараюсь доступно изложить исследование вредоносного документа формата Excel (такие документы сегодня используются в фишинговых кампаниях по всему миру для заражения трояном Emotet), а после исследования вредоносного документа решим задание от cyberdefenders.org, в котором нам предложат поковырять дамп оперативной памяти, с уже зараженного хоста, давайте приступать.
Автор не несёт ответственности в случае заражения вашего компьютера вредоносным ПО и крайне не рекомендует выполнять исследования на компьютерах, где есть важная информация и неконтролируемое подключение к локальной сети и сети интернет.
Часть 1.
Практиковаться будем на довольно свежем сэмпле от 03.11.2022 г., который загрузим c https://bazaar.abuse.ch/.(рисунок 1).
Рисунок 1 — сэмпл для исследования.
По статистике мы видим, что количество сэмплов, связанных с данным вредоносом особенно выросло в последнее время.
Рисунок 2 — статистика Emotet.
Итак, давайте начнем исследование. Будем проводить работу, используя образ REMnux, т.к. данный образ уже содержит много полезных утилит и изолированную ОС Windows 10 с предустановленным MS Office.
Распакуем файл и воспользуемся утилитами для исследования MS Office документов из пакета oletools от Didier Stevens. Утилита oileid показывает, что в файле содержится только XLM Macros (Рисунок 3)
Рисунок 3 — oleid.
Olevba дает нам более полную картину (рисунок 4) и показывает, что есть функция Auto_Open типа AutoExec, это означает, что код функции выполняется сразу после открытия документа. Также есть «подозрительные» слова: Hex, Windows etc.
Часто во вредоносных файлах попадаются слова: xor, base64, shell и другие.
Рисунок 4 — вывод olevba.
Не будем оставлять без внимания и информацию выше от olevba (до таблицы на Рисунке 4), в которой видно, что 6 листов (sheet) скрыты от глаз любопытных пользователей, т.е. имеют атрибут hidden.
Рисунок 5 — скрытые листы вредоносного документа Excel.
Еще обратим внимание, что содержимое листов 1–5 собирается в G13 на 6 листе в формуле (рисунок 6). Вся эта информация нам понадобится.
Рисунок 6 — olevba формула в которой собирается содержимое.
Напоследок, давайте пройдемся утилитой strings, возможно нам удастся найти что-нибудь интересное сразу? (Рисунок 7)
strings -a Emotet.xls
Рисунок 7 — внешние ресурсы, полученные при помощи утилиты strings.
Мы видим популярную функцию URLDownloadToFile (Win API) для загрузки файлов со сторонних ресурсов и сами ресурсы. (метод strings далеко не всегда работает, т.к. зачастую приходится прежде деобфусцировать код, а иногда и расшифровать перед анализом).
Пришла пора идти в Windows (рисунок 8). Здесь мы наблюдаем самую обычную картинку от злоумышленников, с просьбой разместить файл по определенному пути (разумеется, это не предупреждение от MS Office), крайне рекомендую при открытии файлов внимательно изучать текст ошибок (если такие будут), ведь зачастую это просто VBA макросы или другие трюки, а не настоящие ошибки от MS Office или Windows, и злоумышленники умудряются там допускать грамматические ошибки и совершать опечатки (человеческий фактор). В будущих статьях с разбором фишинга у некоторых APT группировок это проявляется, подробно опишу как это выглядит.
Рисунок 8 — открываем Excel.
Следующим этапом давайте сделаем видимыми остальные листы с 1 по 6: ПКМ sheet → «Show».(рис 9)
Рисунок 9 — скрытые листы.
На каждом из 6 скрытых листов установлен пароль, чтобы его снять, перейдём в режим разработчика Alt+F11, ctrl +G (внизу появится окно Immediate) и ПКМ на листе с паролем → Insert Module и вводим код для брутфорса пароля от листа (ниже):
Sub PasswordBreaker()
'Breaks worksheet password protection.
Dim i As Integer, j As Integer, k As Integer
Dim l As Integer, m As Integer, n As Integer
Dim i1 As Integer, i2 As Integer, i3 As Integer
Dim i4 As Integer, i5 As Integer, i6 As Integer
Dim Str As String
On Error Resume Next
For i = 65 To 66: For j = 65 To 66: For k = 65 To 66
For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66
For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66
For i5 = 65 To 66: For i6 = 65 To 66: For n = 32 To 126
ActiveSheet.Unprotect Chr(i) & Chr(j) & Chr(k) & _
Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & _
Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
If ActiveSheet.ProtectContents = False Then
Str = Chr(i) & Chr(j) & Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
Debug.Print Str
Exit Sub
End If
Next: Next: Next: Next: Next: Next
Next: Next: Next: Next: Next: Next
End Sub
Исполняем код (F5) и в окне Immediate наблюдаем пароль от листа на рисунке 10.
Рисунок 10 — пароль к листам.
К остальным 5 листам пароль подходит: ПКМ → снять защиту — вводим пароль и наблюдаем с виду чистые листы, но выделив содержимое: ctrl +A и изменив цвет шрифта на черный увидим текст разбросанный по листам и ячейкам.
Внимательный читатель наверняка помнит, что на 6 листе в ячейке G13 (рисунок 6 данной статьи) всё добро собирается воедино, следовательно там будем смотреть. Для этого развернём свернутый столбец G на рисунке 11.
Рисунок 11 — формула в столбце G.
Как мы видим здесь код, необходимый для загрузки вредоносного ПО на хост со сторонних вредоносных ресурсов.
И запуска ВПО в режиме silence — regsrv32.exe /S из директории выше:
=EXEC («C:\Windows\System32\regsvr32.exe /S …\oxnvN.ooccxx»)
Мы рассмотрели интересный и довольно простой способ сокрытия данных при заражении вредоносным ПО и нашли некоторые IoC«и. В других статьях познакомимся с куда более интересными методами, которые используют иностранные APT группировки для обфускации кода и доставки вредоносных файлов.
С другими опубликованными статьями и WriteUp’ами можно ознакомиться здесь.
Во второй части статьи попрактикуемся на примере расследования инцидента в дампе оперативной памяти, зараженного трояном Emotet от cyberdefenders.org, речь пойдет о скрытых процессах и их поиске.