当前位置: 首页 > news >正文

主动激活木马加密流量分析

概述

    在网络攻击中,木马病毒通常会使用监听某个端口的方式,或者直接连接C2地址、域名的方式来建立通信,完成命令与控制。而APT攻击中,攻击者为了更高级的潜伏隐蔽需求,其部署的木马或后门,会采用对网卡流量进行过滤的方式,获得一定的通信信令才会触发执行实际的攻击,这一部分的活动称为流量激活。本文以一个正常的端口敲击应用Knock和ATT&CK中“Traffic Signaling”章节提到的几类家族来了解流量激活的几种常见方式。

正常应用的激活流量

    Knock是一个用于端口激活的敲门工具。为了保护SSH端口不暴露在攻击者面前,系统管理会使用Knock配合防火墙来执行SSH服务的开放策略。Knock在平常的时候关闭ssh服务和端口,外部无法扫描到端口开放。在运维人员需要访问SSH服务的时候,通过端口敲击序列,Knock在特定时间内,连续收到设置的端口序列流量,则会触发开启SSH服务,从而使得外部可以访问。如下方截图例子中,对TCP和UDP分别发送目的端口7000、8000、9000的敲击流量,目的IP接收到这三个端口序列则会开启SSH服务。这部分的流量就是SSH服务的激活流量。

图 1 knock激活触发

图 2 TCP的端口激活流量


图 3 UDP的端口激活流量

APT中的流量激活

    ATT&CK中“Traffic Signaling”章节中提到了提到了8个家族的流量激活,分别是Chaos、Kobalos、Pandora、Penquin、Ryuk、SYNful Knock、Umbreon、Winnti for Linux。

chaos木马

Chaos是一个linux后门木马。木马运行后,会创建一个TCP的Socket,读取过滤网卡数据,校验数据包内容是否与特定字符串一致。一旦传入的数据存在特定字符串,则会向对方的8338端口发起通信请求,进行下一步的密钥协商和执行后续动作。本次样例中的特定字符串值为“j0DtFt1LTvbIU”。可以看到Chaos木马是通过检查TCP的传入数据,是否包含特定字符串完成的流量激活。

图 4 Chaos木马的激活

图 5 TCP激活

Kobalos木马

Kobalos是一个SSH后门。该后门在运行后,开启流量监听,等待来自源端口55201的流量,只有符合源端口为55201的SSH连接才会触发下一阶段建立与C2通信的TCP通道。

图 6 监听源端口55201

图 7 来自55201端口的激活

Panora木马

根据TrendMicro的分析报告,Panora的每个样本都有Token值,并存放到注册表中,样本执行流量捕获,只有当接收到HTTP 协议格式的数据,且数据与注册表中Token值一致的时候才会执行命令。该木马在样本中解析HTTP格式使用了开源的HTTP解析组件(hxxps://github.com/nodejs/http-parser)。

图 8 Trendmicro报告提供的Token值

图 9 HTTP激活模拟

Penquin木马

Penquin,属于Tular组织的木马。在木马启动运行后,开启网卡监听,检查网卡接收到的数据包TCP 包头中的 ACK 编号,或者 UDP 协议数据包载荷中的第二个字节。

如果收到这样的数据包并且匹配成功,则视为成功激活,执行流程将跳转到数据包有效负载内容,执行后续操作。示例如下:

Filter = (tcp[8:4] & 0xe007ffff = 0xe003bebe) or (udp[12:4] & 0xe007ffff = 0xe003bebe)

图 10 对TCP协议ACK值的检查

图 11 对UDP协议载荷部分的检查

 Ryuk木马

Ryuk,勒索软件家族。该样本具备正规的数字签名,样本运行后为了扩大勒索访问,会访问系统的ARP表。如果ARP表中存在局域网段列表,则Ryuk 将向ARP列表中设备的 MAC 地址发送一个网络唤醒 (WoL) 数据包以启动设备。此 WoL 请求以包含“FF FF FF FF FF FF FF FF FF”的特定数据的形式出现。

    网络唤醒(Wol)是一种系统支持的唤醒功能,属于正常的应用,在此处勒索软件使用了这种唤醒来获得更多的失陷主机,扩大勒索范围。

图 12 网卡支持唤醒功能

图 13 Wol数据包

SYNful Knock木马

SYNful Knock 是路由器固件木马,木马运行后接收特定的数据完成激活。该数据包为TCP SYN握手包。数据包发送到感染的路由器的端口 80上。SYN包需要满足几个条件:

  1. 序列号和ACK之间的差值必须设置为0xC123D。
  2. ACK 号不为0。
  3. TCP 选项:“02 04 05 b4 01 01 04 02 01 03 03 05”
  4. 紧急指针设置为0x0001。

图 14 SYN校验

Umbreon木马

    反向shell连接木马,该木马存在一个同名的开源项目,以该开源项目为例子进行说明。木马接收TCP协议流量,检查流量中的ACK和序列号,是否符合程序中硬编码的值,下图示例代码SEQ=0x00C4、ACK=0xC500。只有满足的情况下,才会开启反向shell连接。这种验证激活与上述提到的SYNful Knock有点类似,不过显然SYNful Knock的条件更苛刻,需要进行运算,且有一定变化。


图 15 项目中的MAGIC定义

图 16 TCP检查

Winnti for Linux木马

Winnti木马的激活,国外安全研究员Thyssenkrupp提供了探测脚本,对其进行分析可以看到,初始的请求TCP协议载荷由四个 DWORD 组成,前三个由 Rand() 函数生成,第四个是根据第一个和第三个计算的。当受 Winnti 感染的主机收到时,它将验证接收到的数据包并侦听包含任务的第二个入站请求。

第二个请求(获取系统信息请求),该协议使用四字节 XOR 编码。Winnti 将在执行任务之前验证第三个 DWORD 是否包含特征字 0xABC18CBA。

图 17 国外安全研究员Thyssenkrupp提供的探测包示例

总结

从以上几个示例可以看到木马病毒的激活具有多种方式。总结各类激活方式的特点如下:

  1. 影响多个平台:包含windows、linux及各类路由器操作系统等。
  2. 激活协议多样:包含TCP、UDP、HTTP等,除了以上举例,在实际的分析中,也有ICMP、伪造TLS协议等。
  3. 激活位置多变:如协议格式、协议头部、端口、载荷都可以是激活流量。
  4. 激活方法复杂:校验方法逐渐从简单字段匹配发展到标志位运算匹配,且激活流量可以使用各类加密算法加密,使基于特征串匹配的检测方法逐渐失效。

    观成科技通过异常加密流量检测引擎,在协议格式异常,通信端口、通信行为等方面检测,可以有效的发现此类用于激活的异常流量。

相关文章:

主动激活木马加密流量分析

概述 在网络攻击中,木马病毒通常会使用监听某个端口的方式,或者直接连接C2地址、域名的方式来建立通信,完成命令与控制。而APT攻击中,攻击者为了更高级的潜伏隐蔽需求,其部署的木马或后门,会采用对网卡流量…...

关于单片机CPU如何控制相关引脚

目录 1、相关的单片机结构 2、通过LED的实例解释 1、相关的单片机结构 在寄存器中每一块都有一根导线与引脚对应,通过cpu改变寄存器内的数据(0或1),通过驱动器来控制对于的引脚。 2、通过LED的实例解释 如图所示,芯片…...

[概述] 获取点云数据的仪器

这里所说的获取点云的仪器指的是可以获取场景中物体距离信息的相关设备,下面分别从测距原理以及适用场景来进行介绍。 一、三角测距法 三角测距原理 就是利用三角形的几何关系来测量物体的距离。想象一下,你站在一个地方,你的朋友站在另一…...

路由器基础(八):策略路由配置

在实际网络应用中,策略路由也是一种重要的技术手段。尽管 在考试并不注重策略路由,但是实际上应用较多,建议考生除了掌握基本的静态路由协议IP route-static, 动态路由协议RIP 、OSPF的基础配置外,还要掌握如何配置策略路由。…...

Java 零碎知识点

目录 [多线程]创建多线程的三种方式 [网络编程]一、重点概念1、TCP/IP网络模型2、IP 对象3、端口号4、协议UDP(User Datagram Protocol)TCP(Transmission Control Protocol) 二、UDP 通信三、TCP 通信 [前端][Vue]一、Vue3项目创建响应式函数父子通信父传子子传父 跨层组件通信…...

多模态论文阅读之BLIP

BLIP泛读 TitleMotivationContributionModel Title BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation Motivation 模型角度:clip albef等要么采用encoder-base model 要么采用encoder-decoder model.…...

OpenCV实战——OpenCV.js介绍

OpenCV实战——OpenCV.js介绍 0. 前言1. OpenCV.js 简介2. 网页编写3. 调用 OpenCV.js 库4. 完整代码相关链接 0. 前言 本节介绍如何使用 JavaScript 通过 OpenCV 开发计算机视觉算法。在 OpenCV.js 之前,如果想要在 Web 上执行一些计算机视觉任务,必须…...

qt5工程打包成可执行exe程序

一、编译生成.exe 1.1、在release模式下编译生成.exe 1.2、建一个空白文件夹package,再将在release模式下生成的.exe文件复制到新建的文件夹中package。 1.3、打开QT5的命令行 1.4、用命令行进入新建文件夹package,使用windeployqt对生成的exe文件进行动…...

Qt之基于QCustomPlot绘制直方图(Histogram),叠加正态分布曲线

一.效果 二.原理 1.正态分布 高斯分布(Gaussian distribution),又名正态分布(Normal distribution),也称"常态分布",也就是说,在正常的状态下,一般的事物,都会符合这样的分布规律。 比如人的身高为一个随机变量,特别高的人比较少,特别矮的也很少,大部分都…...

232.用栈实现队列

原题链接:232.用栈实现队列 思路 主要是要注意栈和队列的数据结构的区别,一个是后进先出, 一个是先进先出 如果要用栈模拟队列的先进先出,那就得使用另一个辅助空间来存储栈的栈顶元素,然后把栈最底部的元素弹出&…...

C51--项目--感应开关盖垃圾桶

1、项目概述 功能描述: 检测靠近时,垃圾桶自动开盖并伴随滴一声,2s后关盖。 发生震动时,垃圾桶自动开盖并伴随滴一声,2s后关盖。 按下按键时,垃圾桶自动开盖并伴随滴一声,2s后关盖。 硬件说明…...

基于单片机设计的太阳能跟踪器

一、前言 随着对可再生能源的需求不断增长,太阳能作为一种清洁、可持续的能源形式,受到越来越多的关注和应用。太阳能光板通常固定在一个固定的角度上,这限制了它们对太阳光的接收效率。为了充分利用太阳能资源,提高太阳能光板的…...

【踩坑及思考】浏览器存储 cookie 最大值超过 4kb,或 http 头 cookie 超过限制值

背景 本地生产环境:超过最大值 cookie token 不存储;客户生产环境:打开系统空白,且控制台报 http 400 错误; 出现了两种现象 现象一:浏览器对大于 4kb 的 cookie 值不存储 导致用户名密码登录&#xff…...

竞赛选题 深度学习实现行人重识别 - python opencv yolo Reid

文章目录 0 前言1 课题背景2 效果展示3 行人检测4 行人重识别5 其他工具6 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 **基于深度学习的行人重识别算法研究与实现 ** 该项目较为新颖,适合作为竞赛课题方向&#xff0c…...

SpringCloud Gateway实现请求解密和响应加密

文章目录 前言正文一、项目简介二、核心代码2.1 自定义过滤器2.2 网关配置2.3 自定义配置类2.4 加密组件接口2.5 加密组件实现,AES算法2.6 启动类,校验支持的算法配置 三、请求报文示例四、测试结果4.1 网关项目启动时4.2 发生请求时 前言 本文环境使用比…...

IDEA创建Springboot多模块项目

一、创建父模块 File --> New --> Project ,选择 “ Spring Initalizr ” ,点击 Next Next Next --> Finish 二、创建子模块 右键根目录,New --> Module 选择 “ Spring Initializr ”,点击Next 此处注意T…...

React:JSX语法入门

JSX语法入门及代码 JSX是一种JavaScript的语法扩展,用于在React中描述用户界面的结构。它允许开发者使用类似HTML的语法来创建React元素,使得代码更具可读性和可维护性。JSX将HTML标签和JavaScript代码结合在一起,可以在其中使用JavaScript表…...

AI大模型架构师专家,你会问什么来测试我的水平,如何解答上述问题,学习路径是什么

0. 沈剑老师的大模型产品应用经验: 提示词三步骤: 假如我是xxx专家,你会问什么来测试我的水平;假如你是xxx专家,你会如何解答上述问题;假如你是xxx专家,上述问题的学习路径是什么;…...

Dev-C调试的基本方法2-1

在Dev-C中调试程序,首先需要在程序中设置断点,之后以调试的方式运行程序。 1 设置断点 当以调试的方式运行程序时,程序会在断点处停下来。点击要设置断点代码行号左侧部分,此时会有如图1所示的红点和绿色对勾,表示断…...

Linux 调试 (objdump/strace/strings)

目录 1. Linux 调试 (objdump/strace/strings)1.1. 查看系统 glibc 版本号1.2. 查看 so/bin 中的依赖1.3. 调试 bin 报错原因1.4. 查看 so/bin 中字符串 1. Linux 调试 (objdump/strace/strings) 1.1. 查看系统 glibc 版本号 1. 第一种 # ldd --version ldd (Ubuntu GLIBC 2.…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

【单片机期末】单片机系统设计

主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖

在Vuzix M400 AR智能眼镜的助力下,卢森堡罗伯特舒曼医院(the Robert Schuman Hospitals, HRS)凭借在无菌制剂生产流程中引入增强现实技术(AR)创新项目,荣获了2024年6月7日由卢森堡医院药剂师协会&#xff0…...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化

缓存架构 代码结构 代码详情 功能点: 多级缓存,先查本地缓存,再查Redis,最后才查数据库热点数据重建逻辑使用分布式锁,二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...

Selenium常用函数介绍

目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...