ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

内网渗透测试核心路径:信息收集、提权与横向移动实战解读

内网渗透测试核心路径:信息收集、提权与横向移动实战解读 内网安全攻防这个话题我在实际项目里碰过不少次但真正系统地把思路捋清楚还是在读完《内网安全攻防渗透测试实战指南》这本书之后。很多人做渗透测试Web 端打点一打一个准拿到一个 webshell 就觉得「拿下了」结果进了内网才发现两眼一抹黑——不知道下一步该往哪走、不知道内网里还有什么、更不知道域控到底藏在哪个角落。这本书恰好把这块补上了从内网渗透测试的基础概念讲起逐步铺开到信息收集、提权、横向移动和权限维持是一本能让人从「外网打点选手」过渡到「内网渗透选手」的实战型读物。这篇笔记我会站在一个从业者的角度把书里第一部分「内网渗透测试基础」的内容掰开揉碎来讲同时结合我自己在靶场和授权项目里踩过的坑、验证过的思路来做补充。适合已经接触过渗透测试、但对内网环境还比较陌生的人也适合准备系统学习内网安全攻防的新手。如果你刚接触这个领域这篇文章能帮你把「内网渗透测试到底在干什么」这件事彻底搞清楚。1. 为什么内网渗透测试成了安全从业者的「必修课」1.1 真实的攻击链从边界突破到域控沦陷先摆一个我在实际项目中反复见到的场景。某次授权测试目标是一个中型企业外部资产是一套官网和一个 OA 系统。Web 渗透比较顺利最后通过一个未授权接口拿到了应用服务器权限。到这里很多经验不足的测试人员会觉得「可以收工了」但实际上这只是整个攻击链的起点。内网渗透测试要解决的核心问题恰恰是这条链路的后面半段拿到一台边界主机的立足点之后怎么摸清内网的拓扑结构、怎么找到域控、怎么从普通用户权限提升到管理员权限、怎么横向移动到更多机器、最终把整个域环境拿下来。用书里的话说内网渗透测试是「以被攻陷的内网主机为跳板进一步深入内网并最终获取核心业务系统权限的过程」。这个过程不是随缘乱撞而是有一条清晰的路径依赖——先立足再收集再提权再横移最后收网。所以别再以为渗透测试就是 Web 漏洞挖掘。真正决定一次红队演练价值的往往是内网这一段的深度和效率。你从外网打进一台机器可能只需要一天但如果在内网里迷路三天还没找到域控那这次测试的含金量就会大打折扣。这也是为什么现在企业招安全工程师越来越看重内网渗透相关的项目经验。1.2 读完这一章你应该建立起来的内网威胁模型内网渗透测试基础这部分书里其实在用一整章的篇幅帮你建立一个威胁模型。我的理解是你要时刻记住三个关键对象普通终端、服务器、域控。普通终端是你拿到立足点之后的第一个落脚点服务器尤其是文件服务器、数据库服务器是攻击者最想碰的目标域控则是整个 Windows 域环境的「根」控制了域控就等于控制了域内所有机器的账号认证和管理策略。这三个对象之间不是孤立的而是靠信任关系串起来的。用户账号在域里被统一认证管理员在某个终端上登录过凭据就可能留在那台机器的内存或缓存里某台服务器被配置了开机自启动脚本脚本里的明文口令可能就是横向移动的钥匙。我在实操中最大的体会是内网渗透与其说是在打机器不如说是在打信任关系。你每找到一段被复用的凭据、一个被信任的通道就等于在内网里多开了一扇门。这本书在基础篇就把这个模型反复强调后面的章节全是围绕它展开的所以基础一定要打牢。2. 动手前的硬前提授权、边界和靶场2.1 授权永远是第一道「技术门槛」说句不太好听但必须讲清的话内网渗透测试和公网 Web 渗透在授权上有很大区别。公网资产相对容易界定域名、IP 段写清楚就行内网则复杂得多一个内网里可能跑着几十套业务系统、几百台终端甚至还有和第三方互联的网段测试范围稍微划不清楚就容易出问题。我接项目时有个习惯授标书里必须写清楚目标域名的 NetBIOS 名称、IP 网段、允许测试的时间窗口以及明确禁止触碰的系统比如备份域控、生产数据库主库。这些边界条件不是法律团队抠字眼而是真会影响到你测试时的操作选择。比如说授标只允许测办公网段结果你通过横向移动摸进了生产网段哪怕是好心发现的严重漏洞报告也很难写客户还会质疑你的职业操守。所以在「内网渗透测试基础」这个阶段我建议你养成一个习惯每次动手前把授权范围打印出来放在手边或存到手机里测试过程中每横移到一个新网段先停下来问自己一句「这个网段在不在授权范围内」。这不是胆小而是这个行业的基本生存法则。2.2 用虚拟机快速搭出一套 AD 靶场那新手怎么练内网渗透我的建议是别一上来就打真实目标老老实实搭一个域环境靶场。书里虽然没有手把手教搭建但后面所有章节的案例都跑在 Windows 域环境里所以这一步躲不开。最简单的拓扑是三台虚拟机一台 Windows Server 2019 当域控AD一台 Windows 10 当普通域成员机一台 Kali Linux 当攻击机。VMware 或 VirtualBox 都可以网络模式全设成 NAT 或者自定义的 Host-Only 网段保证三台机器能互通就行。域控上装好 Active Directory 域服务把 Windows 10 加进域再在域控上创建一个普通域用户和一个域管理员账户。这套环境搭下来一小时左右花费为零但几乎能覆盖书里七八成的实操场景。我踩过最大的坑是快照。一开始练习的时候权限被打烂、域策略被改坏想恢复只能重装系统效率极低。后来学乖了——域控打完一个阶段就做一个快照客户现场测试也类似哪怕不能打快照也要提前确认备份策略。这不是怂是保证自己随时可以重来。3. 基础信息收集内网渗透的第一生命线3.1 本机信息收集先搞清「我是谁、在哪、能访问谁」书里把信息收集分成本机信息收集和域内信息收集这个划分非常实用因为我见过太多人拿到 shell 之后第一件事是急着跑提权工具结果对目标机器一无所知。本机信息收集要回答的问题有几个。第一当前用户是谁、在哪个组里whoami /all能告诉你当前用户的 SID、权限令牌以及所属的用户组如果当前用户已经在 Administrators 组里很多提权步骤可以直接跳过。第二这台机器是什么系统、打了哪些补丁systeminfo能看到系统版本和 Hotfix 列表内核提权方向基本就看它。第三这台机器上跑着哪些进程和服务tasklist /svc和wmic service list full能帮你识别杀软、数据库服务、运维 agent这些信息决定了你哪些操作会被拦截、哪些服务可以利用。还有几个命令我每次都会跑ipconfig /all看 IP 地址、网关和 DNSarp -a看内网里最近通信过的主机route print看路由表——尤其是有多网卡的机器路由表能直接暴露内网的其他网段。以及netstat -ano看当前机器的网络连接很多时候你能从连接列表里直接看到数据库端口、远程桌面端口甚至域控的 389 端口这就等于给了你一张现成的内网关系图。记住内网渗透里最不值钱的是exploit最值钱的是情报。3.2 域内信息收集锁定域控和服务器的关键命令当确认当前主机已经加入域环境之后就要切换到域内信息收集的思路上来。这时候最核心的目标是回答三个问题域控在哪、谁是域管理员、还能访问哪些机器。先说找域控。net time /domain可以尝试获取域时间同时也能间接确认域控地址nltest /dclist:域名可以直接列出域控列表最直白的还是ping -n 1 -a 域控IP有时候能直接解析出域名。在我实际的测试过程中最快的方式是看当前机器 DNS 配置域环境内网机器的 DNS 服务器通常就是域控本身ipconfig /all里那行 DNS 地址基本就是域控 IP然后再用nltest去确认。再说找域内机器和域管理员。net view /domain可以列出域列表net view /domain:域名能列出该域内的计算机列表net group domain admins /domain能列出域管理员组成员。这类命令是传统的 SMB 枚举方式在真实域环境里由于权限问题并不一定都能成功但它们足够快适合在信息收集初期跑一遍能拿到多少算多少。书里在这个章节讲得比较克制但我的经验是把这些基础命令练到肌肉记忆比一上来就上 BloodHound 这类自动化工具更重要因为你得先理解数据从哪来才能理解工具报出的路径到底意味着什么。3.3 网络拓扑探测把碎片信息拼成一张网信息收集做到后期你手上会有很多碎片某个 IP 开了 445某一台机器连着数据库端口某个网段里活跃主机特别多。下一步就是把这些碎片拼起来形成一张内网拓扑图。手工拼图的方法很简单就是不断用arp -a、ping扫描、netstat连接列表去补全主机之间的通信关系。比如你在一台应用服务器上netstat -ano看到大量连往 10.10.10.0/24 网段的 1433 端口SQL Server 默认端口基本可以推断出那个网段存在数据库集群。在靶场里练这一步有个特别好用的技巧把书里每一章出现的命令集中整理成一个备忘录按信息收集、提权、横移、持久化分类后面做实验的时候直接对照着跑。我第一次跟着书做实验就是因为中途去翻命令格式思路断开导致后面收集到的信息乱七八糟。预先整理备忘录能让你在读案例的同时手里始终有把「兵器谱」效率会高很多。4. 凭据获取与权限提升从普通用户到管理员4.1 提权≠一开始就要打内核漏洞很多初学者一说到提权就想到内核漏洞 exploit这其实是个误区。真实的 Windows 域环境里像 PrintNightmare、Zerologon 这类高危漏洞在补丁更新及时的网络上往往根本打不通而运维配置上的问题却屡见不鲜。书里虽然列举了常见的 Windows 提权手段但我在实际项目中见得最多、成功率最高的反而是三类服务配置错误、明文凭据泄露和令牌劫持。服务配置错误里典型的是非管理员权限可以修改某个 Windows 服务的可执行文件路径然后通过重启服务来执行任意程序。这类问题在第三方软件装得多、运维规范差的机器上非常常见。我在一次授权测试里就遇到过某台终端上装着一个第三方备份 agent安装目录 Everyone 有完全控制权限直接替换同名 exe 就能在服务账户权限下执行命令。这就是典型的「技术含量不高但真的很实用」的提权方式。明文凭据泄露则更直白——脚本文件、配置文件、计划任务、甚至回收站里的 txt都可能躺着明文口令。内网渗透测试基础这一章讲的重点是建立一种「凭据无处不在」的意识每次拿到一台新机器先把所有配置文件翻一遍把dir /s /b *password*、*config*、*pass*这类检索命令养成习惯。自动化工具能帮你但手工翻文件建立的判断力是工具给不了的。4.2 常见提权路径和判断顺序我建议你给提权阶段排一个顺序按照成本从低到高去试。第一步永远是查当前用户权限whoami /all看令牌如果当前用户是本地管理员组成员很多内核提权都不需要碰。第二步是系统信息和补丁信息systeminfo输出里的补丁列表要和公开漏洞对应第三步是查服务权限和可写目录用 accesschk 这类工具去看常见服务目录和服务对象的 ACL第四步再看能不能想办法拿到更高权限用户的凭据比如从内存抓取、从浏览器保存的密码里翻、或者看有没有域管的计划任务脚本可以被滥用。这样的顺序背后有个简单的逻辑内核提权爆炸性强但成功率不稳定有时候还会把目标系统打蓝屏而凭据类、配置类的提权虽然看起来「土」但每次成功都能直接让你在目标网络里站稳脚跟。书里说「渗透测试的本质是信息收集而不是漏洞利用」放到提权阶段同样成立。你收集到的信息越充分选提权路径就越有把握而不是一个个 exp 盲目去试。5. 横向移动一台机器如何演变成整个域失守5.1 横向移动的本质是信任关系复用关于横向移动书里的核心观点是内网中一台机器的失陷不应该是终点而应该是通往更多主机的起点。横向移动的本质就是利用已经获得的某个账号或某台机器的权限去访问更多的主机不断扩展你在内网中的控制范围。为什么这个环节如此重要因为在一个标准的域环境里普通终端之间的访问控制往往并不严格同一网段的机器之间可能开了很多共享和远程管理端口。攻击者拿到一台终端后如果能在这台机器的内存、文件、浏览器记录里翻出别的账号凭据那么他就可以尝试用这份凭据去连接下一台机器。这样一路复用凭据、一路寻找更接近域控的目标最终就能一台接一台地逼近核心系统。我在读这本书的基础章时最大的顿悟就在这——原来横向移动并不需要什么高科技大多数时候靠的就是管理员重复使用密码、以及内网信任关系被滥用。5.2 哈希传递、PsExec 和计划任务的实操要点这一节想展开讲几个最常用的横向移动手法都是书里文字不多、但实战价值极高的点。第一是哈希传递Pass-the-HashPtH。在 Windows 环境里你拿到某个用户的 NTLM 哈希之后很多时候不需要破解出明文密码直接拿着哈希就能进行远程认证。经典的工具有 impacket 套件里的psexec.py、wmiexec.py也可以使用 mimikatz 的sekurlsa::pth。前提条件主要有两个目标主机开启了 445 或 135/139 端口且目标用户具备远程访问权限比如本地管理员组成员。靶场里我用psexec.py的成功率比直接 RDP 高得多因为 RDP 往往需要明文口令和受限的登录策略而 PtH 在不少环境里畅通无阻。第二是通过计划任务或服务进行命令执行。Windows 内置的计划任务schtasks和远程服务工具如 SC都可以用来在远程主机上执行命令。这类方式的好处是流量特征相对常规不太容易被基础的安全设备单独拦下来。实战中我会优先尝试 WMI 执行因为它走的是 135 端口在不少环境里过滤规则比 445 宽松。但我必须强调这些手法只应在授权范围内的靶场环境中验证生产网络上的操作务必提前确认规则边界。第三是关于抓取哈希和明文口令。mimikatz 的sekurlsa::logonpasswords在拿下本地管理员权限后经常能抓到当前机器上缓存的口令哈希有时候还能直接抓到明文口令。实操中这一步经常是横向移动的转折点——因为只要有一台机器上有域管理员登录过的痕迹你从这台机器上抓到的凭据就可能直接把你送到域控面前。这里的经验是不要一上来就在所有机器上跑抓取工具先挑那些业务高峰期有人活跃的、运维人员常登录的机器成功率会高很多。6. 权限维持与痕迹清理攻击者为什么「删不掉」6.1 常见持久化手段与其工作原理很多人看内网渗透的书籍注意力全放在打点上忽略了权限维持这一块。其实在真实的红队演练里权限维持往往决定了你能不能在目标网络里待足够长的时间来完整地摸清资产和核心数据。书里列举的常见手段包括创建隐藏账号、修改服务、计划任务、注册表自启动、以及域级别的持久化技巧例如在域控上伪造黄金票据等。我在基础篇学到的最重要的理念是持久化不只是「留个后门」而是要尽量隐蔽、尽量稳定。比如创建一个隐藏账号这个操作看起来最简单但在真实环境中很容易被发现因为域控上但凡有日志审计新增账号的告警基本都会触发。相比之下计划任务和注册表自启动这类方式更贴近正常业务行为存活时间往往更长。还有一个思路是利用域环境的合法机制——比如在域控上配置一个看起来正常的计划任务来周期性地执行某条命令这种操作在监控体系不完善的环境里确实很难被发现但同样只应在授权测试的靶场里验证。6.2 日志清理的正确理解影响评估优先再聊痕迹清理。我在读书笔记里专门记了一句话「不要一上来就删日志先想想哪些日志会被审计哪些操作本身就不该留下。」乱删日志在授权测试里其实是高风险动作因为一旦客户要求排查你删掉的日志可能包含攻击路径的完整记录反而给溯源制造了麻烦。我的习惯是分两类处理。一类是常见的执行类日志比如 PowerShell 操作记录、计划任务创建记录这些在测试结束时可以通过协商由客户或测试方统一处理另一类是工具落地产生的文件本身比如上传到目标机器的 exe、脚本、工具包测试结束前必须彻底清理干净避免给目标系统留下持久后门风险。在靶场练习时我还会刻意做一遍完整的「清理前后对比」——记录哪些位置会生成日志、哪些文件和注册表项会被工具修改这样到了真实项目里才会心里有底知道哪些步骤需要格外小心哪些步骤可以大胆操作。7. 这本书没展开讲的「暗坑」我踩过的和替你避开的7.1 靶场和实战最大的差距在哪里书里大量案例跑在域环境靶场里步骤干净利落但真实环境的复杂度远不止如此。第一个差距是流量监控。靶场里没有真正的大型 EDR、态势感知设备和全流量审计系统横移的时候想怎么连就怎么连但真实内网里内网安全设备和流量审计一旦部署到位大量扫描动作和横移行为都会产生告警。所以从读这本书开始就要养成「少扫描、多利用已有凭据、走正常管理通道」的习惯而不是一上来就全网段扫端口。第二个差距是业务噪音。靶场里主机数量少你能很清楚地判断哪台是域控、哪台是文件服务器真实内网里可能有上千台机器大量主机名随意、业务归属不明光靠net view根本分不清重点目标在哪。这个阶段我建议多利用书里强调的信息收集思路把「凭据收集」放在主动扫描之前通过主机间已有的连接关系去推导重要资产而不是盲目去扫。7.2 后续学习路线与前置知识清单如果你刚把书的第一部分读完想继续深入我给一个比较务实的路线参考。首先把 Windows 域环境本身学明白——域用户、组策略、Kerberos 认证流程、SMB 协议这些底子不牢后面看横向移动和域渗透的章节会非常吃力。其次至少掌握一种脚本语言PowerShell 排第一Python 其次因为内网渗透里大量工具和利用代码都依赖这两种语言你不一定要写得很好但至少要看得懂、改得动。第三多练内网靶场把经典实验反复做熟比如先打一台普通域成员机再通过哈希传递横移到域控最后做权限维持和清理整套流程能独立走完再考虑接触真实环境。有一点书里没有强调但我自己在带人时经常强调记录和复盘。每次靶场实验把命令行、输出、踩坑点、成功路径全部记下来。对照书里的思路检查自己哪里跑偏了久而久之就会形成自己的内网渗透方法论。做安全这行经验非常重要而经验很大程度来自高质量的复盘不只是跑通了多少个 exploit。最后再分享一个小技巧内网渗透测试的关键不是手里有多少 0day而是你多了解目标环境本身。书里第一部分把基础概念和信息收集讲得很扎实这部分多花点时间反复读、反复练后面学横向移动、域渗透时你会发现自己比别人快很多。安全这条路没有捷径但你走的每一步只要方向对了都会算数。
返回列表