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

观成科技:​加密C2框架Platypus流量分析

一、工具介绍

Platypus 是一款支持多会话的交互式反向 Shell 管理器。在实际的渗透测试中,为了解决 Netcat/Socat 等工具在文件传输、多会话管理方面的不足,该工具在多会话管理的基础上增加了在渗透测试中能更好发挥作用的功能(如:交互式 Shell、文件操作、隧道等),并且使用 TLS/SSL 协议进行通信,它可以利用证书和密钥对通信进行加密,确保数据传输的隐蔽性。

二、工具原理分析

Platypus工具包括两种类型的监听器:TCP监听器和Termite监听器。TCP监听器使用nc shell,默认监听端口为13338,而Termite监听器默认监听端口为13339,并通过HTTP协议下载并执行木马,后续木马使用TLS协议用于加密回连。相比TCP监听器,Termite监听器通过TLS协议加密通信,具有更高的安全性和隐蔽性。

终端通过HTTP协议与Termite监听器建立通信连接,并将木马文件下载到路径/termite/[ip:port]下。在木马成功上线后,与Platypus服务器上的Termite监听器建立TLS连接,按固定格式依次执行一系列命令,收集终端的系统信息、用户信息、Python版本、网络接口等数据。信息收集完毕也意味着木马上线完成,攻击者如需执行进一步的操作,系统将转为交互式shell模式进行命令执行。流程见下图。

图 1工具原理图

在木马上线时,EstablishPTY 方法用于建立交互式 Shell,如图 2 所示。该方法通过 Python 启动交互式 Shell,并禁用历史命令记录,从而降低取证风险。确保攻击者能够在受害者系统上顺畅地执行命令,同时提升攻击的隐蔽性和可用性。

图 2 EstablishPTY方法

在使用 TCP 监听器时,可以观察到每次命令执行时,Platypus 服务器会按照固定格式发送命令:echo + 8 字节随机字符串(tokenA) + ; + 默认命令 + ; + echo + 8 字节随机字符串(tokenB)。终端接收到 Platypus 服务器发送的命令后,会提取 tokenA 和 tokenB,然后执行命令,并将命令执行结果以固定格式返回:tokenA + 命令执行结果 + tokenB。命令执行的回显可以通过唯一标识符(tokenA 和 tokenB)进行区分。

图 3 命令执行结果

通过观察TCP模式的通信数据可以辅助分析TLS模式下的行为特征:TCP明文流量中交互式shell发送的命令是逐字节发送的,且每次发送单字节内容后,服务端会返回同样的内容,依次交替直到完成一个命令。

图 4 明文流量分析

使用TLS协议加密后,流量中的明文命令和结果被转换为加密数据。虽然需要解密才能还原内容,但这种特殊的命令执行方式在加密后的数据包中也能发现对应的长度变化和模式。从下图可以看到请求和响应的数据包长度为68字节时,对应TCP模式下Platypus服务器逐字节下发命令的过程,后续267和355字节的返回包对应命令执行并返回相应结果。

图 5 加密流量分析

三、工具检测

我们通过行为分析的检测方法,实现了对Platypus C2工具TLS通信的有效检测。

图6:Platypus检出结果

四、总结

利用Platypus工具的木马进行C&C通信,攻击者可以利用TLS将通信内容加密从而规避传统明文流量设备的检测,但是基于人工智能、流行为特征检测的加密威胁智能检测系统能够检测此类加密通信行为。如今,越来越多的攻击者采用加密通信的C2工具,以提升攻击的隐蔽性。观成科技安全研究团队持续追踪这些C2工具的最新动态,积极研究和更新针对加密流量的检测技术。

http://www.dtcms.com/a/67616.html

相关文章:

  • git 基本常用操作,切换分支,合并分支
  • Linux内核套接字以及分层模型
  • ActiveMQ 5.1.3:单节点与集群部署实战指南
  • robotjs获取鼠标位置
  • 网络_面试_HTTP请求报文和HTTP响应报文
  • 每日一题一一LeetCode1. 两数之和 - 力扣(LeetCode)
  • 【算法】数组、链表、栈、队列、树
  • uni-app打包h5并部署到nginx,路由模式history
  • 【QT】认识 QT 安装 QT 相关软件
  • HTTP 协议中常见的错误状态码(详细介绍)
  • grad_traj_optimization 开源项目
  • Claude 3 7:AI新王者的诞生?✨
  • 06_docker容器的数据卷管理
  • 2025-03-13 学习记录--C/C++-PTA 练习2-15 求简单交错序列前N项和
  • 【商城实战(29)】解锁消息通知功能,打造极致用户体验
  • element-plus文档解析之Layout布局(el-row,el-col)
  • Vue前端页面实现搜索框的重置
  • PHP 过滤器
  • idea cpu干到100%的解决方法?
  • 如何通过修改hosts文件、启动Apache服务器、修改httpd.conf文件、配置虚拟主机、创建站点目录和文件等步骤来配置虚拟主机并发布PHP站点
  • 【Linux】进程间通信:命名管道
  • Spring(一)
  • Springboot 实用技巧 查缺补漏
  • 3dconvert-viewer.js SDK
  • AI赋能铁道安全巡检探索智能巡检新时代,基于YOLOv7全系列【tiny/l/x】参数模型开发构建铁路轨道场景下轨道上人员行为异常检测预警系统
  • vue通过click和shift实现连续多选功能
  • llama.cpp框架下GGUF格式及量化参数全解析
  • 蓝桥杯备赛-基础练习 day1
  • RAGFlow版本升级-Win10系统Docker
  • tomcat负载均衡配置