TriangleDB Implant IOCs

security

Исследуя операцию "Триангуляция", Kaspersky Lab поставили перед собой цель восстановить как можно больше частей цепочки эксплуатации. На достижение этой цели ушло около полугода, и после того, как сбор цепочки был завершен, Kaspersky приступили к углубленному анализу обнаруженных этапов.

Имплантат, который Kaspersky назвали TriangleDB, развертывается после того, как злоумышленники получают привилегии root на целевом iOS-устройстве, используя уязвимость ядра. Он развертывается в памяти, что означает, что все следы имплантата теряются при перезагрузке устройства. Поэтому, если жертва перезагрузит свое устройство, злоумышленникам придется заразить его заново, отправив iMessage с вредоносным вложением, тем самым запустив всю цепочку эксплуатации заново. Если перезагрузка не происходит, имплантат удаляется через 30 дней, если злоумышленники не продлят этот срок.

TriangleDB

Имплантат TriangleDB закодирован с использованием Objective-C, языка программирования, который сохраняет имена членов и методов, назначенных разработчиком. В бинарном файле имплантата имена методов не обфусцированы, однако имена членов класса представляют собой неинформативные аббревиатуры, что затрудняет угадывание их значения:

Примеры методов класса Примеры членов класса
-[CRConfig populateWithFieldsMacOSOnly] NSString *pubKI;
-[CRConfig populateWithSysInfo] NSData *pubK;
-[CRConfig extendFor:] signed __int64 iDa;
-[CRConfig getCInfoForDump] signed __int64 uD;
+[CRConfig sharedInstance] NSString *deN;
+[CRConfig unmungeHexString:] NSSTring *prT;
-[CRConfig init] NSString *seN;
-[CRConfig getBuildArchitecture] NSString *uDI;
-[CRConfig cLS] NSString *iME;
-[CRConfig setVersion] NSString *meI;
-[CRConfig swapLpServerType] NSString *osV;
-[CRConfig setLpServerType:] CRPwrInfo *pwI;

В некоторых случаях можно догадаться, что означают аббревиатуры. Например, osV - это версия iOS, а iME содержит IMEI устройства.

Строки в имплантате имеют HEX-кодировку и зашифрованы с помощью свертки XOR

После запуска имплантат начинает взаимодействовать с сервером C2, используя для обмена данными библиотеку Protobuf. Конфигурация имплантата содержит два сервера: основной и резервный (содержатся в полях конфигурации lS и lSf). Обычно имплантат использует основной сервер, а в случае ошибки переключается на резервный сервер, вызывая метод -[CRConfig swapLpServerType:].

Кроме того, отправляемые и получаемые сообщения шифруются с помощью симметричной (3DES) и асимметричной (RSA) криптографии. Все сообщения обмениваются по протоколу HTTPS в POST-запросах, при этом cookie содержит ключ g и значение, представляющее собой строку цифр из параметра конфигурации pubKI.

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

Сервер C2 отвечает на сообщения сердцебиения командами. Команды передаются в виде сообщений Protobuf, имена типов которых начинаются с CRX. Смысл этих имен неясен: например, команда, перечисляющая каталоги, называется CRXShowTables, а изменение адресов C2-сервера обрабатывается командой CRXConfigureDBServer. Всего в проанализированном нами импланте имеется 24 команды, предназначенные для:

  • Взаимодействия с файловой системой (создание, изменение, эксфильтрация и удаление файлов);
  • Взаимодействия с процессами (перечисление и завершение процессов);
  • сброс элементов связки ключей жертвы, что может быть полезно для сбора учетных данных жертвы;
  • Мониторинг геолокации жертвы;
  • Запуск дополнительных модулей, которые представляют собой исполняемые файлы Mach-O, загружаемые имплантом. Эти исполняемые файлы загружаются рефлексивно, а их двоичные файлы хранятся только в памяти.

Indicators of Compromise

MD5

  • 063db86f015fe99fdd821b251f14446d

SHA1

  • 1a321b77be6a523ddde4661a5725043aba0f037f

SHA256

  • fd9e97cfb55f9cfb5d3e1388f712edd952d902f23a583826ebe55e9e322f730f
Комментарии: 0