Недавно мы обнаружили множество вредоносных программ-воров, таких как Remcos, DcRAT, AgentTesla, VIPKeyLoggerи т.д., распространяемых посредством стеганографической кампании. Если отследить истоки, то кампания существует уже некоторое время, но давно не активна. Интерес к ней делает организация атаки.
В этом блоге мы обсудим распространение Remcos и AsyncRAT через наблюдаемую нами кампанию.
Инфекция-Цепочка:
Цепочка заражения начинается с фишинг Электронное письмо, содержащее файл Excel, который эксплуатирует уязвимость Excel и отправляет HTTP-запрос на загрузку файла .hta. Файл .hta, содержащий код .vbs, создает пакетный файл, который подключается к URL-адресу для вставки и загружает другой обфусцированный скрипт .vbs. Скрипт .vbs загружает файл .jpg, содержащий дополнительный файл второго этапа в кодировке Base64. полезная нагрузка Файл (вредоносный загрузчик), который декодируется, и функция VAI вызывается через скрипт. Файл загрузчика, получающий в качестве аргументов URL и имя целевого процесса, загружает файл в обратном коде base64, который после декодирования даёт нам финальную полезную нагрузку.

Фишинговое письмо: Первоначальная точка атаки — фишинговое письмо, содержащее вредоносный документ Excel, который маскируется под настоящий файл, обманным путем заставляя пользователей открыть вложение, содержащее вредоносный код.

Документ Excel, содержащий вредоносный пакет ole:
Файл представляет собой эксплойт, использующий уязвимость CVE-2017-0199. Он содержит встроенный объект ссылки OLE2, который отправляет http-запрос при открытии файла.

.HTA-скрипт
Файл .hta содержит код VBS (рис. 4), который записывает пакетный файл, который подключается к URL-адресу для вставки и загружает файл VBS, представляющий собой скрипт с большим куском бесполезного кода (рис. 5).

Сценарий пишет VBS-скрипт2:

После удаления ненужного кода и упрощения мы получим скрипт в кодировке base-64, который будет запускаться с помощью PowerShell (Рисунок 6).


Обратите внимание, что здесь при вызове метода VAI в первом аргументе передается URL, который хранится в переменной $deject, а пятый аргумент также важен, что мы обсудим позже, при обсуждении нашей второй полезной нагрузки — инжектора dll.
Аналогичным образом мы обнаружили, AsyncRAT При распространении начальная цепочка в основном будет той же, но нам не удалось её отследить. В случае AsyncRAT скрипт VBS маскируется под prnmngr.vbs, обманывая пользователя и заставляя его думать, что это настоящий скрипт, который добавляет, удаляет и перечисляет принтеры или подключения к принтерам, а также устанавливает и отображает принтер по умолчанию. Однако между ними вставлен небольшой фрагмент вредоносного кода, чтобы избежать подозрений.

Ниже представлен фрагмент кода, который загружает изображение JPG с жестко заданного URL-адреса [hxxps://watchonlinehotvideos[.]top/omfg[.]jpg], аналогично тому, как описано в предыдущем случае.


Так же, как мы записали для предыдущего скрипта, здесь первый переданный аргумент — это наш обратный URL в переменной $restoredtext, и выглядит как бессмысленное значение/случайная строка, передаваемая в других аргументах, и мы снова будем иметь в виду пятый аргумент.
В обоих случаях образец использует стеганографию: загруженный JPG-файл (рис. 11) маскируется под безобидное изображение, содержащее вредоносный код в кодировке Base64. Как видно на рис. 7, он проверяет маркер < > и < > чтобы получить весь вредоносный файл и затем расшифровать его.

Оба файла представляют собой файлы VB.NET dll с внутренним именем «Microsoft.Win32.TaskScheduler.dll», возможно, для того, чтобы обмануть пользователей, заставив их думать, что это Microsoft dll.

Обе DLL-библиотеки обфусцированы, но на разных уровнях. В той, что мы получили от кампании Remco, даже некоторые общие имена функций .NET обфусцированы, но в других случаях некоторые из них были прямыми. Однако код DLL был одинаковым и выполнял те же функции.
Код DLL обфусцирован, но мы видим передаваемые ему аргументы. Злоумышленник вызвал метод VAI с 15 аргументами. В зависимости от переданного аргумента метод будет обладать такими возможностями, как загрузка другого исполняемого файла вредоносного ПО путём подмены процесса, создание персистентности и т. д.

Первый аргумент, передаваемый в скрипт (Рис.7. /Рис.10.) при вызове метода, — это наш URL, сохраненный в переменной $deject/$restoredtext, который передается здесь как QBXtX.
Значение persistencia — это значение null/неясность, а другое переданное значение декодируется в 1, которое передаётся методу Delegate11.smethod_0, который возвращает логическое значение. Таким образом, итоговое значение будет равно 0, и условие не будет выполнено. Следовательно, не будет активности, необходимой для сохранения персистентности.

Обратный URL, переданный в аргументе QBXtX, хранится в «text5» в обратном формате и с помощью веб-клиента загружает данные в строку «text6», представляющую собой данные, закодированные в формате base64 в обратном формате (рис. 14). Это наша финальная полезная нагрузка, которая вместе с путём «C:\Windows\SysWOW64» (декодированным из Class219.smethod(10577)) к «caspol.exe» / «msbuild.exe» (пятый аргумент) передаётся в качестве аргумента функции «Tools.Ande». Эта функция выполняет очистку процесса с помощью целевого процесса, указанного в пятом аргументе (рис. 15).

Как показано выше, новый процесс создаётся с помощью API CreateProcess в приостановленном состоянии. Отмена отображения вновь созданного процесса выполняется с помощью NtUnmapViewOfSection, а выделение памяти осуществляется с помощью VirtualAllocEx, куда затем внедряется вредоносный код. С помощью SetThreadContext добавляется точка входа во внедрённый код, и, наконец, процесс возобновляется с помощью ResumeThread.
В нашем случае окончательной полученной полезной нагрузкой является образец Remcos и AsyncRAT (рис. 16).

Конечная полезная нагрузка: Remcos
Remcos всегда был на передовой в мире вредоносного ПО, с момента своего появления в 2016 году. С версии 1.0 и до самой последней, Remcos сохраняет свою актуальность благодаря своей ключевой функции управления и контроля. Начав с инструмента с закрытым исходным кодом, который позиционировался как программа для удалённого управления и наблюдения, Remcos прошёл долгий путь.
У Remco обычно есть блок настроек с набором конфигураций, который зашифрован и сохранён в разделе ресурсов под названием «SETTINGS». Он расшифровывается при запуске и инициализирует Remco с помощью этого блока настроек.


Remcos подключается к C2 для связи с командным сервером и ожидает команд от злоумышленника. Ключевые данные из извлеченных данных конфигурации следующие:
C2: interestthingsforkissinggirlwithloves[.]duckdns[.]org
Имя файла: Remcos.exe
Имя ботнета: zyno007
Создан мьютекс: Rmc-IB3RDF
Кроме того, в некоторых случаях Remcos также замечен в использовании вредоносного ПО, такого как AgentTesla.
Конечная полезная нагрузка: AsyncRAT
AsyncRAT — это троян удаленного доступа (RAT), написанный на языке C#, который предлагает стандартные функции RAT и кражи информации, включая возможности регистрации нажатий клавиш, выполнения/внедрения дополнительной полезной нагрузки, управления и контроля и т. д.
Возможности бэкдора зависят от встроенной конфигурации. Как видно на рисунке ниже (Рис. 19), выполнение начинается с функции De_lay, которая определяет длительность периода ожидания, что в основном делается для обхода песочниц.

Функция InitializeSettings() здесь получает доступ ко всем жестко запрограммированным конфигурациям, зашифрованным с помощью AES.

Функция verifyhash() (Рис. 20) в конце проверяет корректность конфигураций, используя сертификат и подпись сервера. Ключевые данные из извлечённых данных конфигурации следующие:
Порты: 7878
Хосты:148[.]113[.]214[.]176
Версия: 1.0.7
MTX: asasasas2242dqwe
Pastebin: null
Группа:Диама
Значение Pastebin используется API «WebClient.DownloadString» (рис. 21), который может загружать дополнительные ресурсы и другую полезную нагрузку с Pastebin или других доменов. В нашем случае оно равно null, поэтому хосты и порт выбираются из конфигурации и используется сокетное соединение для взаимодействия с C2.

IOCS:
| МОК Ремкоса |
| 9d66405aebff0080cc5d28a1684d501fa7e183dc8b6340475fc06845509cb466 |
| 42813b301da721c34ca1aca29ce2e4c7d71ae580b519a3332a4ba71870b6a58e |
| f67c6341bfe37f5b05c00a0dda738f472fdabd6ea94ca8dc761f57f11ce12036 |
| aed291c023c3514fb97b4e08e291e03f52de91a2a8d311491b4ab8299db0aa0f |
| faed55ed0102b1b2e3d853e8633abecbb9cec6a5f41c630097d8eaeefafba060 |
| C2: interestthingsforkissinggirlwithloves[.]duckdns[.]org |
| C2: freebirdkissingonmylipswithnicefeelings[.]duckdns[.]org |
| AsyncRAT |
| b8fc29c02005c84131f34de083c2e81cdf615ff405877f9e73400bf35513c053 |
| 2d4ab87f9ea104075d372f4c211b1fb89adec60208d370b8fb2d748e1a73186c |
| b2e8f720740bbd46f6ae3f450f265ace1044fe232141fbd84f269eafeb290812 |
| a582e7e5b3ac37895e7cf484aaa8ea477deb90d99b47b2d9bfc018c604573889 |
| C2: 148[.]113[.]214[.]176 |
Обнаружения:
Backdoor.Remcos
Бэкдор.MsilFC.S13564499
Trojan.loaderCiR
TTP для атаки MITRE:
| тактика | Идентификатор техники | Имя |
| Первоначальный доступ (TA0001) | T1566 | Фишинг |
| Исполнение (TA0002) |
T1204 |
Пользовательское исполнение |
| Устойчивость (TA0003) | T1547.001 | Ключи запуска реестра/Папка автозагрузки |
| Уклонение от защиты (TA0005) | T1055 | Инъекция процесса |
| T1027 | Замаскированные файлы или информация | |
| T1036.004 | Маскировка задачи или услуги | |
| Открытие (TA0007) | T1614 | Обнаружение местоположения системы |
| Эксфильтрация (TA0010) | T1041 | Эксфильтрация через канал командования и управления |
| Командование и управление (TA0011) | T1001.0012 | стеганография |
Вывод:
В этом блоге мы обсудили всю цепочку атаки недавней стеганографической кампании, в ходе которой безобидный на вид JPG-файл оказался содержащим DLL-инжектор с вредоносными функциями. Мы также изучили, как каждая вредоносная нагрузка была тщательно загружена и выполнена с высокой методичностью. Атака в значительной степени опиралась на сложные методы маскировки, которые часто могут обмануть даже опытных пользователей. Как это часто бывает, цепочка событий началась с фишингового письма, содержащего эксплойт, который через несколько этапов в конечном итоге развернул RemcosRAT/AsyncRAT (с потенциалом распространения других RAT или бэкдоров аналогичным образом). В данном случае командный сервер имеет возможность развернуть дополнительные полезные нагрузки, что ещё больше скомпрометирует систему жертвы.
Эта кампания подчеркивает исключительную важность сохранения бдительности и внедрения надежных методов кибербезопасности для защиты как нашей безопасности, так и целостности наших данных.
Автор:
Кирти Кшатрия
Соавтор:
Манодж Кумар Ниламегам



