Какие методы помогают обнаружить связанную сетевую инфраструктуру APT-группировок? Рассказываем на примере реального свежего случая из нашей исследовательской практики.
Отправная точка исследования
Иногда вся цепочка исследования начинается с одного артефакта. В нашем случае таким отправным индикатором стал C2-сервер MeshAgent — https://telecom-connect.cloud/agent.ashx
MeshAgent — ПО для удалённого управления устройствами с открытым исходным кодом, входящее в решение MeshCentral.
Уже на этом этапе становится понятно, что классического поиска недостаточно: инфраструктура может быстро ротироваться, а отдельные узлы — мигрировать между провайдерами и ASN. В таком случае стоит обращать внимание на специфичные HTTP-заголовки в запросах, а также метаданные самих запросов.

Поиск по body hash
Для примера возьмём значение хэша тела HTTP-ответа и посмотрим результаты поиска в ZoomEye:

Такой запрос даст чрезвычайно широкую выборку — более 935 тысяч сетевых ресурсов. Поэтому поиск только по одному сетевому артефакту полезная вещь, как стартовая гипотеза, но однозначных и исчерпывающих результатов дать не сможет.
Сокращаем выборку
Заголовки HTTP-запросов могут быть характерным атрибутом компонентов всей сетевой инфраструктуры. В примере таким является ‘Content-Security-Policy’:
‘Content-Security-Policy: default-src 'none'; font-src 'self' fonts.gstatic.com data:; script-src 'self' 'unsafe-inline' ajax.cloudflare.com; connect-src 'self' wss://’
Данный заголовок содержит параметр ‘connect-src’ c указанием адреса командного центра MeshAgent. Именно такие технические детали позволяют перейти от массовой выборки к более релевантному набору узлов. Так, комбинация фильтров http.body_hash и http.header сократила результат и позволила найти схожие ресурсы с доменом telecom-connect.cloud.

Таким образом, мы можем уже утверждать, что у нас есть целая сетевая инфраструктура командных центров MeshAgent, а не отдельный сетевой IoC.
Альтернативные pivots: iconhash и header_hash
Если же у нас нет специфичных заголовков, а поиск по body_hash даёт слишком много совпадений, полезной альтернативой становятся анализ хэшей иконок (favicon.ico) и хэшей заголовков. Связка iconhash + http.header позволяет находить похожие панели и узлы даже тогда, когда часть контента изменилась. Дополнительно можно использовать и http.header_hash — особенно если ранее уже были подтверждены связанные домены и IP-адреса. В нашем исследовании это позволило найти ещё несколько С2-серверов MeshAgent:
-
217.60.5.118 -
193.43.72.164
ETag и ASN как способ расширения инфраструктуры
Отдельного внимания заслуживает ETag.
ETag (Entity Tag) — заголовок HTTP-запросов, представляющий собой уникальный идентификатор конкретной версии ресурса на сервере. Он позволяет оптимизировать кеширование, сокращая количество необходимых запросов к серверу с целью экономии пропускной способности.
Сам по себе этот артефакт встречается не всегда и часто даёт избыточную выборку, однако в сочетании с ASN он становится полезным pivot-механизмом для расширения анализируемой инфраструктуры. В рассматриваемом кейсе интерес представлял фильтр вида:
http.header="9-0gXL1ngzMqISxa6S1zx3F4wtLyg" && asn="56971" && http.body_hash!="9d1ead73e678fa2f51a70a933b0bf017"

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

Данный процесс должен быть регулярным для своевременного реагирования на потенциально возможную вредоносную активность в инфраструктуре, которую мы защищаем. Для этого в первую очередь необходимо выстроить базовые и вспомогательные процессы Threat Intelligence. После этого становится возможным улучшать и масштабировать экспертизу в данной области.
Индикаторы компрометации:
IP:
-
95.182.98[.]229
-
151.242.69[.]96
-
217.60.60[.]212
-
217.60.5[.]118
-
193.43.72[.]164
-
46.8.71[.]104
-
45.156.25[.]38
Domains:
-
telecom-connect[.]cloud
-
world-update[.]online
-
tigelili[.]sbs
-
ms-nas[.]cloud
-
cloud-solution[.]online
-
cloud-home[.]casa
URL:
-
hxxps[://]telecom-connect[.]cloud/agent.ashx
-
hxxp[://]ms-nas[.]cloud:443/agent.ashx
SHA-256:
-
MeshAgent:
-
e0cc6c4dd8db3940e031d63b489fdab8c0114ae0114f7deeef48964ab764f247
-
41e149610f57d7d2f52afb535d481e8a86b699eed4b5d590eeab3b4cfb68e802
-
576973f69e0ba2049bd293060636c98017eccd32d0f1b2d0470a8be1a4b1abbf
-
84287297c87e9e5390f696243d0c7861884709d2724fdc8a0788297b4f422026
-
4c8851025912faa085ba863a94b8c8792d90fc3e7f222cbb11b5374b9a291341
-
-
ZIP-архивы:
-
4dd24a249561d2a5c6f95e7d02905b3792f55b64564488a5b61558ee687135db
-
8cf62f8547996008c4b84acc772690eb5d9d26c0102b651f7430180e83b1a913
-
fee06efb7a1c7319fa71d01efa5a28f73f69c944abd4865543353e790990fcec
-
-
MSH-файлы:
-
3f121afcd4440dd531c64a01e14f8788ded6cc4544100d501ff6b2a8ad297a4b
-
fe3c4edfb36fa4a3a866903cac594a709d7bb4994b067cc9667873fc6c0b088d
-
ссылка на оригинал статьи https://habr.com/ru/articles/1023390/