检查补丁级别是脆弱性研究或开发exploit的重要任务。作为一个寻找bug的人,你应该关心补丁级别,因为假设你有一个针对Internet Explorer 10的0day,你不能总是假定它自首次亮相*2012年)以来就会影响所有IE 10的构建。如果你意识到你的0day只影响一两个版本,那么它有多大的威胁呢?大概没有你想象的那么糟糕。 如果您是exploit开发人员,则需要检查其他原因:最大可靠性。您的漏洞利用有很多可能会失败,由于系统更新而更改的错误小工具(ROP)很容易就是其中之一。如果这个更新发生在一个相当早的阶段,你的漏洞很可能会很多失败。
如果你使用补丁差异,你可能会维护自己的DLL数据库。但是这可能需要大量的磁盘空间,对于大多数人来说,这可能是不值得的,除非你每天都要看这些DLL.可能有一个更经济方法来跟踪所有这些补丁,并有一些接口允许快速和方便地访问它们。 幸运的是,Microsoft维护一个Excel文件中的所有补丁列表,您可以在这里下载: http://www.microsoft.com/en-us/download/confirmation.aspx?id=36982 如果您更喜欢某种GUI进行搜索,则可以使用安全技术中心的My Security Bulletins Dashboard. 您可以编辑这个仪表板来添加特定的过滤器,如Windows版本,Internet Explorer版本,Office等等 例如,如果我想从Windows 7自首次亮相以来找到所有适用于Windows 7的Internet Explorer 10修补程序,则可以添加以下过滤器
- Windows 7
- Internet Explorer
然后我从2012年9月到2014年,我得到:22个结果.但是,当然,这个数字会上升,因为IE 10仍然支持. 还有其他桌面或命令行工具,将基本上检查您的Windows系统丢失的补丁,如Windows Update Powershell Module,在一些情况下它可能工作的更好
- 旧的补丁过去被封装成EXE,这种类型可以通过使用解压缩工具(如7z)来提取.例如,Internet Explorer 6修补程序可以通过这种方式提取。
- 打包成EXE的较新的修补程序支持用于提取的/ X标志。例如,以下将在同一目录下提取补丁。可以通过这种方式提取Internet Explorer 8(xp)等修补程序。
Windows[Something]-KB[Something]-x86-ENU.exe /X:.
- 现在大多数补丁都被打包成MSU。这是你必须做的:
- 将所有* .msu文件放在同一目录下(在window中)
- 运行 tools/extract_msu.bat [*.msu文件的绝对路径]
- extract_msu.bat应该自动提取所有* .msu文件。每个新文件夹中的“extracted”子目录都是您可以找到更新组件的地方
通过使用Metasploit的msfpescan实用程序(或者msfbinscan,它足够聪明以知道PE格式) 是来检查不同修补程序中小工具的最快方法。这很容易,你只需把DLL放在同一个目录下,然后执行:
$ ./msfbinscan -D -a [address] -A 10 /patches/*.dll
那么这个工具会反汇编那个目录下的所有DLL,在那个特定的地址上是10个字节。您可能可以稍微自动化一下,以便快速确定哪些DLL没有正确的小工具,如果这是您的情况,那意味着您使用的小工具是不安全的。你应该找到另一个更可靠的。