D2
Администратор
- Регистрация
- 19 Фев 2025
- Сообщения
- 4,380
- Реакции
- 0
Часто коллеги и клиенты подходят к моему (виртуальному) столу и задают мне следующий вопрос: « Я знаю, какие патчи ( КБ ) установлены в системе Windows, но как мне узнать, каким рискам она подвергается?». Это очень хороший вопрос, и я уверен, что есть еще много людей, которые задаются тем же вопросом, например, при тестировании среды клиента или во время работы в учебной лаборатории OSCP. Проблема заключается в том, что, просто просмотрев список установленных баз знаний, невозможно узнать, каким уязвимостям подвержена система.
В этом блоге мы рассмотрим, как работает управление версиями Windows, а затем пройдем этапы получения информации о версии Windows и списка установленных баз знаний из локальной или удаленной системы. Обладая этой информацией, мы можем быстро выявить уязвимости в системе, которую они атакуют, и, если таковая имеется, использовать эксплойт, чтобы расширить свою позицию. Это поможет нам быстро оценить риск, которому подвержена система. Разработанный мною инструмент Windows Exploit Offerer — Next Generation wes.py и missingkbs.vbs будет максимально эффективно поддерживать процесс идентификации.
Прежде чем углубиться в то, как определить недостающие КБ, давайте сначала разберемся в том, как работают выпуски Windows.
Операционные системы Windows
ОС Windows Microsoft предоставляет как клиентский, так и серверный вариант. Эти варианты используют одно и то же ядро, но предназначены для разных целей. Вариант сервера предназначен для выполнения различных ролей, таких как контроллер домена, веб-сервер и хост виртуализации, что позволяет использовать его на очень мощном оборудовании. Клиентский вариант предназначен для ежедневного использования домашними, учебными и деловыми пользователями для обработки текста, просмотра веб-страниц и игр. Регулярно выпускаются новые версии как клиентской, так и серверной ОС, причем на момент написания статьи Windows 11 и Windows Server 2022 являются последними версиями ОС соответственно. Предыдущие версии: (в порядке убывания даты) Windows 10 (сборка 1809)/Server 2019, Windows 10 (сборка 1607)/Server 2016, Windows 8.1/Server 2012 R2, Windows 8/Server 2012, Windows 7/Server 2008 R2, Windows Vista, Server 2008 и Windows XP/Server 2003 [R2]. Полный список версий Windows доступен в Википедии.
В дополнение к двум вариантам Microsoft также различает разные выпуски клиентского и серверного вариантов. Оба варианта имеют несколько редакций, которые в зависимости от варианта различаются функциональностью, лицензионными ограничениями и циклами обновления и поддержки. В этом блоге основное внимание будет уделено Windows 10 и ее серверному варианту Windows Server 2016 и более поздним версиям.
Поскольку Microsoft не поддерживает операционные системы вечно, существует скользящий временной интервал между операционными системами и версиями, которые все еще поддерживаются, и теми, срок эксплуатации которых истек. Как только срок службы продукта подходит к концу, Microsoft больше не предоставляет обновления безопасности для ОС, и поэтому любые обнаруженные в будущем уязвимости больше не будут исправлены, хотя в некоторых редких случаях делается исключение. Одним из таких исключений является обновление безопасности для окончаний срока службы Windows XP, 8 и Windows Server 2003, направленное на устранение уязвимости Eternal Blue 6. В зависимости от версии Windows существует три канала обновлений, которые различаются скоростью добавления новых функций, а также напрямую связаны с продолжительностью поддержки. Каждый выпуск на канале можно рассматривать как веху, на которой в ОС добавляются новые функции.
Хорошей первой проверкой будет определение того, поддерживается ли по-прежнему операционная система. Это можно проверить, выполнив поиск на веб-сайте документации по жизненному циклу версии Windows, с которой вы столкнулись. URL-адрес этого веб-сайта: https://docs.microsoft.com/en-us/lifecycle/products/?products=windows
Пример с поиском Windows 10 Пример с поиском Windows 10: https://docs.microsoft.com/en-us/lifecycle/products/?products=windows&terms=Windows 10 .
Каналы выпуска
Потребительские выпуски Windows 10 (Home и Pro) имеют поддержку только 18 месяцев, тогда как версии Windows 10 для бизнеса (Enterprise и Education) имеют 30 месяцев поддержки в случае осеннего выпуска. Эти версии Windows 10 выпускаются каждые 6 месяцев и являются частью так называемого Semi-Annual Channel ( SAC). Помимо потребительской и бизнес-версий Windows 10, существует также специальная версия, предназначенная для использования в специализированных средах, таких как банкоматы и медицинское оборудование. Эта версия обеспечивает 10 лет поддержки и выпускается каждые 2–3 года в рамках Long-Term Service Channel ( LTSC ).
В случае Windows Server также существует две редакции. Windows Server с добавлением года (Windows Server 2016, Windows Server 2019,…) является частью LTSC и выпускается каждые 2–3 года с 10-летней поддержкой. Вместо этого к другому выпуску Windows Server добавляется название выпуска, и он является частью SAC с 18-месячной поддержкой. Примером такого выпуска SAC является Windows Server, сборка 2004. Выпуски SAC не включают функцию Desktop Experience (графический пользовательский интерфейс для Windows Server).
Раньше выпуски назывались ГГММ, где ГГ — это двухзначный год, за которым следовал ММ, который представляет собой двухзначный месяц, например 1909 для сентябрьского выпуска 2019 года. Начиная с осеннего выпуска Windows 10 в 2020 году, это изменилось на модель полугодия YYH1/YYH2. Это означает, что выпуск Windows 10 от мая 2021 года называется 21H1. Названия этих выпусков используются в выходных данных различных инструментов, отображающих информацию о версии ОС в Windows, о которой мы поговорим в следующем разделе.
С момента релиза начинает отсчитываться количество месяцев (или лет в случае LTSC ) поддержки. Периодические выпуски по различным каналам обновления можно загрузить через Центр обновления Windows, каталог обновлений Microsoft 10 и службы Windows Server Update Services ( WSUS ). Кроме того, для чистого развертывания выпускаются образы дисков.
Обновления безопасности
Теперь понятно, как определить, поддерживается ли конкретная версия ОС или срок ее эксплуатации истек, пришло время взглянуть на обновления безопасности. Хотя в случае возникновения срочных уязвимостей обновления безопасности могут быть развернуты вне обычного ежемесячного графика, Microsoft обычно выпускает обновления безопасности каждый второй вторник месяца. Этот день называется Update Tuesday, однако в народе этот день также называют Patch Tuesday.
В мире Microsoft каждое обновление безопасности (а также обновления, не связанные с безопасностью) можно идентифицировать по идентификатору статьи базы знаний ( KB ). Этот номер базы знаний можно использовать в Руководстве по обновлению безопасности центра реагирования на проблемы безопасности Microsoft ( MSRC ) для получения дополнительной информации о возможности использования определенной уязвимости. На страницах справки Microsoft содержится дополнительная информация об обновлении безопасности, а в каталоге обновлений Microsoft 10 содержатся ссылки для загрузки установочного файла обновления безопасности и получения информации о замене KB. Помимо базы знаний, эти обновления безопасности также называются исправлениями и исправлениями. В этом блоге эти имена используются как взаимозаменяемые.
Ниже приведена таблица с различными ресурсами, которые Microsoft предоставляет по обновлениям безопасности.
Определение установленных обновлений безопасности
Как хакеры, мы хотели бы определить, отсутствуют ли в определенной системе обновления безопасности, и если да, отметить это или даже использовать эксплойт, чтобы злоупотребить уязвимостью и получить доступ или эскалировать проблему. Прежде чем определить, какие обновления безопасности отсутствуют, сначала необходимы сведения о версии ОС в сочетании с установленными в данный момент исправлениями.
Существует множество способов получить эту информацию как из локальной, так и из удаленных систем, при условии, что учетная запись, запускающая команду, имеет достаточные привилегии для доступа к удаленной системе. В зависимости от подхода информация о версии ОС и установленных исправлениях безопасности получается с помощью одной или разных команд. Кроме того, в Windows встроены такие инструменты графического пользовательского интерфейса, как и winver.exe, msinfo32.exe и Просмотр установленных обновлений» в appwiz.cpl, однако из этих инструментов невозможно легко экспортировать информацию в файл для обработки на более позднем этапе, поэтому мы не будем фокусироваться на этих инструментах.
systeminfo.exe
systeminfo.exe — это утилита, встроенная в Windows, начиная с самых ранних версий Windows. Этот инструмент перечисляет как установленные исправления, так и версию Windows, а также может собирать эту информацию из удаленной системы. Для получения информации из удаленной системы можно использовать параметр /s. Либо удостоверение, под которым выполняется текущий процесс, должно иметь разрешения в удаленной системе, либо учетные данные необходимо предоставить с помощью параметров /U и /P. Эта команда в значительной степени полагается на инструментарий управления Windows (WMI) для сбора информации как в локальной, так и в удаленной системе.
WMIC.exe
WMIC.exe — это утилита командной строки WMI, которая позволяет как запрашивать WMI, так и вызывать функции в WMI как локально, так и удаленно. Как обсуждалось в параграфе об утилите systeminfo.exe, WMI предоставляет классы, которые при запросе перечисляют сведения об операционной системе и установленных обновлениях безопасности. Эти классы являются соответственно классом Win32_OperatingSystem и классом Win32_QuickFixEngineering, которые оба находятся в пространстве имен root\CIMv2. Утилита WMIC.exe предоставляет псевдонимы для этих классов, а именно OSи QFE, но можно использовать и полные имена классов.
Командлеты PowerShell
PowerShell предоставляет командлеты Get-ComputerInfo и Get-HotFixдля получения информации о локальном компьютере соответственно и выводит список установленных исправлений как в локальной, так и в удаленной системе. Командлет Get-ComputerInfoбыл добавлен из PowerShell версии 5.1. В основе обеих команд снова используется WMI для получения соответствующей информации. Командлеты Get-ComputerInfo и Get-HotFix можно выполнять в удаленной системе через WinRM с помощью Invoke-Command командлета, но это выходит за рамки данного блога.
WMI через PowerShell
Вместо использования WMIC.exe утилиты также можно использовать встроенный командлет Get-WmiObject PowerShell (или дополнительно командлет Get-CimInstance из PowerShell версии 3). Опять же, с помощью этих командлетов можно запрашивать класс Win32_OperatingSystem и классы как локально, так и удаленно. На случай, если вам понадобится незаметно подключить эту информацию во время упражнений красной команды, эти командлеты также поддерживаются двоичным файлом NoPowerShell .NET.
Не нативные инструменты
В дополнение к встроенным утилитам Windows и командлетам PowerShell существует несколько инструментов, которые также могут получать информацию о версии ОС и установленных обновлениях безопасности. Двумя примерами таких инструментов являются srvinfo.exe из Windows Server 2003 Resource Kit 13 и psinfo.exe, который является частью пакета Sysinternals, в настоящее время поддерживаемого Microsoft. Наконец, утилита missingkbs.vbs, входящая в состав инструмента Windows Exploit Offerer — Next Generation ( WES-NG ), не просто перечисляет установленные исправления, но вместо этого точно определяет недостающие исправления. Эта утилита будет подробно обсуждаться в разделе Центра обновления Microsoft.
В следующей таблице приведены все команды, описанные выше, где двоичные утилиты имеют расширение, .exe а остальные являются командлетами PowerShell.
Для дальнейшей обработки полезно сохранить информацию, выдаваемую указанными выше утилитами и командлетами, в файл. Это можно сделать, перенаправив стандартный вывод (STDOUT) инструмента в файл. При запуске .exe утилит из командной строки ( cmd.exe) это можно сделать, добавив в конец команды > myfile.txt. Например systeminfo.exe, в случае используйте следующую командную строку.
В случае PowerShell можно использовать символ перенаправления ( Get-HotFix > hotfixes.txt) или выходные данные можно передать в Out-File командлет, при необходимости указав тип кодировки, которую необходимо использовать с помощью -Encoding параметра. Более того, если необходимы только данные из определенного атрибута, этот атрибут можно указать с помощью командлета ForEach-Object(или псевдонима %) и впоследствии передать его по Out-File конвейеру, например:
Определение отсутствующих обновлений безопасности
После сбора информации о версии Windows и установленных обновлениях безопасности следующим шагом будет определение отсутствующих обновлений безопасности. Файлы, созданные в предыдущем разделе, можно скопировать локально для дальнейшего исследования с целью выявления уязвимостей и потенциальных доступных эксплойтов.
Как обсуждалось в разделе «Обновления безопасности», каталог обновлений Microsoft 10 предоставляет информацию о замене KB. Можно было бы просмотреть каждый КБ и определить, какими новыми КБ был заменен этот КБ, и проверить, были ли эти КБ, в свою очередь, также установлены рекурсивным образом. Однако это приведет к тому, что придется проделать большую работу по всем базам знаний и проверить, были ли они заменены. Вот здесь-то и приходит на помощь разработанная мной утилита Windows Exploit Offerer — Next Generation ( WES-NG ). WES-NG использует набор данных MSRC для определения связей замены между различными базами знаний и связывает их через идентификаторы общих уязвимостей и воздействий ( CVE ) с потенциальными эксплойтами, которые могут быть доступны для уязвимостей. Подробнее об этих источниках данных см. далее в разделе «Набор данных» .
WES-NG по умолчанию включен в дистрибутив и репозиторий BlackArch Linux для тестирования на проникновение , но его также можно легко получить в любой другой ОС с помощью утилиты Python pip ( pip install wesng) или просто клонировав репозиторий WES-NG : git clone --depth 1 https://github.com/bitsadmin/wesng.
Windows Exploit Suggester - Next Generation
Скрипт WES-NGwes.py — это инструмент Python 2/3, который использует файл определений эксплойтов и проверяет наличие отсутствующих исправлений на основе версии ОС и списка установленных исправлений. WES-NG впоследствии автоматически повторяет цепочку замененных патчей. Чтобы начать работу с wes.py, сначала необходимо загрузить последний файл определений с помощью параметра --update(сокращение: -u), который загрузит последний definitions.zip файл в текущий каталог. Далее wes.py можно выполнить с ранее извлеченным systeminfo.txt файлом и дополнительным qfe.txt файлом со списком установленных КБ в качестве параметра. Чтобы получить полный список всех поддерживаемых параметров, включая различные примеры, выполните wes.py --help(сокращение: -h).
При выполнении wes.py сначала определит версию ОС systeminfo.txt и соберет из файла все базы знаний, когда-либо выпущенные для этой версии ОС из definitions.zip. Из этого списка удаляются все базы знаний , установленные в системе, включая те базы знаний , которые были заменены установленными заменяющими базами знаний. Этот шаг выполняется рекурсивно, поэтому удаляется вся цепочка баз знаний, заменяемая установленной базой знаний. После проверки всех KB, применимых к версии ОС, только те, которые не установлены, отображаются как отсутствующие KB. Наконец, для каждого KB определяются CVE, которые можно будет устранить, если установить KB. Затем эти CVE перечисляются, включая следующую информацию.
Фильтрация
Кроме того, уязвимости из выходных данных WES-NG также могут быть отфильтрованы. Это полезно, например, если злоумышленник заинтересован в уязвимостях, которые могут привести к удаленному выполнению кода, и/или только в тех уязвимостях, для которых доступен код эксплойта. Соответственно, для этого можно использовать параметры --impact "Remote Code Execution"(сокращение: -i) и --exploits-only(сокращение: -e Кроме того, результаты для определенных продуктов можно скрыть с помощью параметра --hide или вывести список только результатов с определенной серьезностью с помощью параметра --severity (сокращение: -s). Чтобы получить полный обзор параметров, включая примеры, проверьте вывод команды --help, который также указан в CMDLINE.md .
WES-NG по умолчанию выводит результаты на консоль. Однако для дальнейшего анализа WES-NG также поддерживает сохранение результатов в формате CSV на диск с использованием параметра --output(сокращение: -o), например:
Ниже представлена анимация от сбора версии ОС и отсутствующих исправлений до определения недостающих исправлений с помощью WES-NG, включая использование некоторых описанных фильтров и опции вывода в формате csv.
Устранение ложных срабатываний
Просматривая результаты WES-NG, к сожалению, выясняется, что он также сообщает о ложных срабатываниях. Например, даже в полностью исправленных системах WES-NG может по-прежнему показывать отсутствие некоторых КБ. Причина этого в том, что канал MSRC, который WES-NG использует для составления своих определений, часто содержит неполную информацию о замене KB .
Еще один момент, который следует принять во внимание: WES-NG предполагает, что все функции установлены. Например, если systeminfo.exe проверяется выходной файл простого Windows Server без каких-либо установленных ролей и функций, он может сообщить об уязвимостях IIS, для которых в ОС не установлены базы знаний. Это связано с тем, что помимо версии ОС и установленных KB, WES-NG не имеет информации о том, какие роли и функции установлены. Поэтому уязвимости, обнаруженные в неустановленных компонентах, можно смело игнорировать.
Чтобы исключить ложноположительные результаты, существует ряд способов.
Прагматичный путь
Как упоминалось ранее, обновления безопасности выпускаются ежемесячно. При проверке системы на отсутствие исправлений прагматичным способом было бы просто проверить дату выпуска самой последней базы знаний, установленной в системе, а затем предположить, что после этого момента новые обновления не устанавливались. В случае, если из-за проблем с заменой MSRC старые базы знаний будут указаны как отсутствующие, можно с уверенностью предположить, что это, вероятно, будут ложные срабатывания, поскольку более новые базы знаний уже установлены. wes.py's --usekbdate(сокращение: -d) выполнит эти действия и исключит из вывода более старые, предположительно отсутствующие КБ . Пример:
Проверка вручную
Если выходные данные должны быть более точными, другой вариант — выполнить WES-NG, а затем вручную проверить список недостающих КБ в конце выходных данных на веб-сайте каталога Центра обновления Microsoft. Это можно сделать, найдя недостающую базу знаний и определив, какие базы знаний заменили эту базу знаний и действительно ли эта база знаний установлена в системе. Если это так, то базу знаний, которую WES-NG считает отсутствующей, можно явно указать как установленную, чтобы WESN-NG не отображал уязвимости, которым подвергается система, если база знаний не установлена. Таким образом, это замена, которой не хватало в MSRC. В WES-NG база знаний может быть предоставлена wes.py с помощью параметра -p, например wes.py systeminfo.txt -p KB4487029. Повторите этот процесс для каждого предположительно отсутствующего КБ, если параметр -p позволяет указать несколько КБ, разделив их пробелом, например -p KB4487029 KB4345421. Более подробное описание ручной проверки выходных данных WES-NG см. на странице «Устранение ложных срабатываний» в вики WES-NG .
Автоматическая проверка
Поскольку проверка вручную по-прежнему является утомительным процессом, @DominicBreuker предоставил полезную функцию для автоматизации процесса поиска замены в каталоге Центра обновления Microsoft путем анализа веб-сайта и автоматического обхода цепочек. Эту функцию можно использовать, указав параметр --muc-lookup скрипту wes.py. После определения отсутствующих исправлений на основе набора данных MSRC он возьмет полученные недостающие исправления и автоматически проверит каждое из них в каталоге обновлений Microsoft.
Помимо ручной и автоматической проверки замены с помощью каталога обновлений Microsoft, существует также совершенно другой подход к выявлению отсутствующих исправлений, который описан в следующем разделе.
Центр обновления Майкрософт
Совершенно другой подход к выявлению недостающих КБ — использовать Центр обновления Microsoft. Вместо получения версии ОС и установленной на данный момент версии с помощью systeminfo.exe или другими способами, описанными в разделе «Определение установленных обновлений безопасности» , можно использовать собственные функции Windows для определения того, какие КБ все еще отсутствуют в системе в текущий момент времени.
missingkbs.vbs
Апплет панели управления Центра обновления Windows или современная страница панели управления Центра обновления Windows могут отображать недостающие КБ, но повторно вводить результаты может быть утомительно, и для этого требуется графический интерфейс, который может быть недоступен. По этой причине в репозиторий WES-NG был добавлен скрипт, позволяющий получать необходимую информацию из командной строки: missingkbs.vbs.
Результирующий файл со списком недостающих КБ можно предоставить с помощью параметра --missing(сокращенно: -m), чтобы точно определить CVE, к которым уязвима система, обойдя все проблемы, связанные с неполной информацией о замене, предоставляемой MSRC. Кроме того, в отличие от списка установленных исправлений из systeminfo.exe, утилита missingkbs.vbs также перечисляет только недостающие КБ установленных функций.
Чтобы определить недостающие КБ, утилита использует Microsoft.Update.SessionCOM-объект, реализованный в библиотеке wuapi.dll. Чтобы иметь возможность использовать функциональные возможности этого COM-объекта, при выполнении утилиты требуется командная строка с повышенными правами. Чтобы просмотреть полный список всех поддерживаемых параметров, включая различные примеры, выполните cscript missingkbs.vbs /Help(сокращение: /?).
При выполнении missingkbs.vbs без параметров будут использоваться онлайн-серверы Центра обновления Windows или, если настроено, сервер WSUS, которые часто используются в корпоративных средах. Поскольку сервер WSUS может сдерживать обновления для своих клиентов, существует вероятность того, что сервер WSUS сообщит, что в системе нет каких-либо исправлений, хотя на самом деле они отсутствуют. Более того, даже если система не подключена (напрямую) к Интернету, все равно было бы полезно иметь возможность проверить наличие недостающих КБ.
По этой причине утилита имеет возможность использовать файл автономного сканирования Центра обновления Windows, чтобы определить недостающие КБ на основе этого файла, а не использовать серверы Microsoft Update/ WSUS. Этот файл сканирования размером около 1 ГБ можно загрузить в системе, подключенной к Интернету, по следующему URL-адресу: http://download.windowsupdate.com/microsoftupdate/v6/wsusscan/wsusscn2.cab .
Альтернативно этот файл также можно Скачать
В этом блоге мы рассмотрим, как работает управление версиями Windows, а затем пройдем этапы получения информации о версии Windows и списка установленных баз знаний из локальной или удаленной системы. Обладая этой информацией, мы можем быстро выявить уязвимости в системе, которую они атакуют, и, если таковая имеется, использовать эксплойт, чтобы расширить свою позицию. Это поможет нам быстро оценить риск, которому подвержена система. Разработанный мною инструмент Windows Exploit Offerer — Next Generation wes.py и missingkbs.vbs будет максимально эффективно поддерживать процесс идентификации.
Прежде чем углубиться в то, как определить недостающие КБ, давайте сначала разберемся в том, как работают выпуски Windows.
Операционные системы Windows
ОС Windows Microsoft предоставляет как клиентский, так и серверный вариант. Эти варианты используют одно и то же ядро, но предназначены для разных целей. Вариант сервера предназначен для выполнения различных ролей, таких как контроллер домена, веб-сервер и хост виртуализации, что позволяет использовать его на очень мощном оборудовании. Клиентский вариант предназначен для ежедневного использования домашними, учебными и деловыми пользователями для обработки текста, просмотра веб-страниц и игр. Регулярно выпускаются новые версии как клиентской, так и серверной ОС, причем на момент написания статьи Windows 11 и Windows Server 2022 являются последними версиями ОС соответственно. Предыдущие версии: (в порядке убывания даты) Windows 10 (сборка 1809)/Server 2019, Windows 10 (сборка 1607)/Server 2016, Windows 8.1/Server 2012 R2, Windows 8/Server 2012, Windows 7/Server 2008 R2, Windows Vista, Server 2008 и Windows XP/Server 2003 [R2]. Полный список версий Windows доступен в Википедии.
В дополнение к двум вариантам Microsoft также различает разные выпуски клиентского и серверного вариантов. Оба варианта имеют несколько редакций, которые в зависимости от варианта различаются функциональностью, лицензионными ограничениями и циклами обновления и поддержки. В этом блоге основное внимание будет уделено Windows 10 и ее серверному варианту Windows Server 2016 и более поздним версиям.
Поскольку Microsoft не поддерживает операционные системы вечно, существует скользящий временной интервал между операционными системами и версиями, которые все еще поддерживаются, и теми, срок эксплуатации которых истек. Как только срок службы продукта подходит к концу, Microsoft больше не предоставляет обновления безопасности для ОС, и поэтому любые обнаруженные в будущем уязвимости больше не будут исправлены, хотя в некоторых редких случаях делается исключение. Одним из таких исключений является обновление безопасности для окончаний срока службы Windows XP, 8 и Windows Server 2003, направленное на устранение уязвимости Eternal Blue 6. В зависимости от версии Windows существует три канала обновлений, которые различаются скоростью добавления новых функций, а также напрямую связаны с продолжительностью поддержки. Каждый выпуск на канале можно рассматривать как веху, на которой в ОС добавляются новые функции.
Хорошей первой проверкой будет определение того, поддерживается ли по-прежнему операционная система. Это можно проверить, выполнив поиск на веб-сайте документации по жизненному циклу версии Windows, с которой вы столкнулись. URL-адрес этого веб-сайта: https://docs.microsoft.com/en-us/lifecycle/products/?products=windows
Пример с поиском Windows 10 Пример с поиском Windows 10: https://docs.microsoft.com/en-us/lifecycle/products/?products=windows&terms=Windows 10 .
Каналы выпуска
Потребительские выпуски Windows 10 (Home и Pro) имеют поддержку только 18 месяцев, тогда как версии Windows 10 для бизнеса (Enterprise и Education) имеют 30 месяцев поддержки в случае осеннего выпуска. Эти версии Windows 10 выпускаются каждые 6 месяцев и являются частью так называемого Semi-Annual Channel ( SAC). Помимо потребительской и бизнес-версий Windows 10, существует также специальная версия, предназначенная для использования в специализированных средах, таких как банкоматы и медицинское оборудование. Эта версия обеспечивает 10 лет поддержки и выпускается каждые 2–3 года в рамках Long-Term Service Channel ( LTSC ).
В случае Windows Server также существует две редакции. Windows Server с добавлением года (Windows Server 2016, Windows Server 2019,…) является частью LTSC и выпускается каждые 2–3 года с 10-летней поддержкой. Вместо этого к другому выпуску Windows Server добавляется название выпуска, и он является частью SAC с 18-месячной поддержкой. Примером такого выпуска SAC является Windows Server, сборка 2004. Выпуски SAC не включают функцию Desktop Experience (графический пользовательский интерфейс для Windows Server).
Канал | Обновления функций | Поддержка | Примечания |
---|---|---|---|
Инсайдерская программа | Как только будет выпущена новая функция; сюда входят бета-версии/тестовые версии | 18 месяцев | Инсайдерская программа снова разделена на три этапа: быстрый, медленный и предварительный просмотр выпуска. |
Полугодовой канал ( SAC ) | Каждые 6 месяцев | 18 месяцев (+12 месяцев) | Ранее известный как Текущая ветка( CB ). Дополнительные 12 месяцев поддержки в случае осеннего выпуска версий Enterprise и Education. Выпуск этой осени ранее назывался Current Branch for Business ( CBB ). |
Канал долгосрочного обслуживания ( LTSC ) | Каждые 2-3 года | 10 лет | Ранее известный как ветка долгосрочного обслуживания ( LTSB ). |
Раньше выпуски назывались ГГММ, где ГГ — это двухзначный год, за которым следовал ММ, который представляет собой двухзначный месяц, например 1909 для сентябрьского выпуска 2019 года. Начиная с осеннего выпуска Windows 10 в 2020 году, это изменилось на модель полугодия YYH1/YYH2. Это означает, что выпуск Windows 10 от мая 2021 года называется 21H1. Названия этих выпусков используются в выходных данных различных инструментов, отображающих информацию о версии ОС в Windows, о которой мы поговорим в следующем разделе.
С момента релиза начинает отсчитываться количество месяцев (или лет в случае LTSC ) поддержки. Периодические выпуски по различным каналам обновления можно загрузить через Центр обновления Windows, каталог обновлений Microsoft 10 и службы Windows Server Update Services ( WSUS ). Кроме того, для чистого развертывания выпускаются образы дисков.
Обновления безопасности
Теперь понятно, как определить, поддерживается ли конкретная версия ОС или срок ее эксплуатации истек, пришло время взглянуть на обновления безопасности. Хотя в случае возникновения срочных уязвимостей обновления безопасности могут быть развернуты вне обычного ежемесячного графика, Microsoft обычно выпускает обновления безопасности каждый второй вторник месяца. Этот день называется Update Tuesday, однако в народе этот день также называют Patch Tuesday.
В мире Microsoft каждое обновление безопасности (а также обновления, не связанные с безопасностью) можно идентифицировать по идентификатору статьи базы знаний ( KB ). Этот номер базы знаний можно использовать в Руководстве по обновлению безопасности центра реагирования на проблемы безопасности Microsoft ( MSRC ) для получения дополнительной информации о возможности использования определенной уязвимости. На страницах справки Microsoft содержится дополнительная информация об обновлении безопасности, а в каталоге обновлений Microsoft 10 содержатся ссылки для загрузки установочного файла обновления безопасности и получения информации о замене KB. Помимо базы знаний, эти обновления безопасности также называются исправлениями и исправлениями. В этом блоге эти имена используются как взаимозаменяемые.
Ниже приведена таблица с различными ресурсами, которые Microsoft предоставляет по обновлениям безопасности.
Имя | Сайт | Информация |
---|---|---|
Руководство по обновлению безопасности MSRC | https://msrc.microsoft.com/update-guide | Список последних CVE и связанных с ним баз знаний для продуктов Microsoft со ссылками на подробную информацию о возможности использования уязвимостей, статье базы знаний и ссылкой для загрузки обновления безопасности. |
Страницы справки Microsoft | https://support.microsoft.com/help/ | Подробная информация о том, что исправляет обновление безопасности, какие потенциальные проблемы оно может вызвать, а также инструкции о том, как получить обновление. |
Каталог обновлений Microsoft | https://www.catalog.update.microsoft.com/Search.aspx?q=KB | Обеспечивает загрузку обновлений безопасности для различных версий Windows, а также на вкладке «Сведения о пакете» информацию о том, какие предыдущие обновления заменяются этим обновлением или заменяют это обновление. |
Определение установленных обновлений безопасности
Как хакеры, мы хотели бы определить, отсутствуют ли в определенной системе обновления безопасности, и если да, отметить это или даже использовать эксплойт, чтобы злоупотребить уязвимостью и получить доступ или эскалировать проблему. Прежде чем определить, какие обновления безопасности отсутствуют, сначала необходимы сведения о версии ОС в сочетании с установленными в данный момент исправлениями.
Существует множество способов получить эту информацию как из локальной, так и из удаленных систем, при условии, что учетная запись, запускающая команду, имеет достаточные привилегии для доступа к удаленной системе. В зависимости от подхода информация о версии ОС и установленных исправлениях безопасности получается с помощью одной или разных команд. Кроме того, в Windows встроены такие инструменты графического пользовательского интерфейса, как и winver.exe, msinfo32.exe и Просмотр установленных обновлений» в appwiz.cpl, однако из этих инструментов невозможно легко экспортировать информацию в файл для обработки на более позднем этапе, поэтому мы не будем фокусироваться на этих инструментах.
systeminfo.exe
systeminfo.exe — это утилита, встроенная в Windows, начиная с самых ранних версий Windows. Этот инструмент перечисляет как установленные исправления, так и версию Windows, а также может собирать эту информацию из удаленной системы. Для получения информации из удаленной системы можно использовать параметр /s. Либо удостоверение, под которым выполняется текущий процесс, должно иметь разрешения в удаленной системе, либо учетные данные необходимо предоставить с помощью параметров /U и /P. Эта команда в значительной степени полагается на инструментарий управления Windows (WMI) для сбора информации как в локальной, так и в удаленной системе.
WMIC.exe
WMIC.exe — это утилита командной строки WMI, которая позволяет как запрашивать WMI, так и вызывать функции в WMI как локально, так и удаленно. Как обсуждалось в параграфе об утилите systeminfo.exe, WMI предоставляет классы, которые при запросе перечисляют сведения об операционной системе и установленных обновлениях безопасности. Эти классы являются соответственно классом Win32_OperatingSystem и классом Win32_QuickFixEngineering, которые оба находятся в пространстве имен root\CIMv2. Утилита WMIC.exe предоставляет псевдонимы для этих классов, а именно OSи QFE, но можно использовать и полные имена классов.
Командлеты PowerShell
PowerShell предоставляет командлеты Get-ComputerInfo и Get-HotFixдля получения информации о локальном компьютере соответственно и выводит список установленных исправлений как в локальной, так и в удаленной системе. Командлет Get-ComputerInfoбыл добавлен из PowerShell версии 5.1. В основе обеих команд снова используется WMI для получения соответствующей информации. Командлеты Get-ComputerInfo и Get-HotFix можно выполнять в удаленной системе через WinRM с помощью Invoke-Command командлета, но это выходит за рамки данного блога.
WMI через PowerShell
Вместо использования WMIC.exe утилиты также можно использовать встроенный командлет Get-WmiObject PowerShell (или дополнительно командлет Get-CimInstance из PowerShell версии 3). Опять же, с помощью этих командлетов можно запрашивать класс Win32_OperatingSystem и классы как локально, так и удаленно. На случай, если вам понадобится незаметно подключить эту информацию во время упражнений красной команды, эти командлеты также поддерживаются двоичным файлом NoPowerShell .NET.
Не нативные инструменты
В дополнение к встроенным утилитам Windows и командлетам PowerShell существует несколько инструментов, которые также могут получать информацию о версии ОС и установленных обновлениях безопасности. Двумя примерами таких инструментов являются srvinfo.exe из Windows Server 2003 Resource Kit 13 и psinfo.exe, который является частью пакета Sysinternals, в настоящее время поддерживаемого Microsoft. Наконец, утилита missingkbs.vbs, входящая в состав инструмента Windows Exploit Offerer — Next Generation ( WES-NG ), не просто перечисляет установленные исправления, но вместо этого точно определяет недостающие исправления. Эта утилита будет подробно обсуждаться в разделе Центра обновления Microsoft.
В следующей таблице приведены все команды, описанные выше, где двоичные утилиты имеют расширение, .exe а остальные являются командлетами PowerShell.
OS version | Security updates | Locally | Remotely | Notes |
---|---|---|---|---|
X | X | systeminfo.exe | systeminfo.exe /S MYSERVER | Optionally provide /U MyUser and /P MyPassword parameters. On Windows Server 2003 (and maybe other OS version), systeminfo.exe might not list all installed KBs if the number of installed KBs is over 200. Microsoft article on this issue available here15. |
X | WMIC.exe OS | WMIC.exe /node:MYSERVER OS | ||
X | WMIC.exe QFE | WMIC.exe /node:MYSERVER QFE | ||
X | X | Get-ComputerInfo | n/a | List of installed patches available in the OsHotFixes attribute. Available from PowerShell 5.1. |
X | Get-HotFix | Get-HotFix -ComputerName MYSERVER | ||
X | Get-WmiObject Win32_OperatingSystem | fl * | Get-WmiObject -ComputerName MYSERVER Win32_OperatingSystem | fl * | ||
X | Get-WmiObject Win32_QuickFixEngineering | Get-WmiObject -ComputerName MYSERVER Win32_QuickFixEngineering | ||
X | / | srvinfo.exe | srvinfo.exe \\MYSERVER | From Windows Server 2003 Resource Kit13. On Windows 10 (and possibly earlier OSs) the list of hotfixes is not accurate. |
X | / | psinfo.exe -h | psinfo.exe -h \\MYSERVER | Part of the Sysinternals suite14. The -h flag to list the installed hotfixes does not seem to work on Windows 10 (and possibly earlier OSs). |
X | X | cscript.exe missingkbs.vbs | n/a | List missing patches using WES-NG’s missingkbs.vbs utility. This utility will be extensively discussed in the Microsoft Update section. |
Для дальнейшей обработки полезно сохранить информацию, выдаваемую указанными выше утилитами и командлетами, в файл. Это можно сделать, перенаправив стандартный вывод (STDOUT) инструмента в файл. При запуске .exe утилит из командной строки ( cmd.exe) это можно сделать, добавив в конец команды > myfile.txt. Например systeminfo.exe, в случае используйте следующую командную строку.
В случае PowerShell можно использовать символ перенаправления ( Get-HotFix > hotfixes.txt) или выходные данные можно передать в Out-File командлет, при необходимости указав тип кодировки, которую необходимо использовать с помощью -Encoding параметра. Более того, если необходимы только данные из определенного атрибута, этот атрибут можно указать с помощью командлета ForEach-Object(или псевдонима %) и впоследствии передать его по Out-File конвейеру, например:
Определение отсутствующих обновлений безопасности
После сбора информации о версии Windows и установленных обновлениях безопасности следующим шагом будет определение отсутствующих обновлений безопасности. Файлы, созданные в предыдущем разделе, можно скопировать локально для дальнейшего исследования с целью выявления уязвимостей и потенциальных доступных эксплойтов.
Как обсуждалось в разделе «Обновления безопасности», каталог обновлений Microsoft 10 предоставляет информацию о замене KB. Можно было бы просмотреть каждый КБ и определить, какими новыми КБ был заменен этот КБ, и проверить, были ли эти КБ, в свою очередь, также установлены рекурсивным образом. Однако это приведет к тому, что придется проделать большую работу по всем базам знаний и проверить, были ли они заменены. Вот здесь-то и приходит на помощь разработанная мной утилита Windows Exploit Offerer — Next Generation ( WES-NG ). WES-NG использует набор данных MSRC для определения связей замены между различными базами знаний и связывает их через идентификаторы общих уязвимостей и воздействий ( CVE ) с потенциальными эксплойтами, которые могут быть доступны для уязвимостей. Подробнее об этих источниках данных см. далее в разделе «Набор данных» .
WES-NG по умолчанию включен в дистрибутив и репозиторий BlackArch Linux для тестирования на проникновение , но его также можно легко получить в любой другой ОС с помощью утилиты Python pip ( pip install wesng) или просто клонировав репозиторий WES-NG : git clone --depth 1 https://github.com/bitsadmin/wesng.
Windows Exploit Suggester - Next Generation
Скрипт WES-NGwes.py — это инструмент Python 2/3, который использует файл определений эксплойтов и проверяет наличие отсутствующих исправлений на основе версии ОС и списка установленных исправлений. WES-NG впоследствии автоматически повторяет цепочку замененных патчей. Чтобы начать работу с wes.py, сначала необходимо загрузить последний файл определений с помощью параметра --update(сокращение: -u), который загрузит последний definitions.zip файл в текущий каталог. Далее wes.py можно выполнить с ранее извлеченным systeminfo.txt файлом и дополнительным qfe.txt файлом со списком установленных КБ в качестве параметра. Чтобы получить полный список всех поддерживаемых параметров, включая различные примеры, выполните wes.py --help(сокращение: -h).
При выполнении wes.py сначала определит версию ОС systeminfo.txt и соберет из файла все базы знаний, когда-либо выпущенные для этой версии ОС из definitions.zip. Из этого списка удаляются все базы знаний , установленные в системе, включая те базы знаний , которые были заменены установленными заменяющими базами знаний. Этот шаг выполняется рекурсивно, поэтому удаляется вся цепочка баз знаний, заменяемая установленной базой знаний. После проверки всех KB, применимых к версии ОС, только те, которые не установлены, отображаются как отсутствующие KB. Наконец, для каждого KB определяются CVE, которые можно будет устранить, если установить KB. Затем эти CVE перечисляются, включая следующую информацию.
Атрибут | Описание |
---|---|
Дата | Дата в yyyyMMdd формате публикации базы знаний |
CVE | CVE , для которого уязвима система |
Затронутый продукт | Версия ОС |
Затронутый компонент | Программный компонент системы, который уязвим |
Строгость | Тяжесть CVE |
Влияние | Влияние на систему при использовании CVE |
Эксплуатация | Ссылки на код эксплойта PoC, если он общедоступен. |
Фильтрация
Кроме того, уязвимости из выходных данных WES-NG также могут быть отфильтрованы. Это полезно, например, если злоумышленник заинтересован в уязвимостях, которые могут привести к удаленному выполнению кода, и/или только в тех уязвимостях, для которых доступен код эксплойта. Соответственно, для этого можно использовать параметры --impact "Remote Code Execution"(сокращение: -i) и --exploits-only(сокращение: -e Кроме того, результаты для определенных продуктов можно скрыть с помощью параметра --hide или вывести список только результатов с определенной серьезностью с помощью параметра --severity (сокращение: -s). Чтобы получить полный обзор параметров, включая примеры, проверьте вывод команды --help, который также указан в CMDLINE.md .
WES-NG по умолчанию выводит результаты на консоль. Однако для дальнейшего анализа WES-NG также поддерживает сохранение результатов в формате CSV на диск с использованием параметра --output(сокращение: -o), например:
Ниже представлена анимация от сбора версии ОС и отсутствующих исправлений до определения недостающих исправлений с помощью WES-NG, включая использование некоторых описанных фильтров и опции вывода в формате csv.
Устранение ложных срабатываний
Просматривая результаты WES-NG, к сожалению, выясняется, что он также сообщает о ложных срабатываниях. Например, даже в полностью исправленных системах WES-NG может по-прежнему показывать отсутствие некоторых КБ. Причина этого в том, что канал MSRC, который WES-NG использует для составления своих определений, часто содержит неполную информацию о замене KB .
Еще один момент, который следует принять во внимание: WES-NG предполагает, что все функции установлены. Например, если systeminfo.exe проверяется выходной файл простого Windows Server без каких-либо установленных ролей и функций, он может сообщить об уязвимостях IIS, для которых в ОС не установлены базы знаний. Это связано с тем, что помимо версии ОС и установленных KB, WES-NG не имеет информации о том, какие роли и функции установлены. Поэтому уязвимости, обнаруженные в неустановленных компонентах, можно смело игнорировать.
Чтобы исключить ложноположительные результаты, существует ряд способов.
Прагматичный путь
Как упоминалось ранее, обновления безопасности выпускаются ежемесячно. При проверке системы на отсутствие исправлений прагматичным способом было бы просто проверить дату выпуска самой последней базы знаний, установленной в системе, а затем предположить, что после этого момента новые обновления не устанавливались. В случае, если из-за проблем с заменой MSRC старые базы знаний будут указаны как отсутствующие, можно с уверенностью предположить, что это, вероятно, будут ложные срабатывания, поскольку более новые базы знаний уже установлены. wes.py's --usekbdate(сокращение: -d) выполнит эти действия и исключит из вывода более старые, предположительно отсутствующие КБ . Пример:
Проверка вручную
Если выходные данные должны быть более точными, другой вариант — выполнить WES-NG, а затем вручную проверить список недостающих КБ в конце выходных данных на веб-сайте каталога Центра обновления Microsoft. Это можно сделать, найдя недостающую базу знаний и определив, какие базы знаний заменили эту базу знаний и действительно ли эта база знаний установлена в системе. Если это так, то базу знаний, которую WES-NG считает отсутствующей, можно явно указать как установленную, чтобы WESN-NG не отображал уязвимости, которым подвергается система, если база знаний не установлена. Таким образом, это замена, которой не хватало в MSRC. В WES-NG база знаний может быть предоставлена wes.py с помощью параметра -p, например wes.py systeminfo.txt -p KB4487029. Повторите этот процесс для каждого предположительно отсутствующего КБ, если параметр -p позволяет указать несколько КБ, разделив их пробелом, например -p KB4487029 KB4345421. Более подробное описание ручной проверки выходных данных WES-NG см. на странице «Устранение ложных срабатываний» в вики WES-NG .
Автоматическая проверка
Поскольку проверка вручную по-прежнему является утомительным процессом, @DominicBreuker предоставил полезную функцию для автоматизации процесса поиска замены в каталоге Центра обновления Microsoft путем анализа веб-сайта и автоматического обхода цепочек. Эту функцию можно использовать, указав параметр --muc-lookup скрипту wes.py. После определения отсутствующих исправлений на основе набора данных MSRC он возьмет полученные недостающие исправления и автоматически проверит каждое из них в каталоге обновлений Microsoft.
Помимо ручной и автоматической проверки замены с помощью каталога обновлений Microsoft, существует также совершенно другой подход к выявлению отсутствующих исправлений, который описан в следующем разделе.
Центр обновления Майкрософт
Совершенно другой подход к выявлению недостающих КБ — использовать Центр обновления Microsoft. Вместо получения версии ОС и установленной на данный момент версии с помощью systeminfo.exe или другими способами, описанными в разделе «Определение установленных обновлений безопасности» , можно использовать собственные функции Windows для определения того, какие КБ все еще отсутствуют в системе в текущий момент времени.
missingkbs.vbs
Апплет панели управления Центра обновления Windows или современная страница панели управления Центра обновления Windows могут отображать недостающие КБ, но повторно вводить результаты может быть утомительно, и для этого требуется графический интерфейс, который может быть недоступен. По этой причине в репозиторий WES-NG был добавлен скрипт, позволяющий получать необходимую информацию из командной строки: missingkbs.vbs.
Результирующий файл со списком недостающих КБ можно предоставить с помощью параметра --missing(сокращенно: -m), чтобы точно определить CVE, к которым уязвима система, обойдя все проблемы, связанные с неполной информацией о замене, предоставляемой MSRC. Кроме того, в отличие от списка установленных исправлений из systeminfo.exe, утилита missingkbs.vbs также перечисляет только недостающие КБ установленных функций.
Чтобы определить недостающие КБ, утилита использует Microsoft.Update.SessionCOM-объект, реализованный в библиотеке wuapi.dll. Чтобы иметь возможность использовать функциональные возможности этого COM-объекта, при выполнении утилиты требуется командная строка с повышенными правами. Чтобы просмотреть полный список всех поддерживаемых параметров, включая различные примеры, выполните cscript missingkbs.vbs /Help(сокращение: /?).
При выполнении missingkbs.vbs без параметров будут использоваться онлайн-серверы Центра обновления Windows или, если настроено, сервер WSUS, которые часто используются в корпоративных средах. Поскольку сервер WSUS может сдерживать обновления для своих клиентов, существует вероятность того, что сервер WSUS сообщит, что в системе нет каких-либо исправлений, хотя на самом деле они отсутствуют. Более того, даже если система не подключена (напрямую) к Интернету, все равно было бы полезно иметь возможность проверить наличие недостающих КБ.
По этой причине утилита имеет возможность использовать файл автономного сканирования Центра обновления Windows, чтобы определить недостающие КБ на основе этого файла, а не использовать серверы Microsoft Update/ WSUS. Этот файл сканирования размером около 1 ГБ можно загрузить в системе, подключенной к Интернету, по следующему URL-адресу: http://download.windowsupdate.com/microsoftupdate/v6/wsusscan/wsusscn2.cab .
Альтернативно этот файл также можно Скачать
View hidden content is available for registered users!