什麼是 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 攻擊場景。

更新於:2022年6月9日

445 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告