Project Ninja-Framework: A RTC2 and Trojan-Malware Cyber-Attack Simulation System

English 简体中文 繁体中文 Tiếng Việt
Summary

Project Ninja-Framework offers a comprehensive cyber-attack simulation system for red teams, enabling rapid development and dynamic deployment of polymorphic malware in cyber exercises. It integrates a Command and Control (C2) Orchestrator, lightweight Ninja Malware Agents, and a Malicious Activities Module Repository. This architecture allows for centralized task distribution, on-the-fly injection of attack modules, and features like action camouflage, trace erasure, and malware self-protection. Developers can extend the agent interface to build custom malware, leveraging a diverse library of plugins for scenarios such as credential compromise, phishing, network scanning, and system destruction. The system facilitates automated attack control via API and a web UI, supporting adaptable and secure simulation environments for threat detection testing and attack research.

项目设计目的: 在各种网络演习或攻击场景演示中,红队攻击者需要开发和控制不同类型的恶意软件来模拟攻击场景。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 stolenCmd history scanningUser password crackBrowser cookie hijacking

  • 网络钓鱼和诈骗模块:这些模块生成网络钓鱼电子邮件或诈骗,以误导用户下载恶意资源或查看恶意链接。功能包括:Phishing email generationScam Telegram message boombackdoor/spy trojanScam popup advertisement generation

  • 扫描和记录模块:这些模块记录用户操作并扫描受害者的网络/目标。功能包括:Network scanningService probingTraffic mirroringScreen recordingKeyboard logging

  • 拒绝服务模块:这些模块禁用或中断目标受害者的服务。功能包括:ARP spoofingMan in the middle attackDDoS AttackHardware freeze/disablePacket blocking

  • 系统破坏模块:这些模块用于破坏目标操作系统。功能包括:File-sys destructingMalware injectionFDI and FCImalware protection watchdogpython-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)

红队攻击者可以按照以下步骤构建定制的恶意软件以用于网络演习:

  1. 创建一个 Python 程序,该程序继承自 Ninja 恶意软件代理接口作为代码库。

  2. 将相关的攻击活动模块从插件存储库导入到恶意软件中。

  3. 如果需要,添加任何特殊的攻击模块。

  4. 配置攻击控制参数和序列。

  5. 设置攻击计划时间表。

  6. 运行源代码混淆以伪装恶意代码。

  7. 部署恶意软件并通过 RTC2 控制攻击。

 

场景 02:使用 RTC2 协调器和部署的代理来控制网络演习攻击进度

按照以下工作流程图来控制和监视网络演习中的网络攻击或测试防火墙威胁检测。

Figure-03-2: 指挥与控制 (C2) 协调器工作流程图,版本 v0.2.3 (2024)

当红队攻击者将攻击计划分配给 Ninja 恶意软件代理时,如果该代理包含所有必要的攻击模块,它将根据计划的时间表启动攻击。如果 Ninja 代理缺少配置的攻击功能,它将按照以下步骤从 RTC2 检索所需的攻击插件:

  1. 红队攻击者使用 Attack Plug-in Management Module 从恶意活动插件存储库中获取 malicious source codeexecutable binary malicious plug-in

  2. 为了避免被防火墙或反恶意软件系统检测到,攻击源代码被混淆成不可读的二进制数据,并且可执行的恶意程序被加密成二进制流。

  3. 然后,在攻击之前,代理将下载混淆的源代码或加密的攻击二进制文件。

  4. 代理对源代码进行反混淆或解密攻击可执行二进制文件,将它们组装到其本地攻击模块列表中,并根据计划启动攻击。

完成攻击后,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 包装器恶意软件 lvl1 9 01 - 08 所有 Ninja 恶意软件代理 功能,09 ARP 投毒攻击功能。
ARP 欺骗攻击者 lvl2 10 01 - 09 所有 Ettercap 包装器恶意软件 功能,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(红队指挥与控制)系统将提供一个基于多线程的客户端,用户可以轻松地将该客户端挂钩到他们的恶意操作程序中,以集成到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 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/
设置忍者恶意软件代理界面
设置命令和控制(C2)协调器

系统使用

要使用该系统,请参阅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 .

  RELATED

No related programming articles found. Browse all programming tutorials and articles.

  COMMENTS

0

No comment for this article.