互动式渗透测试
2016年4月8日,星期五
如果问任何一群测试人员是否愿意在测试后不必撰写报告,我敢打赌大多数人会跃跃欲试。最近我很幸运地进行了两次这样的测试,并认为分享这些经验是值得的,因为这两次工作都非常成功。
每当我为工作报价时,我总是将测试时间和报告时间分开,并向客户提供不同类型的报告选项。大多数客户选择“完整报告”选项,但最近这两次测试有所不同。第一次测试的客户表示他们纯粹是内部进行测试,因此不需要任何正式报告。与我合作的人建议使用共享的Google文档来记录我的发现,这样我们就能很好地记录进展情况,而我不必在最后花时间进行正式的撰写。这效果非常好:我记录下发现、插入截图并添加修复建议,就像在完整报告中一样,但不必担心格式、创建问题严重性表格或其他完整报告包含的内容,这意味着我可以花更多时间在测试上。在我撰写内容时,客户实时查看文档并添加评论和提问。我也能向他提问,例如数据在某个流程中的预期路径,他随后会写入文档。最后,我们有了完整的测试记录、发现的问题以及双方都同意的一套详细笔记。我在Twitter上提到这一点时,不少人表示不喜欢客户实时监督他们的记录过程,但我发现这让我更仔细地思考所写内容,即时反馈避免了误解,并使测试更加顺畅。
第二次测试也是内部Web应用程序评估的一部分。这次客户建议使用Slack,我之前曾尝试过但从未真正使用,也不完全了解其含义,但我还是接受了。对于未使用过Slack的人,它是IRC的现代版本。我拥有自己的“渗透测试”频道,对所有开发人员开放,然后我开始测试。每当我发现问题或有疑问时,我会立即写下并几乎立即得到反馈。这非常棒,通过一次性向整个开发团队提出问题,我通常能得到代码编写者的直接回应,而不必通过中间人传达。我认为这得益于公司内部日常使用Slack进行交流,因此他们已经习惯了从中接收通知。报告过程不如Google文档顺畅,因为我无法轻松返回编辑或添加格式,但短反馈周期弥补了这一点。测试结束时,我确保滚动聊天记录并将其复制到本地文档中,以便保留所有内容以防需要。
我认为这两次测试的质量都比普通测试更高,因为反馈帮助我更好地理解情况,而客户的参与意味着问题得到解决而非掩盖。两次测试还能将全部预算用于测试时间,而不必留出一部分用于报告,这显然是有益的。
另一次良好的互动体验是与一个接近合规测试截止日期的客户。测试针对内部基础设施,但通过客户为我设置的VM远程VPN进行。客户拥有大量内部子网,每个子网有许多主机,因此每次Nessus扫描大约需要3小时。客户的安全团队相对较新,因此需要大量清理工作,但他们反应迅速,在我报告问题的同时快速修复。最终我成为瓶颈,因为我必须完成一项工作后才能返回重新测试他们的修复。为了解决这个问题,我向他们提供了Nessus的登录详细信息,教他们如何运行所需的扫描,并让他们自行处理。这样他们可以在不打扰我的情况下进行修复和检查。我还最终教他们使用其他工具来验证Nessus发现中的误报。客户非常喜欢这种方式,测试结束时仅剩一个无法处理的嵌入式设备问题。在有人质疑“测试资源不足,应增加时间或人员”之前,实际情况并非如此。进行“正常”测试,我本可以在规定时间内轻松完成整个测试并提交报告供客户处理,但由于客户积极且真正关心网络安全,以这种方式合作避免了通常的测试、撰写报告、QA审核最终发送的滞后,这意味着在测试窗口结束时,他们满意地知道不会出现意外和疯狂恐慌,随后无需重新测试或重新报告的循环。另一个可能的问题是,“你是否信任客户的扫描结果?”不,我不信任。当他们确认清除了某个子网的所有问题后,我会重新扫描以确认。
我非常喜欢这次测试,我认为客户也是如此,因为他们学习了新工具和技术,并且没有在最后被满是问题的报告震惊。我也学到了很多,因为我必须实时解释一些以前未遇到的漏洞,然后讨论可能的修复和缓解措施或为什么应接受风险。最后,我认为比正常测试取得了更多成果,因为我可以看到我的存在带来的结果,网络在我周围被锁定,这比第二年报告与第一年相同、只有添加没有删除的测试要好得多。
我希望这些案例研究能帮助其他人超越许多人提供的“正常”测试,这些测试与客户的互动很少。我一直认为客户应充分参与任何正在进行的测试,但以前从未达到这种程度。既然我已经做到了,我肯定会提供甚至推动在未来测试中实现这一点。我不知道会有多少客户接受,但如果我不尝试,它肯定不会发生。
最后一些想法:在现场测试时,询问客户是否有人希望在测试期间坐在你旁边。这种情况我遇到过几次,我非常享受。观看管理员或开发人员看到他们的系统如何被滥用是非常有益的,一旦他们开始参与,他们通常比我更擅长指出他们知道存在但通常不会承认的所有小漏洞。在现场或非现场测试时,每日更新是必须的。让客户知道进展情况、你发现了什么、你查看了哪里以及他们需要修复什么。我知道很多人已经这样做,但同样,我也知道很多人将所有问题留到测试结束时的汇报中。如果客户忽略邮件,那是他们的事,但如果你保持信息透明,你就给了他们选择。最后,对你所做的事情充满热情。这并不总是容易的,但如果你表现出兴趣和享受,它可以感染客户并帮助他们参与,这总能带来更好的结果。