11

意识到!在您居住的地方创建间谍软件、计算机病毒和类似的恶意软件可能是非法的,并且几乎每个人都认为这是极其不道德的。尽管如此,我还是需要提出这个问题,以提高人们对创建一个是多么容易的认识。在 W32/Induc-A 被一个想出一种令人讨厌的方式来传播它的人介绍给这个世界之后,我问这个问题。所以我想知道病毒是如何制造出来的,这样我将来就能识别它们!

最近发现了一种新病毒,它通过替换开发人员的库代码副本进行自我传播。实际上,通过 Delphi 4 到 7 的源代码。发生的事情是,有一种病毒在野外搜索计算机中名为 SYSCONST.PAS 的文件,它会将自己作为源代码添加到该文件中。该文件恰好是 Delphi 运行时库的源文件。(此运行时源代码可供 Delphi 开发人员使用。)因此,在被感染后,程序员会在不知情的情况下创建该病毒的许多新版本。由于病毒扫描程序有时会产生误报,因此许多开发人员可能会决定忽略扫描程序的警告,甚至可能在构建项目时禁用扫描程序。更糟糕的是,他们的项目甚至可能触发客户的扫描仪,所以这些程序员很可能会赢。t 检查他们的源代码,但会试图以某种方式欺骗扫描仪。也就是说,如果病毒扫描程序甚至能够识别病毒,这不太可能。因此,我们软件开发人员可能会在没有意识到我们在做什么的情况下制造病毒!

那么,如何制造病毒呢?很简单:让你的源代码被病毒感染,你就完成了!

好的,所以Delphi 4到7的源代码可能被感染了。所有 Delphi 开发人员,请检查您的源文件!该案例只是一个概念验证,显然它可以非常成功。此外,大多数病毒扫描程序不会检查源代码,而只关注可执行文件。这种病毒可能会在很长一段时间内未被发现。

该病毒之所以成功,也是因为它滥用了源代码。Delphi 是一个商业项目,源代码可用。但是谁能确定这些黑客不会以类似的方式攻击开源项目呢?那里有很多开源项目,谁来检查它们以确保它们都表现得体面?如果有人在检查代码,他能识别出是否是恶意代码吗?

因此,为了确保我们能够识别恶意源代码,我不得不问:如何创建病毒?如何识别会产生病毒的代码?大多数恶意软件想要做什么?


关于 Delphi 运行时源代码有一些讨论,关于该代码是否开源。从他们开始使用 Kylix 支持 Linux 的那一刻起,Borland 就为其源代码使用双重许可证。结果,源代码声明了一个“GPL”符号,指示库是否编译为 GPL 代码。作为 GPL,源代码将是开源的。这也恰好是被病毒攻击的源版本。无论如何,为了避免在这里讨论,我在这里问了这个问题所以我们可以更多地关注病毒问题而不是德尔福。基本上,我们谈论的是一种攻击源代码的病毒。从技术上讲,所有源代码都可能存在风险,但开源代码是一个可能的候选者,因为黑客知道它的结构并且可以针对那些很少修改、因此很少检查的文件。(而且如果他们可以侵入 CVS 系统,他们甚至可以抹去修改的痕迹,这样就不会有人注意到修改了!)

4

6 回答 6

8

虽然这并不能真正回答您的问题,但我认为值得阅读的一篇非常有趣的论文是Ken Thompson对信任信任的反思。它提出了一个有趣的观点,即使您的源代码没有缺陷(病毒、特洛伊木马等),如果您的编译器有缺陷,您可能仍然会生成有缺陷的可执行文件。即使你从干净的源代码重建编译器,你仍然会遇到同样的问题。

除非您使用自己的微芯片从头开始构建计算机,手动组装自己的 BIOS,编写自己的操作系统、编译器和软件,否则您必须在某个地方划清界限,并相信所依赖的硬件和软件你正在构建你的系统是正确的。

于 2009-09-06T18:46:19.057 回答
5

您可以检查传入数据包中的邪恶位... http://en.wikipedia.org/wiki/Evil_bit

于 2009-09-07T03:18:02.920 回答
4

如果你想识别恶意软件,你必须知道它是如何工作的。这意味着研究恶意软件并获得制作恶意软件的技能。

  • 搜索 29A - 他们写了关于病毒的论文
  • 阅读有关 Rootkit 的信息(甚至有相关书籍)
  • 阅读逆向工程
  • 阅读恶意软件的源代码——网络上有很多。
  • 学习汇编
  • 了解您的操作系统
  • 反转操作系统内核
  • 获取clam-av,查看源码

我不会在这里提供链接。不过,它们很容易找到。

于 2009-09-07T08:33:58.713 回答
2

恶意代码和无意的安全漏洞之间没有区别。

您可能会问“我怎样才能编写一个没有错误且无法利用的有用程序”。

正如我们在 CS 中所了解的那样,甚至编写调试器来捕获无限循环都是不可能的,更不用说智能恶意了。

我对具有安全意识的应用程序的建议是扩展代码审查和使用市售的静态分析软件。

于 2009-09-07T21:17:21.813 回答
2

如果你真的想学习,并且愿意投入时间,你最好把时间花在谷歌上寻找然后加入灰帽社区。这个话题非常复杂。

如果您的问题像“什么是从源代码中识别病毒的简单方法”一样简单,那么这可能并不容易,因为有无数种方法可以解决它。

于 2009-09-06T18:45:49.307 回答
2

您问“大多数恶意软件想要做什么?”。

此类信息的一个很好的来源是The Hacker Quarterly,它非常主流,您可以在当地的书店找到它,或者您可以在线订阅以将其邮寄给您

它开始帮助黑客和飞客共享信息。它今天仍然很受黑客欢迎,并且被许多人认为本质上是有争议的。

黑客季刊 2009 年夏季刊的封面

本期内容包括:

  • 不是敌人
  • 在数字世界中恢复隐私
  • 有安全意识的叔叔
  • 为什么“禁飞名单”是欺诈
  • 电信线人
  • 在国会图书馆查找信息
  • 破解 DI-524 接口
  • 无线和 Windows 破解的简单方法
  • 如果您受不了高温,请破解计算机!
  • 安全性:真实与虚构
  • 破解 Beamz
  • 黑客观点:杰森·斯科特
  • iTunes 存储的信用卡漏洞
  • Zipcar 的信息基础设施
  • 入侵联合国的方式和原因
  • 听广播黑客!
  • 黑客空间 - 欧洲
  • 滥用元数据
  • Verizon FIOS 无线不安全
  • 变速箱
  • 使用网络侦察解决问题
  • 起诉电话推销员以获取乐趣和利润
  • 黑客事件
  • 加上字母和市场

在 Wikipedia和Computer Viruses上也有一系列优秀的关于黑客攻击的文章

... 是的,对于程序员来说,了解黑客和代码破解的工作原理很重要,这样他们才能尽其所能在程序中规避它。

于 2009-09-07T17:06:09.467 回答