默默无闻的安全性被低估了

2020-09-12 00:47:46

在信息安全领域,我们形成了很多不能讨论(或很少讨论)的想法:

然后是这样的。他们中的大多数人大体上都是正确的。然而,我开始认为,人们之所以这么说,是因为每个人都在这么说。而且,大多数人实际上并没有考虑到特殊情况。在这篇文章中,我将对“默默无闻的安全是不好的”提出我的反对意见。

防御性安全的主要目标之一是降低目标企业的风险。根据OWASP的方法,问题的风险计算公式如下:

根据这个公式,远程代码执行问题比跨站点脚本问题会带来更大的风险,因为RCE会造成更大的影响。这很简单。但是可能性度量呢?根据OWASP,可能性指的是:

在最高级别,这是攻击者发现和利用此特定漏洞的可能性的粗略度量。

所以,如果我们能降低可能性,我们就能降低总体风险。那很好。这实际上与一个非常常见的想法非常相似,叫做“纵深防御”。它也被称为“瑞士奶酪模式”

根据此模型,您需要在分层模型中构建您的防御机制,以便即使攻击者通过第一个模型,也会被其他攻击者抓住。

那么,让我们通过模糊来讨论安全问题。把它当做单一的防御层是个坏主意。如果攻击者通过了它,就没有其他东西可以保护你了。但实际上,将其用作“额外的”防御层是很好的。因为它的实施成本很低,而且通常运行良好。

我有一个使用默认端口22运行ssh的服务器,我的凭据是:root:123456。被泄露的可能性有多大?

这几乎是100%因为黑客在全球范围内对拥有共同凭据的服务进行暴力攻击。

Ssh在端口22运行,我的凭据是UTKU:123456。被泄露的可能性有多大?

因为我们没有使用通用用户名,所以我们已经消除了全球暴力势力。可能性和风险都降低了。然而,我们仍然要对付有针对性的袭击者。目标攻击者可以猜到用户名是Utku,因为它是我的名字。

Ssh在端口64323上运行,我的凭据是UTKU:123456。被泄露的可能性有多大?

现在,我们更改了默认端口号。有帮助吗?首先,我们再次消灭了全球野蛮人,因为他们只扫描公共端口。其他人呢?为了找出这一点,我在我的Twitter上做了一个小调查,找出人们的端口扫描行为。

我在试着为我的新文章证明一个观点。我需要你回答下面的问题。(请诚实)-当您使用nmap执行端口扫描以查找目标上打开的端口时,您是否指定了自定义端口范围来扫描所有65,535个端口?(带-P0-65535参数)。

-utkuŞen(@utkusen)2020年9月7日

正如您在这里看到的,很多人倾向于只扫描默认/最流行的端口。因此,如果您将端口从22切换到64323,则会消除某些端口。你会降低可能性和风险。

同样的情况也适用于软件漏洞。如果在Microsoft远程桌面协议中发现漏洞,每个人都将全局扫描端口3389。您只需更改默认端口即可降低风险。

当然,除了更改默认值之外,还可以在其他领域使用相同的方法。例如,对于某些特定情况,以下想法可能是个好主意(并不总是如此)。

混淆代码:当然,这是常识。黑客也是人。如果您很好地混淆了代码,他们将需要花费更多的时间来查找问题。他们最终可能会放弃。

对Web应用程序使用随机变量名:您可以使用随机字符串来切换变量名,而不是使用清晰的变量名。这可能会有帮助,就像代码混淆一样。

在数据库中使用对称加密:当您将数据写入数据库时,使用类似ENCRYPTION_ALGORM(DATA,KEY)的函数。同样,在读取数据时,请使用DECRYPTION_ALGORM(DATA,KEY)这样的函数。如果攻击者可以读取您的后端代码,显然他/她可以解密您的数据库。但是,如果存在允许攻击者从数据库读取数据而不是后端代码(如SQL注入)的问题,则收集的数据对攻击者没有帮助。

隐蔽性安全在物理/现实安全中得到了广泛的应用。例如,总统带着他的30辆车护送从A点到B点。但他没有坐在自己的总统专车上,这样袭击者就不会轻易将他作为目标。他可以在任何一辆车里,这降低了被袭击的风险。

伪装的动物也在通过隐蔽的方式使用安全措施。默默无闻会降低被杀的可能性。因此,他们在进化过程中获得了这种能力。

仅靠默默无闻的安全是不够的。您应该始终强制实施最佳实践。然而,如果你能以零成本降低风险,你就应该这么做。默默无闻是一层很好的安全层。