
第七天的笔记主题是“域”。做安全这行尤其内网方向域这个字基本决定了你能走多远。一套网络安全视频课程学到第七天正好卡在从单机渗透转向域环境的关键节点上。如果你只是想打靶机、挖点Web漏洞域可能暂时用不上但只要接触真实办公网、企业内网、攻防演练域环境就是默认战场。这天的学习给我最大的感受是域不是一个“功能”而是一整套身份与策略管理架构。学它的价值不只在于会搭建、会维护更在于理解了企业网里常见的攻击路径是怎么一步步走通的。下面把我第七天笔记里记录的完整内容做一个整理包含实操命令、踩坑记录、以及一些课程之外我自己补的资料。如果你也正在学这一块这篇可以当一份精简版的学习地图用。1. 第七天要解决的认知问题什么是域为什么安全人员离不开它1.1 从工作组到域认证方式的根本变化课程的第一部分没有急着敲命令而是先讲清楚了工作组和域的区别。很多人第一次听到“加域”“域控”时很懵其实就是没搞清楚组网模型。工作组Workgroup是典型的对等网络每台机器自己维护本地账户A机器上的账户到了B机器除非B机器上也有完全一样的用户否则登录不了。早期的办公室、小店基本都是这种模式适合机器少、人少的场景。域Domain则完全不同。它引入了一个集中管理节点——域控DCDomain Controller。所有域成员机器和用户账户的密码哈希、权限、策略都存放在域控的活动目录ADActive Directory数据库里。你在一台域内电脑上输入域账号登录本机其实不验证密码而是把认证请求交给域控去处理验证通过后才分配会话和权限。这个转换非常关键。打个比方工作组像合租房的几个房间每个房间的钥匙各自配室友之间是否信任、能不能进彼此房间全靠口头上约定域则像公司办公楼的统一门禁卡所有房间的锁都归物业统一管理谁有哪几间房的权限物业后台说得算。安全人员研究域本质上研究的就是这套“物业后台”的设计缺陷和防护方式。1.2 域环境必须先认识的几个核心名词第七天课程里反复出现的术语我整理下来主要是这几个。域控Domain ControllerDC域环境里的核心服务器负责存储AD数据库、处理认证与授权。一个域可以有多台域控互相复制学习阶段一台就够。活动目录Active DirectoryAD域里的“数据库”保存用户、组、计算机、密码策略、组策略等所有对象数据。AD不只是“目录”它同时承担了认证、授权、配置管理多种职责。组织单位OUOrganizational UnitAD里的容器用来分门别类地放用户、计算机、组。OU是组策略和权限委派的主要挂载点。组策略GPOGroup Policy Object域控批量下发配置的机制可以统一桌面壁纸、密码策略、软件安装、脚本等。安全配置大多也靠它下发。DNSAD域服务正常运转的基础。域成员要通过DNS找到域控域控也要通过DNS发布服务定位记录SRV记录。DNS配错域基本起不来。Kerberos域环境默认的认证协议涉及TGT、TGS票据等概念。第一天提到域攻击很多都和票据伪造、票据滥用有关。这六个名词是后面所有内容的骨架。如果只看一遍记不住可以再回到这节对照后面每个实操步骤复看一遍。至少对我个人来说把“DNS是定位器、AD是数据库、DC是服务器”这三句话刻进脑子之后后面的命令就都顺了。2. 从零搭建域环境DNS、域控、加域三步走第七天的实操环节从一台全新的Windows Server开始。课程里强调的是“理解每一步为什么这么配”而不是单纯一顿Next到底。我复现下来整个流程大致分成三步规划与固定IP、安装AD域服务并提升域控、客户端加域。每一步都有容易踩坑的地方下面按顺序拆开说。2.1 实验环境规划与IP固定我这里准备了三台虚拟机两台Windows Server 2019、一台Windows 10专业版。实验域打算叫corp.local域控主机名DC01客户端主机名CLI01。规划信息如下角色主机名系统IP地址DNS指向域控DC01Windows Server 2019192.168.8.10/24127.0.0.1自身普通域成员CLI01Windows 10 专业版192.168.8.21/24192.168.8.10第二台备选域控DC02Windows Server 2019192.168.8.11/24192.168.8.10有一点第一天课程里明确强调过域控的IP必须固定绝对不能使用DHCP自动分配。原因不复杂域成员加入域后要把域控的IP当作DNS服务器如果域控IP经常变化客户端解析不到域控认证就会失败。客户端加入域之后也会把计算机账户信息和域控IP建立信任关系IP一变这种信任关系很容易出问题。固定IP和主机名的PowerShell操作如下接口名字以本机实际为准我这边是Ethernet0# 设置静态IP和默认网关 New-NetIPAddress -InterfaceAlias Ethernet0 -IPAddress 192.168.8.10 -PrefixLength 24 -DefaultGateway 192.168.8.1 # 设置DNS指向自身这是域控安装前的临时方案 Set-DnsClientServerAddress -InterfaceAlias Ethernet0 -ServerAddresses 127.0.0.1, 192.168.8.10 # 修改主机名重启后生效 Rename-Computer -NewName DC01 -Restart先固定IP、再改主机名顺序最好不要反过来。如果机器名在IP固定前就参与了某些网络操作后续可能会导致身份记录异常。主机名改完重启再开始安装域服务。2.2 安装AD域服务的完整命令与验证在Windows Server上装AD角色现在推荐直接用PowerShell。先安装AD域服务角色和相应的管理工具Install-WindowsFeature AD-Domain-Services -IncludeManagementTools这条命令执行后系统会安装AD DS角色。接着需要把这台服务器提升为域控。因为当前环境没有任何已有域所以要新建一个森林根域。我用的命令如下Import-Module ADDSDeployment Install-ADDSForest -DomainName corp.local -DomainNetbiosName CORP -InstallDns:$true -SafeModeAdministratorPassword (ConvertTo-SecureString 请换成你自己的强密码 -AsPlainText -Force) -Force:$true这里有几个容易混淆的概念课程里专门停下来解释过。一个是NetBIOS域名老式程序解析用的短名称实验环境写CORP就行。另一个是DSRM密码即目录服务还原模式密码它不是平时登录域控用的管理员密码只在紧急还原AD数据库时才用。DSRM密码忘了不影响日常使用但真到需要还原的时候会非常麻烦所以实验笔记里最好单独记录。为什么要同步安装DNS因为AD域必须要靠DNS来发布SRV记录客户端通过SRV记录才能定位域控。把DNS服务和AD集成可以让DNS区域自动写入AD相关记录省去手动维护的麻烦。对学习环境来说直接勾选一起装是最省心的选择。提升过程大概几分钟完成后系统自动重启。重启后再登录需要打开PowerShell做一轮验证# 查看当前域中的域控列表 Get-ADDomainController -Filter * # 测试客户端是否能定位到域控 nltest /dsgetdc:corp.local # 完整诊断AD和DNS状态 dcdiag /v验证命令各有侧重。Get-ADDomainController -Filter *能看到当前域里有哪些域控、是不是GC全局编录角色nltest /dsgetdc:corp.local是模拟客户端找域控dcdiag /v属于全面体检如果DNS注册有问题、AD复制有问题它一般都能报出来。第一次搭建时见到红色提示不用慌绝大多数都和DNS配置或时间不同步有关后面小节会专门排查。2.3 客户端加域的实操与时间同步域控搭好后把Windows 10客户端加入域。客户端第一件事是改DNS必须指向域控IP。GUI设置在“网络和Internet设置 → 更改适配器选项 → IPv4属性”里改就行。不理解为什么要先改DNS的话可以回忆一下公司办公场景员工电脑不开“自动获取DNS”而是填内网DNS地址才能解析到内网的各种服务器包括域控。DNS改完后在Windows 10上执行加域命令Add-Computer -DomainName corp.local -Restart -Credential CORP\Administrator执行后会要求输入域管理员密码验证通过后自动加域并重启。命令行方式不弹窗、出错信息更完整比图形界面更适合做实验记录。当然图形界面也可以路径是“系统属性 → 计算机名 → 更改 → 域”输入域和管理员凭据即可。实际练习时建议两种都试一次因为工作中遇到的机器新旧系统都有图形界面在某些精简版系统上入口位置会变。加域成功之后还需要检查一下客户端时间。第七天课程特别讲过Kerberos认证对时间非常敏感客户端和域控的时间差默认超过5分钟认证直接失败。域成员默认会向域控做时间同步但如果客户端手动改过时间或者虚拟机休眠恢复异常时间偏移随时可能出现。实验时可以用命令核对w32tm /query /status w32tm /resync/resync表示强制重新同步时间。遇到“目标主体名不正确”“找不到登录服务器”这类报错先查DNS再查时间基本能解决八成加域问题。系统时间这件事容易忽略但它在Kerberos认证里的优先级非常高我把这点记在了笔记最前面。3. 用户、OU与组策略把域管起来域控搭建只是骨架真正让域“运转”起来的是用户、OU和组策略。第七天课程在这部分花了很多时间因为攻击者后续利用的往往就是OU结构和GPO配置里暴露出来的问题。我们在学习阶段把管理逻辑理解透后面分析攻击路径才会顺。3.1 创建用户和OU的两种方式图形界面里打开“Active Directory 用户和计算机”就能创建OU和用户命令方式更适合批量操作和笔记记录。先创建两个OU比如按部门划分研发部和运维部。New-ADOrganizationalUnit -Name 研发部 -Path DCcorp,DClocal New-ADOrganizationalUnit -Name 运维部 -Path DCcorp,DClocal创建一个普通域用户放在研发部OU下New-ADUser -Name 张同学 -SamAccountName zhang -UserPrincipalName zhangcorp.local -Path OU研发部,DCcorp,DClocal -AccountPassword (ConvertTo-SecureString Passw0rd! -AsPlainText -Force) -Enabled $true有一点课堂上没有细讲但我做实验时发现很重要OU的规划最好在创建用户之前。OU不只是文件夹它还是组策略、权限委派的挂载点。如果所有用户一股脑放在内置的Users容器里后面想按部门下发不同策略、按岗位做权限分级就要重新搬移用户很容易漏。实践中应该先设计好OU结构再批量建用户。账号密码策略也要注意。实验环境为了省事可以把“Passw0rd!”这种密码视为临时密码真实生产环境绝对不能用这种弱密码。课程里提过一个原则高权限账户域管、服务账户和普通用户密码必须分层管理尤其是服务账户的密码经常被写成脚本里的明文是内网横向移动的重要突破口这个点后面安全部分再展开。3.2 GPO组策略继承顺序与几个经典问题GPO是域批量配置的核心机制。它挂在不同的层级上分别是本机策略Local→ 站点Site → 域Domain → 组织单位OU。一条GPO如果同时作用于域和某个OU实际生效顺序是“后应用的覆盖先应用的”优先级可以简记为LSDOULocal最低OU最高。但这个顺序不是绝对还有两个开关会打乱它一是OU上的“阻止继承”子级OU可以拒绝来自父级的GPO二是GPO本身上的“强制”强制GPO优先级最高即使下级OU设置阻止继承也拦不住。课程里有一句总结我记在笔记里了“默认情况下OU赢如果开了强制强制赢如果开了阻止继承OU的本地策略赢。但强制永远是老大。”GPO不生效是学习阶段最容易遇到的问题排查时可以从三方面入手检查GPO作用域安全过滤里如果只加了某几个用户那其他用户就不会收到该GPO。默认情况应该加上“Authenticated Users”组只对特定人群生效时再单独设置例外。检查链接位置GPO必须链接到对应的域或OU上光创建不链接等于白建。刷新策略再验证客户端执行gpupdate /force然后执行gpresult /r看实际应用了哪些GPO。看不清细节时可以用gpresult /h report.html导出HTML报告。还有一个细节容易被新手忽略组策略分为“计算机配置”和“用户配置”。计算机配置在开机时加载用户配置在用户登录时加载。如果两者冲突最终不一定是用户配置生效还要看“环回处理”Loopback的设置。环回处理常用于教室电脑、机房等公共终端机器本体是给特定用户专用的但使用者可能任意换人需要强制使用某套用户配置此时可以设置环回处理为“替换”或“合并”。第七天课程没有展开环回处理我是在后续做公共终端实验时补学的这里把笔记一并放上。3.3 建议优先配置的几项GPO如果自己搭实验环境练手可以优先配置下面这几项它们同时也是安全加固里最常见的GPO策略项目推荐配置作用密码策略最小长度14、复杂度要求启用提高本地爆破难度账户锁定策略5次错误锁定30分钟防止在线口令爆破禁止访问命令提示符启用降低交互式攻击便利性限制本地管理员移除普通用户本地管理员权限防止普通用户提权禁止域管登录普通机器拒绝Domain Admins组从普通机器登录缓解凭据窃取横向移动密码策略在域环境里有特殊性值得单独说一句。默认情况下域级密码策略是整个“Default Domain Policy”里配置的它对所有域用户生效比较“一刀切”。Windows Server 2008之后引入了“细粒度密码策略”FGPPFine-Grained Password Policy可以为不同用户或组设置不同的密码策略。学习阶段建议把默认密码策略调严格再做实验验证它真正生效的方式会发现它和我们想象的不完全一样。禁止域管登录普通机器这条是视频课后面安全章节反复强调的。表层原因是防止域管账户在普通电脑上留下凭据缓存深层原因是攻击者在拿下一台普通电脑后会试图通过LSASS进程抓取登录过的账号哈希如果域管曾在那台机器上登录哈希一旦被抓整个域都可能陷落。第七天可以先在GPO里配好后面的课程还会从攻击视角验证这条策略的价值。4. 安全视角域攻击面到底在哪防御要盯哪些点第七天课程前半部分都在搭建和管理域后半部分开始转换视角聊攻击面。这也是我把这节课单独拿出来写笔记的原因域环境的安全问题和单机时代完全不同。一台电脑中毒可能只是数据被加密域里一台电脑被控攻击者却可能用它作为跳板逐步摸到域控最终控制整个企业网络。4.1 从攻防演练中总结的常见攻击路径课程总结了域环境下几条非常经典的攻击路径。它们的共同点是不是靠单个漏洞打穿而是靠一系列合法的、非法的操作逐步叠加。这部分内容涉及的工具只做原理层面说明千万不要在未授权环境里测试。Kerberoasting。如果域里有服务账户注册了服务主体名称SPN那么任何普通域用户都能向域控申请该服务账户的服务票据TGS。域控生成票据时会把服务账户密码哈希加密到票据里攻击者拿到票据后就能在本地离线爆破因为密码是用服务账户的密码派生的密钥加密的爆破成功就相当于拿到了这个服务账户的明文密码。常见破解工具是hashcat和john防御方向是让服务账户密码足够复杂、尽量使用托管服务账户。AS-REP Roasting。默认情况下域用户向域控请求初始票据TGT时需要先提供密钥加密的时间戳这叫预认证。如果某个用户的属性里“不需要预认证”攻击者就可以直接为该用户申请TGT票据拿到加密材料后离线爆破。这类用户的密码强度如果也不高被破解速度会比想象快得多。票证伪造。黄金票据和白银票据是域环境内网渗透的经典话术。黄金票据利用的是域控上krbtgt账户的密码哈希攻击者拿到后可以伪造任意域用户的TGT包括域管理员。白银票据则是伪造针对某个服务如文件服务、计划任务服务的服务票据。两种攻击都强调“已经拿到域控或目标服务账户凭据”本质是后渗透阶段的特权维持而不是初始攻击手段。委派攻击。Windows服务在用户请求资源时经常需要“代表”用户去访问其他服务这个过程叫委派。非约束委派、约束委派、基于资源的约束委派各有滥用姿势。普通用户如果控制了一台配置了非约束委派的服务器就可能截获经过这台机器转发认证的其他用户的TGT从而冒用高权限用户身份。这部分在视频里是作为扩展内容讲的我自己的笔记里只记了原理和检测思路详细实验放到后续课程继续做。DCSync与NTDS导出。如果攻击者拿到了具有域控复制权限的账户就能模拟域控向其他域控发起目录复制请求从中提取所有用户的密码哈希包括域管理员。这类操作在日志里留痕相对明确事件ID 4662目录服务访问是最直接的线索。4.2 防御侧可以落地的七件事第七天视频课最后给了一套防御清单我把它总结成七件事。第一最小化特权账户数量。Domain Admins组越少越好这组里每多一个人风险面就扩大一分。实际管理时域控运维用单独的高权限账户不允许用普通电脑和私人电脑登录。第二启用LAPS管理本地管理员密码。域内电脑的本地管理员密码不应相同否则攻击者拿到一台机器的本地Administrator哈希等于能登录全网后台机器。LAPS能让每台机器自动生成独立复杂密码并安全存储在AD中。第三服务账户密码强制复杂化。能不用独立服务账户就不用能用gMSA托管服务账户就不用普通服务账户。托管服务账户的密码会自动轮换并且默认只有特定主机才能使用Kerberoasting攻击面会大幅缩小。第四定期重置krbtgt密码。黄金票据依赖krbtgt哈希定期重置这个密码会让已泄漏的票据失效。注意不是一次性改完就结束重置krbtgt密码要在两次密码生命周期里分步完成否则可能影响域内验证。网上有专门的重置脚本做之前最好在测试环境演练。第五监测特权组变更与高权限登录。对Domain Admins等特权组的成员变更、异机登录行为进行告警。很多攻击链条都会在某个环节触发这些事件。第六检查SYSVOL里的明文配置。组策略的脚本、配置文件经常会保存密码攻击者会通过检索SYSVOL共享来寻找这些历史残留。第七把日志集中收集。单台机器日志里找不到全貌必须汇总到日志平台统一关联分析才能从全局发现异常。4.3 日志审计需要关注的事件ID速查安全部分最实用的一份参考资料是域控上的事件ID速查表。第七天课程给出一部分我后续又补充了几个现在整理如下事件ID含义关注点4624登录成功结合登录类型重点看10远程交互、3网络4625登录失败大量失败说明可能存在口令爆破4672为登录授予特殊权限高权限账户登录时出现追踪管理员行为4768Kerberos TGT请求关注请求来源IP和账户异常请求可能是票据攻击前兆4769Kerberos TGS请求重点关注请求SPN的服务账户Kerberoasting会大量出现4740账户被锁定锁定次数频繁说明密码错误或爆破5136目录服务对象被修改关注AD对象被改尤其权限属性和组成员关系1102审计日志被清除明显的反取证行为需要第一时间告警这些事件ID不需要背下来但要知道哪里能查。实际做日志分析时我一般先在SIEM里建几条关联规则比如“单账户短时间内多次4769 多次4625”或者“特权组出现4732添加成员”命中后优先排查。5. 第七天踩坑实录域搭建中的问题排查与经验最后这部分是当天的实战问题记录。视频课虽然给了标准流程但自己上手敲命令时总会遇到一些意想不到的小毛病。把这些问题和排查思路记录下来会让后面几天的学习顺畅很多。5.1 加域失败的两类关键原因我当天实际遇到的第一类问题是DNS解析不到域控。报错信息大概是“找不到域corp.local的域控制器”或者“找不到网络路径”。当时客户端DNS没有指向域控还保留着默认的自动获取结果域名解析到了外部公共DNS自然找不到内网域控。解决方法是把客户端DNS固定为域控IP然后在客户端上验证nslookup corp.local nslookup -typeSRV _ldap._tcp.corp.local第一句能解析出域控IP第二句能看到SRV记录说明DNS侧没问题。SRV记录看不到很可能就是DNS区域里没有AD相关记录或者AD集成DNS区域建立失败。如果是后者回到域控上执行dcdiag /test:dns看具体报错。第二类问题是时间同步异常。我有一台虚拟机开了快照回滚恢复后时间比域控慢了将近十分钟尝试加域时直接提示Kerberos认证失败。排查方法是先在客户端的“设置 → 时间和语言”里观察时间差异然后用w32tm /resync强制重新同步。如果系统时间偏差过大可以先手动改成接近正确时间再做一次强制同步。有一件事也要留意克隆虚拟机后直接加域容易出SID重复问题。实验环境如果要大量复制同一台镜像必须先执行sysprep重新封装或使用完整克隆而不是链接克隆。否则加域后计算机身份可能出现冲突具体的报错形式五花八门比较常见的是“无法与域控制器建立信任关系”或加入域后又掉域。这块虽然不是第七天课程主要内容但我认为学习阶段提前了解能省下很多不必要的折腾。5.2 GPO和账号管理的常见问题做GPO实验时我遇到的第一个问题就是策略完全不生效。原因是在作用域安全过滤里只添加了“Domain Admins”导致普通用户登录时无法读取该GPO。解决方法是把安全过滤改为“Authenticated Users”然后再针对不需要应用策略的特例做拒绝。第二个问题是修改密码策略后并没有立刻看到效果。这里需要提醒自己密码策略不是“下一次修改密码立即生效”的策略它作用于后续设置的密码当前已存在的密码不会被动要求符合新规则。另外如果配置了细粒度密码策略FGPP它的优先级高于域默认密码策略配置时要先确认有没有FGPP叠加生效否则会看到“改了密码复杂度怎么没反应”的现象。账号锁定问题也值得记一笔。域控上默认并不开启账户锁定阈值如果只改了普通的GPO而忘了启用账户锁定策略暴力破解工具就可以无限尝试密码这个隐患在安全检查里很容易被问到。配置路径是“计算机配置 → 策略 → Windows设置 → 安全设置 → 账户策略 → 账户锁定策略”。还有DSRM密码的问题。我一开始没记DSRM密码后面想用目录服务恢复模式时完全进不去。重置DSRM密码的方法是在Windows Server的安装介质或系统修复环境里打开命令行然后执行ntdsutil里的“set dsrm password”选项。学习阶段不怎么用得到但建议把密码记在本地实验笔记里避免关键时刻卡住。5.3 学完第七天之后怎么继续整理完当天的笔记我自己又做了几件扩展练习觉得对后续课程帮助很大。第一反复练习“从零重建域环境”。不只是看视频而是真的把域控删干净、重新搭一遍。第一次搭用了将近两个小时第二次半小时内能完成。熟练之后后面课程里的攻击实验才有稳定可靠的基础环境。第二补了一遍Kerberos认证流程。课程里只是提了TGT、TGS我把完整的请求流程、票据结构、加密密钥来源又单独梳理了一遍。弄懂Kerberos再回头看黄金票据、白银票据、委派攻击思路会清晰很多不再是一堆孤立名词。第三把GPO实验扩展到了安全加固场景。我给实验域配置了账户锁定、密码复杂度、LAPS试点和审计策略再用攻击工具做一轮自查看哪些配置能拦住、哪些拦不住。这个过程比纯粹看视频更能加深印象。第七天的内容量不小但如果能手动完成一遍完整的域搭建和策略配置再对照日志观察一次异常事件的变化这一天的学习就扎实了。后面几天的课程大概率还要继续在域环境里做攻防实验现在多花点时间把基础打好后面会轻松得多。