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

观成科技-加密C2框架EvilOSX流量分析

  1. 工具简介

EvilOSX是一款开源的,由python编写专门为macOS系统设计的C2工具,该工具可以利用自身释放的木马来实现一系列集成功能,如键盘记录、文件捕获、浏览器历史记录爬取、截屏等。EvilOSX主要使用HTTP协议进行通信,通信内容为特定格式的数据经由base64加密后传输。为了规避检测,EvilOSX的通信响应信息均为404 Not Found页面。

  1. 衍生木马分析

在/data/builds目录下会生成指定脚本类型的文件,其中主要部分是一段base64编码形式的payload。主要分析生成的python加载器--Launcher-238346.py

a、加载器中携带了一段base64加密的python脚本(Connectivity mode.txt),脚本通过python执行这段加密数据后,又通过rm -rf  __file__来清除当前目录下的所有py脚本

b、Connectivity mode.txt中定义了请求头中User-Agent和cookie的形式,其中cookie由两段关键数据组成:由受控端计算机用户名和mac地址组成的16进制数作为session;而后通过“-”连接的一段base64数据,解密后是一些服务端和受控端的信息。并且该脚本还定义了当响应码为404时,使用base64解密响应体中DEBUG: base64 =DEBUG--> 其中的base64数据。

c、将受控端与服务端连接时的流量捕获,解密其中的DEBUG数据,可以获取又一段python脚本(CONNECT.py),这段脚本会在macOS上注册一个Launch Agent,并经过base64编码写入本地。然后这段payload会在系统启动时被Launch Agent执行。其中payload的路径默认为当前用户主目录,默认命名为arLPrVu,Launch Agent文件默认文件名为” com.apple.teuAwWo

d、arLPrVu的内容为一段openssl aes-256-cbc加密的密文,密钥就是之前session中携带的16进制字符串,手动运行后,木马会正式与服务端进行联通。

  1. 流量分析

EvilOSX从植入程序到数据交互可以通过如下流程图来描述:

以下为过程流量分析和解读:

连接时

客户端向服务端发送get请求后,

请求头cookie与原始木马中base64密文解密后的形式一致。

服务端返回404并在http_server_body部分携带base64数据。

数据的开头结尾是以DEBUG: base64形式 =DEBUG--> 存在

而404中携带的数据,解码后含义是通过get_uid函数获取当前计算机用户名和唯一标识符拼接后转化为16进制数据,用于下一段中使用openssl命令对一段加密的代码进行解密,并通过exec()函数执行。

命令执行时

当靶机上的原始木马文件执行后会在同级目录下留下一个arLPrVu命名的py脚本文件。回连服务器还需要在手动执行它

测试全部module和部分常见shell命令(ifconfig、ls -l)

会发现存在明显特征,以执行CVE-2020-3950模块时为例

在POST请求体中,username后接着base64数据,

解密后,就是使用的模块名,经过测试除了shell命令执行和模块启用失败时,均可在流量中发现这一特征。并且响应码一定是404

这一段在木马中也有体现

  1. 产品检测

观成瞰云(ENS)-加密威胁智能检测系统能够对EvilOSX工具产生的HTTP流量进行检测。

  1. 总结

       在利用EvilOSX-C2工具的过程中,会优先上传其释放的木马文件,该文件具有特殊格式,之后通信过程中会利用404页面隐藏真实响应,但是基于人工智能、流行为特征和TLS限定域指纹检测的加密威胁智能检测系统能够检测此类加密通信行为。如今越来越多的攻击者利用具体加密通信功能C2工具,以增强攻击的隐蔽性。观成科技安全研究团队一直在持续追踪这些C2工具的最新动态,并积极进行研究和更新,以提高对加密流量的检测

http://www.lryc.cn/news/280308.html

相关文章:

  • PCL 计算异面直线的距离
  • 【数字人】9、DiffTalk | 使用扩散模型基于 audio-driven+对应人物视频 合成说话头(CVPR2023)
  • 完成源示例
  • 业务和流程的关系
  • 【河海大学论文LaTeX+VSCode全指南】
  • 学习python仅此一篇就够了(文件操作:读,写,追加)
  • vue中 ref 和 $refs的使用
  • Centos7升级openssl到openssl1.1.1
  • uniapp中实现H5录音和上传、实时语音识别(兼容App小程序)和波形可视化
  • HashMap集合万字源码详解(面试常考)
  • LeetCode1124. Longest Well-Performing Interval
  • 如何使用手机公网远程访问本地群辉Video Station中视频文件【内网穿透】
  • 事件分析应急响应-Server2229(环境+解析)
  • SpringCloud:微服务
  • 拥抱Guava之集合操作
  • 运算放大器相关知识总结(1)
  • ZMQ_REQ\REP模式
  • 机器人跟踪性能量化指标
  • 【GitHub项目推荐--开源的坦克大战】【转载】
  • 06、Kafka ------ 各个功能的作用解释(ISR 同步副本、非同步副本、自动创建主题、修改主题、删除主题)
  • Spring Security实现详解
  • ⭐Unity LeapMotion与手的相关开发
  • React16源码: React中的update和updateQueue的源码实现
  • mybatisplus(service CRUD 接口)
  • GC6109——双通道5V低电压步进电机驱动芯片,低噪声、低振动,应用摄像机,机器人等产品中
  • MySQL-多表联合查询
  • 商城小程序(8.购物车页面)
  • [Vulnhub靶机] DC-1
  • 【springboot 中集成 knife4j 时,报错 No mapping for GET /doc.html】
  • C++ 具名要求-全库范围的概念 -谓词(Predicate)-二元谓词(BinaryPredicate)