Nessus报告汉化篇二(初步汉化)

 接着上篇,在上篇中已经收集到了我们所需要的漏洞库,那么接下来就是一个简单的文档处理。本文章是针对于xlsx格式漏洞库进行处理的,后期我会把基于Mysql进行对比的脚本进行更新。
 备注:可以将漏洞数据库直接导出为CVS,然后保存为xlsx便可。
 先做一个简单的分析,如图,我们需要重点关注的有CVE,Host,Risk

 然后我们需要做个筛选,将Risk为None的筛除掉

 最后还需要将无CVE编号的漏洞先筛除掉,如图

 下图为数据库导出的xlsx漏洞库文档截图

 其实到这里,大家应该也明白了,这个‘汉化’的意思吧,其实就是一个简单的对比,通过Nessus报告中的CVE编号与漏洞库进行对比,然后生成新的文档。
 那么可能有同学会说筛选掉的漏洞中,那些有危险的漏洞,又该怎么办呢,其实当我在写这个脚本的时候我也有想过,但是经过这么久的工作经历中来看,其实筛选掉那些没有编号的漏洞,要么是难以利用,要么就是危害及小。
 因为工作较多,我会在每次处理完脚本后,自己在快速浏览一遍那些没有编号,但同时Risk与CVSS较高的漏洞,如果其中含有影响比较严重的漏洞,我会进行手动添加。
 这里先放一张处理好后的文档截图。最终效果就是这样。

 下面是就是一个简单的初步处理脚本,但是这个脚本处理后并不能达到我上图所展示的效果,如IP所属部门、所属系统、是否为遗留漏洞都未在这个脚本中实现。其实笔者的想法是,大家可以根据这个思路自己调整代码,最终写出一个更适合自己使用的脚本。完整的处理脚本和漏洞库我也会在随后的几篇博文进行更新。备注:有可能Nessus扫描文档中会出现,不在漏洞库中的漏洞。针对那些漏洞编号,脚本会打印在控制台,这些漏洞就只能自己去搜索补充到漏洞库中了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
'''
需要将Nessus导出的CVS文件进行筛选后,另存为xlsx文件,同时更改表名
'''
import datetime
from openpyxl import load_workbook,Workbook
#初始报告载入
#workbook = load_workbook("去除信息和无CVE编号的漏洞后.xlsx")
workbook = load_workbook("12月全量.xlsx")
worksheet = workbook["vulns"]
#漏洞库载入
workbook_vul = load_workbook("漏洞库.xlsx")
worksheet_vul = workbook_vul["all"]

#新报告创建
workbook_new = Workbook("12月全量_report.xlsx")
workbook_new.create_sheet("vulns")
worksheet_new = workbook_new["vulns"]
worksheet_new.append(["IP","hostname","scan_time","port","protocol","service","vulerability","risk_level","CVE_number","detailed","solution","return_info","remark","bumen","xitong"])
vul_level_dic ={"Low":'[低]',"Medium":"[中]","Critical":"[高]","High":"[高]"}
for i in range(2, worksheet.max_row + 1):
for j in range(2,worksheet_vul.max_row + 1):
if worksheet.cell(row=i,column=2).value == worksheet_vul.cell(row=j,column=2).value:
ip = worksheet.cell(row=i,column=5).value
hostname = ""
scan_time = datetime.datetime.now().strftime('%Y-%m-%d')
port = worksheet.cell(row=i,column=7).value
protocol = worksheet.cell(row=i,column=6).value
service = ""
vul_name = worksheet_vul.cell(row=j,column=1).value #漏洞名称
vul_level = worksheet.cell(row=i,column=4).value.strip()
vul_level = vul_level_dic[vul_level]
vul_cve = worksheet_vul.cell(row=j,column=2).value
vul_detail = worksheet_vul.cell(row=j,column=3).value
vul_suggest = worksheet_vul.cell(row=j,column=4).value
worksheet_new.append([ip,hostname,scan_time,port,protocol,service,vul_name,vul_level,vul_cve,vul_detail,vul_suggest ])
break
if j == worksheet_vul.max_row:
print(worksheet.cell(row=i, column=2).value)
workbook_new.save("12月全量_report.xlsx")

 题外话:其实笔者没有去系统的学习过Python,只是以前有过一些别的语言的开发经历,然后自己写脚本的过程中也是边写边学,所以说Python是真的惊艳到我了,并不需要花费大量时间去学习,只要了解基础语法,了解库的作用,就能快速将自己的想法用代码进行实现。吹爆!
 最后,笔者最近找到一个Google翻译,经过了简单的测试发现还挺好用,等这儿工作忙完了,我会写一个类似于上面处理效果的脚本。不过是利用Google进行汉化,这样就不用再去筛选漏洞了。然后还有一个小目标,就是之后我会写一个脚本,利用Nessus的CVS文档,生成汉化后的PDF或者word漏洞报告文档!