提权靶场实战:Linux与Windows常见错误配置利用思路
发布时间:2026/10/14 14:38:28 锦皓数字建站

提权这个环节练过和没练过的差距比想象中要大得多。同样是拿到一个低权限 shell有经验的人扫一眼 /etc/crontab 就能定下下一步去哪刚入门的朋友经常对着屏幕上那几行计划任务发呆这也没看出什么啊。in.security 这套提权靶场就是为了把这个差距补起来而设计的。它不是模拟完整攻防链路而是把真实系统里最常见的错误配置拆成一串由易到难的练习环境让你在受控条件下反复走通“低权限用户 → 高权限用户”的每一步。这篇文章是该系列上篇先把 Linux 和 Windows 两边最高频的提权思路、检测命令和利用细节讲清楚下篇再聊更复杂的组合利用、域环境以及更偏绕过的场景。不管你是刚接触 CTF还是已经能打常规考题但一遇提权就卡壳这套思路都值得照着过一遍。1. 这靶场到底在训练什么——提权的路径与思路1.1 先想清楚“提权”提的是什么权我们常说的提权本质上是把一个权限较低的运行实体提升到另一个权限更高的运行实体。这里面“权限”不只是一个数字它包含了好几个维度当前用户属于哪些组、某个文件或目录的读写执行权限、某个进程以什么身份运行以及系统对进程授予的特殊能力。真实系统里最常见的提权来源往往不是复杂的内核漏洞而是配置本身出了问题某个服务以 root 身份运行但它执行的脚本存放在普通用户可写的目录某个二进制带上了 SUID 位而它恰好又能被用来执行命令某个管理员图省事把本不该开放的 sudo 规则写进了配置。in.security 这套靶机把这些问题一个个单独拎出来做成编排好的题目。你会看到每一关都“恰好”存在一个或几个明显的错误配置而你要做的就是通过系统性的枚举把它找出来。这里有个很重要的观念要纠正提权不是上来就下载一个 exp 然后祈祷运行成功。绝大多数提权题干实际上是在考“你有没有把该看的都看了”。拿到一个新系统先做一次完整枚举识别出所有可疑点再针对每个点做验证这才是提权的正确打开方式。1.2 一个可复用的提权路径模型我建议把提权过程固定成一条标准“流水线”在每台靶机上从头到尾跑一遍服务与端口信息收集 → 获得初始会话 → 身份与组成员信息收集 → 系统版本与补丁情况 → sudo / SUID / 计划任务等配置审计 → 可写文件与权限缺失检查 → 凭据收集与横向线索。每一次枚举的输出都会直接影响下一步的方向而不是靠灵感去找洞。这套路径和真实环境里的测试思路一致靶场看起来“到处都是洞”实际上是现实中散落在各台机器上的常见错误配置被集中到了一台机器上密度更高而已。正因为密度高正好用来训练枚举习惯和判断优先级的能力。等你把上篇的检查清单跑顺再去看真实系统就不会再漫无目的地盯着同一个目录反复翻。靶场练习的最终目的不是“通关”,而是让你把提权的思考过程变成条件反射看到一条配置下一秒就能联想到它能通向哪里。1.3 环境搭建与解题心态真正开始打之前有几个环境层面的准备工作值得做。所有靶机建议用虚拟机运行网络模式选 NAT 或 host-only方便你从测试机固定访问每次开始前拍好快照打挂了直接回滚能省下大量重复部署时间。其次建议给每台靶机单独建一个笔记文件记录 IP、入口用户、发现的配置项以及每一步尝试的结果尤其是失败的操作——因为失败记录往往比成功更值钱。另一个容易忽略的心态问题既然是“上篇”题目难度就是循序渐进的。前面几关可能只需要你看一眼 sudo -l 或找到一个 SUID 文件就能完成后面才会出现组合利用。所以遇到简单关卡也别跳过先把它当成“验证习惯”的机会把固定的枚举流程完整走一遍。基础动作熟练到不需要思考后面遇到刁钻组合题时才不会被琐碎步骤拖住。2. 信息收集与初始 shell——提权的前置动作2.1 服务侦察不要只扫默认端口多数靶机的入口并不会藏得很深但信息收集阶段仍值得认真做。我常用的第一轮扫描是这样nmap -sC -sV -p- 10.10.xx.xx-p- 扫全端口的意义在于有些靶机把管理服务或自定义服务放在高位端口。只扫默认的一千个端口可能漏掉一个真正承载入口的服务。扫描结果里要同时关注两样东西端口和协议本身以及版本号。版本号决定了后续能否快速定位到已知问题也决定了该服务默认配置下有哪些可枚举路径。看到端口列表之后不建议对每个服务都展开盲目的手动枚举。优先看 HTTP、SSH、SMB、FTP 这类高价值服务。比如 HTTP 服务通常会附带网站目录扫描、源码文件、上传接口、命令执行参数都可能藏在这里SMB 如果开启了匿名访问共享目录列表直接就能带着敏感文件出现。重点是用最快速度回答“哪里能让我先进去”这个问题。顺便说一句真实大型内网里全端口扫描可能耗时很长但靶场通常就一两台机器没什么理由不开全端口。2.2 拿到初始 shell 的典型入口这套靶场里初始 shell 的获取往往不是难点很多题目只要求你能进到低权限用户就行。常见入口有这么几类通过 Web 应用的文件上传点传一个命令执行脚本直接拿到 Web 服务用户通过某个服务泄露的私钥文件登录 SSH通过 FTP 或 SMB 读取到硬编码的密码或备份文件甚至直接就是题目描述里给了一个常见弱口令。在这个阶段我个人的建议是不要为了“入口”本身花太多精力。比如某个上传点过滤很严格不要纠结两小时很多题目后面还有别的路子先把各入口都试一遍选最快的那条进入系统把精力留给提权环节。但也不要完全跳过信息收集因为 Web 源码里可能同时写了入口和后续提权需要的密码线索漏掉就亏了。拿到入口后第一时间记录你进入时用的用户身份比如 www-data、某个服务账户还是普通用户这个信息直接决定后面先检查哪个提权面。2.3 把临时 shell 升级成正式 shell通过 Web 漏洞或服务漏洞拿到的 shell很多是半交互甚至非交互的特点是没有正常 TTYtab 补全和方向键不可用某些命令会直接报错。比如 sudo 在没有终端的环境下会提示 “sudo: no tty present”这时候必须先把 shell 升级成标准交互式会话。Linux 下最简单的方式是 Python 的 pty 模块python3 -c import pty;pty.spawn(/bin/bash) export TERMxterm如果你是通过 SSH 登录的本身就带完整终端不需要这步。另外如果测试机到靶机之间只有一条不稳定的命令通道我建议先把所有需要人工交互的操作放后面优先用命令把系统信息收集完。Windows 那边的思路类似能用 PowerShell 全功能 shell 就不用 cmd 的残缺版本后面很多枚举命令和提权工具都依赖前者。2.4 登录之后第一件事先看这五个命令拿到 shell 后先别急着跑任何一键枚举脚本先手动执行这组命令把系统“地图”打开whoami id uname -a cat /etc/os-release hostnamewhoami 和 id 给出当前用户、UID、所属组。特别注意自己是不是已经属于 sudo 组或容器管理组这种组本身就是提权捷径。uname -a 和 /etc/os-release 给出内核版本和发行版信息内核很老的话后面可以查公开漏洞发行版信息则决定了很多配置文件的路径和包管理方式。hostname 和当前上下文可以帮助你判断自己在网络中的位置也方便确认是否已经进入了预期主机。不要小看这一步。很多人在开始枚举前连自己是什么用户都没确认结果检查了半天 sudo 规则才发现当前用户根本不在 sudoers 里。五个命令花不了几秒钟却能避免后面大半“我明明按教程走的为什么不行”的场面。3. Linux 靶机提权先跑通这四个检查点3.1 sudo -l最重要的第一站拿到 Linux 靶机的低权限 shell 后第一件事一定是执行 sudo -l。这条命令会列出当前用户被允许以哪些身份、免密或需要密码执行哪些命令。背后的逻辑很简单如果管理员给了当前用户某个程序的 sudo 权限而这个程序本身又能执行系统命令或读取任意文件那么提权路径就天然存在。举例假设输出中有这么一行User www-data may run the following commands on target: (root) NOPASSWD: /usr/bin/findfind 命令自带 -exec 参数可以执行任意系统命令那么提权命令就是sudo find / -exec /bin/sh \;如果 sudo 权限里给的是一个脚本比如 /opt/backup.sh那就要去读这个脚本看它内部调用了哪些外部命令、对 PATH 的依赖程度如何。脚本写得不够安全时往往可以通过可控 PATH 或函数名来劫持利用。特别提醒一个常见坑sudo -l 提示输入密码时输入的是当前用户自己的登录密码而不是 root 的密码。靶场这类信息一般会在题目描述或源码注释里给出别因为输错几次就把这条线放弃。从防御视角看sudo 规则应该遵循最小化原则尤其要避免给解释器、文件查看器和命令执行类工具开放 root 权限。3.2 SUID 权限位一搜一个准SUID 是“以文件属主身份运行”的标志位。普通文件的权限是三组 rwx而 SUID 文件在属主可执行位上多了一个 s。当一个可执行文件带 SUID 且属主是 root 时任何用户运行它进程的 effective UID 都会变成 0。也就是说哪怕你只是个低权限用户运行这个程序时系统会把它当作 root 进程处理。要找出系统里所有带 SUID 位的文件一条命令就够了find / -perm -4000 -type f 2/dev/null拿到列表后不要只看文件名本身要去查它在 GTFOBins 里有没有对应的提权方式。GTFOBins 本质上是一张“常用二进制可被滥用的行为清单”python、perl、openssl、base64 这些工具如果带着 SUID 位基本就是送分题。以 python 为例/usr/bin/python3 -c import os; os.setuid(0); os.system(/bin/bash)执行后就会得到一个 root 的 shell。但要注意这个操作只应该在授权靶场里做并且要清楚它到底做了什么先把进程 effective UID 改为 0再启动一个属于 root 的 bash。真实环境遇到带 SUID 的系统自带工具时要格外小心是否有限制或系统完整性检测不能无脑照搬命令。3.3 计划任务与可写文件等它自己跑起来Linux 计划任务出问题的前提通常是两个条件同时满足某个高权限任务会定期执行一个脚本或程序而这个脚本/程序可以被当前用户修改。检测的第一步是看配置cat /etc/crontab ls -la /etc/cron.d/能直接读 /etc/crontab 时优先看有没有包含绝对路径的任务。如果任务行写的是相对路径比如直接写 backup.sh那么系统会按 PATH 顺序找命令这时候可以用 PATH 劫持思路。如果任务行指向脚本的绝对路径那就检查脚本所在目录的写权限——当前用户能写这个脚本的话直接往里面塞一条提权命令等下一次 cron 执行就行。要是计划任务配置很分散还可以用 pspy 这类进程监控工具。pspy 会在后台轮询当前所有进程和命令参数不需要 root 权限就能看到很多瞬时信息比如某个每分钟执行一次的备份任务到底跑了什么。修改 cron 脚本时有个容易踩的坑不要直接 rm 再新建因为文件权限和属主可能变化导致执行失败正确做法是保留原文件只修改内容或者追加一段命令这样文件属性不会有太大变化。3.4 PATH 劫持与环境变量劫持PATH 劫持的精髓在于“脚本里写的是命令名而不是命令的绝对路径”。如果系统存在一个会被 root 执行的脚本内部写成#!/bin/bash backup --some-option系统运行时就会按 PATH 搜索顺序找到 backup 命令。PATH 环境变量对普通用户可控虽然 cron 环境下会重置 PATH但 SUID 程序不会这么讲究。如果某个属主为 root 且带 SUID 位的程序调用了外部命令利用方式就变成了先判断它调用了哪个命令然后在可控目录放同名恶意文件再修改 PATH 使其优先最后运行触发即可。环境变量劫持是类似思路的变体。某些 SUID 脚本或程序在运行时会读取 LD_PRELOAD 环境变量加载你指定的共享对象从而在进程内部执行代码。这类利用对触发条件比较敏感靶场里遇到专门考这种手法的机器时优先读脚本源码和尝试简单的变量注入不要一上来就上复杂绕过。判断一个 SUID 程序调用了什么外部命令可以先跑 strings 看路径字符串或直接读同目录脚本文件确认。3.5 Capabilities容易被忽略的权限位Linux 的 Capabilities 机制可以看作 SUID 的细粒度替代方案。它把 root 的超级权限拆成几十个能力项比如 cap_setuid 允许修改进程 UIDcap_dac_read_search 允许绕过文件读取检查。管理员如果给某个程序单独设置了能力位权限控制会更精细但也可能因为设置不当形成提权点。检查方式是递归扫描getcap -r / 2/dev/null输出中如果出现类似 /usr/bin/python3 cap_setuidep 的记录那基本可以直接确定提权路径用该程序把进程 euid 改成 0再启动 shell。这里要注意不同程序对能力的调用方式不同不一定能直接用 GTFOBins 的 SUID 手法模板需要结合具体程序行为和当前版本去构造。cap_dac_read_search 这类能力则更适合读取受限文件比如 /etc/shadow判断时要根据输出字段灵活改用对应手法。3.6 内核漏洞、/etc/passwd 与其他偏门手段Linux 提权还有几条绕不开的路但优先级一定要放在配置问题之后。内核漏洞利用是很多人的第一反应实际上却最不划算它需要内核版本与 exp 精确匹配编译过程经常因为环境差异失败打崩系统的情况也不少见。我的习惯是确认所有配置层面的路径都走不通才会回来看内核版本而且优先尝试那些验证过稳定性的公开利用代码操作前一定先打快照。/etc/passwd 可写是另一种经典历史遗留问题。当前用户对 /etc/passwd 有写权限时可以直接插入一行自定义 UID 0 的用户然后 su 切换。实际操作只需要很小的修改量不要动系统原有账户避免把环境弄坏。除此之外组成员身份也值得翻一遍容器管理组、虚拟化管理组这些“碰巧被加进特权组”的情况在靶场里偶有出现但上篇里不是重点花十分钟验证没结果就跳过保持节奏。4. Windows 靶机提权上篇里最实用的几个方向4.1 先读“特权清单”whoami /priv 和 systeminfo拿到 Windows 的低权限 shell 后我最先执行的是 whoami /priv它会列出当前用户持有的所有特权例如SeImpersonatePrivilege Impersonate a client after authentication Enabled SeAssignPrimaryTokenPrivilege Replace a process level token Enabled SeDebugPrivilege Debug programs Disabled特权列表里值得高亮的有这几个SeImpersonatePrivilege 和 SeAssignPrimaryTokenPrivilege 同时存在时就具备了令牌模拟攻击的基础下一步可以去看 4.4SeDebugPrivilege 如果为 Enabled可以尝试调试任意进程并注入代码SeBackupPrivilege 存在则可能直接读取本不该读的文件比如 SAM 数据库的备份。读特权清单时一定要看状态列表的“状态”列有的特权存在但可能被禁用或被当前进程上下文限制实际能不能用还不一定。接下来执行 systeminfo重点看系统版本、补丁安装情况、是否属于域环境。系统版本决定了很多提权工具和 exp 能不能直接用补丁信息可以快速判断系统是否已经修复了一系列已知问题。需要提醒的是systeminfo 有时会卡住遇到这种情况不要死等先试试改成英文输出或把结果重定向到文件再读取。4.2 服务配置错误与“不引号路径”Windows 服务是提权高发区。很多服务以 SYSTEM 身份运行如果它指向的可执行文件所在目录可写或者服务路径书写不规范就会留下可乘之机。“不引号服务路径”是指服务程序路径包含空格但写的时候没有用双引号把整个路径括起来。Windows 解析时会自动尝试在空格处截断路径举个例子服务路径是 C:\Program Files\Some App\service.exe系统会依次尝试 C:\Program.exe、C:\Program Files\Some.exe、C:\Program Files\Some App\service.exe。如果前两个截断点所在的目录正好可写就可以放一个名为 Program.exe 的恶意程序等待服务重启它就会以 SYSTEM 权限执行。查询服务配置和状态用sc qc 服务名 sc query 服务名拿到服务名后再用 icacls 检查可执行文件所在目录的写权限icacls C:\Program Files\Some App输出里当前用户对目录有 W 或 F 权限就相当于拿到了替换或植入文件的机会。触发服务的方式要看情况有时可以 sc stop / sc start有时需要重启系统或等待服务恢复。靶场里可以大胆重启服务真实环境里则要求你足够谨慎不能在业务关键路径上贸然操作。4.3 AlwaysInstallElevated注册表键值决定的一切AlwaysInstallElevated 是 Windows 的一个设置开启后任何用户运行 MSI 安装包系统都会以高权限来安装。这个设置在真实环境里属于明显的安全失误但在练习环境里是常见的考点。检测方式非常直接两个注册表项都要查reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated只有两个键值都返回 1这个漏洞才存在。利用方式是用 MSI 打包工具生成一个会自动执行命令的安装包然后运行安装系统会以高权限去执行包内命令。有一个容易被忽略的细节MSI 内执行的命令可能因为 32 位与 64 位环境差异失败建议先做一个最简单的输出重定向验证比如在包里执行 cmd /c whoami C:\Windows\Temp\test.txt确认高权限执行确实生效再放入真正的提权命令。Windows 事件日志会对这类操作留下记录靶场里不用太在意真实环境里必须提前评估这些痕迹。4.4 令牌模拟SeImpersonatePrivilege 的经典用法在 4.1 里提到过特权列表里只要同时出现 SeImpersonatePrivilege 和 SeAssignPrimaryTokenPrivilege就可以考虑令牌模拟攻击。原理大致是这样当一个高权限进程需要为客户端模拟令牌时会调用模拟相关接口如果此刻你能诱导高权限进程连接到你控制的命名管道或服务并让它对你执行模拟操作就可以在回调中拿到高权限令牌副本从而以高权限身份启动命令。这套原理的公开实现比较多常见的是一系列“土豆类”工具不同系统版本适配不同方案。靶场里使用这些工具时注意三点第一运行前提必须满足——你至少需要能拿到一个服务或任务调度上下文的 shell纯普通用户身份跑通常没效果第二工具对 32/64 位很敏感下载前先确认目标系统架构第三某些工具会触发事件日志真实环境里要评估被监控的风险靶场里则不用太顾虑。使用这类工具时如果输出为空先别急着换 exp老老实实重新确认用户上下文和进程权限一半的失败都发生在这一步。4.5 凭据收集往往最朴实也最有效Windows 提权里最被低估的方向就是“找密码”。很多靶机看起来高不可攀结果在配置文件里放着明文密码或某个服务的硬编码凭据。值得翻的位置很多先列几个上篇一定会用到的注册表 Winlogon 项可能保存自动登录密码PowerShell 历史文件会记录用户敲过的每行命令unattend.xml 这类无人值守安装配置文件里有时能搜到本地管理员密码备份目录或文本文件里则可能有 SAM 或 SYSTEM 的拷贝。查询自动登录密码的命令是reg query HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon /v DefaultPasswordPowerShell 历史的默认位置是 %APPDATA%\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt直接 type 就能看。另一个高效搜索方式是把常见扩展名和关键词组合起来findstr /si password *.txt *.xml *.ini *.bat *.ps1这套组合在对付“配置不严谨”的靶机时效果极好。记住提权并不是非要写 exp 不可拿到管理员密码然后切换账户常常是最快最稳的路。4.6 计划任务与启动目录Windows 的计划任务配置里如果存在以高权限运行的任务而“操作”指向一个普通可执行文件或脚本这种任务和 Linux cron 一样存在被覆盖的风险。查询计划任务的命令是schtasks /query /fo LIST /v看到输出中 SYSTEM 用户运行且路径为普通可写目录的任务后用 icacls 确认目录权限。如果目录可写替换目标可执行文件再等任务调度执行即可。启动目录同样值得关注所有用户开机时会执行系统启动目录和当前用户启动目录下的内容。如果当前用户能写系统的启动目录放入提权脚本后等管理员登录或系统重启时它就会以对应用户权限执行。靶场里这种手法虽然不适合追求速度的比赛氛围但作为理论入口还是值得了解尤其当你已经拿到管理员账户但需要持久化思路时。5. 常见问题与排查技巧实录5.1 卡壳现场速查表很多时候卡住不是思路的问题而是环境或细节的问题。把常见的卡壳场景整理成一张小表现象可能原因排查思路枚举脚本跑完没发现任何可利用点脚本版本过旧或目标系统少了某些组件手动补跑 sudo -l、find SUID、getcap 三条命令sudo -l 显示有权限但执行报错当前 shell 没有 TTYsudo 版本对用户组有限制升级交互式 shell确认输出中的用户组信息SUID 程序按 GTFOBins 执行后没反应程序是 32 位或系统存在额外防护确认文件类型与系统位数换对应架构 shell 重试Windows 上运行提权 exe 报错缺少运行库或位数不匹配先查看目标架构确认服务账户上下文cron 脚本改完后一直没等到执行任务调度间隔很长或改错了配置文件用 pspy 实时观测确认真实触发时间内核 exp 编译失败内核版本不完全匹配或缺少编译依赖回退到配置型提权路径不要死磕内核路线这张表的思路是从“现象”反推“假设”而不是一卡壳就重跑所有步骤。每次失败先问一个问题我验证的前提真的成立吗你是不是真的拥有某目录的写权限是不是真的切换到了正确的用户很多无效操作都源于前提没确认清楚。5.2 一键枚举工具的正确打开方式LinPEAS 和 WinPEAS 这类工具能在几秒内跑出大量枚举结果上篇打靶过程中非常值得用但要用得聪明。使用方法是把脚本传到目标机器上执行LinPEAS 在 Linux 下直接 bash 运行WinPEAS 在 Windows 的 PowerShell 里运行。输出里大量彩色行中被标红或标黄的部分通常就是风险点。不过必须提醒全部依赖脚本输出是有风险的。脚本不一定能识别所有版本的特定配置而且输出太多反而容易让你忽视隐藏在普通文本里的关键线索。我自己习惯的顺序是先手动跑一遍命令建立认知再跑脚本做交叉验证。两者互相印证时放心深入脚本指出的某条线索手动没发现就回到那条线上做二次确认。GTFOBins 则是随时要翻的“字典”按二进制名称收录了提权、读取文件等多种构造方法。在 Linux 靶机上看到 SUID 文件列表后先在脑子里过一遍对应页面说明再去执行比直接复制粘贴扎实得多。5.3 笔记习惯决定你能走多远这可能是上篇里最实用的一条心得。建议每台靶机固定一个笔记模板包含目标 IP、入口方式和初始用户、所有枚举命令的原始输出、发现的每个可疑点、每个可疑点对应的尝试及结果。先别管记下来有没有用先记了再说。当你在某一关卡住时回头看笔记往往会发现之前忽略的点。比如一开始枚举时看到某个目录可写但没当回事等 sudo 和 SUID 都走不通回过头再看那可能就是通往 root 的门。提权本质上是推理游戏笔记就是推理草稿纸。我习惯把每次成功提权的命令按目标 IP 命名存档再附一句话说明利用条件。下次遇到同类型配置时直接翻文件就能复用而不需要重新从零开始测试。时间长了这份笔记会成为你个人最宝贵的私藏手册比任何公开教程都好用。5.4 始终把边界放在第一位这里必须把最重要的话说清楚以上所有操作都只适用于你自己搭建的靶场、明确授权的练习环境或合规的攻防演练。真实系统的一切操作必须基于书面授权未授权环境下哪怕只是扫描也可能直接踩到法律红线。这不是客套话而是这个行业最基本的行为边界。练习归练习边界归边界永远不要抱着“试一下没什么大不了”的心态去碰不归你管的系统。即使是在靶场练习也建议全程用虚拟网段隔离避免对周边网络产生意外影响。说实话in.security 这套上篇练下来我最大的感受是提权的核心从来不是某一个具体的 exp而是“枚举—假设—验证”这三个动作的循环速度。你不需要背下所有工具的所有参数但需要养成看到一条线索就知道下一步该验证什么的习惯。本文里提到的 sudo -l、SUID、计划任务、服务配置、凭据收集这几条主线已经覆盖了上篇大量送分题和进阶题的共同逻辑。下篇我会接着写更复杂的组合利用、带防护系统的绕过思路以及在更大网络里的横向提权场景。在那之前建议先把这几条主线在自己的靶场里跑熟。跑通一次真的比读十遍理论都值。
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。