尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

域内信息搜集实战:从零构建内网渗透侦察地图

域内信息搜集实战:从零构建内网渗透侦察地图 1. 从“我是谁”开始一次真实的域内信息搜集实战复盘如果你刚拿到一个内网渗透的授权测试任务或者作为安全运维人员需要摸清自家网络的家底第一步该做什么很多人会直接去搜各种工具命令但往往忽略了最根本的问题我当前是谁我在哪在一次真实的红队评估项目中我见过太多新手拿到一个低权限的域用户账号后就急吼吼地开始横向移动结果因为对当前环境的基本信息一无所知操作起来像无头苍蝇要么触发告警要么效率极低。域内信息搜集远不止是运行几个命令那么简单它是一个有逻辑、有层次、有目的的“摸底”过程。今天我就以一个真实的内网渗透视角带你走一遍从“零”开始的域内信息搜集全流程重点不是罗列命令而是告诉你为什么要搜集这些信息以及如何把它们串联起来形成对目标网络的立体认知。简单来说域内信息搜集的目标是明确当前权限、定位关键资产、发现攻击路径、评估安全状况。它是一切后续行动无论是攻击方的横向移动、权限提升还是防守方的资产梳理、风险排查的基石。对于新手掌握一套系统性的信息搜集方法论远比死记硬背几十条命令更重要。下面我们就从最基础的“立足点”信息开始。2. 立足点信息确认身份、主机与网络环境当你通过某种方式比如钓鱼、漏洞利用获得了一个命令行窗口cmd或powershell时第一件事不是去探测别人而是先搞清楚“自己”的处境。这就像特种部队空降到陌生区域首先要确认自己的坐标、装备和周围环境。2.1 我是谁——用户与权限信息权限是内网行动的“通行证”。你需要立刻确认当前会话的身份和权限级别。whoami与whoami /all这是最基础的命令。whoami告诉你当前用户名而whoami /all则输出详细信息包括用户SID、所属组以及组权限。关键要看用户名格式是DOMAIN\user这种域用户格式还是COMPUTERNAME\user这种本地用户格式这直接决定了你是在域环境还是工作组环境。特权组检查是否在BUILTIN\Administrators本地管理员、Domain Admins域管理员、Enterprise Admins企业管理员等高权限组中。一个常见的误判是用户可能同时属于多个组但当前令牌Token可能没有包含所有组的权限这时需要特别注意。net user与net user /domainnet user查看本地用户列表。而net user [username] /domain或net user /domain则是查询域用户信息的关键。如果没有指定用户名它会尝试列出所有域用户在大型域中可能失败或返回不完整列表。更常用的是查询特定用户net user jack /domain。这会返回该用户的详细信息包括全名、描述可能包含密码提示或联系方式。上次登录时间、密码过期时间、是否可以更改密码。本地组成员和全局组成员。这里能看出该用户在域内的角色和权限范围。实操心得net命令是古老但极其可靠的信息源几乎所有Windows系统都默认可用且对网络流量的特征相对较小不易触发基于进程名的告警。但它的输出是纯文本解析起来稍麻烦。net localgroup administrators这条命令快速列出本地管理员组的所有成员。这里经常能发现“惊喜”比如域用户被加入了本地管理员组这为你后续的横向移动提供了潜在目标。同样可以用net localgroup “Remote Desktop Users”查看有远程桌面权限的用户。2.2 我在哪——主机与网络配置信息明确了身份接下来要搞清楚所在主机的状况和它在网络中的位置。hostname与ipconfig /allhostname获取计算机名。ipconfig /all则是网络信息的宝库你需要关注IPv4地址判断IP段如192.168.1.0/24,10.10.10.0/24初步推测网络规模。DNS服务器域环境的DNS服务器通常就是域控制器DC。看到DNS服务器指向一个域名的IP如10.10.10.10这很可能就是DC的地址。DHCP服务器有时DHCP服务器和DC是同一台也是一个线索。域名在“连接特定的 DNS 后缀”或“DNS 后缀搜索列表”中可能会看到域的全名如corp.internal。systeminfo这个命令会花一点时间但能提供一份非常详细的系统报告。重点关注OS 名称/版本判断系统是Win7、Win10还是Server系列以及具体版本号如10.0.17763。这直接关联到可用的漏洞和提权方法。系统启动时间可以推断主机的稳定性、是否有定期重启策略比如补丁日。热修补程序这里会列出已安装的补丁KB号。你可以快速扫一眼看看有没有缺失的、众所周知的漏洞补丁比如永恒之蓝对应的MS17-010。但注意这里列出的是“已安装”的你需要自己有一个已知漏洞补丁的清单进行对比。netstat -ano查看当前所有的网络连接和监听端口。这是发现“邻居”和本机开放服务的关键。ESTABLISHED 状态的连接可以看到当前主机正在和哪些IP的哪些端口通信。这能帮你发现内网中活跃的服务器如数据库、文件共享、管理平台。LISTENING 状态的端口本机开放了哪些服务。常见的如135RPC、445SMB、3389RDP、1433MSSQL、5985/5986WinRM等。这些端口可能成为你进一步利用或横向移动的入口。PID进程标识符-ano参数中的o就是显示PID。你可以用tasklist | findstr [PID]来查看是哪个进程在监听或连接从而判断服务的性质。2.3 我在哪个域——初步的域环境感知通过以上信息你应该能初步判断是否处于域环境中并获取一些线索。net config workstation这个命令会清晰地告诉你“工作站域” - 你当前计算机加入的域。“登录域” - 你当前用户登录的域。“工作站活动目录的 DNS 名称” - 域的完整DNS名称。nltest /dsgetdc:[域名]如果你已经知道了域名比如从ipconfig或net config中可以用这个命令查询域控制器的信息。它会返回DC的主机名、IP地址、GUID、站点等信息。/dsgetdc:后面跟域名如果不知道可以尝试跟*或者从net config workstation的输出里获取。踩坑记录在一次测试中ipconfig显示的DNS后缀是branch.corp.com但用nltest /dsgetdc:branch.corp.com却失败了。后来发现实际的域根是corp.com分支站点有自己的子域。这时需要用nltest /dsgetdc:corp.com才能找到根域的DC然后再通过其他方式定位分支站的DC。所以DNS后缀不一定就是域的根。至此你已经完成了对“立足点”的全面侦察。你知道了自己的权限、主机信息、网络配置并对所属域有了初步认识。接下来我们要把目光从自身移开开始探索整个域森林。3. 绘制域地图发现用户、组、计算机与信任关系有了立足点下一步就是绘制一张尽可能详细的“域地图”。这包括域内的所有主体用户、组、计算机以及域与域之间的关系信任。这部分信息是规划横向移动路径的核心依据。3.1 枚举域用户与用户组域用户和组是权限的载体。枚举它们是为了找到高价值目标如管理员和了解权限分配模型。使用net命令进行基础枚举net user /domain如前所述尝试列出域用户。在超过1000个用户的大域中此命令可能不返回结果或只返回部分。net group /domain列出域中的所有全局组。你会看到像Domain Admins,Domain Users,Enterprise Admins,Schema Admins这样的关键组。net group “Domain Admins” /domain查询“Domain Admins”组的具体成员。这是皇冠上的明珠必须第一时间获取。net group “Enterprise Admins” /domain企业管理员组权限通常高于域管理员存在于林根域中。net group “Domain Controllers” /domain列出所有域控制器计算机账户。使用PowerShell进行更灵活的查询PowerShell的Get-AD*cmdlets 功能更强大但需要RSAT工具或已在DC上。如果当前主机有PowerShell且权限足够可以尝试Get-ADUser -Filter * -Properties * | select Name, SamAccountName, Description, LastLogonDate, Enabled获取所有用户的基本信息和最后登录时间。可以加上| Export-Csv users.csv导出分析。Get-ADGroup -Filter * | select Name获取所有组。Get-ADGroupMember -Identity “Domain Admins” -Recursive递归获取“Domain Admins”组的所有成员包括嵌套在子组中的成员。注意事项大规模枚举AD对象会产生大量日志4662事件等在防守严密的网络中容易被发现。在实际渗透中需要根据情况选择是“快准狠”地抓取关键组信息还是“细水长流”地低流量收集。对于新手练习在授权测试环境中可以放开手脚。3.2 枚举域内计算机知道了管理员是谁还要知道他们可能管理哪些机器。枚举域内计算机是为了找到潜在的攻击目标。net view /domain与net view /domain:[域名]net view /domain列出当前域或信任域。net view /domain:corp.com则列出指定域内所有可浏览的计算机主要是开启了Server服务的机器。这个列表通常不完整但速度快。net group “Domain Computers” /domain这个命令理论上应该列出所有加入域的计算机账户。但在大型域中也可能有数量限制或执行问题。使用PowerShell或LDAP查询更可靠的方式是通过LDAP协议直接查询Active Directory数据库。可以使用Get-ADComputerGet-ADComputer -Filter * -Properties * | select Name, DNSHostName, OperatingSystem, LastLogonDate获取所有计算机的详细信息包括操作系统和最后登录时间。这对于后续选择适合的攻击载荷例如针对Win7和Win10的漏洞可能不同非常有帮助。3.3 探查域信任关系在大型企业网络中可能存在多个域并通过信任关系连接成“林”。了解信任关系可以帮助你规划从子域到父域甚至到其他林的攻击路径。nltest /domain_trusts或nltest /domain_trusts /all_trusts这是查看信任关系最直接的工具。它会列出当前域的所有信任域以及信任类型如Parent-Child,Cross-Link,External,Forest。父子信任双向可传递信任。从子域可以访问父域资源反之亦然。这是最常见的。林信任两个林之间的信任可能是双向可传递的权限扩展范围广。外部信任与非林内域建立的单向或双向非传递信任。netdom query trust /domain:[当前域名]这个命令也能列出信任关系输出格式更友好一些。理解信任关系后一个经典的攻击思路是如果攻陷了一个子域并且该子域与父域存在双向可传递信任那么子域中的 Domain Admins 组可能被添加到父域资源的访问控制列表ACL中或者存在跨域的资源共享从而为攻击父域创造条件。这就是所谓的“跨域信任攻击”或“林内横向移动”的基础。4. 定位皇冠寻找域控制器与关键服务器域控制器DC是域的灵魂存放着所有账户的密码哈希NTDS.dit。此外一些关键服务器如文件服务器、数据库服务器、邮件服务器也存储着高价值数据。定位它们是信息搜集的高优先级目标。4.1 定位域控制器通过DNS记录由于DC会注册大量SRV记录所以DNS查询是最有效的方法之一。nslookup -typeSRV _ldap._tcp.dc._msdcs.[域名]查询指定域下所有DC的LDAP服务记录。在PowerShell中Resolve-DnsName -Type SRV _ldap._tcp.dc._msdcs.corp.com这些命令会返回DC的主机名和端口。通过NetBIOS或网络命令net group “Domain Controllers” /domain直接列出DC计算机账户名。ping [域名]通常直接ping域名会返回主DC的IP地址因为域名解析到DC。nltest /dsgetdc:[域名]前面提到过最权威的命令之一。识别主DC与备DC通常主机名带PDC、PRIMARY字样的可能是主域控制器PDC仿真器角色持有者但并非绝对。可以通过netdom query fsmo查询五大FSMO操作主机角色所在DC。PDC仿真器、RID主机、结构主机通常在同一台DC上而域命名主机和架构主机在林根域。4.2 发现文件服务器与共享资源文件服务器上往往有业务数据、配置文件甚至密码清单。net view \\[计算机名]查看特定计算机上共享了哪些文件夹。例如net view \\dc01。net share在本机运行查看本机开启了哪些共享。但更常用的是扫描内网其他主机的共享。使用net use和手动浏览你可以尝试用当前凭证连接共享net use Z: \\fileserver\sharename。如果成功就可以像本地磁盘一样浏览。但更高效的方法是使用扫描工具或者写一个简单的PowerShell脚本循环尝试常见的共享名如C$,ADMIN$,IPC$,NETLOGON,SYSVOL。特别关注SYSVOL和NETLOGON这是域控制器上的两个关键共享所有域成员都能访问。\\[域名]\SYSVOL\[域名]\Policies\这里存储着组策略文件GPO。有时能在Groups.xml、ScheduledTasks.xml等文件中找到经过AES加密的密码且微软公开了加密密钥可以轻松解密。这是“GPP密码”漏洞虽然老但在一些疏于管理的网络中依然存在。\\[域名]\NETLOGON\存储登录脚本。4.3 探查其他关键服务数据库服务器扫描1433(MSSQL),1521(Oracle),3306(MySQL) 等端口。可以用netstat -ano看本机连接或者用端口扫描器扫内网段。Web应用/管理平台扫描80,443,8080等端口。内网系统往往安全性较弱可能存在默认口令或已知漏洞。远程管理服务5985/5986(WinRM/PowerShell Remoting),3389(RDP),22(SSHLinux系统)。拥有这些服务访问权限结合适当的凭证就能直接控制目标。定位到这些关键资产后你的攻击面就从单个点扩展到了整个网络的面。接下来你需要一种更高效、更自动化的方式来持续收集和整合这些信息。5. 自动化与进阶使用脚本和工具进行深度搜集手动命令适合小规模、针对性的查询但对于全面的信息搜集我们需要借助脚本和工具。它们能自动化流程解析输出并以更结构化的方式呈现结果。5.1 PowerShell 脚本灵活强大的原生武器PowerShell是Windows环境下的终极脚本工具无需额外下载且能深度集成系统。PowerView (PowerSploit 的一部分)这是最著名的AD信息搜集脚本之一。它定义了一系列以Get-开头的函数。Get-NetDomain: 获取当前域信息。Get-NetUser: 获取域用户信息支持过滤如-AdminCount找高权限用户。Get-NetGroup: 获取组信息Get-NetGroupMember -GroupName “Domain Admins”获取成员。Get-NetComputer: 获取计算机信息可以按操作系统 (-OperatingSystem “*Server*”) 或最后登录时间过滤。Get-NetForest: 获取林信息。Get-NetTrust: 获取信任关系。Find-LocalAdminAccess:神级功能枚举当前用户具有本地管理员权限的计算机。这对于横向移动的跳板选择至关重要。 使用前需要导入模块. .\PowerView.ps1。它的优势是纯内存执行可以不落盘规避一些静态检测。ADModule (RSAT) 的 cmdlets如果你在域控制器或有RSAT工具的管理员主机上可以直接使用Get-ADUser,Get-ADComputer等原生cmdlets功能强大且稳定。自定义简单枚举脚本你也可以自己写一些简单的循环比如遍历IP段测试SMB连接或RDP端口结合net use或Test-NetConnection来快速定位存活主机和开放服务。5.2 第三方工具专业全面的信息搜集套件BloodHound 与 SharpHoundBloodHound 不是直接运行在目标上的搜集工具而是一个分析平台。你需要先用数据收集器SharpHound在域内一台主机上运行需要域用户权限。SharpHound 会通过LDAP查询、会话枚举、本地组枚举、ACL解析等方式收集整个AD的拓扑数据并生成一个JSON文件。 然后你在自己的攻击机上运行BloodHound界面导入这个JSON文件。BloodHound会以图形化方式清晰地展示出用户到组的归属关系。用户/组到计算机的登录会话谁登录过哪台机器。计算机到计算机的远程连接。最关键的是它会自动分析出从当前用户到高价值目标如Domain Admins的攻击路径。它会告诉你“要成为域管理员你可以先攻陷A用户因为他本地管理员权限在B机器上而B机器上有C用户的会话...”极大提升了攻击效率。 对于防守方BloodHound同样可以用于发现配置不当的权限路径清理过宽的访问权限。CrackMapExec (CME)这是一个瑞士军刀式的后渗透工具虽然以密码喷射和横向移动闻名但其信息搜集功能也很强。cme smb [IP段] -u [用户] -p [密码] --users枚举域用户。cme smb [IP段] -u [用户] -p [密码] --groups枚举域组。cme smb [IP段] -u [用户] -p [密码] --loggedon-users枚举目标主机上登录的用户需要管理员权限。cme smb [IP段] -u [用户] -p [密码] --sessions枚举目标主机的会话。 CME的优势在于可以批量、快速地针对整个网段进行信息搜集并将结果很好地输出。工具使用心法工具虽好但不能替代思考。工具输出的是一堆数据你需要理解数据背后的含义。例如BloodHound显示了一条攻击路径你需要判断路径中每个环节的利用条件是否成熟是否需要特定漏洞、凭证是否有效、服务是否可达。自动化工具提高了信息搜集的广度、深度和速度但分析和决策仍然需要人的经验。6. 信息整合与攻击路径规划从数据到行动搜集了大量信息后面对一堆用户列表、计算机名和组关系新手往往会感到茫然。关键在于如何将这些零散的信息点串联成可行的攻击路线图。6.1 构建目标画像首先从搜集到的信息中提炼出高价值目标Target权限目标Domain Admins、Enterprise Admins组成员。记录他们的用户名、最后登录时间判断是否活跃。资产目标域控制器终极目标获取NTDS.dit。关键服务器文件服务器业务数据、数据库服务器客户信息、邮件服务器通讯录和邮件、备份服务器可能存有凭证。管理员常用机通过Get-NetSession或 BloodHound 数据分析哪些计算机经常有高权限用户登录。这些机器上很可能缓存着他们的凭证LSASS内存中。路径节点拥有特殊权限或位置的用户/计算机。在多个计算机上拥有本地管理员权限的用户通过Find-LocalAdminAccess或 BloodHound 的Shortest Path to Unconstrained Delegation等分析发现。配置了无约束委派Unconstrained Delegation的计算机可以捕获其他用户访问它时的TGT票据如果域管理员访问过这台机器就能抓到他的TGT从而模拟他。拥有敏感ACL权限的用户/组例如对某个计算机对象有“写入属性”权限可能允许你将该计算机设置为无约束委派或者将你自己的用户添加到该计算机的本地管理员组Resource-Based Constrained Delegation攻击。6.2 分析攻击路径结合工具如BloodHound的分析和手动梳理规划出几条最有可能的攻击路径。常见的路径模式包括路径一凭证窃取 - 横向移动场景你当前用户UserA在Workstation01上。信息通过net localgroup administrators发现UserB是Workstation02的本地管理员。通过会话枚举发现UserB当前登录在Workstation02上。行动尝试从Workstation01的内存中使用Mimikatz等工具转储UserA的凭证。如果UserA和UserB密码相同密码复用或者UserA的密码是UserB密码的变形你就可以用UserB的凭证登录Workstation02。在Workstation02上继续寻找更高权限的凭证或横向移动机会。路径二权限滥用 - 直接访问场景你当前用户UserA。信息通过BloodHound发现UserA所在的组GroupX对服务器ServerSQL的C$共享有“写入”权限。行动直接使用net use连接\\ServerSQL\C$上传后门或工具计划任务执行获取ServerSQL的控制权。因为SQL服务器上很可能有高权限服务账户。路径三利用配置缺陷 - 权限提升场景你控制了一台服务器ServerWeb。信息通过setspn -L [计算机账户名]或 PowerView 的Get-DomainComputer检查发现ServerWeb配置了无约束委派。行动在ServerWeb上监听或使用工具如Rubeus等待高权限用户如域管理员来访问该服务器上的服务可能是IIS可能是文件共享。一旦捕获到域管理员的TGT票据就可以用它向Kerberos申请任何服务的ST从而以域管理员身份访问任何资源。6.3 制定行动计划与注意事项根据梳理出的路径制定一个优先级列表低垂的果实密码复用、弱口令、明显的共享权限滥用。需要利用漏洞的路径例如利用MS17-010攻击未打补丁的系统或者利用PrintNightmare漏洞在目标系统上执行代码。需要特定条件和技巧的路径如Kerberos委派攻击、ACL滥用等。在整个过程中务必注意日志与监控大规模LDAP查询、net group /domain命令、PowerShell的Get-AD*操作都会产生明显的日志Windows安全事件日志中的4662、4657等。在真实对抗中需要权衡信息搜集的完整性和隐蔽性。时间窗口关注用户登录时间。在下班后或凌晨攻击活跃用户的成功率可能更高但异常登录时间本身也可能成为告警指标。凭证管理搜集到的明文密码、哈希、票据要妥善保管和使用避免在多个不安全的跳板上重复使用同一套凭证导致暴露。信息搜集不是一次性的动作而是一个贯穿整个渗透测试周期的持续过程。每获得一个新的立足点跳板都应该重新进行一次局部甚至全局的信息搜集因为新的权限可能让你看到之前看不到的东西比如被隐藏的OU、更详细的ACL信息。这套从“自我认知”到“环境侦察”再到“路径分析”和“工具辅助”的流程构成了域内信息搜集的完整闭环。掌握它你就能在内网中从“盲人摸象”变为“心中有图”行动自然也就有了章法。
返回列表