Содержание
Введение
В октябре 2023 года команда Positive Technologies по расследованию инцидентов PT CSIRT обнаружила компрометацию одной энергетической компании с использованием трояна Decoy Dog. Согласно расследованию PT CSIRT, Decoy Dog активно используется в атаках на российские компании и правительственные организации по меньшей мере с сентября 2022 года. Ранее об этом трояне в своих исследованиях рассказывали НКЦКИ, Infoblox, CyberSquatting и Solar 4RAYS.
Однако образец, обнаруженный нами на хосте жертвы, представлял собой новую модификацию троянского ПО, которую злоумышленники доработали, усложнив его обнаружение и анализ.
По имеющимся у нас данным, группа Hellhounds, стоящая за использованием Decoy Dog, в своих атаках нацелена исключительно на организации на территории Российской Федерации. Примечательно, что атакующие были замечены за использованием управляющего сервера maxpatrol[.]net, так они маскировались под продукты компании Positive Technologies серии MaxPatrol. Продукты Positive Technologies содержат все индикаторы компрометации из данного материала в своих базах.
First Stage (Decoy Dog Loader)
Расследуя инцидент, мы обнаружили исполняемый файл /usr/bin/dcrond размером 9 КБ. Файл был защищен модифицированной версией упаковщика UPX с измененной сигнатурой 37 13 03 00 вместо UPX!. На момент расследования только один антивирусный движок детектировал пакер, а некоторые образцы и вовсе не детектировались ни одним из движков. Для обнаружения модифицированного UPX можно использовать публичное YARA-правило из исследования JPCERT/CC.
В отличие от обычного UPX эта модификация распаковывает не исполняемый файл, а шеллкод, полностью написанный на языке ассемблера и использующий только системные вызовы Linux. После модифицированного UPX-заголовка расположена зашифрованная конфигурация, которая хранит в себе путь до зашифрованного файла с основной нагрузкой, а после конфигурации находится сжатый шеллкод:
Загрузчик работает в системе и маскируется под легитимный сервис cron. Также мы обнаружили образцы, маскирующиеся под легитимный сервис irqbalance, а также под легитимную библиотеку lib7.so.
[Unit] Description=Daemon to execute scheduled commands Documentation=man:dcrond(8) [Service] Type=forking ExecStart=/usr/bin/dcrond Restart=always
В атаках 2022 года образец первой версии маскировали под сервис atd и сервис systemd-readahead-stop.service. Образцы размещали в директории /usr/bin/atd или /usr/bin/container:
[Unit] Description=Deferred execution scheduler Documentation=man:atd(8) [Service] Type=forking ExecStart=/usr/bin/atd Restart=always [Install] WantedBy=multi-user.target
[Unit] Description= systemd-redhead is a service that collects disk usage patterns at boot time. systemd-readahead-stop.service is a service that replays this access data collected at the subsequent boot. [Service] Type=forking ExecStart=/usr/bin/container Restart=always [Install] WantedBy=multi-user.target
Загрузчик сперва проверяет, не находится ли он под отладкой. Для этого он читает /proc/self/status и проверяет, что TracerPid равен 0. Если же TracerPid отличен от 0, то он подменяет себя на /bin/sh с помощью системного вызова execve.
Убедившись, что он не находится под отладкой, загрузчик пытается по порядку прочитать идентификаторы скомпрометированного хоста из следующих файлов и считает MD5-хеш от первого существующего в файловой системе файла:
- /etc/machine-id;
- /var/lib/dbus/machine-id;
- /var/db/dbus/machine-id;
- /usr/local/etc/machine-id;
- /sys/class/dmi/id/product_uuid;
- /sys/class/dmi/id/board_serial;
- /etc/hostid;
- /proc/self/cgroup.
Полученный хеш MD5 загрузчик использует как ключ для расшифровки конфигурации, а затем и основной нагрузки, которые зашифрованы криптографическим алгоритмом CLEFIA с 128-битным ключом.
На этом этапе исследования стало понятно, что образец ориентирован на работу на конкретном хосте и что у злоумышленников был предварительный доступ к данному хосту для получения идентификатора и добавления его в конфигурацию.
Second Stage (Decoy Dog)
Основная нагрузка исследуемого образца расположена в файловой системе по пути /usr/share/misc/pcie.cache. Расшифрованная нагрузка является модифицированной версией Pupy RAT, которую исследователи называют Decoy Dog.
Pupy RAT — это кросс-платформенный многофункциональный бэкдор и инструмент постэксплуатации с открытым исходным кодом, написанный в основном на Python. Pupy поддерживает Windows и Linux, а также ограниченно Android и macOS. Он использует принцип выполнения «все в памяти» и оставляет минимум следов в системе. Pupy RAT может держать связь с управляющим сервером, используя несколько транспортов, мигрировать в процессы с помощью техники reflective injection и удаленно загружать Python-пакеты (.py, .pyc) и скомпилированные расширения Python C (.pyd, .so) из памяти.
В то время как Pupy RAT не разрабатывается уже два года, Decoy Dog находится в активной разработке. Основные отличия от Pupy RAT:
- Клиент обновлен с устаревшего Python 2.7 до Python 3.8. Соответственно, весь код был переписан под Python 3.8. Вероятно, поэтому количество модулей сократилось, остались лишь те, что реально используются;
- Добавлен ряд новых функций, связанных с внедрением кода в виртуальную машину Java;
- Были добавлены новые транспорты:
- — BOSH (Bidirectional-streams Over Synchronous HTTP со связкой ECPV и RC4) заменил транспорт HTTP;
- — lc4 (связка ECPV и RC4 для локального клиента/сервера с использованием TCP);
- — lws4 (связка ECPV и RC4 для локального клиента/сервера с использованием протокола WebSockets);
- — ws4 (то же, что и оригинальный ws, только вместо связки RSA и AES используется связка ECPV и RC4);
- — dfws4 (то же, что и оригинальный dfws, только вместо связки RSA и AES используется связка ECPV и RC4);
- Добавлена возможность загружать динамический конфигурационный файл и сохранять его в зашифрованном виде на диске;
- Добавлен новый канал соединения (launcher) под названием special (локальное соединение с помощью IP-адреса и порта или файлового сокета);
- Повышена отказоустойчивость при помощи резервных управляющих серверов с указанием конкретных доменов и с использованием DGA.
Исследуемый образец использовал управляющий сервер z-uid.lez2yae2.dynamic-dns[.]net, который находился в конфигурации, встроенной в исполняемый файл. Фрагмент конфигурации:
Также троянская программа получает динамическую (актуальную) конфигурацию из файла /var/lib/misc/mpci.bin, который зашифрован криптографическим алгоритмом AES в режиме счетчика (CTR) с 128-битным ключом (который, в свою очередь, зашифрован на эллиптической кривой brainpoolP384r1), и содержит новые управляющие серверы:
- m-srv.daily-share.ns3[.]name;
- f-share.duckdns[.]org.
Открытый ключ для расшифровки ключа AES хранится в конфигурации внутри исполняемого файла.
Также в конфигурации исследуемого образца содержится один скриплет, который запускается при каждом запуске бэкдора. Данный скриплет называется telemetry и служит для отправки телеметрии (информации о зараженной системе) в социальную сеть mindly.social (на основе открытого движка Mastodon) через API сервиса. Содержимое телеметрии:
{ 'cid': <идентификатор бэкдора из конфигурации>, 'user': <имя пользователя>, 'hostname': <имя хоста>, 'node': <MAC-адрес в виде 48-битного числа>, 'platform': <платформа>, 'node': <MAC-адрес в виде 48-битного числа>, 'pid': <идентификатор процесса бэкдора>, 'ppid': <идентификатор родительского процесса бэкдора>, 'cwd': <рабочая директория>, 'proc_arch': <архитектура запущенного процесса бэкдора>, 'exec_path': <путь к запущенному процессу бэкдора>, 'uac_lvl': <уровень защиты UAC>, 'intgty_lvl': <уровень целостности процесса бэкдора>, 'machine_key': <MD5-хеш от идентификатора системы>, 'proxy': <строка подключения к прокси-серверу по умолчанию>, 'external_ip': <внешний IP-адрес в виде 32-битного числа>, 'internal_ip': <внутренний IP-адрес в виде 32-битного числа>, 'boottime': <дата и время запуска машины (Unix time)> }
Передаваемые данные шифруются таким же образом, как и файл динамической конфигурации, с использованием того же открытого ключа. Поэтому даже при перехвате переданных данных, не зная закрытого ключа, расшифровать их не получится.
Отправка данных осуществляется с помощью API-ключа, который хранится в коде в открытом виде. Но злоумышленники ограничили область доступа API-ключа только записью данных. Таким образом, даже при получении API-ключа, прочитать какие-либо данные невозможно.
Однако нам все же удалось установить, что телеметрия с зараженных хостов отправляется в аккаунт с юзернеймом @lahat, имя которого и дало название исследованию.
Помимо основного канала управления, исследуемый образец также выступал в качестве сервера, используя дополнительный локальный канал, который читает данные из файлового сокета /var/run/ctl.socket.
В Decoy Dog предусмотрен механизм генерации DGA-имен при потере связи по основному каналу управления.
Если в конфигурации включена опция bootstrap-domains, то для генерации используется один из основных доменов. В противном случае генерируется поддомен для одного из указанных в конфигурации доменов верхнего уровня или домен для одной из указанных зон (по умолчанию используется домен верхнего уровня dynamic-dns.net). В конфигурации исследуемого образца выбраны домены duckdns.org и dynamic-dns.net.
Резервный домен генерируется как первая половина шестнадцатеричного представления MD5-хеша от строки с текущей датой в формате <год><месяц><день> и открытого ключа, используемого при шифровании коммуникации с управляющим сервером.
Затем от получившегося домена (или одного из основных доменов, если включена опция bootstrap-domains) считается MD5-хеш, а затем от первой половины шестнадцатеричного представления берется по два символа и дописывается слева к домену. Таким образом получается набор из девяти доменов, к которым пытается подключиться ВПО. Например, для домена m-srv.daily-share.ns3[.]name получается восемь дополнительных доменов:
- 6cm-srv.daily-share.ns3[.]name
- 78m-srv.daily-share.ns3[.]name
- 7fm-srv.daily-share.ns3[.]name
- b1m-srv.daily-share.ns3[.]name
- 98m-srv.daily-share.ns3[.]name
- d5m-srv.daily-share.ns3[.]name
- 2fm-srv.daily-share.ns3[.]name
- 08m-srv.daily-share.ns3[.]name
Домены генерируются следующим кодом:
import datetime, hashlib WELL_KNOWN_ZONES = ('dynamic-dns.net', ) def make_emergency_related_domains(domain): domain_bytes = domain if isinstance(domain_bytes, bytes): domain = domain.decode() else: domain_bytes = domain.encode() prefix_hash = hashlib.md5(domain_bytes).hexdigest()[:16] for x in range(len(prefix_hash) // 2): yield prefix_hash[x * 2:x * 2 + 2] + domain class EmergencyDomains(object): __slots__ = ('key', 'zones', 'beacon_domains', '_zone_id', '_emergency_loop') def __init__(self, key, beacon_domains=None, zones=None): self.key = key self.zones = zones or WELL_KNOWN_ZONES if not isinstance(self.zones, (list, tuple, set)): self.zones = tuple((self.zones,)) self.beacon_domains = beacon_domains self._zone_id = 0 self._emergency_loop = self._emergency_loop_generator() def _emergency_loop_generator(self): if self.beacon_domains: for domain in self.beacon_domains: yield domain yield self._domain_of_the_day() def iterate(self): try: while True: yield next(self._emergency_loop) except StopIteration: self._emergency_loop = self._emergency_loop_generator() def _domain_of_the_day(self): now = datetime.datetime.utcnow() ts_formatted = now.strftime('%Y%m%d') if not isinstance(ts_formatted, bytes): ts_formatted = ts_formatted.encode() formatted_key = self.key if not isinstance(formatted_key, bytes): formatted_key = formatted_key.encode() domain_hash = hashlib.md5() domain_hash.update(ts_formatted) domain_hash.update(formatted_key) domain_part = domain_hash.hexdigest()[:16] zone = self.zones[self._zone_id] self._zone_id = (self._zone_id + 1) % len(self.zones) return domain_part + '.' + zone
Детальная схема работы Decoy Dog:
Жертвы
По нашим данным, по меньшей мере 20 организаций в Российской Федерации были скомпрометированы с использованием Decoy Dog. Распределение жертв по отраслям выглядит следующим образом.
Сейчас группа Hellhounds активно атакует организации в России, и мы продолжаем наше исследование. Пока что мы не знаем конечных целей атакующих, но в одном из инцидентов злоумышленники, используя Decoy Dog, вывели из строя ряд сервисов в телеком-операторе на территории России. Об этом рассказали исследователи из компании Solar 4RAYS на SOC-Форуме в докладе «Щелчок Таноса для оператора связи».
Заключение
Авторы ВПО после публикации материалов про Decoy Dog первой версии приложили достаточно большое количество усилий, чтобы затруднить обнаружение и анализ не только в трафике, но и в файловой системе.
Большое количество жертв в очередной раз подтверждает, что Linux-системы, как правило, недостаточно хорошо защищены. В проектах по расследованию инцидентов мы достаточно редко встречаем дополнительные системы мониторинга (auditd) и средства антивирусной защиты на хостах под управлением Linux.
Авторы: Станислав Пыжов, Александр Григорян (Positive Technologies)
Авторы благодарят за помощь в подготовке статьи команды Incident response и Threat intelligence экспертного центра Positive Technologies (PT Expert Security Center).
Вердикты наших продуктов
PT Sandbox
apt_linux_ZZ_DecoyDog__Trojan__FirstStage |
apt_linux_ZZ_DecoyDog__Backdoor__Pupy |
apt_linux_ZZ_DecoyDog__Backdoor__EncryptedPayload |
apt_mem_ZZ_DecoyDog__Backdoor |
PT Network Attack Discovery
SUSPICIOUS [PTsecurity] Possible DecoyDog DNS Tunneling sid: 10010052 |
SUSPICIOUS [PTsecurity] Possible DecoyDog DNS Tunneling sid: 10010053 |
IOCs
Файловые индикаторы
Name |
MD5 |
SHA-256 |
SHA-1 |
Decoy Dog Loader |
|
|
|
_lib7.so |
8292f151b40308b31277165ea37541a9 |
57ed4aa89eb7f04eb1d88c038d2eb979d5082872fb41b4ea1c8bb0ca3ee97c4e |
b063461e0b2dda5f1fcb49eb92c5d323b1ba9ed2 |
.lib7.so |
6685ea769026e8831b67e4d8f0606e65 |
d73889d26fa37deee733a871dbd39dd54d6079ef286172699af585583025fb45 |
3c69d5e7f1cdef1fb055260345cdc69ac8432d72 |
- |
1fd1d550b549c9c14031080380b4b0b7 |
8130de2602bfba78875dec200282dde736aa0558369bff8fd8797f8846e30be8 |
7e48cd7385a1fcfa8a80f5abe6839e8d10dece96 |
dcrond |
b83dffed692e165ad0274b63a6c7f1cb |
e218ab7b3ab64e93373661558f9093d7f2a344e6d4fdd245b3556ad93c0bea02 |
a513f2debe9811bdb9d19dddbd20018d13d11198 |
container |
9671607c162cd3037da08508d2d3f3a3 |
2f44da49c7deb865312265c17004b7ee1744e8af4667219b276b2a65afedf821 |
9b4e493756a3c7c5a59dfe31168564bafe09d01f |
systemd-inputd |
7974a843acdf22b32a13256ba7f56baa |
4c0b3dd3de24099be2685e8fe19f80599fb9596ec0bafcf29f1cf5d051ebc223 |
74f0fa56ddb3f38b425ea57239421b142b79063c |
smartmond |
bcbf98042bf9796e50f16e68c4255f85 |
dc6bdfb15624adce5c9e4978d1a38e98e539d0f73304692bea4e70e4e04a7aaa |
560463d55676e9a33496f95f3f837faedfd0a2f1 |
epel-modular-update.solvx |
2e272a6d04e6f28145f5d07f97bb51a7 |
4750aef958598d156c47fa48bb2dea707dec8586a9fc7ae3b448348f4fa9a66a |
20bdedfc3c80f494857aa0cfc8f0fd8a80efbabd |
irqballanced |
536be89b71cd273db8a79b0bc2074ce6 |
0b43038fd6c46427d2bf0964aab3bb96f42de504fbda5071031fecb120abc59f |
ae131fa8700fb92074999f70acef9bd470dd6c7b |
Decoy Dog RAT (version 1) |
|
|
|
- |
bb04bac638e35775b93ddfa30f0a3b09 |
4996180b2fa1045aab5d36f46983e91dadeebfd4f765d69fa50eba4edf310acf |
b7a20a3064c9eb0e0f332dd25df5e4609393b44c |
- |
5e55d48b930b75ac3df3d2b3f9db1b07 |
a1704832392c67a0a2c79fd52422226b5d9df0e40cf537304495496910d1b744 |
174fe35afc5a4d5b9938cffb422f336f5787d072 |
- |
c4d377c3fcd231adcc2d7b5e7e701fc9 |
0375f4b3fe011b35e6575133539441009d015ebecbee78b578c3ed04e0f22568 |
44c2d78bbeaadc3416ba15d51a2c1c788df89f5d |
JniAccelCsv.Linux.amd64 |
ff09a325e7e739cfc8ed0bac0838581a |
ec01b358f82ad43e04b80ae6e1366516b4e62718da64d68a832433860ad312ad |
dd2ed96b944592f4f545f6aa5bf563c70563bdc7 |
JniAccelCsv.Linux.amd64 |
917836dc595074bf57f14e3d9cc4f766 |
4d3814f0ce7537756b1dd3096773bc57a7b22f61ab5262f8d6f6a74a84c61900 |
3a8a648eb2c52e86a78bfd7eb832188776bc8d62 |
atd |
d8ce9e4b5d4443b368ab226913af87f9 |
6c8f413111f1abfee788dad4ee7cca37e0c2597cca66d155af958c535faf55cc |
7699d579d51c105ebf997911660f5f21a37fc28b |
atd |
e7e7ff7450d9655d71d281fbb5d59f6f |
e6b88a0710d74330c31590718ad563f4788760c8607c414765aa73b5bb402760 |
73c012afd09e5a59102b773a58a2e79af005853b |
- |
ee09f7610b5213ed5e3b85c7457858c3 |
637d602d5b6cf33f5c7236f335245df02e535c76ff6e0014839c557546cfe073 |
319adfe932531db8880ac0d6c09e0c48485165a8 |
_bareos.cfg |
58b1c162d66194b26d7d462a0f80e28d |
d189e0150f42d2a2e40fefcec6973fcbc4a8b1a1757a358d13df3519ef275412 |
3f61dba11f66ab29d81da6b1bd8363b6f6e03623 |
- |
fa8443fdde409b830f77f18c0ef5a44d |
6a06619b21f20094a77bfc9af3fc4dbecfacdbe038f017604399ce86d5f38362 |
280746eba047ac9c39ce1746b9d8918b1ec9c145 |
- |
4c999714034ae431adb2776cd930b518 |
a1c116042e81280e408e859ab8eba8237bb1f31cad00814d6a406fc45444ae97 |
cfff6d81df00ceaf2ca86114ed756f2b824fd605 |
Decoy Dog RAT (version 2) |
|
|
|
pcie.cache |
8147c66144990691e2d9d870fb921475 |
4f9ff5ec62bba44d18f18323ef674e49515da976011c33049bce1d1f9a3f6e46 |
13ea15f336732d072a6881c1eb86a361ba3f4843 |
pcie.cache |
a9675ccc238c2de8c673879a63975d80 |
5d7866865554afa00ce44db77bf419a21bead64b5ed3394aa23f79aa2b5b00c4 |
08f48eb0d5919fbb937399f3c6cabd5bf1b0350d |
pcie.cache |
de81b0ebc983d4a23395a35c759fc84e |
c13b1a591561800163154b72415cfb3283eae253772fed1ca2bd4f0a2644cfbd |
a57a0dd002c13c6d45355be3116064605ed8c30a |
pcie.cache |
7aafa110d681067787d5382a6cc55e48 |
10f7fc4a3dbb07de3a73124cc02469d2123824960da02c51f9c5304dd82c9464 |
dd1923e484654a8053c7a2f4f7ebcf5a17126c9d |
containerd |
2ccc492a1a977e694bd5ced7cee35a8d |
d67e2641d7f423e868b2ca62f809ccad83f87081aa1e9aa62d9c68b83138e181 |
a93b2351c9ca03e64a1c52de7e2ca59637b8da90 |
.mem_cache |
6323e21d0cd0787c52fc71e7a3420e28 |
5f9c971b77f69d6337ed591aa50ef271757456038a1aad1a6f3d16b331c4166f |
bae0d550668e82c64f0a672b9af646dd9abcfc4a |
Файловые пути
/usr/bin/atd |
/usr/bin/container |
/usr/bin/dcrond |
/usr/sbin/containerd |
/usr/sbin/smartmond |
/usr/share/misc/hwrng.cache |
/usr/share/misc/pcie.cache |
/var/lib/misc/mpci.bin |
/var/lib/misc/sata.bin |
/var/lib/polkit-1/localauthority/.cache |
/var/run/ctl.socket |
Сетевые индикаторы
acrm-11331.com |
ads-tm-glb.click |
allowlisted.net |
cbox4.ignorelist.com |
f-share.duckdns.org |
maxpatrol.net |
m-srv.daily-share.ns3.name |
vcs.dns04.com |
z-uid.lez2yae2.dynamic-dns.net |
mindly.social (легитимная социальная сеть) |
ertelecom.org |
webrtc.foo |
atlas-upd.com |
hsdps.cc |
194.87.68.65 |
185.126.239.60 |
185.22.152.227 |
Файловые сигнатуры
rule PTESC_apt_linux_ZZ_DecoyDog__Trojan__FirstStage{ strings: $f1 = "mmap failed" $s1 = "/etc/machine-id" $s2 = "/product_uu=bo" condition: uint32be ( 0 ) == 0x7F454C46 and all of ( $f* ) and any of ( $s* ) and filesize < 100KB } rule PTESC_apt_linux_ZZ_DecoyDog__Backdoor__Pupy__v1{ strings: $x1 = "reflectively inject a dll into a process." fullword ascii $x2 = "ld_preload_inject_dll(cmdline, dll_buffer, hook_exit) -> pid" fullword ascii $x3 = "LD_PRELOAD=%s HOOK_EXIT=%d CLEANUP=%d exec %s 1>/dev/null 2>/dev/null" fullword ascii $x4 = "reflective_inject_dll" fullword ascii $x5 = "ld_preload_inject_dll" fullword ascii $x6 = "get_pupy_config() -> string" fullword ascii $x7 = "[INJECT] inject_dll. OpenProcess failed." fullword ascii $x8 = "reflective_inject_dll" fullword ascii $x9 = "reflective_inject_dll(pid, dll_buffer, isRemoteProcess64bits)" fullword ascii $x10 = "linux_inject_main" fullword ascii $j1 = "jvm.PreferredClassLoader" fullword ascii $j2 = "jvm.JNIEnv capsule is invalid" fullword ascii $j3 = "JVM was not loaded yet" fullword ascii $j4 = "Info about parent JVM" fullword ascii condition: uint32be ( 0 ) == 0x7F454C46 and ( 2 of ( $x* ) and any of ( $j* ) ) and filesize < 5000KB } rule PTESC_apt_linux_ZZ_DecoyDog__Backdoor__EncryptedPayload{ strings: $signature = { C8 01 00 00 9A 00 00 00 08 00 00 01 } condition: $signature at 0 and filesize > 3MB and filesize < 5MB }
MITRE TTPs
ID |
Имя |
Описание |
Initial Access |
|
|
T1190 |
Exploit Public-Facing Application |
Злоумышленники компрометируют публично доступные веб-сервисы |
T1199 |
Trusted Relationship |
Злоумышленники продвигаются через смежные инфраструктуры |
T1078 |
Valid Accounts |
Злоумышленники использовали легитимные учетные записи для входа по протоколу SSH |
T1021.004 |
Remote Services: SSH |
Злоумышленники подключаются к скомпрометированному хосту, используя протокол SSH |
Persistence |
|
|
T1543.002 |
Create or Modify System Process: Systemd Service |
Decoy Dog закреплялся в системе через сервисы dcrond.service или atd.service |
Defense Evasion |
|
|
T1480.001 |
Execution Guardrails: Environmental Keying |
Злоумышленники использовали machine-id хоста жертвы для шифрования основной нагрузки и конфигурационного файлы |
T1140 |
Deobfuscate/Decode Files or Information |
Группа использовала алгоритм CLEFIA для шифрования своих компонентов, чтобы защитить их от обнаружения и анализа |
T1027.002 |
Obfuscated Files or Information: Software Packing |
Группа использовала модифицированный алгоритм UPX для защиты от обнаружения и анализа |
Discovery |
|
|
T1082 |
System Information Discovery |
Злоумышленники получали machine-id зараженного хоста для компиляции образцы Decoy Dog Loader, который будет работать только на конкретном хосте |
Command and Control |
|
|
T1568.002 |
Dynamic Resolution: Domain Generation Algorithms |
Группа разработала алгоритм генерации доменных имен (DGA) |
T1568.001 |
Dynamic Resolution: Fast Flux DNS |
Группа использовала DDNS-сервисы |
T1071.004 |
Application Layer Protocol: DNS |
DNS Tunnel — основной метод коммуникации с управляющим сервером у Decoy Dog RAT |
Impact |
|
|
T1485 |
Data Destruction |
Группа в инциденте с телеком компанией уничтожила Linux и Windows инфраструктуру |