Смущает актуальность BigFix - файлы x64

Я использую BigFix в корпоративной среде и заметил, что недавний цикл исправлений Microsoft на 2016 год провалился на небольшой группе активов. Я смог обойти эту проблему, создавая нестандартные копии, используя измененную релевантность, однако релевантность, которую я должен был использовать, не всегда была согласованной, хотя большинство файлов были расположены в C:\Windows\Sytem32,

Например: MS16-031 - критерии, которые ищет моя платформа сканирования, основаны на номере версии для Ntdll.dll, Я создаю Custom Fixlet с релевантностью:

((version of x64 file "C:\Windows\System32\Ntdll.dll") as string) < VersionNumberGoesHere

Это прекрасно работало, так как я создал анализ BigFix, который ранее искал Ntdll.dll используя актуальность:

if (exists x64 file "C:\Windows\System32\Ntdll.dll") then ((version of x64 file "C:\Windows\System32\Ntdll.dll") as string) else "Does Not Exist"

Я был в состоянии подтвердить, что релевантность для Custom Fixlet была почти на месте с анализом. По некоторым причинам, это не зеркальное отображение двух, но это очень близко, и список Custom Fixlet содержит все машины, которые отмечены в результатах сканирования, поэтому я доволен этим.

Проблема возникает здесь: для некоторых файлов в C:\Windows\System32Я должен использовать совершенно другой синтаксис, чтобы получить правильную информацию о номере версии, которую я ищу, основываясь на результатах сканирования. То есть я могу использовать метод, перечисленный выше, но информация о версии, которую он предоставит, даже близко не соответствует тому, что ищет сканер. Если бы я использовал вышеуказанный метод, предполагая, что сканер ищет что-то вроде "Версия номер 6.1.7600.16385", результаты, которые я бы увидел, вместо этого читали бы "1.1.11302.0". Это все равно будет какая-то кажущаяся нумерация версий, но совсем не похожая на тип, на который ссылается моя платформа сканирования.

Например: MS16-027 - найти информацию о версии файла для mfds.dll Для анализа мне пришлось использовать:

value "FileVersion" of version block 1 of file "mfds.dll" of system folder

Для Custom Fixlet мне пришлось использовать:

value "FileVersion" of version block 1 of file "mfds.dll" of system folder != VersionNumberGoesHere (OSServicePatch_gdr.LongStringOfNumbers)

Я немного прочитал синтаксис Action Script для BigFix, и мне показалось, что x64 file (command) против file (command) может привести к разным результатам в зависимости от путей для 32-разрядных и 64-разрядных систем, однако я подумал, что это применимо только к файлам, расположенным внутри C:\Program Files а также C:\Program Files (x86)? Разве это не так? Если так, где находится 64-битная версия System32 и почему результаты между этими двумя так сильно различаются?

1 ответ

Просто чтобы прояснить, это вопрос актуальности BigFix, а не BigFix ActionScript.

Я скажу, что хотя релевантность BigFix имеет некоторую кривую обучения и иногда затрудняет выявление источника сложности, проблемы, с которыми вы сталкиваетесь, больше связаны со сложностью того, как файлы могут иметь много разных типов версий. информация плюс способ перенаправления Microsoft WindowsOnWindows работает.


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

Актуальность versions of files "mfds.dll" читает одно местоположение, а актуальность values "FileVersion" of version blocks of files "mfds.dll" читает в другом месте.

Посмотреть здесь:

Q: (values "FileVersion" of version blocks of it, (it as string) of versions of it) of files "mfds.dll" of (system folders)
A: 10.0.14342.1000 (rs1_release.160506-1708), 10.0.14342.1000
T: 3.677 ms
I: plural ( string, string )

Я не думаю, что различия, которые вы видите, связаны с различиями между file а также x64 file, но это важно понимать по многим причинам.

Для целей этого вопроса предположим, что речь идет о 64-битном компьютере с Windows, и вы должны предположить, что это относится к Windows Vista или более поздней версии, но может также относиться к 64-битной Windows XP.

Поскольку клиент BigFix представляет собой 32-разрядный процесс, все операции чтения файлов, которые будут выполняться в специальных 64-разрядных местоположениях, фактически перенаправляются окнами в 32-разрядное расположение.

В чем разница между files а также x64 files в значении BigFix? В случае большинства файлов, использование либо files а также x64 files будет на самом деле читать тот же файл. Это потому, что использование x64 files приказывает BigFix прочитать файл с отключенным перенаправлением WindowsOnWindows(WoW), но это перенаправление применяется только к чтению по определенным путям. Одним из примеров является Program Files и другое существо System32, пока что-то вроде C:\Windows\Temp Перенаправление WoW вообще не зависит, поэтому любой файл, читаемый в C:\Windows\Temp работает одинаково независимо.

  • 32-битное расположение: C:\Program Files (x86)
  • 64-битное местоположение: C:\Program Files
  • 32-битное расположение: C:\Windows\SysWOW64
  • 64-битное местоположение: C:\Windows\System32
  • 64-битное местоположение: C:\Windows\sysnative
    • специальный поддельный путь, который работает без отключения перенаправления

Мы должны поблагодарить Microsoft за то, что в расположении 64-битной системы указано имя 32, а в расположении 32-битной системы. Это, безусловно, чрезвычайно распространенный источник путаницы.

Используйте это отношение, чтобы увидеть, что на самом деле есть 2 копии mfds.dll в системе.

(name of it, size of it) of files "mfds.dll" of (system folders; system x64 folders)

Эта релевантность читает оба местоположения, потому что (system folders; system x64 folders) говорит BigFix читать ОБА C:\Windows\SysWOW64 папка, а также C:\Windows\System32 папка.

Псих? Смешение? Просто подожди, это становится страннее.

Запустите следующую релевантность в отладчике исправлений: pathnames of files "mfds.dll" of (system folders; system x64 folders)

Q: pathnames of files "mfds.dll" of (system folders; system x64 folders)
A: C:\WINDOWS\system32\mfds.dll
A: C:\WINDOWS\system32\mfds.dll
T: 1.312 ms
I: plural string

Обратите внимание, что имена обоих файлов одинаковы, но это НЕ один и тот же файл!!!

Вот как работает WindowsOnWindows Redirection. Он лжет 32-битному процессу и сообщает, что читает файл из C:\Windows\System32 местоположение, даже если он прочитал его из C:\Windows\SysWOW64 вместо этого в случае использования system folders релевантность, поэтому BigFix правильно сообщает имя пути как C:\WINDOWS\system32\mfds.dll, Тогда в случае system x64 folders BigFix (32-битный процесс) сообщает Windows, что хочет прочитать местоположение C:\Windows\System32 с отключенным перенаправлением, в этом случае он фактически читает файл, расположенный в C:\WINDOWS\system32\mfds.dll и правильно сообщает имя пути как таковое.

Я хотел бы повторить, это не имеет ничего общего с BigFix и все, что связано с реализацией Microsoft 64-битной Windows с 32-битной переадресацией Windows.


Для будущих вопросов BigFix я настоятельно рекомендую очень активные форумы: https://forum.bigfix.com/

Другие вопросы по тегам