我将如何编写恶意软件检测软件?

How would I write a malware detection software?

我需要查阅哪些资源才能完全理解其工作原理?我在网上查过,但我得到的只是软件解决方案,而不是软件实际检测它们的方式。

我希望能够检测到我计算机中的恶意软件。假设我的电脑中有特洛伊木马。我将如何编写程序来检测它?

我是信息安全的初学者。

提前致谢。

在文献中,Peter Szor 的"The Art of Computer Virus Research and Defense"绝对是"must read"。

大多数端点安全产品都具有: - on-demand 扫描组件。 - real-time 扫描组件。 - 连接到 OS 的其他区域以检查 "released" 之前的数据。例如。网络出生威胁的网络层。 - 检测引擎 - 包括文件提取器 - 可以更新的检测数据。 - 运行 时间扫描元素。

许多层和组件都需要协同工作以增强保护。

以下是安全产品需要涵盖的一些场景。

  • 磁盘上有恶意文件 - 静态扫描 - on-demand。也许你有这个例子。 命令 line/on-demand 扫描器将根据请求扫描的内容枚举每个目录和文件。该进程将读取文件并将数据流传递给检测引擎。根据配置的扫描设置和排除项,将检查文件。引擎可以 understand/unpack 文件来检查类型。大多数都有一个文件类型检测组件。它可以按照这个 - https://linux.die.net/man/5/magic 查看文件的前几个字节。非常基本,但它让您了解如何在执行更多分类之前对文件类型进行分类。它可以像几个 check-sums 文件在不同偏移量处一样简单。

以你的木马文件为例。假设您是自己的病毒实验室,也许您之前已经看过该文件,并分析了它的书面检测结果,因为您知道它是恶意的。也许您可以只对文件的一部分进行校验和并将此数据发布到您的产品中。所以你有 virusdata.dat,在里面你可能有一个校验和和一个名字。例如。 123456789, 木马1 然后你有一个扫描过程,在启动时加载你的病毒数据文件并打开文件进行扫描。您的扫描仪根据实验室场景对文件进行校验和,您将获得与数据文件的匹配。您按标签显示名称。这确实是最基本的示例,并不是那么实用,但希望它能起到一定的作用。当然你会看到误报的问题。

产品的其他方面包括:

  • 将恶意文件写入磁盘的进程 - real-time。 为了 "see" 在 real-time 中访问文件并进入该堆栈,您需要一个文件系统过滤器驱动程序。例如 Windows 上的文件系统微型过滤器:https://msdn.microsoft.com/en-us/windows/hardware/drivers/ifs/file-system-minifilter-drivers。这将保证您可以在 read/written 之前访问该文件。然后,您可以在进程写入或读取文件之前扫描该文件,以便您有机会拒绝访问和发出警报。请注意,在这种情况下,您一直处于阻塞状态,直到您决定是允许还是阻止访问。正是出于这个原因,on-access 安全产品会降低文件 I/O 的速度。它们通常有许多扫描线程,驱动程序可以将工作传递给这些线程。如果所有线程都忙于扫描,那么您就会遇到一些问题。您需要处理诸如拉链炸弹等问题,并在扫描 engine/CPU/Memory 等之前退出...

  • 正在下载恶意文件的浏览器。
    您可以回复 on-access 扫描器阻止文件通过浏览器进程访问磁盘,但浏览器可以在访问文件系统之前呈现脚本。因此,您可能希望创建一个组件来拦截 Web 浏览器之前的流量。这里有几种可能性。您是使用插件针对特定浏览器,还是降低一个级别并使用本地代理进程拦截流量。选项包括使用分层服务提供商 (LSP) 或 WFP (https://msdn.microsoft.com/en-us/windows/hardware/drivers/network/windows-filtering-platform-callout-drivers2) 连接网络层。您可以在此处将流量重定向到进程内或进程外代理以检查流量。除非您要再次打开管道更多工作,否则 SSL 流量会在这里造成问题。

  • 然后是 run-time 保护,您不会检测带有签名的文件,但会应用规则来检查行为。例如,为自己创建 start-up 注册表位置的进程可能会被视为可疑。可能不足以单独阻止文件,但如果文件没有有效签名怎么办,该位置是用户的临时位置。它由 AutoIt 创建,没有文件版本。所有这些属性都可以为是否应该 运行 的决定赋予权重,这些构成了安全供应商的专有数据,并且正在不断完善。也许您开始将应用程序检测为可疑并向用户发出警告,以便他们可以授权它们。

这是一个涉及很多层面的巨大话题。希望这就是您想要的那种东西。