运维说:Nessus和Powershell更配哟

安全 网站安全
在日常的安全评估工作中,时常会对内部主机进行验证扫描,寻找那些因为错过打补丁时间或者是错误配置所导致漏洞。对此我经常使用Nessus,它就像是一位经验十足的系统管理员。

在日常的安全评估工作中,时常会对内部主机进行验证扫描,寻找那些因为错过打补丁时间或者是错误配置所导致漏洞。对此我经常使用Nessus,它就像是一位经验十足的系统管理员。渗透测试人员或许会寻找一个特殊的Java或是Flash漏洞,相对系统管理员来说他们并不太想知道某台设备存在多少个漏洞,其最需要的信息是这台设备需要进行Java更新,以及更新与否对业务的影响情况。

总之,在一个中型网络中你完全可以相信Nessus扫描可以获取数万条调查结果。在过去的一年中,我自己写了一些有趣的sed/cut脚本来切割这些数据或者将这些数据导入数据库,方便我们的分析。今天我会使用到PowerShell(免费,易上手并且应用很广)向大家证明Nessus和Powershell的搭配是多么的***!

实例演示

首先导入从Nessus中获取到CSV文件,看到统计结果总数我反正是吓了跳:

运维说:Nessus和Powershell更配哟

 

接下来看看数据结构:

运维说:Nessus和Powershell更配哟

 

接下来寻找Flash Player的问题,我们正在寻找所有非零风险的结果

运维说:Nessus和Powershell更配哟

 

哪些主机受到影响?有数个主机存在几十个不连续的Flash漏洞,对于维护人员来说取得修复清单成为了首要任务,其次便是未来如何防止这样的事情。

运维说:Nessus和Powershell更配哟

 

然后我们来解决Java的问题,注意“|”并不是or操作符,并且匹配(match)操作符是不区分大小写的,而字段名是明确区分大小写的。如果你没有引起注意那么你极有可能是查询一个空的变量导致无法获得结果。对于Java,本例中将大约50,000的调查结果缩短为222

运维说:Nessus和Powershell更配哟 

 

你是在找它们么?

如果你是要寻找其他的问题,可以自己去试试

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年,不论规模大小依旧有许多的商店,你总能时不时的找到一两个从不打补丁或者安装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

运维说:Nessus和Powershell更配哟

 

回到那个需要清单的运维人员问题上,我们仍然需要处理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,制作一个数据透视表,这样你就得到了一份漂亮简介的报告!

运维说:Nessus和Powershell更配哟

 

责任编辑:蓝雨泪 来源: FreeBuf
相关推荐

2017-07-12 15:49:32

ASGit开发

2017-02-27 11:20:31

大数据DevOps迁移

2019-01-18 15:01:17

云计算运维管理

2018-12-27 15:13:12

云计算运维管理

2019-07-11 09:32:35

运维青云KubeSphere

2016-12-13 13:15:49

运维

2016-03-16 14:59:09

HadoopSpark大数据平台

2019-03-19 08:41:38

Linux运维变更

2012-12-19 14:23:09

网络运维光网络OTN

2010-01-21 22:19:25

网络优化运维管理摩卡软件

2019-03-15 10:13:10

运维云计算运营

2021-07-22 09:54:23

AI大数据智能运维

2022-12-16 09:35:00

运维开发

2013-03-29 09:15:08

IT运维运维人员运维工程师

2014-09-25 09:21:41

4G运维

2019-02-19 09:14:52

IT运维系统

2018-03-27 16:23:53

运维AI智能

2014-08-04 10:10:35

IT运维自动化运维

2018-08-16 08:37:03

机房运维硬件

2009-06-13 15:35:51

ITILIT运维
点赞
收藏

51CTO技术栈公众号