NjRAT 样本分析
字数 2321 2025-11-26 12:15:32

NjRAT 样本分析教学文档

1. 概述

NjRAT(又称为 Bladabindi)是一款带有图形用户界面(GUI)的远程访问工具(RAT),允许攻击者远程控制和监视受害者计算机。该恶意软件具有键盘记录、截图捕获、文件操作和数据窃取等功能,被广泛用于各种网络犯罪活动。

1.1 历史背景

  • 最早的 NjRAT 由名为 M38dHhM 的组织创建,据信位于阿拉伯语国家,主要针对中东地区
  • 自 2013 年其源代码泄露后,出现了多个修改版本:
    • NjRAT 0.7d Danger Edition
    • NjRAT 0.7d Golden Edition
    • NjRAT 0.7d Green Edition
    • NjRAT Lime Edition

2. 环境配置

2.1 实验环境搭建

硬件要求:

  • 三台虚拟机:
    • 两台 Windows 10 Pro x64(攻击端和受害端)
    • 一台 Windows XP SP3(兼容性测试)

网络配置:

  • 攻击端与受害端位于同一局域网
  • 兼容性测试环境独立设置

拓扑架构:

  • 攻击端(C2服务器) → 受害端(被控主机)
  • 独立兼容性测试环境用于对比分析

2.2 NjRAT 控制端配置

  1. 运行 NjRAT 控制端程序
  2. 设置 C2 服务器监听端口
  3. 通过 Builder 选项生成客户端可执行文件

2.3 攻击流程

  1. 受害端运行生成的 exe 文件
  2. 控制端面板显示主机上线
  3. 攻击者通过 C2 控制端下发指令

3. 静态分析

3.1 基本信息分析

工具使用:

  • DIE(Detect It Easy)用于文件格式识别
  • pestudio 用于导入函数和字符串分析

关键发现:

  • 文件格式:Win32 PE,VB.NET 编译,基于 .NET Framework 2.0
  • 特征识别:DIE 识别为 NjRAT 0.7D Green Edition Malware
  • 香农熵:低于5,表明未加壳或加密
  • 功能特征:修改注册表、关闭计算机、禁用任务管理器、修改防火墙策略

3.2 代码反编译分析

使用工具: dnSpy(.NET 反编译器)

入口点分析:

  • 主入口点:main() 函数 → OK.ko() 函数

启动流程:

  1. 参数检测:

    • 检测程序启动参数
    • 存在参数时在注册表 HKEY_CURRENT_USER 写入 di 值
    • 延迟5秒执行
  2. 互斥体创建:

    ' 创建互斥体确保单实例运行
    ' 创建失败则终止当前实例
    
  3. 安装函数 INS():

    • 自复制安装到系统目录
    • 添加防火墙例外规则
    • 注册表自启动(Run项)
    • 启动文件夹自启动
    • 终止指定进程(杀毒软件)
    • 隐藏自身文件
    • USB传播机制
  4. 清理函数 UNS():

    • 提供自我清理功能

线程管理:

  • RC() 线程:接收 C2 数据包
  • kq.WRK() 线程:键盘记录功能
  • mgr.protect() 线程:进程自我保护

数据传输:

  • 使用 Base64 编码进行通信

自我保护机制:

  • 正常关机:正常结束进程
  • 强行终止:触发蓝屏死机(BSOD)

主循环框架:

  • 每秒循环一次
  • 内存优化:每5秒降低内存占用
  • 心跳机制:维持与C2连接
  • 活动窗口监控:每8秒检测并上报
  • 自启动维护:持续检查注册表启动项

4. 动态分析

4.1 基于 Process Monitor 的行为分析

启动阶段行为:

  1. 注册表操作:

    • 写入 di = "!" 作为启动标记
    • 创建注册表配置根键保存受害者ID等信息
  2. 网络配置:

    • 调用 netsh 添加防火墙例外
  3. 持久化机制:

    • 注册表 Run 项持久化
    • 启动文件夹隐藏文件创建
    • 定期检查维护自启动项
  4. 传播行为:

    • USB传播:在各磁盘根目录创建:
      • svchost.exe(恶意程序副本)
      • autorun.inf(自动执行配置)
    • 现代系统限制:Windows 7+ 系统对U盘autorun有限制
  5. 进程保护:

    • 设置 ProcessInformationClass = 29
    • 标记为关键进程,强行终止导致BSOD
    • 可通过PCHunter等内核工具解除保护

4.2 基于 Wireshark 的网络通信分析

通信协议分析:

  1. 初始握手:

    • TCP三次握手建立连接
    • 第一条消息(明文+Base64):
      • 机器ID(Base64)
      • 主机名、用户名、系统信息等(明文)
  2. 系统信息上报:

    • 第二条消息(Base64编码):
      • 受害者详细信息
      • 可执行文件位置
      • NjRAT配置选项
  3. 功能通信:

    • 键盘记录: kl命令 → Base64编码的击键日志
    • 远程桌面: CAP命令 → JPEG格式屏幕截图流
    • 密码窃取: pas命令 → 下载Pass.exe扫描密码

4.3 基于在线沙箱的行为分析

真实攻击场景分析:

  • 投递方式: 通过钓鱼文档(PowerPoint插件)
  • 执行链: 文档宏 → POWERPNT.EXE → 释放NjRAT载荷
  • 检测标签: macros、rat、njrat等

5. 防御建议

5.1 检测指标

  • 网络特征: Base64编码的C2通信
  • 文件特征: 特定目录的隐藏可执行文件
  • 注册表特征: 异常自启动项
  • 进程特征: 关键进程标记

5.2 防护措施

  1. 系统加固:

    • 禁用不必要的Office宏
    • 限制U盘自动运行功能
    • 定期更新系统补丁
  2. 监控检测:

    • 网络流量监控(Base64通信模式)
    • 进程行为监控(异常的关键进程)
    • 注册表变更监控
  3. 应急响应:

    • 使用专业工具(如PCHunter)处理受保护进程
    • 全面清理注册表和文件系统
    • 网络隔离和密码重置

6. 总结

NjRAT作为一款功能完整的远程访问木马,具有高度的隐蔽性和持久化能力。通过深入分析其静态特征和动态行为,可以有效提升对此类威胁的检测和防御能力。现代防御需要结合行为监控、网络流量分析和系统加固等多层次防护策略。

NjRAT 样本分析教学文档 1. 概述 NjRAT(又称为 Bladabindi)是一款带有图形用户界面(GUI)的远程访问工具(RAT),允许攻击者远程控制和监视受害者计算机。该恶意软件具有键盘记录、截图捕获、文件操作和数据窃取等功能,被广泛用于各种网络犯罪活动。 1.1 历史背景 最早的 NjRAT 由名为 M38dHhM 的组织创建,据信位于阿拉伯语国家,主要针对中东地区 自 2013 年其源代码泄露后,出现了多个修改版本: NjRAT 0.7d Danger Edition NjRAT 0.7d Golden Edition NjRAT 0.7d Green Edition NjRAT Lime Edition 2. 环境配置 2.1 实验环境搭建 硬件要求: 三台虚拟机: 两台 Windows 10 Pro x64(攻击端和受害端) 一台 Windows XP SP3(兼容性测试) 网络配置: 攻击端与受害端位于同一局域网 兼容性测试环境独立设置 拓扑架构: 攻击端(C2服务器) → 受害端(被控主机) 独立兼容性测试环境用于对比分析 2.2 NjRAT 控制端配置 运行 NjRAT 控制端程序 设置 C2 服务器监听端口 通过 Builder 选项生成客户端可执行文件 2.3 攻击流程 受害端运行生成的 exe 文件 控制端面板显示主机上线 攻击者通过 C2 控制端下发指令 3. 静态分析 3.1 基本信息分析 工具使用: DIE(Detect It Easy)用于文件格式识别 pestudio 用于导入函数和字符串分析 关键发现: 文件格式:Win32 PE,VB.NET 编译,基于 .NET Framework 2.0 特征识别:DIE 识别为 NjRAT 0.7D Green Edition Malware 香农熵:低于5,表明未加壳或加密 功能特征:修改注册表、关闭计算机、禁用任务管理器、修改防火墙策略 3.2 代码反编译分析 使用工具: dnSpy(.NET 反编译器) 入口点分析: 主入口点:main() 函数 → OK.ko() 函数 启动流程: 参数检测: 检测程序启动参数 存在参数时在注册表 HKEY_ CURRENT_ USER 写入 di 值 延迟5秒执行 互斥体创建: 安装函数 INS(): 自复制安装到系统目录 添加防火墙例外规则 注册表自启动(Run项) 启动文件夹自启动 终止指定进程(杀毒软件) 隐藏自身文件 USB传播机制 清理函数 UNS(): 提供自我清理功能 线程管理: RC() 线程:接收 C2 数据包 kq.WRK() 线程:键盘记录功能 mgr.protect() 线程:进程自我保护 数据传输: 使用 Base64 编码进行通信 自我保护机制: 正常关机:正常结束进程 强行终止:触发蓝屏死机(BSOD) 主循环框架: 每秒循环一次 内存优化:每5秒降低内存占用 心跳机制:维持与C2连接 活动窗口监控:每8秒检测并上报 自启动维护:持续检查注册表启动项 4. 动态分析 4.1 基于 Process Monitor 的行为分析 启动阶段行为: 注册表操作: 写入 di = " !" 作为启动标记 创建注册表配置根键保存受害者ID等信息 网络配置: 调用 netsh 添加防火墙例外 持久化机制: 注册表 Run 项持久化 启动文件夹隐藏文件创建 定期检查维护自启动项 传播行为: USB传播:在各磁盘根目录创建: svchost.exe(恶意程序副本) autorun.inf(自动执行配置) 现代系统限制:Windows 7+ 系统对U盘autorun有限制 进程保护: 设置 ProcessInformationClass = 29 标记为关键进程,强行终止导致BSOD 可通过PCHunter等内核工具解除保护 4.2 基于 Wireshark 的网络通信分析 通信协议分析: 初始握手: TCP三次握手建立连接 第一条消息(明文+Base64): 机器ID(Base64) 主机名、用户名、系统信息等(明文) 系统信息上报: 第二条消息(Base64编码): 受害者详细信息 可执行文件位置 NjRAT配置选项 功能通信: 键盘记录: kl命令 → Base64编码的击键日志 远程桌面: CAP命令 → JPEG格式屏幕截图流 密码窃取: pas命令 → 下载Pass.exe扫描密码 4.3 基于在线沙箱的行为分析 真实攻击场景分析: 投递方式: 通过钓鱼文档(PowerPoint插件) 执行链: 文档宏 → POWERPNT.EXE → 释放NjRAT载荷 检测标签: macros、rat、njrat等 5. 防御建议 5.1 检测指标 网络特征: Base64编码的C2通信 文件特征: 特定目录的隐藏可执行文件 注册表特征: 异常自启动项 进程特征: 关键进程标记 5.2 防护措施 系统加固: 禁用不必要的Office宏 限制U盘自动运行功能 定期更新系统补丁 监控检测: 网络流量监控(Base64通信模式) 进程行为监控(异常的关键进程) 注册表变更监控 应急响应: 使用专业工具(如PCHunter)处理受保护进程 全面清理注册表和文件系统 网络隔离和密码重置 6. 总结 NjRAT作为一款功能完整的远程访问木马,具有高度的隐蔽性和持久化能力。通过深入分析其静态特征和动态行为,可以有效提升对此类威胁的检测和防御能力。现代防御需要结合行为监控、网络流量分析和系统加固等多层次防护策略。