【观成科】响尾蛇组织窃密木马通信分析

  1. 概述

2022年11月22日,响尾蛇组织对我国高校发起攻击活动,利用疫情相关信息包装钓鱼邮件,诱导受害者打开邮件附件,十分具有迷惑性。本次攻击活动仍然采用以往的攻击流程,利用LNK文件下载HTA文件,最终完成窃密行为或实现远程控制。观成科技安全研究团队对响尾蛇组织在类似攻击活动中常用的窃密木马家族进行逆向分析,搭建服务器模拟木马控制端,复现了其通信过程。

  1. 通信过程

样本MD5

c5bccd80e4dd46870cb60304e4dbc1d7

威胁类型

窃密木马

域名

cdn-sop.net

APT组织

响尾蛇(Sidewinder

该窃密木马执行后,通过HTTPS加密协议上传窃取的系统信息、文件列表,并从C2服务器获取控制指令然后执行。

    1. 上传窃密数据

该窃密木马会将收集到的信息存储到C:\Users\username\AppData\Roaming\SyncDat\目录下,系统信息和已安装程序列表存储到*.sif文件中,文件列表信息存储到*.flc文件,指定后缀文件信息存储到*.fls文件中,错误日志存储到*.err文件中。

该窃密木马创建了定时器来触发上传操作,通过向https://cdn-sop.net/202/F2cPn7PzyV2DdCL4nNCotIfPzcXCLM1YvyGlmyp6/-1/13897/37d4baca发送POST请求将SyncDat目录下的文件上传到C2服务器。

窃密木马生成的HTTP请求头中填充了上传的文件路径和文件类型,如下图所示,X-File-Path字段中填充了Base64编码的文件路径,X-File-Type字段中填充了文件类型“sysInfo”(系统信息)。上传的文件信息使用GZIP进行压缩。

图 2‑1 上传系统信息和已安装文件列表(HTTPS解密后)

图 2‑2上传系统信息和已安装文件列表(HTTPS)

    1. 下发控制指令

该窃密木马创建了定时器触发请求控制指令操作,通过向https://cdn-sop.net/202/F2cPn7PzyV2DdCL4nNCotIfPzcXCLM1YvyGlmyp6/-1/13897/37d4baca发送HTTP GET请求来获取控制指令。

 

图 2‑3 服务器下发控制指令(HTTPS)

该窃密木马使用了不同于其他木马的指令下发方式。C2服务器将控制指令隐藏在DLL的ToString方法中,通过下发DLL文件来传递控制指令。

 

图 2‑4 包含控制指令的DLL

服务器下发的DLL经过了XOR加密,加密数据结构如下。前0x20字节是服务器生成的XOR密钥,后面的数据是循环异或后的DLL数据。

图 2‑5 加密数据

模拟服务器下发加密后的DLL,如下图所示,窃密木马可以正常解析并执行控制指令。

图 2‑6 服务器下发控制指令(HTTPS解密后)

该窃密木马获取Base64编码字符串后解码,并使用第一个字节数据作为控制指令码,具体功能如下:

控制指令码

功能

1

获取系统信息,以Json格式写入随机文件名.sif文件

2

遍历文件列表写入.flc文件

3

将指定文件的文件信息写入.fls文件

4

重写配置文件

5

更换C&C地址

6

更新是否上传文件参数

7

修改配置文件的想要窃取的文件类型

8

设置上传大小限制

9

上传指定文件

10

返回

  1. 产品检测

观成瞰云(ENS)-加密威胁智能检测系统能够对响尾蛇APT组织的加密流量进行检测。

 

图 3‑1 TLS协议加密流量检测鱼骨图

  1. 总结

本次分析的响尾蛇组织窃密木马,通过HTTPS加密通信的方式实现隐蔽上传窃密数据和下发控制指令,其中,该木马控制指令下发的方式很有特点,控制端下发加密后的DLL文件,将控制命令隐藏在DLL文件中,当受控主机调用该DLL文件执行时即可获得指令。当前大多数APT组织都会使用加密通信的方式隐藏命令与控制信息,观成科技安全研究团队通过逆向分析技术对APT组织样本进行分析,研究其加密通信技术手法,并持续对APT组织的进行监测和跟踪。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
股票响尾蛇导弹策略(Bollinger Bands)是一种技术分析方法,它基于股票价格的移动平均线和标准差来确定价格的高低点和趋势方向。具体实现代码如下: ```python import pandas as pd import numpy as np import matplotlib.pyplot as plt def bollinger_bands(data, window_size, num_std): rolling_mean = data.rolling(window=window_size).mean() rolling_std = data.rolling(window=window_size).std() upper_band = rolling_mean + (rolling_std * num_std) lower_band = rolling_mean - (rolling_std * num_std) return rolling_mean, upper_band, lower_band # 读取股票数据 data = pd.read_csv('stock_data.csv') # 计算响尾蛇导弹指标 window_size = 20 num_std = 2 rolling_mean, upper_band, lower_band = bollinger_bands(data['Close'], window_size, num_std) # 绘制股票价格和响尾蛇导弹指标 plt.figure(figsize=(12,6)) plt.plot(data['Close'], label='Close Price') plt.plot(rolling_mean, label='Moving Average') plt.plot(upper_band, label='Upper Band') plt.plot(lower_band, label='Lower Band') plt.title('Bollinger Bands') plt.xlabel('Date') plt.ylabel('Price') plt.legend() plt.show() ``` 其中,`data` 是一个包含股票价格数据的 pandas 数据框,每行代表一天的数据。`window_size` 是用于计算移动平均线和标准差的时间窗口大小,`num_std` 是用于确定上下限的标准差倍数。函数 `bollinger_bands` 返回计算出来的移动平均线、上限和下限。 在运行完代码后,会得到一个绘制有股票价格、移动平均线和上下限的图表。通过观察上下限和股票价格之间的关系,可以根据策略决定何时买入或卖出股票。例如,当股票价格突破上限时,可能意味着股票价格已经过高,可以考虑卖出股票;当股票价格突破下限时,可能意味着股票价格已经过低,可以考虑买入股票。需要根据具体情况结合其他技术分析指标和基本面分析来决策。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值