缓冲区溢出-如何发现攻击的可能性



我一直在读关于缓冲区溢出漏洞的文章,我理解这个概念(我知道堆栈、覆盖返回地址、shell代码、NOP等(

youtube、文章和书籍中的所有漏洞利用示例都指的是本地存储的程序,因此您可以检查exe文件或是开源的。

我的问题是:黑客如何知道远程应用程序(即软件(可能受到攻击,并且他/她可以开始发送恶意字符串?他/她是如何找到漏洞的?

这实际上取决于攻击场景。通常在安全方面,您认为攻击者知道您的系统/安全的一切(除了您的秘密,即加密密钥(。假设您正在攻击一个开源应用程序。然后每个人都知道软件的代码。另一种情况可能是闭源软件。然后你必须对程序进行逆向工程(一旦你得到它(,以理解它的逻辑。

有很多方法可以获得目标软件的样本。无论是以某种技术方式还是通过社会工程,实现目标项目的样本几乎从来都不是不可能的。

当您没有可用的源代码时,缓冲区溢出攻击通常是通过模糊处理发现的。模糊化是指向系统发送无效、随机或故意过大的数据,以查看其行为。作为攻击者,您希望看到的是崩溃,而不是错误。对于远程系统,崩溃通常看起来像一个500 HTTP响应代码。这告诉你,你的数据使系统进入一个未定义的状态。有了这一点,你就可以开始精心策划攻击,利用这种未定义的状态。

这是考虑避免在400和500范围内使用有用的返回代码的原因,对于任何可能的错误,可能只返回"400-发生错误"。在一些高安全性的系统中,我已经为每个可能的问题返回了404个错误。这让调试变得异常痛苦,但也让自动扫描变得更具挑战性。我一般不推荐这种方法,但在更高安全性的系统中需要考虑。

最新更新