Содержание
Введение
В марте 2020 года, в ходе исследования угроз информационной безопасности, специалисты 1 PT Eхреrt Security Center обнаружили неизвестный ранее бэкдор и назвали его xDll, по оригинальному названию в коде. В результате ошибки конфигурации контрольного сервера некоторые из папок сервера стали доступны извне. На сервере были обнаружены новые образцы:
- ShadowPad;
- неизвестного ранее Python-бэкдора;
- утилиты для развития атаки;
- зашифрованного бэкдора xDll.
ShadowPad используется группой Winnti (APT41, BARIUM, AXIOM), которая активна по меньшей мере с 2012 года. Группа происходит из Китая 2. Ключевые интересы группы — это шпионаж и получение финансовой выгоды. Основной арсенал группы состоит из ВПО собственной разработки. Winnti использует сложные методы атак, в числе которых supply chain и watering hole. Группа точно знает, кто их жертва: она очень осторожно развивает атаку и только после детального анализа зараженной системы загружает основной инструментарий. Группа атакует страны по всему миру: Россию, США, Японию, Южную Корею, Германию, Монголию, Белоруссию, Индию, Бразилию. Преимущественно нацелена на следующие отрасли:
- игровая индустрия,
- разработка ПО,
- авиационно-космическая промышленность,
- энергетика,
- фармацевтика,
- финансовый сектор,
- телекоммуникации,
- строительство,
- образование.
Первая атака с использованием ShadowPad была зафиксирована в 2017 году 3. Бэкдор часто применяется в атаках типа supply chain (такими, к примеру, были взломы CCleaner 4 и ASUS 5). Последний отчет об активности группы Winnti с использованием ShadowPad был выпущен компанией ESET в январе 2020 года 6. Связей с нынешней инфраструктурой нам обнаружить не удалось. Однако в ходе исследования мы обнаружили пересечения новой инфраструктуры ShadowPad с инфраструктурой других групп, что может говорить о причастности группы Winnti к другим атакам, об организаторах и участниках которых не было известно ранее.
Этот отчет посвящен детальному анализу новой сетевой инфраструктуры, связанной с ShadowPad, новым образцам ВПО группы Winnti, а также анализу связей с другими атаками, за которыми может стоять данная группа (см. раздел 1.2).
1. Исследование сетевой инфраструктуры
1.1. Обнаружение ShadowPad
Поначалу, при анализе бэкдора xDll (см. раздел 2.2), явной принадлежности к какой-либо APTгруппе обнаружить не удалось. Образец имел крайне интересный контрольный сервер www. g00gle_jp.dynamic-dns[.]net, что потенциально могло говорить об атаках на Японию. Исследуя сетевую инфраструктуру и разыскивая аналогичные образцы, мы обнаружили несколько доменов со схожим названием.
Названия доменов позволяют предположить, что атаки идут еще и на Южную Корею, Монголию, Россию и США. При дальнейшем исследовании инфраструктуры мы обнаружили несколько простых неизвестных нам загрузчиков (см. раздел 2.1), которые обращаются на связанные контрольные серверы и в ответ должны получить полезную нагрузку, зашифрованную с помощью операции XOR на ключе 0x37. Найденный загрузчик мы назвали SkinnyD (Skinny Downloader) из-за его малого размера и скудной функциональности. По структуре URL и некоторым строкам SkinnyD был очень похож на бэкдор xDll.
Поначалу мы не смогли получить полезную нагрузку для SkinnyD, так как все контрольные серверы были неактивны. Но через некоторое время нам удалось обнаружить новые образцы бэкдора xDll. При анализе одного из них мы нашли открытые папки на его контрольном сервере. Файл с названием x.jpg — это бэкдор xDll, зашифрованный с помощью операции XOR на ключе 0x37. Это дает право предполагать, что xDll является полезной нагрузкой для SkinnyD.
Самым интересным на сервере оказалось содержимое папки cache.
В ней находятся данные о жертвах и ВПО, которое загружается на зараженный компьютер. В названии файла жертвы ставится MD5-хеш-сумма от MAC-адреса зараженного компьютера, который присылает xDll, а в содержимом можно увидеть последнее время соединения с контрольным сервером. По тому, как меняется вторая часть названия файла с ВПО, можно предположить, что в него ставится серверное время в наносекундах, однако оно не является верным: оно относит нас в далекий март 1990 года. Почему был взят такой период времени, нам неизвестно.
В файлах с ВПО мы обнаружили ShadowPad, неизвестный ранее Pythonбэкдор и утилиты для развития атаки. Детальный анализ ВПО и утилит представлен в разделе 2.
С различной периодичностью 7 злоумышленники запрашивают через бэкдор xDll информацию с зараженных компьютеров. Она сохраняется в файл list.gif.
Здесь стоит заметить, что в тех образцах xDll, которые есть у нас, в поле «Domain» присылается именно название домена, в котором находится зараженный компьютер. Однако в журнале практически у всех компьютеров стоит SID пользователя, от имени которого запущен xDll. Возможно, это ошибка в коде определенной версии xDll, так как никакой полезной информации для злоумышленника это значение не несет.
Углубившись в сетевую инфраструктуру, мы обнаружили, что на многих серверах установлена одна и та же цепочка из SSL-сертификатов со следующими параметрами:
- Корневой: C=CN, ST=myprovince, L=mycity, O=myorganization, OU=mygroup, CN=myCA, SHA1=0a71519 f5549b21510410cdf4a85701489676ddb
- Основной: C=CN, ST=myprovince, L=mycity, O=myorganization, OU=mygroup, CN=myServer, SHA1=2d2 d79c478e92a7de25e661ff1a68de0833 b9d9b
Такой сертификат встречался в нескольких исследованиях, посвященных атакам с применением ShadowPad.
Первое — это исследование атаки на CCleaner в 2017 году. В нем эксперты Avast раскрыли некоторые подробности 8 той атаки. И на одном из скриншотов в этом документе можно увидеть такой же сертификат, что и в нынешних атаках.
Второе — доклад специалистов из FireEye на конференции Code Blue 2019 о кибератаках на Японию 9. В одной из атак специалисты обнаружили использование POISONPLUG (наименование ShadowPad, которое использует компания FireEye). При анализе инфраструктуры они обнаружили такой же сертификат на контрольных серверах ShadowPad.
Поиск серверов с таким сертификатом помог нам выявить не только новые образцы и контрольные серверы ShadowPad, но и пересечения с другими атаками, которые ранее никак не связывались с Winnti (см. раздел 1.2).
В результате нам удалось найти более 150 IP-адресов с таким сертификатом или на которых он был установлен ранее, из них 24 были активными на момент написания статьи, — и 147 доменов, которые связаны с этими адресами. Для доменов мы обнаружили ВПО, связанное с Winnti.
За время исследования инфраструктуры домены группы переезжали с одного IP-адреса на другой множество раз, и это говорит об активной фазе атаки.
Однако неизвестно, что послужило мотивом использовать один SSL-сертификат практически на всех контрольных серверах ShadowPad. Возможно, причина крылась в том, что у злоумышленников был всего один образ системы, который устанавливается на контрольные сервера снова и снова, а может быть, все дело в излишней уверенности злоумышленников в собственной безнаказанности.
Такую историю с сертификатами мы наблюдали и при исследовании активности группы TaskMasters 10. В какой-то момент злоумышленники начали устанавливать на свои серверы самоподписанные сертификаты с одинаковыми метаданными, что в итоге и помогло обнаружить их инфраструктуру.
Ниже представлено распределение обнаруженных нами IP-адресов по местоположению.
Около половины серверов группировки находятся в Гонконге. IP-адреса распределены по 45 уникальным провайдерам, при этом более половины серверов сконцентрированы на IP-адресах шести провайдеров, пять из которых находятся в Азии — в Гонконге, Китае, Южной Корее.
1.2. Пересечения с другими группами
1.2.1. TA459
В 2017 году компания Proofpoint выпустила отчет об атаках на Россию и Белоруссию с использованием ZeroT и PlugX 11. В отчете встречается домен yandax[.]net, который косвенно относился к инфраструктуре той атаки: этот домен находился на том же IP-адресе, что и один из серверов PlugX.
За последние несколько лет на адрес dophfg@yahoo[.]com было зарегистрировано еще несколько доменов.
Исследуя инфраструктуру ShadowPad, мы наткнулись на активные серверы, которые связаны с двумя доменами из указанной выше группы — www.ertufg[.]com и www.ncdle[.]net. На этих серверах также находился типичный для ShadowPad SSL-сертификат. К тому же мы обнаружили образцы ShadowPad, которые соединяются с этими доменами. Один из них имел относительно старое время компиляции — июль 2017 года. Однако, судя по всему, оно ложное, так как контрольный сервер для него был зарегистрирован в августе 2018 года. Он также маскируется под компонент Bluetooth Stack для Windows компании Toshiba и имеет имя TosBtKbd.dll.
Здесь можно сделать еще одно предположение. Все тот же домен yandax[.]net в данных WHOIS изначально имел совершенно другой почтовые адрес — fjknge@yahoo[.]com. На этот адрес также зарегистрирован один из контрольных серверов NetTraveler — riaru[.]net. Атаки с использованием этого домена проводились на страны СНГ и Европы и были описаны исследователями из компании Proofpoint 12. В данном случае не исключен факт переиспользования инфраструктуры другой группой для маскировки своей активности. Но все же область этих атак, страны и отрасли, в значительной мере пересекается с областью интересов группы Winnti. Все это отдельные случаи косвенного пересечения, однако можно предположить, что за всеми атаками стоит одна группа.
1.2.2. Bisonal
На одном из IP-адресов инфраструктуры ShadowPad мы обнаружили домены, которые использовались при атаках с использованием Bisonal RAT в 2015—2020 годах.
Также удалось обнаружить семпл Bisonal, связанный непосредственно с новой инфраструктурой ShadowPad.
В ходе изучения этой связи мы наткнулись на презентацию 13 японского исследователя из NTT Security Хадзимэ Такаи (англ. Hajime Takai) с конференции JSAC 2020. В ней исследователь рассказывает об атаке на Японию, в цепочке которой присутствует xDll, загружающий Bisonal на зараженный компьютер.
Хадзимэ Такаи связывает эту атаку с кампанией Bitter Biscuit, о которой писали исследователи из Unit42 14. В той атаке также применялся Bisonal. Инструментарий для развития атаки, который был обнаружен Хадзимэ Такаи, практически полностью идентичен обнаруженному нами на сервере с ShadowPad, вплоть до соответствия некоторых хеш-сумм (см. раздел 2).
За атаками с применением Bisonal, как считают исследователи 15, стоит группа Tonto team. Атаки группы сконцентрированы преимущественно на трех странах — России, Южной Корее, Японии. Группа атакует правительственные организации, военные структуры, финансовые и промышленные предприятия. Все это тоже попадает в сферу интересов группы Winnti. А в связи с новыми подробностями об использовании Bisonal в связке с xDll и пересечении сетевых инфраструктур можно предположить, что за атаками с использованием Bisonal стоит группа Winnti.
1.3. Жертвы
По данным с сервера, заражены более 50 компьютеров. Точное расположение и отраслевую принадлежность всех их нам установить не удалось. Однако, соотнеся время последнего подключения зараженного ПК к серверу и время получения нами файла с этим временем, можно составить карту часовых поясов.
Большинство стран, находящихся в часовых поясах, отмеченных на карте, точно укладываются в область интересов группы Winnti.
Некоторые скомпрометированные организации нам удалось идентифицировать:
- университет в США,
- аудиторская компания в Голландии,
- две строительные компании — одна в России, другая в Китае,
- пять фирм — разработчиков ПО: одна в Германии, четыре в России.
- Все потенциальные жертвы были уведомлены по линии национальных CERT.
Учитывая, что ShadowPad применялся в атаках типа supply chain через поставщиков ПО, и мы знаем о компрометации по крайней мере пяти разработчиков ПО, можно утверждать, что либо мы имеем дело с подготовкой к очередному распространению ВПО, либо атака уже находится в активной фазе.
1.4. Активность
Активность на сервере (сбор информации с жертв и появление новых утилит) происходила вне рабочего времени относительно тех часовых поясов, в которых находились жертвы: у некоторых был вечер, а у кого-то ранее утро. Такая тактика характерна для Winnti. Группа действовала так же при компрометации CCleaner, о чем писал Avast.
2. Анализ ВПО и инструментов
По собранным нами данным, схема доставки в нынешней кампании выглядит следующим образом.
Анализ времени компиляции найденных нами образцов ВПО показал соответствие с рабочим временем в часовом поясе UTC+8, в котором находятся Китай и Гонконг
2.1. Анализ SkinnyD
SkinnyD (Skinny Downloader) является простым загрузчиком. Он содержит в себе несколько адресов контрольных серверов, которые он последовательно перебирает.
Загрузка следующей стадии осуществляется с помощью GET-запроса на управляющий сервер по специальному URL-адресу, который генерируется согласно форматной строке, жестко прописанной в коде ВПО.
Получаемые с контрольного сервера данные ВПО проверяет следующим образом:
- данные должны быть размером больше чем 0x2800 байт,
- данные должны начинаться с байтов «4D 5A» (MZ).
Загруженный бинарный файл расшифровывается с помощью XOR и загружается с помощью техники рефлективной загрузки PE. После того как бинарный файл загружен, управление передается на экспортируемый символ «MyCode».
ВПО закрепляется на зараженном компьютере через ключ Environment\UserInitMprLogonScript 16.
В исследуемых экземплярах SkinnyD обнаружен интересный артефакт, связывающий его с xDll. Это строка «3853ed273b89687». Она не используется загрузчиком, возможно это артефакт билдера.
2.2. Анализ xDll
2.2.1. Дроппер
Дроппер представляет собой исполняемый файл, написанный на языке C и скомпилированный в среде разработки Microsoft Visual Studio. Имеет правдоподобную дату компиляции: 11.02.2020 09:54:40.
Содержит полезную нагрузку в виде бэкдора xDll в секции data.
Дроппер извлекает данные в объеме 59 392 байт и пытается записать их по одному из путей:
- %windir%\Device.exe
- %windir%\system32\browseui.dll
Затем копирует себя в каталог %windir%\DeviceServe.exe и создает сервис с именем VService, тем самым обеспечивая автозапуск в качестве службы.
После запуска сервис создает отдельный поток, в котором запускает полезную нагрузку.
Стоит заметить, что запуск другого варианта полезной нагрузки в виде DLL-библиотеки (browseui.dll) не предусмотрен.
2.2.2. Бэкдор xDll
Бэкдор представляет собой исполняемый файл, написанный на языке C++ и скомпилированный в среде разработки Microsoft Visual Studio с использованием библиотеки MFC. Также имеет правдоподобную дату компиляции: 10.02.2020 18:14:37.
Создает отдельный поток, в котором происходят все полезные действия.
В начале работы выполняет разведку в системе и собирает пользовательскую информацию:
- имя компьютера;
- IP-адрес;
- кодовую страницу OEM;
- MAC-адрес (позднее от полученного значения вычисляется MD5-хеш-сумма, которая будет использоваться при взаимодействии с управляющим сервером);
- версию ОС;
- заданный идентификатор «sssss» (вероятно, характеризует данную версию бэкдора);
- информацию о том, является ли пользователь администратором;
- находится ли в виртуальном окружении;
- домен и имя пользователя;
- информацию о процессоре;
- информацию об оперативной памяти;
- о языке системы.
Затем бэкдор расшифровывает адреса управляющего сервера. В данном случае их два, но они совпадают: www.oseupdate.dns-dns[.]com. В теле бэкдора задан третий адрес (127.0.0.1), который замещается расшифрованным.
После получения адреса управляющего сервера отправляется GET-запрос в следующем формате:hxxp://{host}:{port}/{uri}?type=1&hash={md5}&time={current_time}, где:
- host — адрес командного сервера;
- port — 80-й порт;
- uri — строка «news.php»;
- md5 — хеш-сумма MAC-адреса (вероятно, идентификатор жертвы);
- current_time — текущее время в системе.
Вот как это выглядит:
Стоит отметить, что используется заданное значение поля HTTP-заголовка User-Agent:
В ответ от сервера ожидается символ «1». Если нужный ответ приходит, отправляется POSTзапрос с базовой информацией о системе в формате JSON:
- хеш-сумма MAC-адреса,
- имя компьютера,
- IP-адрес,
- версия ОС,
- имя домена,
- заданный идентификатор «sssss»,
- кодовая страница OEM.
Пример запроса:
Стоит заметить, что формат JSON некорректен. Кроме того, пропущено значение поля In_IP. Вероятно, предполагалось, что будут определены как внутренний IP-адрес, так и внешний. Но логика определения внешнего адреса в данном варианте xDll еще не реализована. Еще одна характерная деталь: заданное значение поля HTTP-заголовка Referer: post_info. Значение поля HTTP-заголовка User-Agent также выбирается другое:
Следом запускается цикл обработки команд, поступающих от командного сервера. Для этого бэкдор отправляет GET-запрос, формат которого совпадает с описанным выше. Единственное отличие: значение параметра type: вместо «1» теперь значение «2».
В ответе от сервера ожидается строчная латинская буква (от a до z). В таблице ниже приведены команды и соответствующие действия.
Команда | Действие |
---|---|
c |
Собрать и отправить информацию о подключенных томах в системе |
d |
Собрать и отправить содержимое папок |
e |
Получить файл от сервера, сохранить в системе и отправить отчет об успехе |
f |
Запустить указанный файл средствами ShellExecuteA и отправить отчет об успехе |
g |
Удалить указанный файл средствами ShellExecuteA и отправить отчет об успехе |
h |
Загрузить указанный файл на сервер |
j |
Собрать и отправить список процессов в системе |
k |
Завершить указанный процесс и отправить отчет об успехе |
l |
Выполнить команду средствами cmd.exe и отправить вывод |
m |
Продолжить коммуникацию с cmd.exe. Выполнение дальнейших команд |
n |
Собрать и отправить список служб в системе |
o |
Отправить всю информацию, полученную в результате разведки |
q |
То же, что для команды d |
u |
Начать всю коммуникацию с командным сервером заново |
Вот так выглядит запрос команды и ответ:
Следом запрашивается файл и возвращается его содержимое:
Затем отправляется отчет об успешной загрузке:
Вновь обратите внимание на характерное значение поля Referer: upfile, а также тип передаваемых данных (image/pjpeg — изображение) и имя передаваемого файла: {md5}.gif (используется хеш-сумма MAC-адреса).
Отметим, что в случае обработки команды по сбору листинга папки (команда d) запятая не является разделителем. Вместо этого ожидается, что путь до каталога начинается со второго символа: например, «d|C:\Users».
Данные передаются в формате JSON, причем в этот раз форматирование корректно.
Ниже пример отправки информации, полученной в результате анализа системы (команда o).
Данные вновь передаются в формате JSON, но с меньшим числом ключей.
Шаблоны JSON-строки заданы в бэкдоре, а сама строка формируется конкатенацией, без использования специальных библиотек.
Впрочем, в некоторых случаях, когда достаточно короткого отчета, информация передается обычным текстом.
2.3. ShadowPad
Как ранее указывалось, на одном из серверов xDll мы обнаружили открытые папки, в одной из которых находился ShadowPad. Особых различий с предыдущими версиями мы не выявили, поэтому ниже представлен краткий анализ свежей версии.
2.3.1. Загрузчик ShadowPad и обфускация
На первом этапе происходит дешифрование шеллкода, отвечающего за установку бэкдора в системе. Дешифрование осуществляется XOR-подобным алгоритмом, характерной особенностью которого является модификация ключа шифрования на каждой итерации при помощи арифметических операций с определенными константами.
После дешифрования управление передается загрузчику, который отличается характерным типом обфускации.
Данный тип обфускации встречался в предыдущих версиях ShadowPad и заключается во вставке определенных байтов в различные участки кода, которые предварительно обозначены двумя противоположными условными переходами, указывающими на один и тот же адрес. Чтобы избавиться от данной обфускации, необходимо заменить указанные байты (например, на операционный код nop).
После получения необходимых адресов API-функций и размещения в памяти необходимых участков кода управление передается на этап установки бэкдора.
2.3.2. Модули ShadowPad
Как и предыдущие версии, этот бэкдор имеет модульную архитектуру. Ниже представлены модули, входящие в бэкдор по умолчанию.
Название модуля | ID | Время компиляции |
Root | 5E6909BA | GMT: Wednesday, 11 March 2020 г., 15:54:34 |
Plugins | 5E69097C | GMT: Wednesday, 11 March 2020 г., 15:53:32 |
Online | 5E690988 | GMT: Wednesday, 11 March 2020 г., 15:53:44 |
Config | 5E690982 | GMT: Wednesday, 11 March 2020 г., 15:53:38 |
Install | 5E69099F | GMT: Wednesday, 11 March 2020 г., 15:54:07 |
DNS | 5E690909 | GMT: Wednesday, 11 March 2020 г., 15:51:37 |
Идентификаторы указанных модулей не меняются от версии к версии, их установка и запуск также происходят в отдельном потоке при помощи реестра. Время компиляции модулей можно найти в так называемом служебном заголовке, который располагается перед шеллкодом.
Характерной особенностью любого экземпляра ShadowPad является шифрование строк, содержащихся в каждом модуле. Алгоритм шифрования похож на используемый при дешифровании бэкдора, отличаются лишь используемые при модификации ключа константы.
Достаточно интересен способ вызова некоторых API-функций в модулях ShadowPad. В некоторых экземплярах ВПО для каждой функции высчитывается адрес функции для каждого ее вызова, как показано на рисунке 47. Также для получения адресов вызываемых функций может использоваться специальная структура, на основании значений членов которой берутся адреса загрузки библиотек, после чего к ним прибавляются смещения нужных API-функций.
Для закрепления на компьютере бэкдор копирует себя в папку C:\ProgramData\ALGS\ с именем Algs.exe, после чего создает службу с таким же именем.
После закрепления ВПО запускает новый процесс svchost.exe, после чего внедряет в него свой код и передает ему управление.
2.3.3. Конфигурация ShadowPad
Во всех экземплярах бэкдора конфигурация зашифрована, за работу с ней отвечает модуль Config.
В данном случае конфигурация представляет собой последовательность шифрованных строк, в которой каждая строка следует за предыдущей без каких-либо дополнений нулями либо выравнивания. Шифрование конфигурации осуществляется тем же алгоритмом, которым зашифрованы строки.
2.3.4. Сетевой протокол
Формат пакетов, использовавшийся во всех версиях ShadowPad, остался неизменным 17. Формирование пакетов, отправляемых на сервер, характеризуется тем, что тело пакета и его заголовок генерируются отдельно друг от друга. После их конкатенации (без какого-либо дополнения) пакет накрывается алгоритмом шифрования, логика которого близка к логике используемых для дешифрования основного модуля и строк внутри бэкдора. Реализация алгоритма представлена на рис. 53.
Шифрованные пакеты, принимаемые от сервера, имеют достаточно простую структуру (на примере Init-пакета):
2.4. Python-бэкдор
Данный бэкдор был обнаружен на сервере в формате py2exe. Бэкдор написан на Python 2.7 и в начале имеет конфигурационные переменные.
Может выполнять удаленно три команды:
- «CMDCMD» — выполнить через cmd.exe;
- «UPFILECMD» — загрузить файл на сервер;
- «DOWNFILECMD» — скачать файл с сервера.
Команду «ONLINECMD» бэкдор выполняет сразу после запуска: это сбор информации о системе с последующей отправкой на сервер.
Бэкдор имеет функцию закрепления через реестр:
После закрепления и сбора информации о системе происходит упаковка данных и их загрузка на управляющий сервер. Взаимодействие с сервером происходит через TCP-сокеты:
Перед отправкой данные дополняются некоторыми значениями, сжимаются ZLIB и кодируются в Base64.
В коде на рис. 55:
- Flag — значение, инициализируемое при старте бэкдора;
- Key — значение из конфигурационные изменения;
- Cmd — выполненная команда из конфигурационных переменных;
- Data — собранные данные.
После подготовки данных к их началу прибавляется их длина и разделитель, указанный в конфигурационных переменных, и они отправляются на сервер.
После отправки изначальных данных о системе бэкдор переходит в бесконечный цикл и ждет команду от сервера.
2.5. Утилиты
На сервере мы также обнаружили утилиты для lateral movement. Большинство из них опенсорсные, доступны на GitHub и изначально написаны на Python, но сконвертированы в PE. На сервере имелись:
- утилиты 18 для проверки наличия уязвимости MS17-010 и ее эксплуатации;
- утилита LaZagne 19 для сбора паролей;
- утилита 20 get_lsass для дампа паролей на x64-системах;
- NBTScan;
- утилита DomainInfo для сбора информации о домене.
В утилите для проверки MS17-010 есть небольшое изменение: злоумышленники добавили возможность проверять целую подсеть.
При этом сканирование сети будет идти не по порядку, что может ввести в заблуждение специалистов по безопасности, а также будут пропущены адреса, в последних октетах которых стоят 1 и 2, так как на них очень редко находятся компьютеры пользователей.
Еще одна интересная утилита, обнаруженная на сервере, позволяет собирать информацию о домене, в который включен целевой компьютер. Информация включает в себя:
- имя компьютера;
- имена пользователей компьютера, разбитые по группам;
- имя домена;
- имя группы, в которую входит текущий пользователь;
- имена групп, которые есть в домене;
- имена пользователей каждой группы.
Вся информация собирается легитимным способом с помощью API-функций библиотеки Netapi32.dll и сохраняется в папку с утилитой в формате XML.
Интересно, что утилита скомпилирована в 2014 году на версии Microsoft Visual Studio 2005 года и имеет PDB «e:\Visual Studio 2005\Projects\DomainInfo\Release\Domain05.pdb».
Заключение
Мы проанализировали инфраструктуру группы Winnti, и можем заключить, что активность в ней идет с начала 2019 года. В настоящее время эта инфраструктура только разрастается, что говорит об активных действиях Winnti. По нашим данным, группа уже скомпрометировала более 50 компьютеров, и некоторые из которых них могут послужить «плацдармом» для последующих, более серьезных атак. Группа добавила в свой арсенал несколько новых видов ВПО — SkinnyD, xDll, Python-бэкдор. Мы обнаружили несколько важных связей между нынешней инфраструктурой Winnti и другими крупными атаками, к которым в прошлом группа могла иметь непосредственное отношение. Резко возросшая активность группы также может быть связана с эпидемией коронавируса. Многие компании отправили своих сотрудников на удаленную работу, и при этом, по нашим данным 21, 80% сотрудников используют для работы домашние компьютеры. Получается, что многие работники находятся вне досягаемости корпоративных средств защиты и политик безопасности. Это делает их очень уязвимой мишенью.
Мы продолжаем отслеживать активность группы Winnti и не ожидаем, что группа будет снижать свою активность. Через некоторое время мы, возможно, столкнемся с новой атакой, подобной взлому CCleaner и ASUS.
IOCs
MD5 | SHA-1 | SHA-256 |
SkinnyD |
||
ec2377cbd3065b4d751a791a22bd302c | cdd78ccd274705f6c94b6640c968e90972597865 | 1d59968304f26651526a27dabd2780006ebd14925c9e00093acfa2443a223675 |
3fff50f9ea582848b8a5db05c88f526e | ea11d0d950481676282cee20c5eb24fc71878bcc | b5227a12185a6fef8bb99ac87eefba7787bbf75ff9c99bdc855a52539b805d2e |
55186de70b2d5587625749a12df8b607 | 858d866c5faa965fa9fbe41c8484a88fe0c612eb | d81ba465fe59e7d600f7ab0e8161246a5badd8ae2c3084f76442fb49f6585e95 |
Бэкдор xDll |
||
9f01cb61f342f599a013c3e19d359ab4 | b63bfdfb7f267e9fbf1c19be65093d857696f3b0 | 169c24f0ad3969fe99ff2bf205ead067222781a88d735378f41a9822c620a535 |
a2d552ed07ad15427f36d23da0f3a5d3 | 1858a80c8cff38d7871286a437c502233e027ab0 | 59759bbdfc1a37626d99dd260e298a1285ff006035ab83b7a37561e2884fd471 |
60ddb540da1aefee1e14f12578eafda8 | 8d16bc28cef6760ecf69543a14d29ba041307957 | 87a57f5bb976644fce146e62ee54f3e53096f37f24884d312ab92198eb1e6549 |
7a4c8e876af7d30206b851c01dbda734 | 4cff1af90c69cc123ecafe8081e3c486a890d500 | 06d20fb5894c291fca07021800e7e529371372abff6db310c0cbc100cf9ad9f9 |
3d760b6fc84571c928bed835863fc302 | adcf9ade7a4dc14b7bf656e86ea15766b843e3b6 | 8ac21275d0db7f3e990551f343e16ac105d6a513810ff71934de4855999cc9c5 |
278eb1f415d67da27b2e35ec35254684 | 7d30043210c8be2f642c449b92fe810a8c81f3f8 | a77613cbb7e914796433bf344614e0c469e32a1d52fbaf3df174bf521a3fc6b7 |
007f35e233a25877835955bdd5dd3660 | c1ec5a34b30990d9197c8010441c39d390109c75 | aa7b1d13a96f90bf539455f25ef138d5e09e27b7da6bf7f0c2e48821d98cf476 |
f2b37be311738a54aa5373f3a45bbde2 | 5e350480787827c19c7bee4833c91d72d0e032a0 | ece7f411ed1897304ca822b37d6480ff0b9505c8e307ef152fef8ed183b001c5 |
ShadowPad |
||
82118134e674fe403907c9b93c4dc7be | 5e29d9e4be79b5d1d7e606ba59a910cdd840203b | 2c2b1d9b34df9364fd91a6551890b0fdc58a7e681713c682221a674d1116089a |
d5cf8f4c8c908553d57872ab39742c75 | bc2ef2e2232bce6be5bb0333da6f101f45ca6277 | 319a06a39e5a1394710ec917f281a546d850386e80fdb56238456b68d5207a99 |
eccb14cb5a9f17356ad23aa61d358b11 | ef8951613ccca06f35b10f87dc11cf5543c727dd | 3ff1cf65dff231f05bd54df3fecad2545b159094ce59ce4bf4c668c904d2a5d7 |
349382749444e8f63e7f4dc0d8acf75d | 223f24eadc6e3a48d9cf9799e3e390a4a4015fdb | 63a74b66685fb94d685cfdfadd10917c805239ea079b9431bb5e9c8a58e0ea4b |
ed4481a9b50529bfa098c4c530e4198e | f6e4d7eb5e3a7ae4c94bb8626f79cc27b776d665 | 79f0e0a0f9c79a9206b9c2af222f026c384d3e0d761b0b42815453991bc05294 |
85b0b8ec05bd6be508b97fd397a9fc20 | 4e60f31e386ec4f478f04b48458e49ef781b04d0 | 831212d40c5120824508a645e54bf1b86f3be0cd19f87b8067e8b2fdea5c844e |
6e3ce4dc5f739c5ba7878dd4275bb1f5 | 09a3b4823a4d82b72888e185c8b23b13c22885c3 | 85b0ada2836c76cc49b886dfe59d950a073e9d6d761581075bf904238306e8c4 |
05751ea487d99aefea72d96a958140d7 | 2092a0557dcece4b4a32040b1bc09f9606aa1a1c | 9984d5b554b8dbfeffdb374e1c8eaf74af7109a0e6b924b00ad5b878d0188895 |
b9082bce17059a5789a8a092bbcdbe26 | a570deda43eb424cc3578ba00b4d42d40044bd00 | be7b1f7f0b73b77fc8fe4c109ae5a675cc9f3f6c16d3a1d7b2a9c6ba5a52ef9a |
14d546b1af2329b46c004b5ed37a3bc2 | 07ef26c53b62c4b38c4ff4b6186bda07a2ff40cb | bb28528e76649fb72e069b15a76f7c6ef520ae727408b3439856880a4488aa1f |
988ebf6fec017ec24f24427ac29cc525 | 0eec24a56d093e715047a626b911278a218927d2 | d7786504a09ae35a75818c686b6299870e91d646bdf20609fbee0d86c94a5ff5 |
e6aa938be4b70c79d297936887a1d9a3 | 8cf60c047ee8d742a7a91626535c64bc6d7b580e | ec801e3baa02c7ad36a9b06512ac106d30ab3a2207a7cb1e543fbd076995d43d |
964be19e477b57d85aceb7648e2c105d | 6c8ab56853218f28ac11c16b050ad589ea14bafe | 9843ceaca2b9173d3a1f9b24ba85180a40884dbf78dd7298b0c57008fa36e33d |
7bb16d5c48eb8179f8dafe306fc7e2c2 | 6bfdee276207d9b738b5e51f72e4852e3bda92d2 | f7231082241d9e332b45307e180f20e11041f59196715749c6a79a8be17fcdc0 |
Bisonal |
||
5e25dfdf79dfc0542a2db424b1196894 | 3bf3cd0f3817cf9481944536c0c65d8a809e6d4a | e114dd78f9acafcf7e93efe1c9e68a29e4fe52c4830431a4aa5457927bef7c5e |
Python-бэкдор |
||
c86099486519947a53689e1a0ac8326d | 817a88c07fe6d102961a994681c6674f89e2f28e | 77e4a1f6eb95b9763cf13803aba0058ac0bcada8ee8b8f746963f2db8ce2e21f |
get_lsass |
||
802312f75c4e4214eb7a638aecc48741 | af421b1f5a08499e130d24f448f6d79f7c76af2b | 8eb40114581fe9dc8d3da71ea407adfb871805902b72040d10f711a1de750bfd |
DomainInfo |
||
22dfdcddd4f4da04b9ef7d10b27d84bc | 619d32ea81e64d0af0a3e2a69f803cfe9941884b | aad5ca66cfd5f0d1ffd4cccaa199de844b4074d02544521afc757e075739c4b0 |
MS17-010 checker |
||
96c2d3af9e3c2216cd9c9342f82e6cf9 | 397f60d933a3aa030fac5c1255b2eb1944831fb2 | af3ec84a79dc58d0a449416b4cf8eb5f7fd39c2cf084f6b16ee05abe4a968f12 |
MS17-010 exploiter |
||
2b2ed478cde45a5a1fc23564b72d0dc8 | a7d6fbbfb2d9d77b8cf079102fb2940bbf968985 | e3768ad2b2e505453e64fe0f18cb47b2fe62d184ac7925f73e792d374ba630aa |
Файловые индикаторы
Сетевые индикаторы
SkinnyD
80.245.105.102
xDll
www.yandex2unitedstated.dns05.com
www.oseupdate.dns-dns.com
www.yandex2unitedstated.dynamic-dns.net
g00gle_jp.dynamic-dns.net
hotmail.pop-corps.com
www.yandex2unitedstated.dynamic-dns.net
ShadowPad
www.ncdle.net
www.ertufg.com
info.kavlabonline.com
ttareyice.jkub.com
unaecry.zzux.com
filename.onedumb.com
www.yandex2unitedstated.dns04.com
www.trendupdate.dns05.com
Bisonal
www.g00gleru.wikaba.com
Python backdoor
daum.pop-corps.com
Связанные домены
agent.my-homeip.net | freemusic.zzux.com | pop-corps.com |
alombok.yourtrap.com | gaiusjuliuscaesar.dynamicdns.biz | microsoft-update.pop-corps.com |
application.dns04.com | ggpage.jetos.com | microsoft_update.pop-corps.com |
arjuna.dynamicdns.biz | gkonsultan.mrslove.com | rama.longmusic.com |
arjuna.serveusers.com | gmarket.system-ns.org | redfish.misecure.com |
artoriapendragon.itemdb.com | googlewizard.ocry.com | regulations.vizvaz.com |
backup.myftp.info | hardenvscurry.my-router.de | robinhood.longmusic.com |
billythekid.x24hr.com | help.kavlabonline.com | server.serveusers.com |
bluecat.mefound.com | hosenw.ns02.info | serviceonline.otzo.com |
bradamante.longmusic.com | host.adobe-online.com | thebatfixed.zyns.com |
cindustry.faqserv.com | hpcloud.dynserv.org | tunnel.itsaol.com |
cuchulainn.mrbonus.com | ibarakidoji.mrbasic.com | uacmoscow.com |
daum.xxuz.com | indian.authorizeddns.us | update.wmiprvse.com |
depth.toh.info | inthefa.bigmoney.biz | videoservice.dnset.com |
describe.toh.info | jaguarman.longmusic.com | waswides.isasecret.com |
developman.ocry.com | jeannedarcarcher.zyns.com | webhost.2waky.com |
dnsdhcp.dhcp.biz | letstweet.toh.info | webmail_gov_mn.pop-corps.com |
economics.onemore1m.com | lezone.jetos.com | xindex.ocry.com |
ecoronavirus.almostmy.com | likeme.myddns.com | yandex.mrface.com |
email_gov_mn.pop-corps.com | medusa.americanunfinished.com | yandex.pop-corps.com |
ereshkigal.longmusic.com | modibest.sytes.net | www.alombok.yourtrap.com |
eshown.itemdb.com | movie2016.zzux.com | www.arjuna.dynamicdns.biz |
facegooglebook.mrbasic.com | msdn.ezua.com | www.asagamifujino.dns05.com |
fackb00k2us.dynamic-dns.net | myflbook.myz.info | www.billythekid.x24hr.com |
fergusmacroich.ddns.info | mynews.myftp.biz | www.bradamante.longmusic.com |
fornex.uacmoscow.com | nadvocacy.mrbasic.com | www.cuchulainn.mrbonus.com |
frankenstein.compress.to | nikolatesla.x24hr.com | www.daum.xxuz.com |
free2015.longmusic.com | notepc.ezua.com | www.david.got-game.org |
freedomain.otzo.com | npomail.ocry.com | www.facebook2us.dynamic-dns.net |
freemusic.xxuz.com | ntripoli.www1.biz | www.nthere.ourhobby.com |
www.facegooglebook.mrbasic.com | odanobunaga.dns04.com | www.odanobunaga.dns04.com |
www.fackb00k2us.dynamic-dns.net | point.linkpc.net | www.officescan_update.mypop3.org |
www.fergusmacroich.ddns.info | www.googlewizard.ocry.com | www.program.ddns.info |
www.frankenstein.compress.to | www.hosenw.ns02.info | www.robinhood.longmusic.com |
www.free2015.longmusic.com | www.ibarakidoji.mrbasic.com | www.siegfried.dynamic-dns.net |
www.freedomain.otzo.com | www.inthefa.bigmoney.biz | www.stade653.dns04.com |
www.g00gle_kr.dns05.com | www.jaguarman.longmusic.com | www.uacmoscow.com |
www.g00gle_mn.dynamic-dns.net | www.jeannedarcarcher.zyns.com | www.webhost.2waky.com |
www.g0ogle_mn.dynamic-dns.net | www.likeme.myddns.com | www.xindex.ocry.com |
www.ggpage.jetos.com | www.medusa.americanunfinished.com | www.yandex.mrface.com |
www.gkonsultan.mrslove.com | www.microsoft-update.pop-corps.com | www.yandex.pop-corps.com |
www.goog1e_kr.dns04.com | www.msdn.ezua.com | www.yandex2unitedstated.2waky.com |
www.nikolatesla.x24hr.com | ||
www.nmbthg.com | ||
www.npomail.ocry.com |
MITRE
ID | Name | Description |
Initial Access |
||
T1566.001 | Spear-phishing Attachment | Winnti рассылает фишинговые письма с вредоносными вложениями |
Execution |
||
T1204.002 | User Execution: Malicious File | Winnti пытается заставить пользователей запускать вредоносные вложения, доставляемые по электронной почте |
T1569.002 | System Services: Service Execution | Дроппер группы Winnti создаёт новую службу на зараженной машине для выполнения xDll |
Persistence |
||
T1547.001 | Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder | Winnti закрепляется на зараженной машине через ветку реестра с параметрами автозагрузки |
T1543.003 | Create or Modify System Process: Windows Service | Winnti закрепляется на зараженной машине через создание новых сервисов |
Defense evasion |
||
T1140 | Deobfuscate/Decode Files or Information | Winnti использует собственный алгоритм для дешифровки полезной нагрузки |
T1055 | Process Injection | ShadowPad инжекстится в процесс wmplayer.exe |
T1574.002 | Hijack Execution Flow: DLL Side-Loading | Winnti использует легитимные утилиты для загрузки Shadowpad через DLL Side-Loading |
T1564.001 | Hide Artifacts: Hidden Files and Directories | В некоторых случаях Winnti хранит свое ВПО в скрытых папках по пути «C:\ProgramData» |
T1027 | Obfuscated Files or Information | Группа Winnti использует различные обфускторы для своего ВПО, например VMProtect |
T027.001 | Software Packing | Winnti использует собственный упаковщик для Shadowpad |
Credential Access |
||
T1555 | Credentials from Password Stores | Winnti использует утилиту LaZagne для получения паролей из различных хранилищ |
T1003.001 | OS Credential Dumping: LSASS Memory | Winnti использует утилиту get_lsass для получения паролей |
Discovery |
||
T1087.001 | Credentials from Password Stores | Winnti использует утилиту LaZagne для получения паролей из различных хранилищ |
T1087.002 | Account Discovery: Domain Account | Группа Winnti собирает информацию о пользователях домена |
T1069.002 | Permission Groups Discovery: Domain Groups | Группа Winnti собирает информацию о доменных группах |
Collection |
||
T1056.001 | Input Capture: Keylogging | В ShadowPad имеется модуль keylogger |
T1113 | Screen Capture | В ShadowPad имеется модуль делающий скриншоты |
Command And Control |
||
T1043 | Commonly Used Port | ВПО группы Winnti использует стандартные порты для соединения с С2: 80, 443 |
T1071.001 | Application Layer Protocol: Web Protocols | ВПО группы Winnti использует стандартные протоколы для соединения с С2: HTTP и HTTPS |
T1095 | Non-Application Layer Protoco | ShadowPad моет использовать UDP или TCP для соединения с С2 |
T1113 | Screen Capture | В ShadowPad имеется модуль делающий скриншоты |
- twitter.com/Vishnyak0v/status/1239908264831311872
- securelist.com/winnti-more-than-just-a-game/37029/
- securelist.com/shadowpad-in-corporate-networks/81432/
- blog.avast.com/update-ccleaner-attackers-entered-via-teamviewer
- securelist.com/operation-shadowhammer-a-high-profile-supply-chain-attack/90380/
- www.welivesecurity.com/2020/01/31/winnti-group-targeting-universities-hong-kong/
- Период запроса колебался от нескольких дней до нескольких недель
- blog.avast.com/update-ccleaner-attackers-entered-via-teamviewe
- www.slideshare.net/codeblue_jp/cb19-cyber-threat-landscape-in-japan-revealing-threat-in-the-shadow-by-chi-en-shen-ashley- oleg-bondarenko
- www.ptsecurity.com/upload/corporate/ru-ru/analytics/Operation-Taskmasters-2019-rus.pdf
- www.proofpoint.com/us/threat-insight/post/APT-targets-russia-belarus-zerot-plugx
- www.proofpoint.com/us/threat-insight/post/nettraveler-apt-targets-russian-european-interests
- jsac.jpcert.or.jp/archive/2020/pdf/JSAC2020_3_takai_jp.pdf
- unit42.paloaltonetworks.com/unit42-bisonal-malware-used-attacks-russia-south-korea/
- blog.talosintelligence.com/2020/03/bisonal-10-years-of-play.html
- attack.mitre.org/techniques/T1037/
- media.kasperskycontenthub.com/wp-content/uploads/sites/43/2017/08/07172148/ShadowPad_technical_description_PDF.pdf
- github.com/worawit/MS17-010/blob/master/checker.py
- github.com/AlessandroZ/LaZagne
- github.com/3gstudent/Homework-of-C-Language/blob/master/sekurlsa-wdigest.cpp
- www.ptsecurity.com/ru-ru/research/analytics/remote-work-in-russia-and-the-cis-2020/