这几年我回答安全爱好者问题时发现一个非常普遍的现象很多人对外网打点、漏洞利用已经练得很熟但一拿到一台边界机器的权限就卡住了。内网渗透正是解决“拿到机器后怎么办”这个环节的核心能力。它和单纯“打点”是两种思维模式——前期关注的是漏洞和入口进入内网后关注的是如何找到更多机器、更高权限从而覆盖更多资产。这篇内容我会从零开始把内网渗透的知识骨架讲清楚包含域概念、信息收集、横向移动、权限提升和隐蔽思路适合刚接触内网渗透、想做红队基础储备或者准备相关岗位面试的人系统梳理。1. 内网渗透是什么为什么值得系统学习1.1 从“拿站”到“打内网”的思维转换很多初学者对渗透测试的理解停留在“找到漏洞、拿下网站后台”这一步但实战中这叫外网打点只是整个攻击链的起点。一个典型的企业环境里真正有价值的数据往往不在边界 Web 服务器上而是在办公终端、文件服务器、数据库服务器甚至核心业务系统里。你拿到一台 Web 服务器相当于进入了写字楼的前台区域而你需要的东西在各个办公室和保险柜里怎么从前台区域合法地走向深处这就是内网渗透要解决的问题。内网渗透更准确地说是从“单点突破”过渡到“区域控制”的过程。拿到第一台机器后你面对的不是某一个漏洞而是一整套网络拓扑、信任关系和认证机制。攻击者通过这台机器收集情报寻找内网中其他主机、账号、口令规律、域控服务器逐步扩大控制范围最后形成对整个业务内网的控制。因此内网渗透不是“一个一个漏洞打过去”而是“通过已控制节点做跳板不断获得新凭据再借助凭据访问更多资源”。这个思维转换很重要外网打点考验的是信息收集和漏洞利用的能力内网渗透考验的则是理解网络结构、协议设计、认证信任关系的能力。很多工具看似复杂实际上都是在帮你完成“我是谁、我在哪、谁能信任我、我要去哪”这四件事。1.2 适合谁学、需要哪些前置知识内网渗透的学习门槛其实比很多人想象的低但需要一个扎实的基础。最理想的前提条件包括熟悉 TCP/IP 基础内容能看懂 Windows 和 Linux 系统的基本命令、账号体系、服务概念了解常见的认证方式至少用过一种扫描器或抓包工具。如果你完全没有这些基础先别急着碰工具花两周把 Windows 域环境、DNS、SMB、HTTP 这些基础协议的结构补齐后续会顺畅很多。另一方面学习内网渗透一定要带着合法的实验心态。我强烈建议你在自己的虚拟机环境里搭建攻击机、域控、普通主机、文件服务器至少四台机器用本地虚拟网络把它们串起来。安全研究和授权的渗透测试是正当的但任何技术如果用在未经授权的目标上都是一条危险的边界。这篇内容所有讨论都限定在为自己搭建的实验环境或者获得授权的前提下。2. 先搞懂内网顶层的几个核心概念2.1 工作组与域的区别内网环境从管理模型上可以分为工作组和域两种。工作组是把你所在的小型网络里机器简单地放在同一个名称下每台机器自己管理自己的账号互相之间没有统一的信任机制。你在 Windows 安装系统时默认加入的通常就是 WORKGROUP它有一个很大的弱点想访问任意一台机器的资源必须在那台机器的本地账号体系中存在对应的凭据管理成本随着机器数量上升会变得非常高。域环境则是企业内网最常见的形态它采用集中式账号管理。域中有一台非常重要的服务器叫域控制器DC所有计算机和用户账号都由它统一管理。你在公司电脑上输入域账号密码登录时实际上是在向域控制器验证身份。只要域里有一台机器信任这个账号域内其他机器默认也会以相似的信任关系接受它这给后续横向移动带来了很大操作空间。理解工作组和域的区别是内网渗透选路的第一步——在域环境里账号和信任关系远比某个端口漏洞更重要。2.2 域控制器、用户、组策略与信任关系域控制器是域环境的中枢它不止负责认证还承载着整个域的“权威数据库”包括用户密码哈希、组关系、策略配置等。从攻击者角度来看域控制器就是整片内网“钥匙管理室”只要能控制域控制器就等于拿到了整个域的管理权这就是为什么几乎所有内网攻击链的最终目标都指向域控制器。域环境里还有几个必须认识的概念。计算机账户是每台加入域的设备在域里的身份它可以像用户一样登录认证组是批量权限分配的重要载体比如 Domain Admins、Administrators、Domain Users 等组策略GPO则用于批量修改域内机器和用户的配置比如屏保时间、启动脚本、密码策略。GPO 一旦被滥用攻击者可以下发计划任务、修改注册表甚至种下永久后门所以它也是内网渗透中经常关注的敏感对象。除了单一域环境大型企业会存在多域、父子域、域森林等结构。域之间通过信任关系互相授权这种关系一旦配置过宽就会成为跨域横向移动的通道。学习内网渗透时我建议先吃透“单域环境”再考虑跨域信任不要一开始就陷入复杂架构。2.3 认证协议基础NTLM 与 KerberosWindows 内网中最常见的两种认证协议是 NTLM 和 Kerberos。NTLM 是一种相对古老的质询-响应协议客户端向服务器证明自己知道密码对应的哈希服务器不需要知道客户端密码本身。这个设计带来一个影响深远的特性NTLM 认证过程中真正用于计算响应的是密码的 NT 哈希因此只要拥有哈希值就可以在不掌握明文密码的情况下完成身份认证这成了后面要说的 Pass-the-Hash 等攻击方式的根基。Kerberos 协议则更复杂也更现代。域成员在访问服务时会先向域控的认证服务申请票据再用票据去访问目标服务。Kerberos 的票据结构中包含了会话密钥、时间戳、服务标志等信息协议本身考虑了重放和伪造的对抗。但实际部署中可能遇到弱加密算法、票据滥用、服务账号使用弱密码等问题形成了 Kerberoasting、黄金票据、白银票据等攻击手法。初学阶段不需要把 Kerberos 的每一处扩展字段都背下来但有一条逻辑主线值得反复理解认证协议决定了攻击者在网络中可以“用什么凭据、以什么方式、被谁信任”。当你看到横向移动工具支持“哈希传递”“票据传递”时它们本质上都是在利用认证协议的特性而不是在做绕过检测的魔法。3. 内网信息收集阶段的完整姿势3.1 确认当前机器“我是谁、我在哪”进入内网后第一件事不是急着扫描全网段而是先把当前这台失陷主机的情况摸清楚。我在实战中习惯先把一条命令组合跑完whoami 看当前用户、net user 看本机用户列表、ipconfig /all 看 IP 地址和 DNS 后缀、systeminfo 看系统版本和补丁情况、net config workstation 看机器所属域。如果当前用户是本地管理员后续提权压力会小很多如果当前会话已经是域用户横向移动的方式也会丰富很多。机器身份的确认还包括网络位置的判断。通过 DNS 后缀、网关地址、网卡数量可以大致判断这台机器处于哪个网段是否有多块网卡连接了不同网络区域。内网渗透中经常遇到双网卡主机它同时连着办公网和核心业务网这种主机往往是跨网段横向移动的重要跳板。一定要把当前的网络信息记录下来再决定下一步往哪个方向收集。3.2 网段发现与主机存活探测确认当前机器的网络信息后需要知道内网里还有哪些网段、哪些主机在线。最直接的方法是用 ping 扫描或者利用 nmap 等工具对常见 C 段进行存活探测。比如 nmap -sn 192.168.10.0/24 可以快速列出该网段响应的主机不过大型内网中 ICMP 可能被禁用那么就要改用 TCP 扫描常见端口来判断存活比如 nmap -sS -p 80,443,445,3389 192.168.10.0/24。还有一种更贴近内网环境的思路利用 ARP 协议。在同一二层网络内扫描工具会通过广播 ARP 请求来判断在线主机这种方式速度快、几乎不留 IP 层痕迹。常用工具如 arp-scan、fscan 的 -arp 模式都非常适合在获得授权的前提下做内网探测。需要注意的是大规模全端口扫描会触发防御设备的告警实战中更合理的做法是用小的主机存活库配合少量常见端口快速判断再针对重点主机做精细扫描。3.3 端口与服务识别知道内网有哪些主机在线后需要对重点目标做服务识别。端口所代表的服务含义值得建立条件反射445 端口通常对应 SMB 文件共享服务3389 对应远程桌面22 对应 SSH3306 通常为 MySQL 数据库6379 是 Redis1433 是 SQL Server 数据库。这些服务一旦暴露在可达的网络范围内就可能是横向移动的入口或凭据来源。nmap 的 -sV 参数可以识别服务版本-O 可以尝试判断操作系统。识别服务版本的价值在于一是发现当前系统是否存在已知漏洞二是判断服务应用本身的配置文件、默认口令、匿名访问等常见问题。举个例子如果在一个网段里发现大量 Redis 6379 端口开放且无需认证后续就可能通过 Redis 写文件或者计划任务的方式直接在目标机器上执行命令形成横向跳板。不过在实际操作前一定要核对服务是否属于目标业务联网范围避免影响正常业务。3.4 收集敏感凭据不仅仅是明文密码内网环境中最大的财富是凭据。Windows 系统里登录用户的密码哈希会缓存在内存和磁盘的多个位置最常见的是 lsass.exe 进程内存中保存的登录会话凭据。在已经获得管理员权限的主机上可以使用 mimikatz 或类似工具读取这些凭据。这类操作往往会被终端安全管理软件视为高危行为所以我建议在实验环境里多观察日志特征理解它的原理后再决定实战中是否使用。除了内存凭据还要关注本机储存的敏感信息浏览器保存的密码、远程桌面连接记录、数据库客户端的连接配置、脚本文件中的明文密码、历史命令记录、站点备份文件等。很多开发者为了方便会把数据库口令写在配置文件中目录中顺手一翻就能发现连接字符串。把这些信息整理成一张表格来源、账号、主机、权限级别都列清楚往往会直接影响下一步横向移动的路径选择。4. 横向移动的实用基础操作4.1 哈希传递攻击的原理与前提横向移动最经典的思路之一是哈希传递攻击。前面提到的 NTLM 特性说明只要拿到用户密码的 NT 哈希就可以用它来访问用到相同账号的远程机器而不需要知道明文密码。攻击者在内网中抓到一台主机的本地管理员哈希后发现这台主机和另一台重要服务器使用了相同密码于是直接借助工具把哈希投递到远程 SMB 服务完成认证这就是哈希传递的基本动作。哈希传递成功有两个前提一是当前哈希对应的账号在目标机器上有访问权限二是目标机器开放了 SMB 等支持 NTLM 认证的服务。很多人在实战中只关注“有哈希就能横移”忽略了账号权限这一层。如果抓到的只是普通域用户哈希那目标机器上能用这个账号执行的操作也非常有限。因此哈希传递前一定要清楚凭据的权限分级优先寻找 Domain Admins 组或其他高权限账号的哈希。4.2 常用的横向移动方法横向对比内网中执行命令的方式多种多样我整理了一张常见横向移动方式对比表供参考方法使用的服务/协议优势需要注意的点PsExec 类SMB/RPC方便执行命令、上传工具成熟方案多容易被检测为远程管理行为445 端口需开放WMI135/RPC 动态端口不依赖 445执行 PowerShell 方便远程过程调用记录明显可能依赖管理员账号WinRM5985/5986适合 Windows 远程管理场景命令交互体验好很多机器默认未启用 WinRMRDP 横向3389可直接进入桌面环境多用户同时登录受限操作痕迹较明显选择哪种横向移动方法取决于目标机器的开放端口、当前权限以及你希望达成的“隐蔽程度”。如果目标机器 445 端口通畅PsExec 是比较省力的选择如果遇到防火墙拦截 445 而 135 可用WMI 是不错的备选。实战中不会有一种万能方法最好把两到三种方法都练熟再根据现场情况切换。4.3 借助 BloodHound 规划域内攻击路径遇到大型域环境时单纯靠手工理解 trust、session、组关系会非常吃力。BloodHound 通过收集 AD 环境中的用户、组、会话、计算机和管理关系把这些关系以图形的方式展示出来红队人员可以快速找到从当前控制点通往高权限目标的路径。它的核心价值不是“自动攻击”而是把复杂的权限关系变成可解读的路径图。使用 BloodHound 时通常会在已控主机上运行 SharpHound 或对应的收集器将数据导出后导入 BloodHound 分析界面。比如你可以输入“我控制的主机”再输入“目标域管用户”工具会自动列出所有可走的路径包括组嵌套、主机会话、ACL 权限等。初学阶段可以多多练习分析它提出的路径这比背十个漏洞更有价值因为你会逐渐理解域环境中的权限是如何通过组、会话、GPO 一层层传递的。5. 提权与持久化的基本功5.1 本地提权的常见思路内网渗透中拿到一台机器后不一定立刻拥有最高权限。本地提权的核心目标是获取当前主机的管理员权限为后续读取更多凭据、关闭防御软件做准备。常见的方向包括系统补丁是否陈旧、是否存在可互用的内核漏洞、是否有服务以管理员权限运行但路径可控、是否有计划任务以高权限执行脚本、是否存在对某些文件具备写入权限却被高权限服务读取的情况。在实验环境中我习惯用系统信息里的补丁版本和已安装的软件版本去匹配常见的本地提权漏洞但实战中更推荐先检查服务配置问题。比如一个第三方服务以 SYSTEM 权限运行它的二进制目录却允许普通用户写入那么替换程序文件后重启服务就能直接拿到高权限。这类问题不需要漏洞利用只要细心就能发现也是系统管理员最容易忽略的地方。5.2 域环境中的提权思路拿到一台域内主机管理员权限后下一步通常是想向更高权限的域账号靠近。域环境中有一些非常成熟的攻击思路GPO 滥用、ACL 滥用、Kerberoasting 等。Kerberoasting 的原理是请求带有服务票据的 SPN再利用离线方式破解服务账号的口令如果服务账号设置了弱密码就会很快被破解出来。这类攻击在域环境中比较常见因为服务账号往往很少更换密码而且密码强度常常不达标。另一条思路是关注 AD 中的 ACL比如某个普通用户对某个组对象具备 WriteDacl 或 GenericAll 权限就可能在对象上增加成员间接获得高权限。BloodHound 可以自动化分析出这类路径。实战中域提权的选择非常多关键是弄清楚当前域账号具备哪些委托权限再决定攻击手法盲目去打漏洞反而低效。5.3 常见持久化手法与隐蔽注意点持久化的意义在于即使目标机器重启、账号密码被重置你依然能恢复访问权限。常见手法包括创建计划任务、添加启动项、替换服务路径、安装远程管理工具以及在域环境中创建域管隐藏账号、修改 ACL、预留 DCSync 权限等。每种手法背后都有对应的防御检测点比如新出现的计划任务、启动目录中的新文件、服务配置被修改、权限变更日志等。我个人的经验是持久化并不是越多越好。每多一个持久化入口就多一份被发现的风险也会给目标系统造成额外负担。合理的做法是在涂改前先考虑“撤离”与“恢复”的平衡保存好所有凭据和路径输出一份完整的操作记录方便在完成评估后清理所有痕迹。防御检测越来越成熟简单的持久化脚本很快会被查杀所以更重要的是理解目标环境的管理机制选用“和环境本身一致”的手法。6. 防守视角学会在对方眼中隐藏自己6.1 理解安全产品的检测逻辑内网渗透做久了会明白真正决定攻击行动成功率的往往不只是技术而是对防御方检测逻辑的理解。终端上的杀毒软件、EDR 多会监控进程行为、命令行参数、PowerShell 脚本内容、服务创建操作等。你执行 mimikatz、放一个名为 hack.exe 的二进制、往启动目录写文件这些行为在防御系统看来就像敲响警钟一样清晰。在网络层面流量检测设备会关注异常的端口扫描频率、大量 SMB 连接请求、RDP 登录记录、异常时间段的登录行为、横向移动的协议模式。因此尽量降低扫描噪音、避免在业务高峰进行敏感操作、不把所有工具都堆在目标主机上是比较基础的意识。更重要的是要理解目标环境的具体防御能力有些网络只是“看起来松懈”一旦动作过猛就会触发溯源。6.2 隐蔽操作与痕迹清理的基础意识隐蔽不等于“什么都不做”而是尽量让操作看起来符合正常的业务行为。比如利用系统自带的 PowerShell 远程操作时尽量避免大量加载可疑的脚本模块避免频繁调用敏感 API横向移动时优先使用和运维团队习惯一致的工具计划任务、服务创建的名称尽量伪装成正常的系统名称甚至用官方更新的名称去命名。痕迹清理则需要遵循“先记录、后清理”的原则。Windows 下要注意事件日志、PowerShell 历史记录、RDP 连接记录、最近访问的文件记录、临时文件、浏览器缓存Linux 下则包括 shell 历史、日志文件、/tmp 残留的大文件等。清理不是删除所有日志就好因为突然缺失某段时间的日志本身就是很明显的告警信号。更好的思路是只清理真正能记录敏感操作的局部条目尽量不改变整体的日志连续性。结尾关于内网渗透学习路径的几句实在话内网渗透的基础知识看起来很多但有一条清晰的学习脉络先理解域的认证和信任关系再练习“拿到一台机器后如何最快摸清环境”然后围绕凭据做横向移动和提权最后再思考如何维持访问和规避检测。我实际学习过程中感觉最有效的方法是搭建一个三到四台虚拟机组成的小型域环境反复做同样的攻击链直到不用看笔记也能流畅操作。工具不断更新、漏洞不断变化但对权限传递和信任关系的理解不会过时。另外建议大家多从防御日志的角度去看自己的操作。每做完一个动作就去查一看对应的事件记录和告警信息长期积累下来你会比只刷攻击工具的人更能理解安全对抗的完整画面。哪怕是写这篇内容我一边整理也一边重新打磨了一些早已忽略的细节。内网渗透是一个越学越知道自己不足的领域保持耐心持续练习比追求所谓“速成”重要得多。