文章来源:知了堂冯老师
有成千上万的书籍讲解什么是信息安全,什么是渗透测试,也有数不清的培训课程视频。但是,我敢打赌,在这些材料中,只有不到10%是在讲写报告的事情。在一个完整的渗透测试过程中,有将近一半的时间都用在了编写报告上,这听起来很让人吃惊,但是也并不奇怪。
教会某人写报告不像教会某人制作一个完美的缓冲区溢出那么有意思,大部分的渗透测试人员情愿复习19次TCP数据包结构的工作原理,也不愿意写一份报告。不管我们的渗透测试水平多么高,想要把一个很深的技术点解释的很通俗易懂,即使是完全不懂安全的人也可以理解,这是一件异常艰难的挑战。不但得学会简单明了的解释渗透测试的结果,还得控制好时间。这样做的好处很多,关系到客户会不会不断的采购你的服务。
举个例子:一个模糊不清的解释:“SSH版本应该被禁用,因为它含有高危漏洞,可能允许攻击者在网络上拦截和解密通信,虽然攻击者控制网络的风险很低,这减少了严重性。”
清楚的解释:“建议在这些设备上禁用SSH,如果不这样做,就有可能允许攻击者在当地网络解密和拦截通讯。”
·为什么渗透测试报告如此重要?
请谨记:渗透测试是一个科学的过程,像所有科学流程一样,应该是独立可重复的。当客户不满意测试结果时,他有权要求另外一名测试人员进行复现。如果第一个测试人员没有在报告中详细说明是如何得出结论的话,第二个测试人员将会不知从何入手,得出的结论也极有可能不一样。更糟糕的是,可能会有潜在漏洞暴露于外部没有被发现。
举个例子:
模糊不清的描述:“我使用端口扫描器检测到了一个开放的TCP端口。“
清晰明了的描述:“我使用Nmap 5.50,对一段端口进行SYN扫描,发现了一个开放的TCP端口。
命令是:nmap –sS –p 7000-8000“
报告是实实在在的测试过程的输出,且是真实测试结果的证据。对客户高层管理人员(批准用于测试的资金的人)可能对报告的内容没有什么兴趣,但这份报告是他们唯一一份证明测试费用的证据。渗透测试不像其他类型的合同项目。合同结束了,没有搭建新的系统,也没有往应用程序添加新的代码。没有报告,很难向别人解释他们刚买的什么东西。
·报告给谁看?
至少有三种类型的人会阅读你的报告:高级管理人员,IT管理和IT技术人员。
高级管理人员根本不关心,或者压根不明白它的意思,如果支付服务器使用SSL v2加密连接。他们想知道的答案是“我们现在到底安不安全?”
IT管理对该组织的整体安全性感兴趣,同时也希望确保其特定的部门在测试过程中都没有发现任何重大问题。
我记得给三个IT经理一份特别详细的报告。阅读这份报告后有两个人脸色变得苍白,而第三个人笑着说“太好了,没有数据库的安全问题”。
IT人员是负责修复测试过程中发现的问题的人。他们想知道三件事:受影响系统的名称,该漏洞的严重程度以及如何解决它。他们也希望这些信息以一种清晰而且有组织的方式呈现给他们。最好的方法是将这些信息以资产和严重程度来进行划分。例如“服务器A”存在“漏洞X,Y和Z,漏洞Y是最关键的。这样IT人员就可以快速的找到问题的关键,及时修复。
当然,你可以问你的客户是否愿意对漏洞分组。毕竟测试是为了他们的利益,他们是付钱的人!一些客户喜欢有个详细说明每个漏洞的页面,并表明受漏洞影响的资产有哪些。
虽然我已经提到了渗透测试报告三种最常见的读者,但这并不是一个详尽的清单。一旦报告交付给客户,取决于他们用它干什么。它可能最终被提交给审计人员作为审计的证据。它可以通过销售团队呈现给潜在客户。
任何人都可以说自己的产品是安全的,但他们可以证明这一点?我们可以看看这里的渗透测试报告。
报告甚至可能最终共享给整个组织。这听起来很疯狂,但它确实发生过。我执行一次社会工程学测试,其结果低于客户的期望。被触怒的CEO将报告传递给整个组织,作为提高防范社会工程攻击意识的一种方式。更有趣的是,几周后当我访问同一个公司做一些安全意识的培训。我在自我介绍时说,我就是之前那个负责社工测试的人。愤怒的目光,嘲讽的语气,埋怨我给他们所有人带来多少麻烦。我的内心毫无波动,答道:“把密码给我总比给真正的黑客好。”
·报告应该包含什么?
有时候你会很幸运的看到,客户在项目计划之初就表明他们想要的报告内容。甚至有一些更为细小的要求,比如,字体大小和线间距等。但是这只是少数,大部分客户还是不知道最终要什么结果,所以下面给出一般报告的撰写程序。
1、准备好渗透测试记录
测试记录是执行过程的日志,在每日测试工作结束后,应将当日的成果做成记录,虽然内容不必太过细致,但测试的重点必须记录在案:
·拟检测的项目
·使用的工具或方法
·检测过程描述
·检测结果说明
·过程的重点截图(有结果的画面)
2、撰写渗透测试报告书
报告书是整个测试测试操作结果的汇总,大概会以下列大纲撰写:
前言:说明执行测试的目的
声明:依照渗透测试同意书协商事项,列举于此,通常作为乙方的免责声明。
摘要:将本次渗透测试所发现的弱点及漏洞做一个汇总性的说明,如果系统又良好的防护机制,亦可书写于此,提供给甲方的其他网站系统作为管理参考。
执行方式:“大致”说明测试的方法论、测试的方法、执行时间以及测试的评定方式,评定方式是双方约定的条件为准,例如:发现中高风险项目、能提权成功、能完成插旗(即在目标网站中上传指定的文件或修改网页内容)、中断系统服务……
执行过程说明:依照双方议定的项目,说明测试“结果”,不论可以渗透成功或无法成功,都应说明执行的程序。
通常标注“详细执行步骤,如《渗透测试记录表》”,以便渗透测试记录表引入报告书中,并列出本次操作对风险高低的评定说明,例如:测试完成后,乙方人员针对所有测试目标评定其风险等级,以该测试目标所造成的冲击程度及发生的可能性作为因子,相乘得出风险等级,评定如下:
发现事项与建议改善说明:这是整份报告书中最重要的部分,任何渗透测试都必须提供客户防护或弱点修正建议,其实只要能界定弱点的类型即可,因为防护建议内容通过搜索都可查到,所以本节最好能详细说明建议内容,以提高客户的满意度。
附件或参考文件(如无,可以省略):有些公司会将小组成员的资历列在此处,以供甲方参考。
附:
报告书的撰写建议
一份好的报告可以为测试操作加分,一份不好的报告会毁了测试人员的努力,所以撰写渗透测试报告不可太随便,以下提供三个撰写要领,以供参考。
·重点
报告书的读者有两类:一类是主管,主管有决策权,但通常没有耐心查看技术文件,报告书最好一开始就节选所发现的“重点漏洞”,这些重点漏洞要用直白的话写,让主管一目了然,翻开报告书就能够感受到渗透测试的价值;另一类是系统负责人( 经办人员),他们在意的是漏洞或弱点要如何修补,对修补建议最好言之有物,并附上修补范例。
至于描述执行过程说明文字则可以详细些,尤其是专业术语的说明,用以展现测试团队技术的“高深”,不过自己没有把握解释清楚的术语就不要写进去了,免得弄巧成拙,虽然这一部分看的人不多,但是可以增加报告书的版本分量。
·图表重于文字
想要提示客户重视的地方,尽量附图佐证,数据对比或汇总,可采用列表或表格式编排,让阅读报告的人感觉条理清晰、言之有物,避免造成抓不到重点的遗憾。
·结果与建议
测试结果、弱点、漏洞务必要提出来,并给予修正建议,在测试过程中如果受测系统设置了不错的防护机制,也可以将该方式列入报告中,以供客户的其他系统参考。