2026/3/30 20:34:44
网站建设
项目流程
天津建站模板源码,网站开发和数据库哪个有前途,免费建设dj网站,怎么管理购物网站SnakeBackdoor-4题目4提示上传了一个二进制后门#xff0c;要求我们找到木马进程执行的本体文件名称。在SnakeBackdoor-2~3中已经拿到了核心密钥 RC4_SECRET bv1p3r_5tr1k3_k3y#xff0c;这道题的本质就是利用密钥解密流量#xff0c;还原攻击者的操作记录。攻击者上传并执…SnakeBackdoor-4题目4提示上传了一个二进制后门要求我们找到木马进程执行的本体文件名称。在SnakeBackdoor-2~3中已经拿到了核心密钥 RC4_SECRET bv1p3r_5tr1k3_k3y这道题的本质就是利用密钥解密流量还原攻击者的操作记录。攻击者上传并执行二进制木马通常有两种方式1通过 HTTP 上传利用 wget / curl 下载或者利用网页原本的上传功能。2通过 Shell 命令写入利用 echo hex/base64 /tmp/ma 写入然后 chmod x 赋予权限并执行。关于判断使用哪种上传方式可以按照流程试一下进行快速排除。 但是正确的也无法绕过的方法还是定位到攻击发生的地方仔细分析数据包的行为。1、通过HTTP上传——搜索二进制文件头(虽然本题不是这个方法但还是过一下流程)如果攻击者是通过上传接口或者未加密的流传输的文件可以直接在 Wireshark 中搜索 ELF 文件头7f 45 4c 46解题思路利用二进制文件头特征 1、打开搜索栏 按 Ctrl F 2、设置搜索模式 (1)左侧选择Packet bytes分组字节流 (2)中间选择Hex Value十六进制值 (3)输入框7f 45 4c 46 这是 Linux ELF 可执行文件的“魔术字节”相当于文件的指纹 (4)查找 点击 Find 3、分析结果 (1)如果找到了某个 POST 请求包含了这串字节说明这就是上传木马的数据包 (2)右键 - Follow - TCP/HTTP Stream (3)查看请求头中的 Content-Disposition: form-data; namefile; filename这里就是文件名 (4)或者查看该数据包的前后文寻找写入的文件名过滤出http的POST请求数据包ctrlF设置分组字节流和十六进制输入文件头二进制特征7f 45 4c 46进行搜索。因为本题不是通过http直接上传所以没有结果。2、通过 Shell 命令写入——利用密钥解密流量还原攻击者的操作记录解题思路 1、锁定流量 重点关注HTTP POST请求特别是访问木马路径的流量特征是包含X-Token-Auth头或data参数 2、解密指令 (1)攻击者执行二进制文件必须发送Shell指令 (2)如果通信是加密的我们需要提取data参数的值使用SnakeBackdoor-2~3中拿到的 Key 进行 RC4 解密 3、在解密后的明文中寻找关键字 (1)chmod x 赋予执行权限二进制文件运行前的必经步骤 (2)./执行当前目录下的文件 (3)/tmp/攻击者常用的临时目录过滤出http的POST请求回顾之前分析的请求数据包的行为长度为5369的数据包是上传木马的请求后面应该是对木马文件的具体操作选一个数据包追踪流TCP流分析数据包内容可以看到上传的参数是加密的data参数并且后面几个数据包都是上传的data参数符合通过 Shell 命令写入的特征所以我们现在需要提取出这些加密的操作data参数然后使用之前获取的RC4秘钥RC4_SECRET bv1p3r_5tr1k3_k3y进行RC4解密。构造payload将提取出加密的data使用RC4_SECRET bv1p3r_5tr1k3_k3y秘钥进行RC4解密import binascii # 配置区域 # 1. 设置密钥 (来自上一题提取的源码) RC4_SECRET bv1p3r_5tr1k3_k3y # 2. 设置你提取出来的加密 Data 列表 (已按你提供的顺序填好) encrypted_list [ a6bc, a3ab330fb285, acad614ef3d82c8445d275713899f04d0d3819fc3726cf57634b189e0e95cc1f93e57656105246251f453a8396a43a6534, bab6694ba3c938e64b8d257b7cccee460f6347f4363ed21c300c099f129b99028eb57408024e1c32061a, a2ae330da7846599188b26257a88f10b50790cb47e6a97177e1053c351, acb07e4db7c93ece4bcc37246687ae0649614caa3430ce4b, e0ac7e52fc996cc2038c2d7a3899ed ] # 核心函数 def rc4_crypt(data: bytes, key: bytes) - bytes: RC4 加密/解密算法 (与木马内部逻辑一致) S list(range(256)) j 0 # KSA (Key-scheduling algorithm) for i in range(256): j (j S[i] key[i % len(key)]) % 256 S[i], S[j] S[j], S[i] # PRGA (Pseudo-random generation algorithm) i j 0 res bytearray() for char in data: i (i 1) % 256 j (j S[i]) % 256 S[i], S[j] S[j], S[i] res.append(char ^ S[(S[i] S[j]) % 256]) return bytes(res) # 执行逻辑 print(f[*] 使用密钥: {RC4_SECRET.decode()}\n) print(- * 60) print(f{序号:5} | {原始Hex (前10位):15} | {解密结果 (执行的指令):30}) print(- * 60) for idx, hex_data in enumerate(encrypted_list): try: # 1. 十六进制解码 enc_bytes binascii.unhexlify(hex_data.strip()) # 2. RC4 解密 dec_bytes rc4_crypt(enc_bytes, RC4_SECRET) # 3. 尝试转为字符串 try: dec_str dec_bytes.decode(utf-8) except UnicodeDecodeError: dec_str f[非文本数据] {dec_bytes} # 4. 打印结果 print(f{idx1:5} | {hex_data[:10]:15} | \033[1;32m{dec_str}\033[0m) except Exception as e: print(f{idx1:5} | {hex_data[:10]:15} | [解密错误] {e}) print(- * 60)解密出来得到详细的shell操作命令根据解密出的操作记录攻击者植入并启动后门的过程如下 (1)攻击者首先通过执行 id 和 ls -al 命令进行了基础的系统侦察确认了当前用户权限及目录环境 (2)接着攻击者利用 curl 从远程服务器下载了加密压缩包 shell.zip并使用密码 nf2jd092jd01 将其解压到了 /tmp 目录下 (3)为了隐藏行踪攻击者将解压出来的名为 shell 的文件重命名为 python3.13试图将其伪装成合法的 Python 进程 (4)最后攻击者赋予了该文件可执行权限并直接运行 /tmp/python3.13 启动了二进制木马根据此过程题目 4 的最终答案木马进程执行的本体文件名为 flag{python3.13}