当前位置: 首页 > 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.dtcms.com/a/358969.html

相关文章:

  • Fortran二维数组去重(unique)算法实战
  • WSL使用指南
  • AUTOSAR进阶图解==>AUTOSAR_TR_FrancaIntegration
  • 【超全汇总】MySQL服务启动命令手册(Linux+Windows+macOS)(中)
  • 腾讯云OpenCloudOS 9系统部署OpenTenBase数据库详细教程
  • 轻量xlsx读取库xlsx_drone的编译与测试
  • 关联容器(Associative containers)
  • Windows server 2012安装步骤
  • 为什么要用 Markdown?以及如何使用它
  • 软考备考(5)
  • vite Rendering 10 pagesReferenceError: document is not defined
  • 35.Ansible的yaml语法与playbook的写法
  • Java基础知识(十)
  • 【软考架构】面向服务的体系结构(SOA)深度解析
  • 记IsaacSim中抓取物体的质量物理属性的影响
  • 【智能体】零代码学习 Coze 智能体(2)创建智能体的完整步骤
  • 直线与椭圆相交弦长计算公式
  • K8s服务日志收集方案文档
  • LeetCode 92. 反转链表 II - 算法解析
  • 微服务-ruoyi-cloud部署
  • 《动手学深度学习v2》学习笔记 | 2.3 线性代数
  • 吴恩达机器学习(三)
  • 第7.5节:awk语言 switch 语句
  • 【C++】掌握string类操作:高效处理字符串
  • k230 按键拍照后,将摄像头拍照的1920*1080分辨率的图片以jpg文件格式,保存到板载TF存储卡的指定文件夹目录中
  • MinerU本地化部署
  • Java的Optional实现优雅判空新体验【最佳实践】
  • 做一个实用的节假日工具
  • MQTT 连接建立与断开流程详解(一)
  • sunset: decoy靶场渗透