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

玄机靶场 | 第五届红明谷-异常行为溯源

文章目录

    • 题目描述
    • 解题过程

题目描述

某企业网络安全部门人员正在对企业网络资产受到的攻击行为进行溯源分析,该工作人员发现攻击者删除了一段时间内的访问日志数据,但是攻击者曾传输过已被删除的访问日志数据并且被流量监控设备捕获,工作人员对流量数据进行了初步过滤并提取出了相应数据包。已知该攻击者在开始时曾尝试低密度的攻击,发现未被相关安全人员及时发现后进行了连续多日的攻击,请协助企业排查并定位攻击者IP,flag格式为:flag{md5(IP)}

解题过程

打开pcap文件分析,可以看到里面都是TCP流量,点开流量发现Data数据为Base64编码

复制ASCII文本,然后解码Base64数据,如图

可以看到解码后得到一串Json数据,里面的msg对应的内容还是Base64编码,继续解码

发现是一条日志数据,那我们的思路就是写个python脚本,遍历每一个数据包,寻找符合特定格式(以eyJ开头的Base64编码)的原始数据,再从中提取msg字段的值进行Base64解码,得到最终的日志文本

payload:

import base64
import json
from scapy.all import rdpcap, RawPCAP_FILE = 'network_traffic.pcap'
LOG_FILE = 'log.txt'try:print(f"[*] 正在读取 {PCAP_FILE}...")packets = rdpcap(PCAP_FILE)log_count = 0with open(LOG_FILE, 'w', encoding='utf-8') as f:for packet in packets:if packet.haslayer(Raw):try:payload = packet[Raw].load# Base64编码的JSON对象通常以'eyJ'开头start_index = payload.find(b'eyJ')if start_index == -1:continueb64_str_1 = payload[start_index:]# 动态计算并补全缺失的'='填充padding = b'=' * (-len(b64_str_1) % 4)json_data = json.loads(base64.b64decode(b64_str_1 + padding))log_entry_bytes = base64.b64decode(json_data['msg'])log_entry = log_entry_bytes.decode('utf-8')f.write(log_entry.strip() + '\n')log_count += 1except Exception:continueprint(f"[+] 处理完成!共提取 {log_count} 条日志到 {LOG_FILE}")except Exception as e:print(f"[!] 发生严重错误: {e}")

这个脚本用到scapy库来进行网络数据包交互与操作,可以执行命令 pip install scapysudo apt install python3-scapy 下载。然后把脚本(假设命名为decode.py)和pcap文件(network_traffic.pcap)放在同一目录,执行命令运行脚本即可

python3 decode.py

接着直接读取文本查看哪个IP出现最多

cat log.txt|awk '{print $1}'|sort|uniq -c|sort -r -n|head -n 10

发现35.127.46.111出现最多,MD5加密提交flag即可

flag{475ed6d7f74f586fb265f52eb42039b6}
http://www.xdnf.cn/news/1405081.html

相关文章:

  • MCP进阶指南:如何挑选最适合你的AI助手“装备“
  • [光学原理与应用-332]:ZEMAX - 序列模式与非序列模式的本质、比较
  • JavaScript 中的 this 关键字
  • Python远程文件管理移动端适配与跨平台优化实战
  • 【自记】MaxCompute 中 对于“数据量大、耗时久、非实时”任务的设置建议
  • Linux 下 Docker 容器部署指南(Java + Redis 示例)
  • 2025年水库单北斗GNSS变形监测TOP3系统推荐榜单
  • C++ 之 【map和set的模拟实现】(只涉及map和set的插入、迭代器以及map的operator[]函数)
  • 使用 JavaScript 构建 RAG(检索增强生成)库:原理与实现
  • TechPowerUp GPU-Z中文版:专业显卡检测工具
  • 多教师语言感知知识蒸馏:提升多语种语音情绪识别的新方法
  • FPGA 实现FOC 无刷电机控制器
  • 数字化赋能,鹧鸪云重塑光伏电站资产管理新范式
  • DDR5 介绍
  • C/C++:AddressSanitizer内存检测工具
  • 基于单片机甲醛浓度检测报警系统Proteus仿真(含全部资料)
  • 存储的未来之战:RustFS如何用ZK框架重构分布式协调?
  • L10 Function Calling与智能Agent开发
  • IC验证 AXI 项目(二)——断言
  • LeetCode - 21. 合并两个有序链表
  • 【前端教程】JavaScript 基础实战案例(5-10)
  • UE5多人MOBA+GAS 56、WSL + Docker 编排 Linux 服务器与 Windows 客户端
  • Linux基础1
  • AI融合高等教育:从通识到专业 - 学科+AI人才培养白皮书(上)
  • Linux查看Java进程PID、端口号和内存占用脚本
  • 【多项式】快速莫比乌斯变换(FMT)
  • ⭐CVPR2025 自动驾驶半监督 LiDAR 分割新范式:HiLoTs 框架深度解析
  • Python 数据分析:计算,分组统计2,df.groupby()和grouped.agg()。听故事学知识点怎么这么容易?
  • 告别图片处理焦虑:用imgix实现智能、实时且高效的视觉媒体交付(含案例、截图)
  • 一键掌控三线资源:极简 Shell 脚本实现 CPU·磁盘·内存可视化巡检