如何识别恶意源代码?

Wim*_*ink 11 delphi open-source virus

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

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

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

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

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

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


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

Ada*_*eld 8

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

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


小智 5

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