【观成科技】APT组织常用开源和商业工具加密流量特征分析
- 概述
在当前的网络安全环境中,APT组织的活动愈发频繁,利用其高级技术和社会工程手段,针对全球范围内的政府、军事和企业目标发起了一系列复杂的网络攻击。在不断升级的攻击中,开源和商业工具凭借其灵活性、易用性和全球化攻击能力等优势,逐渐成为一些APT组织的首选。然而,这些工具通常具备复杂的加密通信机制,使得对其流量特征的分析与研究尤为重要。本文将分析APT组织所使用的开源和商业工具,说明它们在数据结构、通信协议和加密方式等方面的独特性,旨在为网络安全防御者提供识别和防御APT攻击的新视角。
- 工具列表
工具 | 组织 | 协议 | 加密方法 |
CobaltStrike | 海莲花、APT29 | HTTP、TLS1.2 | AES、MASK、RSA |
Remcos | 摩诃草 | TLS1.3 | / |
TinyShell | 东亚方向 | TCP | AES-128-CBC |
Chisel | 海莲花 | WebSocket | / |
AsyncRAT | Earth Berberoka、APT29、MuddyWater等 | TLS1.0 | AES-256-CBC |
Brute Ratel C4 | 摩诃草 | TLS1.2 | / |
- 流量特征分析
我们针对APT组织在不同攻击阶段所使用的开源和商业工具进行了深入研究,着重分析这些工具的加密通信特征,为检测发现相关APT组织活动提供依据。
-
- CobaltStrike
由于 Cobalt Strike 拥有强大的命令与控制 (C2) 功能、丰富的后渗透模块和灵活的脚本支持,使其成为安全评估和攻击模拟的重要工具。近年,海莲花组织频繁使用这一工具。在使用 HTTP 协议进行通信时,该组织采用了 MASK 掩码的加密方式,随机生成4字节密钥,和数据进行异或运算形成密文。该加密方式通过对数据进行特定规则的变换,使加密后的数据能够更好的隐藏攻击者的恶意行为。并且确保了相同的内容在每次加密后,其密文都会不同。这些加密的数据通常会被隐藏在 Cookie、URL 和其他字段中进行传输。见下图。
图 1 Cobalt Strike MASK加密流量
-
- Remcos
Remcos 作为远程控制程序被摩诃草组织频繁使用。该工具使用 TLS 1.3 协议进行通信。其加密通信有区别于正常TLS通信的地方:在两次 TLS 握手中,ServerHello 消息中的 Random 字段值不变,如下图所示。
图 2 Remcos流量
载荷传输的数据由自定义的格式构成,如下图所示,数据由“4字节的固定魔术值+4字节的数据长度+4字节的控制码+数据”组成。
图 3 数据结构
-
- TinyShell
东亚方向某组织曾使用此工具,TinyShell是一款开源的Unix类后门shell工具,具备以下三个功能:通信加密;支持上传、下载;正向连接和反弹shell。该工具使用自定义的TCP协议进行通信,通信数据采用AES-128-CBC加密,并通过HMAC进行验证。其通信特征表现为在建立TCP连接后,载荷长度序列有一定规律[40, 52, 52, 36, 124],反映了其固定的行为模式,见下图。
图 4 TinyShell流量
-
- Chisel
海莲花组织使用过此工具,Chisel的通信流量特征包括在其WebSocket协议升级中包含隧道工具的版本信息“chisel-v3”,以及在WebSocket信道内进行SSH加密协商时的版本信息“SSH-chisel-v3-server”。并且此组织使用Chisel的时候服务器存在两点特征:一是服务器的SSH是大端口,二是server host key中使用了较少见的算法套件ecdsa-sha2-nistp521。
图 5 Chisel流量
图 6 Chisel流量详情
-
- AsyncRAT
AsyncRAT因其强大的远控功能和易用性,被多个APT组织用于实施远程控制和数据窃取。通信协议使用TLS1.0版本,加密载荷内的通信数据采用AES-256-CBC进行二次加密。该工具行为模式相对固定,存在明显的心跳行为,时间间隔和心跳数据长度均固定。
图 7 AsyncRAT流量
AsyncRAT 使用的默认证书中的证书序列号为“0f 39 39 39 39 31 32 33 31 32 33 35 39 35 39 5a”,见下图。
图 8 AsyncRAT证书特征
-
- Brute Ratel C4
近期研究发现,Patchwork组织进行了较大的武器更新,首次使用了商业攻击工具Brute RatelC4。该工具是由Mandiant和CrowdStrike的前红队队员ChetanNayak发布的工具包,用以替代因使用广泛而被安全公司重点防范的CobaltStrike框架。
该工具使用TLS协议进行通信,流量中有明显的心跳特征,并且心跳载荷长度固定。将载荷进行解密后,可以看到应用层HTTP报文。HTTP通信采用POST方法,URL、User-Agent等字段均为监听器配置中设置的固定值,请求体Data部分有Base64编码的数据,每次发送的心跳内容保持不变。
图 9 Brute Ratel C4 TLS流量
图 10 Brute Ratel C4解密后流量
- 检测
观成瞰云(ENS)-加密威胁智能检测系统能够对APT组织使用的多种开源和商业攻击武器进行有效检出,检测结果见下图。
图 11 观成瞰云(ENS)-加密威胁智能检测系统Remcos检测结果
图 12 观成瞰云(ENS)-加密威胁智能检测系统Chisel检测结果
图 13 观成瞰云(ENS)-加密威胁智能检测系统CobaltStrike检测结果
- 总结
在分析 APT 组织使用的开源和商业工具的加密通信特征后,我们能够更好的掌握这些工具的行为模式和通信特征,从而为APT攻击的检测提供新的线索。随着网络攻击手段的不断演变,我们的检测和防御措施也必须持续改进,在此过程中,对加密通信流量的分析将成为防御策略的核心,帮助我们应对不断变化的APT威胁。接下来,观成科技安全研究团队将继续追踪和分析APT组织使用的开源和商业工具,以保持对最新威胁的警觉,并不断优化检测方法,以适应变化的攻击手段,进一步守护加密网络空间的安全。
相关文章:

【观成科技】APT组织常用开源和商业工具加密流量特征分析
概述 在当前的网络安全环境中,APT组织的活动愈发频繁,利用其高级技术和社会工程手段,针对全球范围内的政府、军事和企业目标发起了一系列复杂的网络攻击。在不断升级的攻击中,开源和商业工具凭借其灵活性、易用性和全球化攻击能力…...
Java开发者的Python快速进修指南:面向对象进阶
在上一期中,我们对Python中的对象声明进行了初步介绍。这一期,我们将深入探讨对象继承、组合以及多态这三个核心概念。不过,这里不打算赘述太多理论,因为我们都知道,Python与Java在这些方面的主要区别主要体现在语法上。例如,Python支持多重继承,这意味着一个类可以同时…...

【商汤科技-注册/登录安全分析报告】
前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…...

诱骗取电快充协议芯片,支持与其它 MCU 共用 D+D-网络和电脑传输数据
前言 在科技日新月异的今天,快充技术已成为智能手机、平板电脑乃至笔记本电脑等电子设备不可或缺的一部分。各大厂商为了提升用户体验,纷纷推出了自家的快充协议,这些协议不仅让充电速度大幅提升,还带来了更加智能、安全的充电体验…...

Java Executor ScheduledExecutorService 源码
前言 相关系列 《Java & Executor & 目录》《Java & Executor & ScheduledExecutorService & 源码》《Java & Executor & ScheduledExecutorService & 总结》《Java & Executor & ScheduledExecutorService & 问题》 涉及内容 …...
【力扣 + 牛客 | SQL题 | 每日6题】牛客SQL热题 + 力扣hard
1. 牛客SQL热题206:获取每个部门中当前员工薪水最高的相关信息 1.1 题目: 描述 有一个员工表dept_emp简况如下: emp_nodept_nofrom_dateto_date10001d0011986-06-269999-01-0110002d0011996-08-039999-01-0110003d0021996-08-039999-01-01 有一个薪水…...
前端常见错误
搭建vueelement-ui脚手架错误 基于vue官方文档和element官方文档搭建手册报错 安装element Unchecked runtime.lastError: Could not establish connection. Receiving end does not exist. types.js?8ad0:39 Uncaught TypeError: Cannot read property prototype of undefi…...

Edge 浏览器插件开发:图片切割插件
Edge 浏览器插件开发:图片切割插件 在图片处理领域,按比例切割图片是一个常见需求。本文将带你开发一个 Edge 浏览器插件,用于将用户上传的图片分割成 4 个部分并自动下载到本地。同时,本文介绍如何使用 cursor 辅助工具来更高效…...

银河麒麟v10 xrdp安装
为了解决科技被卡脖子的问题,国家正在大力推进软硬件系统的信创替代,对于一些平时对Linux操作系统不太熟练的用户来讲提出了更高的挑战和要求。本文以银河麒麟v10 24.03为例带领大家配置kylin v10的远程桌面。 最近公司为了配置信创开发新购了几台银河麒…...

Leetcode 删除有序数组中的重复项 Ⅱ
使用双指针来解决此问题,关键词“有序”数组,一个 index 指针用于构建新数组,一个 i 指针用于遍历整个数组 以下是代码的中文解释以及算法思想: 算法思想 这道题要求对一个有序数组进行去重,使得每个元素最多出现两…...
大模型学习笔记------什么是大模型
大模型学习笔记------什么是大模型 1、大模型定义2、大模型发展历程3、大模型的核心特点4、大模型的应用领域5、大模型面临的挑战6、结束语 近两年大模型超级火,并且相关产品迎来爆发式增长。在工作中,也常常接触到大模型,并且已经开始进行相…...

【unique_str 源码学习】
文章目录 1.删除器定义2. operator->() 运算符重载3. add_lvalue_reference<element_type>::type 使用 基本原理这篇博主写的很详细 https://yngzmiao.blog.csdn.net/article/details/105725663 1.删除器定义 deleter_…...

flask第一个应用
文章目录 安装一、编程第一步二、引入配置三、代码解析 安装 python环境安装的过程就不重复赘述了,flask安装使用命令pip install Flask即可,使用命令pip show Flask查看flask版本信息 提示:以下是本篇文章正文内容,下面案例可供…...

华为OD机试真题(Python/JS/C/C++)- 考点 - 细节
华为OD机试 2024E卷题库疯狂收录中,刷题 点这里。 本专栏收录于《华为OD机试真题(Python/JS/C/C)》。...
【C++刷题】力扣-#628-三个数的最大乘积
题目描述 给你一个整型数组 nums ,在数组中找出由三个数组成的最大乘积,并输出这个乘积。 示例 示例 1 输入:nums [1,2,3] 输出:6示例 2 输入:nums [1,2,3,4] 输出:24示例 3 输入:nums […...

Java项目实战II基于Java+Spring Boot+MySQL的工程教育认证的计算机课程管理平台(源码+数据库+文档)
目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 随着工程教…...

基于微信小程序实现信阳毛尖茶叶商城系统设计与实现
作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验,被多个学校常年聘为校外企业导师,指导学生毕业设计并参与学生毕业答辩指导,…...

设计一个灵活的RPC架构
RPC架构 RPC本质上就是一个远程调用,需要通过网络来传输数据。传输协议可以有多种选择,但考虑到可靠性,一般默认采用TCP协议。为了屏蔽网络传输的复杂性,需要封装一个单独的数据传输模块用来收发二进制数据,这个单独模…...

大数据计算里的Broadcast Hash Join/Shuffle Hash Join/Sort Merge Join
文章目录 Broadcast Hash Join场景 Shuffle Hash Join场景 Sort Merge Join场景 Broadcast Hash Join 场景 大表和小小表,直接把B表加载到内存,然后读块1内容和内存中数据匹配 Shuffle Hash Join 场景 大表和小表JOIN ,小表分块后能加载…...

Java - 手写识别; 如何用spring ai和大模型做手写识别教程
识别后的文字 利用大模型提升Java手写识别:更简单、更高效 在Java场景中,我们经常需要处理手写识别的问题。过去,这类需求主要依赖于OCR技术,但其效果并不总是稳定。随着大模型的发展,使用大模型进行java手写识别成为…...

聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...

前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...

CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...
爬虫基础学习day2
# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...
Angular微前端架构:Module Federation + ngx-build-plus (Webpack)
以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...
AGain DB和倍数增益的关系
我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...
Java毕业设计:WML信息查询与后端信息发布系统开发
JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发,实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构,服务器端使用Java Servlet处理请求,数据库采用MySQL存储信息࿰…...
Go 并发编程基础:通道(Channel)的使用
在 Go 中,Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式,用于在多个 Goroutine 之间传递数据,从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...

android13 app的触摸问题定位分析流程
一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...

阿里云Ubuntu 22.04 64位搭建Flask流程(亲测)
cd /home 进入home盘 安装虚拟环境: 1、安装virtualenv pip install virtualenv 2.创建新的虚拟环境: virtualenv myenv 3、激活虚拟环境(激活环境可以在当前环境下安装包) source myenv/bin/activate 此时,终端…...