随着应用程序/协议/操作系统变得更加安全,渗透测试是否在客观上变得“更难”?

信息安全 渗透测试 操作系统 职业教育
2021-08-12 16:22:09

我目前正在参加 Offensive Security 的“使用 Kali 进行渗透测试”课程,该课程针对渗透测试的新手。这门课程很棒,有很多例子/练习,还有一个很棒的虚拟实验室环境,让我可以通过 VPN 连接并练习我们一直在学习的所有内容。

我注意到的一件事是,我们一直在研究/实践的许多漏洞都存在于较旧的系统上,例如 Windows XP/2003 系统、较旧的 Linux 版本,或者依赖于配置错误的系统(如果配置正确,将会是更安全)或已知存在严重缺陷的协议。

我很清楚这些系统的较新版本也有自己的漏洞。我还猜测,许多旧系统仍然在组织内继续使用。然而,放在旧系统上的学习材料的重量让我想知道,随着开发人员在编写他们的协议/应用程序/操作系统时变得更加安全意识,渗透测试是否必然会变得不那么有用或需要改变其方法,并且随着他们的工具变得更加先进。例如,许多高级语言为开发人员管理内存,使得缓冲区溢出的可能性大大降低,即使对于粗心的开发人员也是如此。此外,我认为现代操作系统比它们的前辈安全得多(尽管我可能错了,但我不是专家)。

我知道任何系统都会在某处存在一些缺陷,但是作为专业级别的渗透测试似乎根据定义涉及对已知漏洞的某种程度的标准化扫描/利用。 那么我的问题是,随着应用程序/协议/操作系统开发人员的安全意识增强以及他们工具的内置安全性提高,专业渗透测试人员的表面积是否会缩小?

我并不是暗示我认为渗透测试会“消失”,但例如它可能开始更多地依赖社会工程,而不是网络或软件中的实际技术漏洞。

3个回答

渗透测试的目的不是发现漏洞,所以如果它没有发现它就没有失败。检查是否存在漏洞。如果系统变得更安全,它不会变得更难,它只会带来更少的漏洞。事实上,如果要检查的已知漏洞列表变得更小,它会变得更容易。

漏洞和 IT 环境在不断变化,我想说,虽然某些类型的问题变得不那么普遍,但其他类型的问题更普遍,而有些问题则永远存在(似乎)

诸如广泛部署的操作系统(例如 MS08-067)中的经典网络可利用问题之类的事情不太常见(尽管 Shadowbrokers 转储表明它们仍然存在可能性),并且在它们存在的地方,作为操作系统制造商,它们往往更难被利用为他们的系统添加更多防御(例如 ASLR/DEP 等)

但是,我认为这并不一定意味着测试人员不会发现问题。有些事情,比如 Web 应用程序中的授权问题,很难在所有平台上通用地修复并且依赖于单个开发人员,因此它们在您测试的任何应用程序中都是可能的。

此外,依赖大量人员获得正确安全性的事情,比如好的密码选择,似乎几乎永远存在。

除此之外,测试人员还可以看到新的途径。例如,与 15 年前相比,更多的公司系统托管在“云中”,这比在多层防御系统后面的内部企业网络中更容易使它们受到攻击,因此有新的方法可以测试人员可以利用这一点。

测试人员肯定需要适应出现的新系统和过时的旧系统,但我不认为他们很快就会找不到东西。

在我看来,不……我经常发现 SQL 注入,因为开发人员正在使用 PHP 构建他们的自定义应用程序,而不是使用框架。API 也是如此(根据我的经验,尤其是那些用于移动应用程序的 API)。至于外部基础设施,我会说发现已知漏洞(使用 metasploit 模块)很少见,原因是它们已经被破坏了。然而,探测通常会产生结果,例如,我发现在互联网上暴露的打印机具有允许进入内部网络的默认凭据。至于内部基础设施,总是存在弱点,但使用像 Responder(用于 LLMNR 中毒)这样的工具会在 80% 的时间里获得 DA,具体取决于密码策略,所以你基本上是在 Responder 运行时探测其他地方,以防万一它没有'