Исследуем вредоносный документ с вновь набирающим популярность трояном Emotet.
Основная цель моих статей: предоставить практически полезные способы обнаружения вредоносной активности в файлах, дампах и.т.д, а также поделиться знаниями, на поиск которых, у меня ушло достаточно много времени.
Статья выходит довольно обширная, в связи с этим, будет состоять из двух частей, т.к. здесь я постараюсь доступно изложить исследование вредоносного документа формата Excel (такие документы сегодня используются в фишинговых кампаниях по всему миру для заражения трояном Emotet), а после исследования вредоносного документа решим задание от cyberdefenders.org, в котором нам предложат поковырять дамп оперативной памяти, с уже зараженного хоста, давайте приступать.
Автор не несёт ответственности в случае заражения вашего компьютера вредоносным ПО и крайне не рекомендует выполнять исследования на компьютерах, где есть важная информация и неконтролируемое подключение к локальной сети и сети интернет.
Часть 1.
Практиковаться будем на довольно свежем сэмпле от 03.11.2022г., который загрузим c https://bazaar.abuse.ch/.(рисунок 1).
По статистике мы видим, что количество сэмплов, связанных с данным вредоносом особенно выросло в последнее время.
Итак, давайте начнем исследование. Будем проводить работу, используя образ REMnux, т.к. данный образ уже содержит много полезных утилит и изолированную ОС Windows 10 с предустановленным MS Office.
Распакуем файл и воспользуемся утилитами для исследования MS Office документов из пакета oletools от Didier Stevens. Утилита oileid показывает, что в файле содержится только XLM Macros (Рисунок 3)
Olevba дает нам более полную картину (рисунок 4) и показывает, что есть функция Auto_Open типа AutoExec, это означает, что код функции выполняется сразу после открытия документа. Также есть «подозрительные» слова: Hex, Windows etc.
Часто во вредоносных файлах попадаются слова: xor, base64, shell и другие.
Не будем оставлять без внимания и информацию выше от olevba (до таблицы на Рисунке 4), в которой видно, что 6 листов (sheet) скрыты от глаз любопытных пользователей, т.е. имеют атрибут hidden.
Еще обратим внимание, что содержимое листов 1-5 собирается в G13 на 6 листе в формуле (рисунок 6). Вся эта информация нам понадобится.
![Рисунок 6 - olevba формула в которой собирается содержимое. Рисунок 6 - olevba формула в которой собирается содержимое.](https://habrastorage.org/getpro/habr/upload_files/433/a44/d8d/433a44d8d43b6076ac22ce04f7ade91a.png)
Напоследок, давайте пройдемся утилитой strings, возможно нам удастся найти что-нибудь интересное сразу? (Рисунок 7)
strings -a Emotet.xls
![Рисунок 7 - внешние ресурсы, полученные при помощи утилиты strings. Рисунок 7 - внешние ресурсы, полученные при помощи утилиты strings.](https://habrastorage.org/getpro/habr/upload_files/a53/4f0/e17/a534f0e17ed4645b6283208712407139.png)
Мы видим популярную функцию URLDownloadToFile (Win API) для загрузки файлов со сторонних ресурсов и сами ресурсы. (метод strings далеко не всегда работает, т.к. зачастую приходится прежде деобфусцировать код, а иногда и расшифровать перед анализом).
Пришла пора идти в Windows (рисунок 8). Здесь мы наблюдаем самую обычную картинку от злоумышленников, с просьбой разместить файл по определенному пути (разумеется, это не предупреждение от MS Office), крайне рекомендую при открытии файлов внимательно изучать текст ошибок (если такие будут), ведь зачастую это просто VBA макросы или другие трюки, а не настоящие ошибки от MS Office или Windows, и злоумышленники умудряются там допускать грамматические ошибки и совершать опечатки (человеческий фактор). В будущих статьях с разбором фишинга у некоторых APT группировок это проявляется, подробно опишу как это выглядит.
Следующим этапом давайте сделаем видимыми остальные листы с 1 по 6: ПКМ sheet -> «Show».(рис 9)
![Рисунок 9 - скрытые листы. Рисунок 9 - скрытые листы.](https://habrastorage.org/getpro/habr/upload_files/abb/3dd/7d7/abb3dd7d7612060fdd7582329bd2d974.png)
На каждом из 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 - пароль к листам. Рисунок 10 - пароль к листам.](https://habrastorage.org/getpro/habr/upload_files/252/0a8/813/2520a881327770e2d7a4a6d48b19eead.png)
К остальным 5 листам пароль подходит: ПКМ -> снять защиту – вводим пароль и наблюдаем с виду чистые листы, но выделив содержимое: ctrl +A и изменив цвет шрифта на черный увидим текст разбросанный по листам и ячейкам.
Внимательный читатель наверняка помнит, что на 6 листе в ячейке G13 (рисунок 6 данной статьи) всё добро собирается воедино, следовательно там будем смотреть. Для этого развернём свернутый столбец G на рисунке 11.
![Рисунок 11 - формула в столбце G. Рисунок 11 - формула в столбце G.](https://habrastorage.org/getpro/habr/upload_files/da0/c16/95c/da0c1695c605bcd1c30f72abb03bb8fd.png)
Как мы видим здесь код, необходимый для загрузки вредоносного ПО на хост со сторонних вредоносных ресурсов.
И запуска ВПО в режиме silence - regsrv32.exe /S из директории выше :
=EXEC("C:\Windows\System32\regsvr32.exe /S ..\oxnvN.ooccxx")
Мы рассмотрели интересный и довольно простой способ сокрытия данных при заражении вредоносным ПО и нашли некоторые IoC’и. В других статьях познакомимся с куда более интересными методами, которые используют иностранные APT группировки для обфускации кода и доставки вредоносных файлов.
С другими опубликованными статьями и WriteUp'ами можно ознакомиться здесь.
Во второй части статьи попрактикуемся на примере расследования инцидента в дампе оперативной памяти, зараженного трояном Emotet от cyberdefenders.org, речь пойдет о скрытых процессах и их поиске.
Комментарии (14)
v1000
06.11.2022 13:42+1всегда удивляла политика Майкрософт по отношению к встроенному языку программирования в Эксель. Неужели нельзя сделать какую-то базовую функциональность, которая не может навредить? Блокировать внешние АПИ. Такое впечатление, что десятки лет продают дырявое решето с позиции «ну а дальше вы сами». Вместо того чтобы пересмотреть архитектуру как таковую.
YMA
06.11.2022 14:07+3Но тогда и функциональность языка сильно пострадает. Я часто пользовался в VBA и подгрузкой данных с внешних ресурсов, и работой с файлами, и запуском внешних программ, и даже системными вызовами - типа нажать на что-то "мышкой" (вместо AutoIt). Да, так-то это лучше делать в чем-то более профессиональном - но зачастую в корпоративной среде этого чего-то просто нет, а VBA доступен практически везде.
"Молотком можно гвозди забивать, а можно и черепушки проламывать".
HDPS
06.11.2022 21:39+1Как ms office стал стандартом для документов, так и vba широко распространилась. Я видел книги по обучению работе с микроконтроллерами, с написанием кода в vba. Да и в бизнесе за много лет компании разработали множество решений, от которых так просто не уйти. Автоматизация с vba гораздо проще чем с использованием специальных библиотек в других языках программирования, например closedxml в c#.
AntonyN0p Автор
06.11.2022 21:54+1Да, с VBA некоторые APT делают по-настоящему интересные вещи, к примеру прячут обфусцированный байт-код в Forms документа, деобфусцируют и пакуют во вредоносный файл его содержимое, не обращаясь при этом к стороннему веб ресурсу
AlexeyK77
Только вот вывода нет никаокго из статьи. Вирусописатели безусловно почерпнут кой чего интересного из нее для себя.
А вот как эффективно противодействовать этому, при условии что в организации работают тысячи сотруников например.
AntonyN0p Автор
Алексей, мы уже с Вами обсуждали похожий вопрос в комментариях под другой статьёй =)
Тысячи сотрудников - это целый комплекс мер, организационных и технических.
А вот специалистов ИБ (операторов SOC и других) - гораздо меньше, и я очень надеюсь, что материал здесь и в блоге будет им полезен.
Решение на скорую руку это Windows Defender Application Guard (подробнее здесь), который позволит запустить документы MS Office в изолированной среде (некая песочница на основе виртуализации Hyper-V), но настройка этого компонента может сделать больно вашей среде виртуализации, если вы используете её для работы сторонних приложений: VMWare, VBox.
Компонент доступен начиная с Windows 10 версии 2004 (20H1) сборки 19041.
HappyGroundhog
Запретить групповой политикой макросы в документах.
TimsTims
Запретить использовать интернет с прямым входом, запретить пользоваться Windows,
запретить макросы, запретить пользоваться клавиатурой, запретить пользоваться компьютером.Давайте всё запретим, так ведь проще.
HappyGroundhog
Если отбросить сарказм, когда вам в последний раз требовались VBA макросы при офисной работе?
TimsTims
Сегодня. Честно). Если вы ими не пользуетесь - это не значит, что другие ими не пользуются. Есть такие места, где все настолько сильно запрещено, все разработки только через 100500 бюрократических процедур, что любая автоматизация проще (!) Делается через макросы...
HappyGroundhog
Знаю такие места, увы...
Просто в ситуации с вирусами на VBA решений по сути всего 2.
1. Отключить возможность использования VBA.
2. Надеяться, что разработчики разных защитных решений чуть впереди людей, зарабатывающих этим деньги, и для которых обход защитных решений одна из основных целей для стабильного получения дохода.
Ну есть еще третий пункт, перейти на что-то, для чего пока нет такого количества атак. Раньше это был Linux и MacOS, но теперь ситуация с ними заметно изменилась, поскольку спрос рождает предложение.
Всё остальное, это попытка обогнать опытных злоумышленников в гонке "Снаряд-броня".
TimsTims
Ну есть ещё несколько способов. Первое - запретить прямой доступ в интернет. Далее - использовать прокси сервер. URLDownloadToFile, насколько я знаю, в него не умеет. Ну или если у безопасников совсем паранойя , то для выхода в интернет использовать совсем отдельные машинки с browser-only.
HappyGroundhog
Запретить прямой доступ в интернет это отличный вариант. Главное помнить про наличие хорошо работающих техник DNS/ICMP туннелирования. Видел варианты, когда доступа в интернет как бы нет, но он есть...
Прокси может и не спасти, поскольку есть варианты минимальный дроппер притащить в теле документа, после чего он выгружается на диск, запускается и остальное уже докачивает оттуда, вычитывая из системных настроек настройки прокси. Да, это сильно триггерит антивирусы/EDR. Но всё это при желании обходится.
TimsTims
Ну мы же говорим про блокировку макросов VBA. Они не умеют в DNS-туннели.