什么是 Fork Bomb,又称兔子病毒?
恶意黑客创建了 fork bomb,也称为wabbit 或兔子病毒,用于对目标计算机执行拒绝服务攻击。Fork bomb 会进行自我复制,并对系统的资源造成严重破坏。它会降低系统的性能,甚至可能由于资源不足而导致系统崩溃。
这是一种拒绝服务 (DoS) 攻击,它反复使用 fork 系统调用,直到所有系统资源都被用于执行命令。随着时间的推移,系统会不堪重负,无法响应任何输入。
fork 是一个 Unix 和 Linux 系统调用,它复制现有的进程(也称为父进程),并创建一个新的进程(也称为子进程)。这使得两种方法可以同时执行不同的任务。
与其他 DoS 攻击(通常涉及从外部过载网络或系统软件)不同,fork bomb 使用来自其试图破坏的内部系统的命令。有时它可能是自我造成的。
无限循环不断产生进程是兔子病毒或 Fork Bomb 的最基本结构。此进程会消耗大量 CPU 时间和操作系统资源。
Fork Bomb 在类 Unix 操作系统中通过在无限循环中执行 fork 来实现。在 Microsoft Windows 上,可以通过在无限循环中启动新进程来实现。
一旦启动了兔子病毒,就很难停止它。问题在于短时间内会启动许多进程,这使得难以在那个时间段内找到新进程并终止它们。
冻结 通常会持续到计算机重新启动,恢复控制通常需要硬重启。数据可能会丢失。某些处理器可能包含预设的约束,最终允许管理员访问网络。
Fork Bomb 如何工作?
函数名是冒号 ":",后跟( ) 圆括号和花括号 "{" 用于开始一个函数,然后 ":|:&" 的定义告知 bash 启动 ":" 函数,并将它的输出通过 "|" 管道传输到相同的 ":" 函数,并将该方法传输到由 "&" 定义的后台,以便无法通过按Ctrl + C 来终止它。然后是闭合的花括号 "}",后跟 ":;",它迭代地指向该函数。
要启动炸弹,您只需在终端上复制或键入此代码“:():|:& ;:”并按 Enter 键即可。处理器的性能决定了使您的系统瘫痪所需的时间长度、可用处理内核的数量和安装的内存大小。即使交换分区的大小至关重要,一旦炸弹开始使用,系统通常也会花费太长时间来回复您。
预防 Fork Bomb
如今,大多数操作系统都采取预防措施来避免此类攻击。操作系统进程表中至少保留一个插槽。Fork bomb 不会消耗整个进程表,可以启动另一个进程来终止其他进程。
在较新的类 Unix 操作系统中,整个系统甚至可以限制单个用户可以启动的进程总数。使用ulimit 命令可以实现此目的。
如果您拥有多用户系统,保护它免受此类攻击最简单的方法是限制每个用户可以拥有的进程数量,例如使用 PAM。
可以将用户通常可以生成的进程数量限制在大约 1000 到 4000 之间。用户可以一次操作 200-300 个进程。但是,对于经常进行多任务处理的人员来说,1000 会稍微低一些。
如果您已经登录,可以通过执行以下操作来阻止 fork bomb:
要停止启动 fork bomb 的人的进程,请发出 SIGSTOP 命令。
killall -STOP -u someuser
/etc/security/limits.conf 文件用于在整个系统中设置进程限制。这是更好的选择,因为该调整可以应用于所有配置文件,从而降低了单独修改每个用户的配置文件设置的风险。
即使使用当前的操作系统,也没有完美的策略可以消除 fork bomb。通过执行标准安全最佳实践并禁止未经授权的应用程序以 root 身份运行,可以防止大部分 fork bomb 攻击场景。