運維說:Nessus和Powershell更配喲
在日常的安全評估工作中,時常會對內部主機進行驗證掃描,尋找那些因為錯過打補丁時間或者是錯誤配置所導致漏洞。對此我經(jīng)常使用Nessus,它就像是一位經(jīng)驗十足的系統(tǒng)管理員。滲透測試人員或許會尋找一個特殊的Java或是Flash漏洞,相對系統(tǒng)管理員來說他們并不太想知道某臺設備存在多少個漏洞,其最需要的信息是這臺設備需要進行Java更新,以及更新與否對業(yè)務的影響情況。
總之,在一個中型網(wǎng)絡中你完全可以相信Nessus掃描可以獲取數(shù)萬條調查結果。在過去的一年中,我自己寫了一些有趣的sed/cut腳本來切割這些數(shù)據(jù)或者將這些數(shù)據(jù)導入數(shù)據(jù)庫,方便我們的分析。今天我會使用到PowerShell(免費,易上手并且應用很廣)向大家證明Nessus和Powershell的搭配是多么的***!
實例演示
首先導入從Nessus中獲取到CSV文件,看到統(tǒng)計結果總數(shù)我反正是嚇了跳:
接下來看看數(shù)據(jù)結構:
接下來尋找Flash Player的問題,我們正在尋找所有非零風險的結果
哪些主機受到影響?有數(shù)個主機存在幾十個不連續(xù)的Flash漏洞,對于維護人員來說取得修復清單成為了首要任務,其次便是未來如何防止這樣的事情。
然后我們來解決Java的問題,注意“|”并不是or操作符,并且匹配(match)操作符是不區(qū)分大小寫的,而字段名是明確區(qū)分大小寫的。如果你沒有引起注意那么你極有可能是查詢一個空的變量導致無法獲得結果。對于Java,本例中將大約50,000的調查結果縮短為222
你是在找它們么?
如果你是要尋找其他的問題,可以自己去試試
Adobe Reader (以人格擔保這里不會將Flash問題也計算在內)
$adobe = $all | Where-Object {$_.Description -match “Adobe Reader” -And $_.Description -notmatch "Flash" -and $_.Risk -notmatch "None"}
.NET Framework:
$dotnet = $all | Where-Object {$_.Description -match "Net Framework" -and $_.Risk -notmatch "None" }
Silverlight:
$silverlight = $all | Where-Object {$_.Description -match "Silverlight" -and $_.Description -notmatch ".Net" -and $_.Risk -notmatch "None" }
Office:
$msoffice = $all | Where-Object {$_.Synopsis -match '(Office|Word|Powerpoint|Excel|Outlook)' -and $_.Risk -notmatch "None" }
Microsoft補丁, 安全警告以及Service Packs:
$misc_microsoft = $whatsleft | Where-Object {$_.Name -match '(MS[0-9][0-9]-[0-9][0-9][0-9]|MS KB|MS Security Advisory|Windows Service Pack)' }
快速生成報告
即使在2015年,不論規(guī)模大小依舊有許多的商店,你總能時不時的找到一兩個從不打補丁或者安裝Service Pack的主機。
險些忘記了,注意將查詢分解開來,這樣方便閱讀:
$whatsleft = $all | Where-Object { $_.Description -notmatch '(Flash|Adobe|JRE|JSE|JAVA|Java|jre|jse)'} | Where-Object {$_.Name -notmatch '(Silverlight|Net Framework|Office|Word|Powerpoint|Excel|Outlook|Explorer)'} | Where-Object {$_.Name -notmatch '(MS[0-9][0-9]-[0-9][0-9][0-9]|MS KB|MS Security Advisory|Windows Service Pack)' } | Where-Object {$_.Risk -notmatch "None"}
最終的問題總結:
$final_summary = $whatsleft2 | select 'Plugin ID', Name | Group-Object 'Plugin ID' | Sort-Object -Descending Count
查看問題:
$final_summary | Out-GridView
回到那個需要清單的運維人員問題上,我們仍然需要處理host-by-host問題
$summary_by_host = $whatsleft2 | select Host,'Plugin ID', Name | Sort-Object Host
接著將清單轉儲到CSV:
$final_summary_by_host | Export-Csv ./final-summary.csv
將CSV文件導入Excel,制作一個數(shù)據(jù)透視表,這樣你就得到了一份漂亮簡介的報告!