MITRE ATT&CK T1082 - Изучение системной информации

MITRE ATT&CK

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

Использование злоумышленниками методов обнаружения системной информации

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

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

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

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

Команды ОС, используемые для сбора системной информации

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

  • В Windows такие инструменты, как Systeminfo, предоставляют исчерпывающую информацию об ОС и аппаратном обеспечении.
  • В macOS такие команды, как Systemsetup и system_profiler, дают представление о конфигурации системы, а uname раскрывает подробности о ядре.
  • В Linux такие команды, как uname, sysinfo и lsb_release, обычно используются для определения ОС и версии.

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

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

systeminfo (Windows)

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

В таблице ниже показано, какую информацию пользователь может получить с помощью инструмента systeminfo на машинах Windows.

Конфигурация операционной системы Имя ОС/версия/производитель/конфигурация/, тип сборки ОС, зарегистрированный владелец, зарегистрированная организация, оригинальная дата установки, системная локаль, локаль ввода, идентификатор продукта, часовой пояс, сервер входа
Информация о безопасности Hotfix(ы)
Свойства оборудования ОЗУ, дисковое пространство, сетевые карты, процессоры, общая физическая память, доступная физическая память, виртуальная память
Другая информация о системе время загрузки системы, производитель системы, модель системы, тип системы, версия BIOS, каталог windows, каталог системы, устройство загрузки

Ниже приведен пример результатов работы инструмента systeminfo.

Злоумышленники часто используют команду systeminfo.

Например, в ноябре 2024 года сообщалось, что атака Interlock ransomware использовала инструмент удаленного доступа (RAT) для выполнения команды «systeminfo» [2]. Эта команда, запущенная по команде «cmd.exe /c systeminfo», использовалась для сбора системных данных с компьютера жертвы и передачи собранной информации на командно-контрольный сервер злоумышленников.

Другой пример, описанный в октябре 2024 года, - SingleCamper - ключевой имплант, используемый группой угроз UAT-5647 [3]. Он загружается программой ShadyHammock после считывания и декодирования из реестра Windows. SingleCamper может выполнять следующие команды предварительной разведки, отправленные C2, и отвечать результатами, например:

Наконец, в одном случае, о котором Microsoft сообщила в мае 2024 года, Moonstone Sleet распространял вредоносное ПО, такое как TrojanDropper:Win64/YouieLoad* (он же data.tmp), через вредоносные приложения, например игру DeTankWar. После выполнения эта вредоносная программа может собирать системную информацию и передавать ее обратно злоумышленникам.

system_profiler (macOS)

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

Вот пример команды, демонстрирующей, как злоумышленники могут использовать утилиту system_profiler.

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

В 2024 году появились документальные свидетельства того, что злоумышленники используют утилиту system_profiler в macOS для сбора информации о системе во время своих атак. Например, вредоносная программа Cuckoo, о которой сообщалось в мае 2024 года, использовала команду system_profiler для извлечения сведений об аппаратном обеспечении зараженных систем macOS:

Кроме того, бэкдор для macOS на основе Rust, проанализированный в феврале 2024 года, выполняет следующие команды для сбора полной информации о системе [7], помогая атакующим составить профиль взломанной машины:

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

systemsetup (macOS)

Утилита командной строки systemsetup в macOS предназначена для настройки системных параметров, таких как задание имени компьютера, настройка часовых поясов и управление сетевыми конфигурациями. Однако злоумышленники часто используют легитимные утилиты, подобные этой, для достижения своих целей - тактика, известная как «Жизнь за счет земли».

Хотя для выполнения определенных команд systemetup требует привилегий root или администратора, его опции и возможности могут варьироваться в зависимости от используемой версии macOS. Как правило, этот инструмент используется для поиска системной информации или изменения конфигурации, которые могут быть использованы во вредоносных целях. Примеры:

Где

  • -gettimezone: Отображает текущий часовой пояс системы.

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

Например, в гипотетическом сценарии, если атакующий обнаружит несоответствие системных часов, он может запланировать задание cron, чтобы использовать его в своих целях, потенциально согласовывая выполнение вредоносного скрипта с определенным событием или триггером. Задание cron может выглядеть примерно так:

Эта строка в файле crontab теоретически может запланировать запуск script.sh на 2:00 утра по системному времени каждый день. Если часы системы настроены неправильно, это может привести к запуску скрипта в неожиданное время, возможно, в соответствии с лазейкой в системе безопасности, основанной на времени, или в периоды низкого уровня мониторинга.

Где:

  • -getcomputername: отображает текущее имя хоста системы.

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

Где:

  • -getremotelogin: Отображает текущее состояние удаленного входа в систему, который позволяет пользователям получать удаленный доступ к системе по сети.

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

networksetup (macOS)

Systemsetup - не единственный встроенный инструмент, который могут использовать злоумышленники.

Злоумышленники могут использовать инструмент networksetup в macOS для разведки. Используя параметр listallnetworkservices, злоумышленник может получить список всех сетевых служб, настроенных в системе. Эта информация может быть очень важна для понимания сетевого окружения целевой системы и определения потенциальных путей для сетевых атак или дальнейшей эксплуатации.

В этом примере команда перечисляет доступные сетевые службы, такие как Wi-Fi и Thunderbolt Bridge. Эти знания могут помочь атакующему разобраться в настройках сети и потенциально определить менее безопасные или отключенные сетевые службы, которые можно использовать.

С другой стороны, команда networksetup -getinfo - это еще один мощный инструмент в macOS, который может использоваться злоумышленниками для сбора подробной информации о конфигурации сети. При использовании с конкретной сетевой службой, например Wi-Fi, она может раскрыть различные настройки и параметры.

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

В качестве примера можно привести бэкдор, о котором было сообщено в феврале 2024 года. Написанный на языке Rust, он нацелен на пользователей macOS и использует утилиту networksetup для сбора подробной информации о машине жертвы и ее сетевых подключениях. Эта вредоносная программа выполняла специальные команды для перечисления сетевых служб и аппаратных портов, что позволяло провести всестороннюю разведку системы:

Команда networksetup -listallnetworkservices использовалась для получения списка всех сетевых сервисов, настроенных на целевой системе, таких как Wi-Fi, Ethernet или VPN-соединения. Таким образом злоумышленник получал обзор доступных сетевых интерфейсов и их конфигураций. Кроме того, команда networksetup -listallhardwareports раскрывала подробную информацию об аппаратных портах, включая имена устройств и MAC-адреса, давая представление о физической и логической сетевой инфраструктуре.

Встроенные функции Linux

На взломанных узлах Linux злоумышленники могут запускать встроенные команды или создавать инструменты, использующие эти утилиты командной строки для получения информации о системе.

Имя функции Что она собирает
uname Имя и информация о ядре Linux
sysinfo Статистика памяти и использование пространства подкачки
statvfs Статистика файловой системы, включая текущий рабочий каталог
if_nameindex Имена сетевых интерфейсов
lsb_release Распространение и версия операционной системы

Например, в декабре 2024 года анализ вредоносных программ для Linux показал, что злоумышленники используют встроенные функции Linux для сбора системной информации. В частности, вредоносное ПО использует системный вызов «uname» для запроса информации о версии ядра, что помогает адаптировать атаки к окружению взломанной системы.

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

Вызовы API, используемые для сбора системной информации для IaaS

Поставщики инфраструктуры как услуги (IaaS), такие как Amazon Web Services (AWS), Microsoft Azure и Google Cloud Platform (GCP), предлагают API, которые позволяют пользователям получать информацию об экземплярах в их облачной инфраструктуре.

Describe-instance-information (AWS)

Действие DescribeInstanceInformation является частью API Amazon EC2 Systems Manager в AWS. Оно позволяет получить информацию об экземплярах Amazon EC2 и локальных серверах, зарегистрированных в Systems Manager. Для вызова действия DescribeInstanceInformation злоумышленники могут использовать интерфейс командной строки AWS (CLI) или API Systems Manager. Вот пример того, как злоумышленники вызывают действие с помощью AWS CLI:

Эта команда получит информацию об экземпляре с идентификатором i-12345678. Вы также можете указать несколько экземпляров, предоставив список идентификаторов экземпляров в параметре valueSet.

Вот пример ответа в формате JSON, который может вернуть действие DescribeInstanceInformation:

Виртуальная машина - Get (Azure)

Злоумышленники могут использовать запрос Get для получения информации о виртуальной машине в Microsoft Azure. Запрос Get можно выполнить с помощью API Azure REST, командлетов Azure PowerShell или Azure CLI. Используя запрос Get, атакующие могут получить широкий спектр информации о ВМ, включая ее группу ресурсов, местоположение, размер, статус и многое другое.

Злоумышленники могут отправить HTTP GET-запрос на REST API Azure Management. Запрос должен быть направлен по следующему URL-адресу:

Где:

  • subscriptionId - это идентификатор подписки, к которой принадлежит ВМ.
  • resourceGroupName - это имя группы ресурсов, к которой принадлежит ВМ.
  • vmName - это имя ВМ, о которой вы хотите получить информацию.
  • apiVersion - это версия Azure Management REST API, которую вы хотите использовать.

Запрос должен содержать заголовок Authorization с маркером Bearer, который подтверждает подлинность запроса. Вот уменьшенный пример ответа в формате JSON, который Azure Management REST API может вернуть, когда вы отправляете запрос GET для получения информации о ВМ:

instances.get (GCP)

Метод instances.get в Google Cloud Platform (GCP) используется для получения информации о конкретном экземпляре виртуальной машины Compute Engine. Он является частью API Compute Engine, который позволяет создавать и управлять экземплярами виртуальных машин в инфраструктуре Google.

Чтобы использовать метод instances.get, необходимо указать имя экземпляра, информацию о котором вы хотите получить, а также проект и зону, в которой он расположен. Вы также можете указать дополнительные параметры для настройки запроса.

Ниже приведен пример использования метода instances.get в API Google Cloud Platform:

Вот пример минимизированного JSON-ответа, который может вернуть метод instances.get:

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