
專案設計目的:在各種網路演練或攻擊情境展示中,紅隊攻擊者需要開發和控制不同類型的惡意軟體來模擬攻擊情境。Project Ninja-Framework 旨在創建一個「輕量級代理」惡意軟體、一個攻擊活動庫和 C2 框架,使紅隊開發人員能夠快速構建用於生成惡意行為(惡意軟體模擬)的程式。該系統還使紅隊攻擊者能夠在攻擊期間動態地向現有運行的惡意軟體添加新的攻擊功能,從而降低與重複開發、配置、測試和除錯相關的成本。
該專案旨在提供一個可自訂的紅隊指揮與控制 (RTC2) 木馬惡意軟體管理和協調系統,以滿足網路安全 SDR 需求:
-
[S](模擬與支援):模擬和控制各種惡意軟體攻擊,支援網路演練攻擊管理。
-
[D](開發與檢測):開發惡意軟體並促進威脅檢測測試。
-
[R](重複與研究):重複網路攻擊情境並支援攻擊研究計畫。
系統概述如下圖所示:

# Created: 2023/08/13
# version: v0.2.3
# Copyright: Copyright (c) 2024 LiuYuancheng
# License: MIT License
重要提示:此專案用於網路演練和攻擊演示,請勿將其應用於其他服務。
簡介
Project Ninja 是一個網路攻擊模擬工具包,專為紅隊攻擊者設計,用於快速且動態地開發和部署各種類型的網路攻擊。該系統由一個指揮與控制 (C2) 中心和多個分散式木馬惡意軟體代理組成,具有以下五個主要功能:
-
多態惡意軟體建構:一個簡單的代理,具有 C2 任務同步介面和惡意活動外掛程式庫,允許自訂建構各種類型的惡意軟體。
-
集中控制和任務分配:C2 攻擊任務同步機制使攻擊者能夠動態控制不同 Ninja 惡意軟體代理的功能。
-
動態惡意軟體動作程式碼執行:使用者(紅隊攻擊者)可以在惡意軟體運行時動態插入攻擊模組,甚至執行程式碼區段。
-
偽裝動作和痕跡消除:該系統將攻擊動作和通訊偽裝成正常的軟體操作,並消除痕跡以逃避防禦者追蹤日誌。
-
惡意軟體自我保護:自我保護監視程式可防止惡意軟體在被反惡意軟體軟體或防禦者檢測到時被終止或刪除。
該專案由三個子專案組成:惡意活動模組儲存庫、Ninja 惡意軟體代理介面和指揮與控制 (C2) 協調器,如下所示:

Figure-01: Ninja-Framework 系統結構圖,版本 v0.2.3 (2024)
惡意活動模組儲存庫簡介
惡意活動模組儲存庫是一個 Python 庫,包含用於生成攻擊活動的各種外掛程式,旨在破壞電腦系統、網路裝置或服務。所有外掛程式模組都可以作為小型攻擊惡意軟體單獨執行,或作為函數匯入以在 [ Ninja Agent ] 模組中運行,從而能夠構建更複雜的攻擊路徑。
該儲存庫提供五種類型的攻擊模組:
-
憑證洩露模組:這些模組用於透過竊取檔案或掃描使用者痕跡來洩露目標的安全資訊。功能包括:
File/data stolen、Cmd history scanning、User password crack和Browser cookie hijacking。 -
網路釣魚和詐騙模組:這些模組生成網路釣魚電子郵件或詐騙,以誤導使用者下載惡意資源或檢視惡意連結。功能包括:
Phishing email generation、Scam Telegram message boom、backdoor/spy trojan和Scam popup advertisement generation。 -
掃描和記錄模組:這些模組記錄使用者動作並掃描受害者的網路/目標。功能包括:
Network scanning、Service probing、Traffic mirroring、Screen recording和Keyboard logging。 -
阻斷服務模組:這些模組停用或中斷目標受害者的服務。功能包括:
ARP spoofing、Man in the middle attack、DDoS Attack、Hardware freeze/disable和Packet blocking -
系統破壞模組:這些模組用於破壞目標作業系統。功能包括:
File-sys destructing、Malware injection、FDI and FCI、malware protection watchdog和python-lib hijack
Ninja 惡意軟體代理介面簡介
Ninja 惡意軟體代理介面是一個輕量級代理介面程式,允許使用者組裝各種惡意外掛程式模組以構建自訂惡意軟體,或在受害者系統上運行以從 [ 惡意活動模組儲存庫 ] 動態下載這些攻擊外掛程式。
該代理提供四個基本惡意軟體功能:
-
RTC2 任務同步:自動將攻擊任務和排程與使用者在 RTC2 上的設定同步。
-
RTC2 通訊加密:偽裝通訊以避免防火牆威脅檢測,並加密訊息以防止防禦者分析流量。
-
動作偽裝和程式碼混淆:將攻擊偽裝成正常使用者動作,並混淆原始程式碼以防止防禦者分析原始程式碼,即使他們成功反編譯外掛程式模組。
-
痕跡消除和自我保護:消除攻擊痕跡以防止防禦者分析日誌,並包含嵌入式自我保護監視程式以防止惡意軟體進程被終止或刪除。
該代理也是紅隊開發人員的一個介面類別,可以將其繼承為程式碼庫,透過將其自訂攻擊動作添加到其中來實現他們自己的惡意軟體。
指揮與控制 (C2) 協調器簡介
C2 協調器是所有惡意軟體代理的主要控制中心,並充當代理和惡意活動模組儲存庫之間的「橋樑」。它為紅隊攻擊者提供各種儀表板 UI 和 API 介面,以將攻擊外掛程式注入 Ninja 惡意軟體代理、分配和排程攻擊、監控攻擊進度以及檢閱攻擊結果。
在網路演練中,紅隊攻擊組可以透過 Web UI 管理所有在 RTC2 中註冊的惡意軟體代理。然後還可以編寫程式來調用 C2 API 以自動控制攻擊進度。主要的代理管理和攻擊任務控制儀表板如下所示:

Figure-03: C2 儀表板螢幕截圖,版本 v0.2.3 (2024)
RTC2 協調器包括三個主要功能:
-
惡意軟體代理管理:C2 管理介面允許網路演練紅隊管理員啟用/停用惡意軟體並管理代理的攻擊外掛程式匯入過程。
-
分配和排程攻擊任務:C2 任務配置介面使網路演練紅隊攻擊實施組能夠設定攻擊任務、配置攻擊序列/路徑以及排程演練期間的攻擊時間。
-
封存攻擊結果:允許紅隊檢視攻擊結果、封存關鍵資訊並監控攻擊進度。
專案用例
我們的系統已用於多個網路演練攻擊演示或數位鑑識檔案收集,以構建惡意軟體模擬程式或測試防火牆的威脅檢測功能。
專案使用的網路演練
-
CROSS SWORD 2023 (XS2023):我們開發的 Ninja-Framework RTC2 和木馬惡意軟體網路攻擊模擬系統(版本 v0.1.3 2023)用於 CROSS SWORD 2023 網路演練中合作夥伴在鐵路系統上運行的一個攻擊演示。
-
Locked Shields 2024 (LS2024):Ninja-Framework RTC2 和木馬惡意軟體網路攻擊模擬系統(版本 v0.2.1 2024)用於為 LS2024(2024 年 4 月)中的鑑識證據追蹤做出貢獻,該專案用作數位鑑識和事件回應 (DFIR) 事件的一部分。
使用情境簡介
按照以下工作流程圖構建不同的惡意軟體或惡意動作生成程式。

Figure-03-1: Ninja 惡意軟體代理介面工作流程圖,版本 v0.2.3 (2024)
紅隊攻擊者可以按照以下步驟構建自訂惡意軟體以用於網路演練:
-
建立一個 Python 程式,該程式繼承自 Ninja 惡意軟體代理介面作為程式碼庫。
-
將相關的攻擊活動模組從外掛程式儲存庫匯入到惡意軟體中。
-
如果需要,新增任何特殊的攻擊模組。
-
配置攻擊控制參數和序列。
-
設定攻擊排程時間表。
-
運行原始程式碼混淆以偽裝惡意程式碼。
-
部署惡意軟體並透過 RTC2 控制攻擊。
情境 02:使用 RTC2 協調器和已部署的代理來控制網路演練攻擊進度
按照以下工作流程圖控制和監控網路演練中的網路攻擊或測試防火牆威脅檢測。

Figure-03-2: 指揮與控制 (C2) 協調器工作流程圖,版本 v0.2.3 (2024)
當紅隊攻擊者將攻擊排程分配給 Ninja 惡意軟體代理時,如果代理包含所有必要的攻擊模組,它將根據排程的時間表啟動攻擊。如果 Ninja 代理缺少配置的攻擊功能,它將按照以下步驟從 RTC2 檢索所需的攻擊外掛程式:
-
紅隊攻擊者使用
Attack Plug-in Management Module從惡意活動外掛程式儲存庫中獲取malicious source code或executable binary malicious plug-in。 -
為了避免被防火牆或反惡意軟體系統檢測到,攻擊原始程式碼被混淆為無法讀取的二進位資料,並且可執行惡意程式被加密為二進位串流。
-
然後,混淆的原始程式碼或加密的攻擊二進位檔案將在攻擊前由代理下載。
-
代理會對原始程式碼進行反混淆或解密攻擊可執行二進位檔案,將它們組裝到其本地攻擊模組清單中,並根據排程啟動攻擊。
完成攻擊後,Ninja 惡意軟體會將結果報告給 RTC2 以進行資料庫封存。如果不再需要下載的攻擊模組,代理將刪除該模組。
系統設計
該專案名稱的想法來自日本漫畫書「火影忍者」,該專案提供各種集中控制的「忍者」惡意軟體組,旨在對特定目標發起網路攻擊。在本節中,我們將介紹系統每個功能的設計邏輯。
多態惡意軟體設計
在忍者的領域中,每個人都擁有像滲透這樣的基本技能,並輔以特定的專長,例如資訊收集或暗殺。我們的系統反映了這個概念,所有 Ninja 惡意軟體都從基本的 Ninja 惡意軟體繼承了核心功能。基本的惡意軟體執行基本的惡意動作,例如運行命令、竊取檔案以及將惡意軟體注入受害者。此外,每個高級 Ninja 惡意軟體都與用於特定任務的專用模組集成,例如 Modbus-FDI、中間人 (MITM) 攻擊、ARP 欺騙和系統洩露。這種模組化方法使忍者能夠適應和執行針對特定目標量身定制的各種惡意動作。
Ninja 惡意軟體族譜如下所示:

Figure-04: Ninja 惡意軟體族譜圖,版本 v0.2.3 (2024)
對於基本的 Ninja 惡意軟體代理,它將提供 8 個基本的內建攻擊功能,因此所有其他從它繼承的 ninja 惡意軟體也將具有這些功能。功能表如下所示:
| 代理名稱 | 等級 | 攻擊功能數量 | 特殊新增的攻擊功能 |
|---|---|---|---|
| Ninja 惡意軟體代理 | lvl0 | 8 | 01 在受害者上運行命令,02 將檔案從受害者竊取到 C2-DB,03 將檔案從 C2-DB 注入到受害者,04 將受害者螢幕截圖捕獲到 C2-DB,05 SSH 到目標並從受害者運行 Cmd,06 從受害者到目標的 SCP 檔案,07 鍵盤事件功能,08 竊聽受害者的流量。 |
| 作業系統破壞惡意軟體 | lvl1 | 10 | 01 - 08 所有 Ninja 惡意軟體代理 功能,09 受害者電腦記憶體已滿功能,10 受害者電腦鍵盤和滑鼠凍結功能。 |
| 使用者動作收集惡意軟體 | lvl2 | 13 | 01 - 10 所有 作業系統破壞惡意軟體 功能,11 使用者命令歷史記錄收集功能,12 使用者鍵盤輸入記錄功能,13 使用者瀏覽器 Cookie 收集功能。 |
| 勒索軟體惡意軟體 | lvl2 | 13 | 01 - 10 所有 作業系統破壞惡意軟體 功能,11 使用者檔案加密功能,12 使用者桌面螢幕凍結功能,13 使用者相機錄製功能。 |
| Ettercap Wrapper Malware | lvl1 | 9 | 01 - 08 所有 Ninja 惡意軟體代理 功能,09 ARP 毒害攻擊功能。 |
| ARP 欺騙攻擊者 | lvl2 | 10 | 01 - 09 所有 Ettercap Wrapper Malware 功能,09 網路流量鏡像功能,10 網路封包丟棄和鎖定功能。 |
| MITM 攻擊者 | lvl3 | 11 | 01 - 10 所有 ARP 欺騙攻擊者 功能,11 MITM 封包資料過濾和修改功能。 |
| 木馬惡意軟體 | lvl1 | 09 | 01 - 08 所有 Ninja 惡意軟體代理 功能,09 憑證檔案搜尋功能 |
| 間諜木馬惡意軟體 | lvl2 | 12 | 01 - 09 所有 木馬惡意軟體 功能,10 使用者桌面錄製功能,11 使用者鍵盤輸入記錄和輸入模擬功能,12 使用者憑證(使用者名稱、密碼)記錄功能。 |
| 後門木馬惡意軟體 | lvl2 | 12 | 01 - 09 所有 木馬惡意軟體 功能,10 受害者節點的網路介面流量鏡像功能,11 SSH 連線、反向 SSH、SCP、SSH 埠轉發,12 UDP 伺服器後門功能和埠繫結功能。 |
| 虛假資料注入器 | lvl3 | 14 | 01 - 12 所有 後門木馬惡意軟體 功能,13 Modbus 資料獲取功能,14 高頻保持暫存器資料覆寫功能。 |
| 虛假命令注入器 | lvl3 | 13 | 01 - 12 所有 後門木馬惡意軟體 功能,13 偽造 PLC 記憶體和線圈設定命令注入功能。 |
| 服務探測器 | lvl1 | 9 | 01 - 08 所有 Ninja 惡意軟體代理 功能,09 網路服務探測功能。 |
| DDoS 攻擊者 | lvl2 | 10 | 01 - 09 所有 服務探測器 功能,10 DDoS 攻擊功能。 |
| 流量封包注入器 | lvl2 | 10 | 01 - 09 所有 服務探測器 功能,10 服務 API 請求注入功能。 |
| 網路釣魚電子郵件分發器 | lvl1 | 10 | 01 - 08 所有 Ninja 惡意軟體代理 功能,09 網路釣魚電子郵件內容生成功能,10 網路釣魚電子郵件部署功能。 |
| 詐騙訊息產生器 | lvl2 | 11 | 01 - 10 所有網路釣魚電子郵件分發器功能,11 詐騙訊息產生功能。 |
集中控制和任務分配
在每個忍者村中,都有一個影子領袖負責將任務分配給所有其他忍者。 類似地,在我們的系統中,紅隊攻擊組駭客扮演領導者的角色,利用集中控制的 RTC2 (Red Team Command and Control) 系統。 透過這個系統,駭客可以透過佈告欄將任務無縫分配給任何「忍者」。 忍者(由惡意軟體實體代表)從佈告欄檢索他們的任務,然後將任務執行結果報告回相同的介面。
控制流程概述如下所示:

Figure-05: RTC2 attack tasks distribution workflow diagram, version v0.2.1 (2023)
RTC2 ( red team command and control ) 系統將提供一個基於多執行緒的客戶端,使用者可以輕鬆地將客戶端掛鉤到他們的惡意操作程式中,以整合到 RTC2 系統中。 RTC2 伺服器不僅提供強大的後端,還配備了使用者友好的 Web 介面和 HTTP 請求處理程式 API。 因此,使用者可以輕鬆地遠端控制整合的惡意軟體,無論是透過 Web 瀏覽器還是他們的自訂程式。 這種適應性和可訪問性的結合增強了使用者體驗,為管理和協調他們的網路演練場景提供了一個多功能的平台。
系統工作流程時間軸 UML 圖:

Figure-06: RTC2 attack tasks distribution workflow timeline UML diagram, version v0.2.3 (2024)
此系統中的所有通訊都經過加密,確保資訊的安全傳輸。 影子領袖可以從網際網路上的任何位置分配任務,並且由於間接通訊方法,即使防禦者試圖追蹤通訊,他們也只會被引導到佈告欄,而不是駭客和惡意軟體之間的直接互動。
動態惡意軟體動作程式碼執行設計
忍者擁有多種武器,我們的系統有助於動態攻擊動作儲存庫,允許即時整合。 駭客可以透過佈告欄將攻擊模組無縫附加到任務。 提供的預設基本惡意動作外掛模組包括:
-
在受害者上執行命令
-
從受害者竊取檔案到 C2-DB
-
將檔案從 C2-DB 注入到受害者
-
擷取受害者螢幕截圖並上傳到 C2-DB
-
SSH 到目標並從受害者執行命令
-
將檔案從受害者 SCP 到目標
-
掃描受害者子網路 IP
-
產生或記錄鍵盤事件
-
竊聽受害者的流量在 pcap 檔案中
當忍者收到任務時,它會自動裝備分配的攻擊模組,使其能夠執行指定的攻擊動作。 例如,間諜木馬忍者(設計用於收集憑證)可以使用其他功能進行增強。 如果駭客將錯誤資料注入 (FDI) 任務分配給它,忍者將動態下載必要的模組,例如網路掃描模組和 Modbus-FDI 模組,將自己轉變為熟練的 FDI 攻擊程式。 這種模組化方法確保了在執行基於任務分配的各種攻擊動作時的適應性和精確性。
Remark : follow this example to build the modulus attack program: https://github.com/LiuYuancheng/Python_Malwares_Repo/tree/main/src/falseCmdInjector
偽裝動作和痕跡擦除設計
完成任務後,忍者會有效地擦除其活動的任何痕跡。 它將偽裝動作、原始程式碼混淆和痕跡擦除,以避免威脅偵測。
-
偽裝動作:忍者代理將使用隨機時間間隔和混合任務執行順序與真實的人類動作,使攻擊動作難以被偵測到。 例如,當代理接受檔案刪除攻擊任務時,它將監視節點使用者的動作,如果節點使用者執行了一些檔案操作,它將在使用者檔案操作動作之後執行檔案刪除。
-
痕跡擦除:分配給忍者的任務以連結串列的形式儲存在記憶體中,沒有基於程式碼的任務行,惡意軟體僅保留指向目前任務的指標。 例如,如果忍者獲得 4 個任務來破壞系統,當忍者惡意軟體完成任務並破壞系統時,所有任務資料將從程式執行記憶體中刪除,資料儲存參數將被清除,因此即使防禦者偵測到錯誤並「捕獲」忍者程式,他們也無法從程式或記憶體轉儲中重建任務清單。 如果惡意軟體需要從 C2-hub 下載一些攻擊外掛程式,它也會在完成攻擊後自動移除攻擊外掛程式。
-
攻擊程式碼混淆:對於惡意程式碼注入,程式碼將被混淆為無法讀取的位元組流,並使用執行隱蔽程式來避免網路防禦者透過程式碼審查來偵測攻擊動作。 程式碼混淆範例如下所示:

Figure-07: Attack Code Obfuscation example, version v0.2.3 (2024)
Reference For the source code obfuscation detail document, please refer to : https://github.com/LiuYuancheng/Py-Code-Obfuscator
惡意軟體執行自我保護設計
在與防禦者進行戰略對抗時,每個忍者都與一隻忍者犬配對,充當程式保護看門狗。 如果忍者惡意軟體被反惡意軟體程式或使用者殺死/刪除,忍者犬將自動恢復忍者惡意軟體。
代理和流程保護看門狗工作流程如下所示:

Figure-08:Malware agent Self Protection watchdog workflow diagram, version v0.2.3 (2024)
程式保護看門狗將與主掛鉤程式執行緒並行在子執行緒中執行。 它將監視保護目標的流程,如果目標流程停止,它將啟動一個新的單獨流程來執行目標。 在自我保護場景中,看門狗在後台產生一個雙胞胎「影子」看門狗作為一個單獨的流程。 這種雙層防禦策略涉及主程式的看門狗保護影子看門狗,而影子看門狗反過來保護主程式。 這種複雜的保護死鎖機制確保了針對潛在干擾的強大防護,創建了一個彈性且互鎖的防禦系統。
同時,如果忍者偵測到它是從忍者犬恢復的,它將啟動一個子流程來啟動自我保護功能:鎖定受害者的滑鼠+鍵盤輸入,凍結螢幕並開始使用垃圾來填滿記憶體,導致系統效能下降。 這些防禦機制增強了忍者在面對防禦者發起的對策時的彈性和適應性。
Reference For use and config the watchdog, please refer to this document: https://github.com/LiuYuancheng/Python_Malwares_Repo/tree/main/src/processWatchDog
系統設定和使用
如果您想使用該系統,請按照以下部分設定和使用 API
系統設定
開發/執行環境:python 3.7.4+
需要的其他 Lib/軟體
| Lib Module | Version | Installation | Lib link |
|---|---|---|---|
| Flask | 1.1.2 | pip install Flask |
https://flask.palletsprojects.com/en/3.0.x/ |
| Flask_SocketIO | 5.3.5 | pip install flask-socketio |
https://flask-socketio.readthedocs.io/en/latest/ |
| requests | 2.28.1 | pip install requests |
https://pypi.org/project/requests/ |
| Ettercap | https://installati.one/install-ettercap-common-ubuntu-20-04/ | ||
| keyboard | 0.13.5 | pip install keyboard |
https://pypi.org/project/keyboard/ |
| mouse | 0.7.1 | pip install mouse |
https://pypi.org/project/mouse/ |
| opencv_python | 4.5.1.48 | pip install opencv-python |
https://pypi.org/project/opencv-python/ |
| paramiko | 2.11.0 | pip install paramiko |
https://www.paramiko.org/ |
| Pillow | 10.3.0 | pip install pillow |
https://pypi.org/project/pillow/ |
| psutil | 5.7.2 | pip install psutil |
https://pypi.org/project/psutil/ |
| pynput | 1.7.6 | pip install pynput |
https://pypi.org/project/pynput/ |
| pyscreenshot | 3.1 | pip install pyscreenshot |
https://pypi.org/project/pyscreenshot/ |
| pyshark | 0.4.3 | pip install pyshark |
https://pypi.org/project/pyshark/ |
| python_nmap | 0.7.1 | pip install python-nmap |
https://pypi.org/project/python-nmap/ |
| scp | 0.14.4 | pip install scp |
https://pypi.org/project/scp/ |
| sslkeylog | 0.5.0 | pip install sslkeylog |
https://pypi.org/project/sslkeylog/ |
| Werkzeug | 1.0.1 | pip install Werkzeug |
https://pypi.org/project/Werkzeug/ |
設定忍者惡意軟體代理介面
-
若要設定忍者惡意軟體代理,請參閱忍者惡意軟體代理介面 Readme 檔案中的設定章節
設定命令和控制 (C2) 協調器
-
若要設定命令和控制 (C2) 協調器,請參閱命令和控制 (C2) 協調器 Readme 檔案中的設定章節
系統使用
若要使用該系統,請參閱 API 使用者手冊:API 使用手冊,基本使用功能包括:
-
在受害者上執行命令:在受害者上按清單順序執行一個或多個命令,並將結果存檔在 C2 資料庫中。
-
從受害者竊取檔案到 C2-DB:根據檔案路徑清單在受害者上搜尋多個檔案,並將找到的檔案從受害者本機儲存上傳到 RTC2 的雲端儲存資料庫。
-
將檔案從 C2-DB 注入到受害者:將檔案/attack_module 從 RTC2 的雲端儲存資料庫注入到受害者的本機儲存中。
-
擷取受害者螢幕截圖並上傳到 C2-DB:擷取受害者桌面的螢幕截圖,並將影像檔案上傳到 RTC2 的雲端儲存資料庫。
-
SSH 到目標並從受害者執行命令:控制受害者機器 SSH 登入到連結到受害者的另一台機器,並在該機器上執行命令。
-
將檔案從受害者 SCP 到目標:將檔案從受害者儲存 SCP 到 SSH 連接的目標節點的邏輯使用者的主資料夾。
-
掃描受害者子網路 IP:掃描受害者節點中的子網路,並找到所有可觸及的節點 IP 位址。
-
產生或記錄鍵盤事件:在受害者機器上產生或記錄鍵盤動作/事件。
-
竊聽受害者的流量在 pcap 檔案中:竊聽受害者的網路流量,並將流量封包儲存在 pcap 檔案中。
問題和解決方案
如果您在使用過程中遇到任何問題或錯誤,請參閱doc/ProblemAndSolution.md以檢查是否有任何類似問題,我們將提供解決方案。
Last edit by LiuYuancheng ([email protected]) at 18/05/2024, if you have any problem or find anu bug, please send me a message .
No comment for this article.