漏洞研究:逆向工程、调试还是模糊测试?

信息安全 研究 模糊测试 逆向工程
2021-08-23 08:01:25

我想知道黑客是如何发现漏洞的。

如果他们使用模糊测试,安全工程师就会这样做,而且可能是安全工程师(在公司工作)比一群黑客拥有更多的资源。

逆向工程需要很多时间,而且我认为它不够可靠,不能依赖。真的是这样吗,还是我错过了什么?

我想到的是这些竞赛,黑客总有一天会找到浏览器的漏洞并加以利用。他们是怎么做到的?分配给开源浏览器(chrome)的时间与分配给闭源浏览器(Internet Explorer)的时间相同。

3个回答

利用溢出相关漏洞的基本途径是找到崩溃(通常通过模糊测试),评估崩溃以及它是否呈现攻击路径,然后构建一些东西来利用它。

有时,一个人可能会涉及到架构知识,例如当查理米勒注意到 iOS 4.3 有一段内存将运行未签名代码时。在他所有的苹果攻击事件中,我相信消息来源已经关闭。SQL 注入的弱点是相似的——你从一个知道哪里是好地方的婴儿床开始。

虽然在发现崩溃后通过源代码识别和纠正错误是最简单的,但如果一个人的目标只是编写一个有效的利用程序,那么设置环境的工作可能没有价值。通常,程序的相关空间将涉及查看不到 1 KB 的机器代码。

从我的角度来看,开源允许人们在错误发生时查看添加的错误并说:“嘿,那一点源看起来很疯狂。” 除此之外,利用闭源和开源工作的工作通常是相同的。至于逆向工程,除非您尝试更改或重新创建应用程序而不是从中启动漏洞利用,否则这种情况很少见。

我不会低估黑客组织将大量计算资源用于一项任务的能力。Warez 组织在整个互联网历史上都以收集大量存储和带宽资源而闻名。认为黑客组织没有聚集相同规模的 CPU 能力可能是幼稚的。

最后,大多数这样做了足够长的时间的人会保留一两个发现的漏洞而不是释放它。

查看您的假设:

许多攻击组织拥有比公司大得多的资源

  • 在典型的公司中,安全是一个成本中心,所以他们永远没有足够的员工或资金
  • 在黑帽世界中,发现安全漏洞是一种收入来源

fuzzing 是由安全工程师和黑帽来完成的

  • 模糊测试本质上是容易出错的。可以使用这么多不同的模糊算法,你不会发现所有问题(这显然适用于所有安全测试)

逆向工程很耗时

  • 绝对,但是这是黑帽子所拥有的东西。有些人雇佣聪明的孩子团队,只做逆向工程代码。有些人将个人放入开发团队以将代码偷运出去。如果它赚钱,一般的经验法则是有人会尝试。

一日剥削比赛

  • 查理米勒本人表示,他在参加这些比赛的过程中开发了一些漏洞,因此他准备了一些工具。

漏洞的主要来源是事故而不是故意的。

当浏览器崩溃时,安全专家会使用调试器调试它是如何发生的,看看他们是否可以重现崩溃。因此,它来自于在发生漏洞时注意到它们,而不是寻找漏洞。

在编程时,例如建立一个网站,当使用一些晦涩的功能时,专家会问自己这个晦涩的功能是如何工作的,以及当他们错误地使用它时会发生什么。

Charlie Miller 等人只发现了相对较少的漏洞。在这些情况下,这是因为他们花了数年时间对产品进行逆向工程,并且可以根据现有知识反复发现漏洞。