自动化渗透测试能代替人吗?
2021-01-06北京李贺
■ 北京 李贺
编者按:自动化凭借极高的工作效率,在渗透测试领域带来意想不到的效果,那么自动化渗透测试工具能够代替甚至取代人工方式吗?本文将对此进行解析。
在过去几年中,自动化在网络安全许多细分领域中的应用已急剧增加,但似乎渗透测试仍然没有受到“影响”。
尽管在过去众包安全已发展成为渗透测试的替代方法,但它不是基于自动化的,并且也面临许多问题,同时也存在一些不足之处。而在近期,某些自动化渗透测试工具出现在人们的视野中,那么它们现在可以代替人工渗透测试吗?
自动化渗透测试工具是如何工作的?
要回答这个问题,我们首先需要了解其工作原理,更重要的是,需弄清楚它们不能做什么。过去一年中,笔者对它们与同类人工渗透测试工具进行了比较,最为感触的是这些自动化工具的发展速度非常惊人,甚至在写过这篇文章之后可能就已经过时了。
首先,渗透测试的“交付”是由代理或VM 完成的,该代理或VM 有效地模拟了渗透测试的计算机及攻击代理侵入网络的过程。然后,渗透测试机器人将通过执行人工需要执行的扫描来在其环境中进行侦查。因此,用户经常会在渗透测试机器人中使用其选择的工具或仅使用Nmap 或Masscan 来进行漏洞扫描。一旦确定了它们在环境中的位置,它们就会对所发现的内容进行过滤。这些也是它们与漏洞扫描程序的相似之处。
但漏洞扫描程序仅能列出一系列漏洞和潜在漏洞,而这些漏洞和潜在漏洞没有关于其可利用性的上下文,并且仅通过CVE 和CVSS 分数来说明某系统易受攻击程度,但不能很好地解决误报问题。
然后,自动化渗透测试工具将从目标列表中选择“最佳”系统来实施入侵,并根据漏洞利用的难易程度、噪声和其他类似因素做出决策。例如,如果安装的Windows 系统包含“永恒之蓝”漏洞,那么它可能比暴力破解开放的SSH 端口更易受到入侵。
一旦获得立足点,它就会通过网络传播自己,模仿人工渗透测试者或攻击者的行为。但是唯一的不同是,它实际上是在设备上安装了自己代理的版本,并从那里作为其另一个核心(不同供应商的操作方式有所不同)。
然后,它会从头开始重新启动该过程,但是这次还可以确保它对所入侵的设备进行取证调查,以提供更多的支持以继续其在网络中的入侵。如果可能的话,它还将在此处转储密码哈希或查找硬编码的凭据或SSH 密钥。然后它将在下一轮入侵中将其添加到库中。因此,尽管以前它可能只是重复了扫描/ 利用/ 数据透视功能,但这次它将尝试通过哈希攻击或尝试使用刚刚窃取的密钥连接到SSH 端口。然后,它将再次从此处重复之前的行为,依此类推。
您或许发现这与一个人工渗透测试的行为有很多相似之处,的确是这样:这其中很多也正是攻击者的行为方式。这些工具集是相似的,并且用于攻击的技术和理念在许多方面也都相同。
不同之处有哪些?
首先,自动化渗透测试比传统的渗透测试方法(以及表现混乱的众包方法)具有一些优势。
测试和报告的速度要快很多数量级,并且报告的可读性实际上也非常高(在通过某些QSA 验证后,它们还将通过各种PCI DSS 渗透测试要求)。
由人工起草的报告通常要等待几天或几周时间,而自动化渗透测试在很短时间就可以进行几轮质量检查,然后再交付。这也是人工渗透测试的主要弊端之一,连续交付的过程已导致许多人工渗透测试报告在交付后就过时了——因为在完成测试后,测试环境已经进行了更新,因此可能会引入潜在的漏洞和错误配置,而这些问题和错误配置在渗透测试时并未出现。这就是为什么传统的人工渗透测试更像是特定时间点的安全状况快照。
自动化渗透测试工具可以每天两次或每次随时更改测试,几乎可以立即交付报告,从而克服了人工渗透测试的限制。
第二个优点是切入点。人工渗透测试需要给定一个进入网络的特定入口点,而一个自动化渗透测试工具可以从不同的入口点多次运行相同的渗透测试,以发现网络中易受攻击的地方,并根据入口点监视各种影响情况。当然从理论上讲,这对于人工操作也是可行的,但由于每次都需要为不同的测试付费,因此投入成本很高。
不足之处有哪些?
1.自动化渗透测试工具完全不了解Web 应用程序。尽管它们会在端口或服务级别检测到类似Web 服务器的内容,但他们无法理解用户的内部API 中存在的IDOR漏洞,或者内部网页中存在的SSRF(可用于进一步扩展)。这是因为当前的网络堆栈非常复杂,即使是专业的扫描工具(例如Web 应用程序扫描工具)也很难检测到潜在的漏洞(例如XSS 或SQLi)。
2.用户只能在网络内部使用自动化渗透测试工具。由于大多数公司基础架构都是基于Web 的,并且自动化渗透测试工具无法理解这些内容,因此用户仍然需要使用传统人工的渗透测试,来对外部进行测试。
总而言之,该技术显示出巨大的希望,但仍处于起步阶段,虽然它们还没有准备好使人类渗透测试者变得多余,但它们确实在应对当今的进攻性安全挑战中发挥了作用,而这些挑战如果没有自动化就无法解决。