With FutureVuls, you can detect and manage vulnerabilities in Windows using both installed and uninstalled Microsoft Knowledge Base (KB) updates. CVE-IDs contained in uninstalled KB updates are detected as vulnerabilities that may exist in the client.
By converting KB to CVE, you can judge them using the same indicators as other management targets, such as Linux or libraries. You can also perform triage and response based on information such as warning information and attack codes.
Windows in any environment can be scanned, including:
For more information on vulnerability detection, refer to here.
Please refer to Supported Environment for scan targets.
This is a method of installing a Windows scanner on the client and detecting vulnerabilities. Use this method primarily if scanner installation is possible.
Refer to the tutorial for installation method.
The Windows install script uses the bitsadmin command, which is a standard HTTP client built into Windows.
Refer to Windows Scan FAQ if an error occurs during scanner installation.
The Windows scanner executes scans once per day automatically using the Task Scheduler.
If you want to run the scanner immediately after installation or at any other time, follow these steps:
vuls-saas
and [Right click][to execute]To run a scan manually, execute the following command as an administrator:
C:\Program files\vuls-saas\vuls-saas.bat
After the scan is finished, it will be reflected on the web page after a while.
If the results are not reflected even after waiting for 10 minutes, check the following log file to find out the cause:
C:\Program Files\vuls-saas\vuls-windows.log
If an error occurs, refer to the Windows Scan FAQ.
You can filter the information you want to upload to FutureVuls by specifying the JSON key of the information you do not want to upload in IgnoredJSONKeys
in config.toml.
[Servers]
[Servers.localhost]
Host = "localhost"
UUID = "xxx-xxx-xx"
IgnoredJSONKeys = ["packages"]
To confirm the JSON key to specify in config.toml, execute vuls.exe with the following procedure or you can refer FAQ.
C:\Program Files\vuls-saas>vuls.exe -debug
The scan results obtained by executing the scanner are automatically deleted after being uploaded to FutureVuls.
If you want to keep the file, run the scanner with the -debug
flag from the command prompt.
C:\Program Files\vuls-saas>vuls.exe -debug
If there are detection omissions for applied or unapplied update packages, check the list of advisories and use the manual KBID manual registrationto supplement them.
You can detect unapplied KBs by referring to the WSUS on the local network by configuring config.toml.
To change the destination of Windows Update access, set WinUpdateSrc in config.toml as follows:
[Servers]
[Servers.localhost]
Host = "localhost"
UUID = "xxx-xxx-xx"
WinUpdateSrc = "2"
[Servers]
[Servers.localhost]
Host = "localhost"
UUID = "xxx-xxx-xx"
WinUpdateSrc = "1"
If Windows scan under WSUS does not work properly, please refer to the following:
By registering the KBIDs related to updated programs that have been applied or not applied to Windows on the FutureVuls screen, vulnerabilities can be detected without using a scanner.
Supports environments where FutureVuls scanner is difficult to introduce, such as:
In addition, if there is a detection omission in the updated program detected by scanner, it can be complemented using the PASTE scan function.
Please refer to the supported environment for the target of PASTE scan.
To perform a new PASTE scan on Windows, follow these steps:
Add server
> Add PASTE server
in the server, open the dialogAdd PASTE server
Enter server name
Paste installed update program information
After registration, the scan will be automatically executed, and vulnerabilities will be detected by complementing the unapplied update program. If you want to manage vulnerabilities more strictly, use the manual registration of KBID function to register unregistered update program information.
If there are updates or deficiencies in the KB information registered by PASTE scan, please manually register the KBID using this function. You can also use it if there are deficiencies in the KB information registered by the Windows scan with the scanner.
KBID registration
and send.
KBID registration
, but it is not recommended because it increases the risk of false detection.Here are three methods to obtain applied/unapplied update patches (KBIDs) on Windows.
Method of obtaining KBIDs | Applied | Unapplied |
---|---|---|
Windows Update API (CUI) | ✅ | ✅ |
Windows settings > Update & Security > Windows Update (GUI) | ✅ | ✅ |
Get-HotFix (CUI) | ✅ | ❌ |
The feature of this method is that you can get the same result as the scanner even in an environment isolated from the Internet by preparing wsusscn2.cab. In addition, it supports obtaining unapplied KBIDs and can format the execution result into an easy-to-register KBID, so it is recommended.
Execute the following command in PowerShell.
# Download http://download.windowsupdate.com/microsoftupdate/v6/wsusscan/wsusscn2.cab in advance.
PS C:\Program Files\vuls-saas> $applied = @()
PS C:\Program Files\vuls-saas> $unapplied = @()
PS C:\Program Files\vuls-saas> $Session = New-Object -ComObject Microsoft.Update.Session
PS C:\Program Files\vuls-saas> $ServiceManager = New-Object -ComObject Microsoft.Update.ServiceManager
PS C:\Program Files\vuls-saas> $UpdateService = $ServiceManager.AddScanPackageService("Offline Sync Service", "C:\Program Files\vuls-saas\wsusscn2.cab", 1)
PS C:\Program Files\vuls-saas> $UpdateSearcher = $Session.CreateUpdateSearcher()
PS C:\Program Files\vuls-saas> $UpdateSearcher.WinUpdateSrc = 3
PS C:\Program Files\vuls-saas> $UpdateSearcher.ServiceID = $UpdateService.ServiceID
PS C:\Program Files\vuls-saas> foreach($e in $UpdateSearcher.QueryHistory(0, $UpdateSearcher.GetTotalHistoryCount())){ If ($e.Title -match '(KB\d{6,7})') { $applied += $Matches[0] }}
PS C:\Program Files\vuls-saas> foreach($e in $UpdateSearcher.search("IsInstalled=1 and RebootRequired=0 and Type='Software'").Updates){ $applied += ('KB'+$e.KBArticleIDs) }
PS C:\Program Files\vuls-saas> foreach($e in $UpdateSearcher.search("IsInstalled=0 and Type='Software'").Updates){ $unapplied += ('KB'+$e.KBArticleIDs) }
PS C:\Program Files\vuls-saas> foreach($e in $UpdateSearcher.search("IsInstalled=1 and RebootRequired=1 and Type='Software'").Updates){ $unapplied += ('KB'+$e.KBArticleIDs) }
PS C:\Program Files\vuls-saas> ($applied | Select-Object -Unique) -Join ',' # AppliedKBID
KB5011651,KB5012599
PS C:\Program Files\vuls-saas> ($unapplied | Select-Object -Unique) -Join ',' # Inapplied KBID
KB5012117
PS C:\Program Files\vuls-saas> $applied = @()
PS C:\Program Files\vuls-saas> $unapplied = @()
PS C:\Program Files\vuls-saas> $Session = New-Object -ComObject Microsoft.Update.Session
PS C:\Program Files\vuls-saas> $UpdateSearcher = $Session.CreateUpdateSearcher()
PS C:\Program Files\vuls-saas> $UpdateSearcher.WinUpdateSrc = 1 # or 2
PS C:\Program Files\vuls-saas> foreach($e in $UpdateSearcher.QueryHistory(0, $UpdateSearcher.GetTotalHistoryCount())){ If ($e.Title -match '(KB\d{6,7})') { $applied += $Matches[0] }}
PS C:\Program Files\vuls-saas> foreach($e in $UpdateSearcher.search("IsInstalled=1 and RebootRequired=0 and Type='Software'").Updates){ $applied += ('KB'+$e.KBArticleIDs) }
PS C:\Program Files\vuls-saas> foreach($e in $UpdateSearcher.search("IsInstalled=0 and Type='Software'").Updates){ $unapplied += ('KB'+$e.KBArticleIDs) }
PS C:\Program Files\vuls-saas> foreach($e in $UpdateSearcher.search("IsInstalled=1 and RebootRequired=1 and Type='Software'").Updates){ $unapplied += ('KB'+$e.KBArticleIDs) }
PS C:\Program Files\vuls-saas> ($applied | Select-Object -Unique) -Join ',' # 適用済みKBID
KB5011651,KB5012599
PS C:\Program Files\vuls-saas> ($unapplied | Select-Object -Unique) -Join ',' # 未適用KBID
KB5012117
The feature of this method is that you can obtain KBID without executing any commands. However, if there are a large number of applied or unapplied KBIDs, there will be a lot of input work on the KBID registration screen.
From “Windows Settings”, click on “Update & Security”.
Look at “Windows Update” in “Update & Security”. The red frame at the top displays the unapplied update programs, so extract the KBID from the title of the update program. In this image, “KB5012117” is the unapplied KBID from “2022-04 Cumulative Update for .NET Framework 3.5 and 4.8 for Windows 10 Version 21H2 for x64-based Systems (KB5012117)”. Also, when you click “View update history” in the red frame at the bottom, the title and date of the applied update program are displayed.
Similarly, obtain the applied KBID from the title of the update program displayed in “View update history”.
Please refer to this method when neither of the above two methods can be used. Note that unapplied KBIDs cannot be obtained with this method.
Run the following command in PowerShell.
PS C:\Program Files\vuls-saas> (Get-HotFix | Select-Object HotFixID | % { If ($_ -match '(KB\d{6,7})') { $Matches[0] }}) -Join ','
KB5012117,KB4562830,KB5003791,KB5007401,KB5012599,KB5011651,KB5005699
3.2. Register the obtained KBID.
Register the obtained applied/unapplied KBID by the method shown in 3.1.
If there are any updates in the Windows status, please delete the registered KBID manually.
For Windows, vulnerability information is displayed using Microsoft’s vulnerability database.
The Microsoft vulnerability database may include Workaround information. Workaround information is displayed in the vulnerability details summary.
KBID is displayed as an advisory. Advisories can be confirmed in Advisory List and other places.
Installed applications on Windows machines managed by FutureVuls are displayed in the Software tab. This includes applications that you have installed yourself.