如何识别恶意源代码?

时间:2009-09-06 17:57:15

标签: delphi open-source virus

注意!创建间谍软件,计算机病毒和类似的恶意软件在您居住的地方可能是非法的,几乎每个人都认为这是非常不道德的。但是,我还是要问这个问题,以提高人们对创建它的难易程度的认识。在W32 / Induc-A被一个想出一种传播方式的人引入这个世界之后,我问这个问题。所以我想知道如何创建病毒,以便将来能够识别它们!

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

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

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

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

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


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

6 个答案:

答案 0 :(得分:8)

虽然这并没有真正回答你的问题,但我认为一篇非常有趣的论文是Ken Thompson撰写的Reflections on Trusting Trust。它提出了一个令人着迷的观点,即即使您的源代码没有缺陷(病毒,特洛伊木马等),如果您的编译器存在缺陷,您仍可能产生有缺陷的可执行文件。即使你从干净的源代码重建编译器,你仍然可以遇到同样的问题。

除非您使用自己的微芯片从头开始构建计算机,手工组装自己的BIOS,编写自己的操作系统,编译器和软件,否则必须在某处绘制线并且信任< / em>您构建系统的硬件和软件是正确的。

答案 1 :(得分:5)

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

答案 2 :(得分:4)

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

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

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

答案 3 :(得分:2)

如果你真的想学习,并且愿意花时间,你的时间可能会更好地花在谷歌上找到然后参加一个greyhat社区。这个话题非常复杂。

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

答案 4 :(得分:2)

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

此类信息的优秀来源是The Hacker Quarterly,这是主流,您可以在当地书店找到它,或you can subscribe online to get it mailed to you

它开始帮助黑客和phreakers分享信息。它现在仍然非常受黑客欢迎,被许多人认为是有争议的。

Cover of The Hacker Quarterly, Summer 2009 issue

当前问题的内容包括:

  • 不是敌人
  • 在数字世界中重获隐私
  • 安全意识的叔叔
  • 为什么“禁飞名单”是欺诈
  • TELECOM INFORMER
  • 在国会图书馆查找信息
  • 黑客DI-524接口
  • 无线和Windows破解的简单操作方法
  • 如果你不能忍受热火,那就破解电脑!
  • 安全:真理与小说
  • 黑客Beamz
  • HACKER PERSPECTIVE:Jason Scott
  • iTunes存储的信用卡漏洞
  • Zipcar的信息基础设施
  • 黑客攻击的方法和原因
  • 收听Radio Hackers!
  • HACKER SPACES - EUROPE
  • 滥用元数据
  • Verizon FIOS Wireless Insecurities
  • TRANSMISSIONS
  • 使用网络侦察解决问题
  • Suing Telemarketers for Fun and Profit
  • HACKER HAPPENINGS
  • Plus LETTERS AND MARKETPLACE

还有an excellent series of articles on Hacking at Wikipediaon Computer Viruses

......是的,程序员必须了解黑客和代码破解是如何工作的,这样他们才能尽力在程序中规避它。

答案 5 :(得分:2)

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

您可能会问“如何编写一个没有错误并且无法利用的有用程序”。

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

我对安全意识应用程序的建议是一个ex(p | t)ensive代码审查和使用商业上可用的静态分析软件。