Active Directory是一个可以通过域控制器来管理连接在同一逻辑网络中的一组计算机和用户的系统。Windows域包含以下几个组件。
❑LDAP:可以通过LDAP访问的数据库,并且该数据库实现了符合[MS-DRSR]及[MS-ADTS]规范的几种RPC。
❑AS:可以通过Kerberos、NTLM、Netlogon或者WDigest协议访问的身份认证服务器。
❑GPO:GPO的管理支持LDAP和SMB协议。
❑DNS:支持认证的DNS服务器,客户端使用该DNS定位相关资源。
进入内网的后渗透阶段,一般分为两种情况,一种是工作组渗透,另一种是域渗透。但是即使存在域环境,我们拿到的第一台计算机也不一定在域内,需要通过多种方式确定域控制器的位置,进而控制整个域。
1.利用DNS服务查找域控制器
可以通过DNS的SRV记录(Service Record)查找域控制器的IP(地址)。SRV记录明确了哪台计算机提供了何种服务,常见于微软系统的目录管理。DNS可以独立于活动目录,但是活动目录必须有DNS的帮助才能工作。为了让活动目录正常工作,DNS服务器必须支持S RV资源记录。资源记录把服务名字映射为提供服务的服务器名字。活动目录客户和域控制器使用S RV资源记录决定域控制器的I P地址。
1)在Linux环境查找域控制器位置。通过以下命令查找几个SRV值均可获得域控制器IP地址,如图2-40所示。
图2-40 查找SRV值获得域控制器IP地址
❑dig-t SRV_gc._tcp.dm.org
❑dig-t SRV_ldap._tcp.dm.org
❑dig-t SRV_kerberos._tcp.dm.org
❑dig-t SRV_kpasswd._tcp.dm.org
2)在Windows环境查找域控制器位置。使用nslookup -q=srv _ldap._tcp.dc._msdcs.dm.org命令,查找这几个SRV值均可获得域控制器IP地址,如图2-41所示。
图2-41 查找SRV值获得域控制器IP地址
2.利用默认端口查找域控制器
首先域控制器肯定指的是Windows计算机,可以通过135、139、445、5985端口来判断,并且在80端口运行IIS服务。域控制器一定会运行LDAP服务,默认情况下有4个端口开放,具体的端口协议配置信息如表2-11所示。这些配置信息可以协助我们确认该计算机是不是域控制器,并且DNS服务一般是安装在域控上的,如图2-42所示。
表2-11 端口协议配置信息
图2-42 利用默认端口查找域控制器
3.在域内通过SAMR获取域控制器地址
使用net group"domain controllers"/domain命令在域内通过SAMR获取域控制器地址,如图2-43所示。
图2-43 在域内通过SAMR获取域控制器地址
在域内获取DNS记录分为两种情况:一种是拥有了域管理员权限进行后渗透时,获取DNS记录便于下一步寻找目标;另一种是进入内网后,因为权限较低,需要获取DNS记录以寻找下一步的渗透方向进行权限提升。可以利用LDAP查询+DNS解析的方式,也可以利用ADIDNS获取DNS记录。
1.域内高权限获取所有DNS记录
(1)利用dnscmd通过命令行获取DNS记录
1)列出DNS区域中当前节点的资源记录,执行dnscmd /EnumZones命令,如图2-44所示。
图2-44 列出DNS区域中当前节点的资源记录
2)列举指定域所有DNS记录,执行dnscmd/zoneprint dm.org命令,如图2-45所示。
图2-45 列举指定域所有DNS记录(1)
3)再次列举指定域所有DNS记录,输入Dnscmd/EnumRecords dm.org .命令,如图2-46所示。
图2-46 列举指定域所有DNS记录(2)
(2)远程获取DNS记录
dnscmd是用来管理DNS服务器的命令行程序,默认在Server版本系统安装,如果想在非Server版系统使用dnscmd管理DNS,需要安装Remote Server Administration Tools(RSAT)。但在实战环境中,我们不能在目标主机中安装RAST。直接在个人版系统运行dnscmd会提示失败,通过测试发现缺少文件dnscmd.exe.mui,可将dnscmd.exe.mui复制到C:\Windows\System32\en-US下,将dnscmd复制到C:\Windows\System32下。
因为dnscmd没有提供输入用户名、密码的选项,需要使用如mimikatz的Overpass-the-hash,本地模拟身份信息,如果获得了某个域用户的明文密码,可以将明文转换为NTLM哈希再进行使用。
首先执行privilege::debug sekurlsa::pth /user:Administrator/domain:dm.org /ntlm:237dcf5 89f0ddd841c2a4fc720f0d3b5命令对本地进行哈希传递攻击(PTH),需要使用具有本地管理员权限并通过UAC验证,如图2-47所示。
图2-47 使用mimikatz在本地PTH,获得指定用户权限
然后执行Dnscmd dc01.dm.org /EnumZones命令获取DNS记录,此时远程主机名应使用FQDN或计算机名,如图2-48所示。
图2-48 获取DNS记录
2.普通域用户获取域内所有DNS记录
ADIDNS全名为Active Directory集成DNS。在进入内网找到域控制器位置后,我们需要进一步渗透以获取目标信息。一般来说,通过扫描Web,会发现大量的Apache/Nginx/IIS默认页或者403页面。因为配置文件在大多情况下会被配置为只允许域名访问,我们需要用到DNS枚举,获取整个域内存在什么域名,并大致判断某台主机运行什么业务。
1)利用SharpAdidnsdump获取DNS记录。因为普通域用户就可以访问LDAP,所以可以首先通过LDAP查询所有计算机对象名称,然后利用DNS查询对应主机的IP地址。执行SharpAdidnsdump.exe dm.org命令,如图2-49所示。
图2-49 利用SharpAdidnsdump获取DNS记录
2)利用LDAP通过普通域用户获取域内DNS信息。首先通过LDAP查询获得DNS记录,对二进制的DNS记录进行解码,获得实际内容。随后执行powershell -ep bypass -f dns-dump.ps1-zone dm.org命令获取DNS记录,在cmd中执行,如图2-50所示。
图2-50 使用3gstudent的dns-dump.ps1获取DNS记录
3)在Linux环境使用adidnsdump获取DNS记录。默认情况下,任何经过身份验证的普通域用户都可以对ADI DNS记录进行转储。当我们在LDAP中查询DNS记录时,选择该类的所有对象,这些对象的dnsNode代表DNS区域中的条目。当使用过滤器进行查询(object-Class=dnsNode)时,返回的结果非常有限。对于多个对象,objectClass不可见。这是因为计算机DNS记录的默认权限不是通过AD DNS的GUI创建的,不允许所有用户查看内容。由于IP地址实际上是该对象的一个属性,因此也无法查看这些记录的IP地址。但就像默认情况下任何用户都可以创建新的DNS记录一样,任何用户也可以默认列出DNS区域的子对象。所以我们知道那里有记录,只是不能使用LDAP查询它。一旦通过LDAP枚举知道记录存在,我们就可以直接使用DNS查询它。可以利用工具adidnsdump进行转储,这样就可以解析区域中的所有记录。
4)连接LDAP,使用过滤器&(objectClass=DnsZone)(!(DC=*arpa))(!(D C=R o o t D N S-Servers))列出DomainDnsZone中可用的区域。对于每个区域,可以使用过滤器&(!(o b j e c t-Class=DnsZone))(!(DC=@))(!(DC=*arpa))(!(DC=*DNSZones))列出所有主机对象。
5)执行git clone https://github.com/dirkjanm/adidnsdump&&cd adidnsdump&&pip install命令来安装adidnsdump。
6)使用adidnsdump -u dm.org\\user1 -p Aa1818@ dc01.dm.org -r命令,通过Linux跨Windows域获取域DNS信息,如图2-51所示。
图2-51 通过Linux跨Windows域获取域DNS信息
注意,如果通过SOCKS5连接,配置本地Kali的proxychains即可。
3.使用PowerShell模块进行域信息收集
域信息收集一般可以通过net(MS-SAMR)、LDAP、RSAT等方法实现,这里重点说一下RSAT。Windows Server 2008 R2(以及更新版本)提供了多个AD PowerShell cmdlet,这极大简化了使用ADSI(Active Directory Service Interface,活动目录服务接口)代码的烦琐过程。使用AD PowerShell cmdlet前,需要在Windows客户端上安装RSAT,并确保已安装Active Directory PowerShell模块。但是默认情况下,安装RSAT需要管理员权限,可以通过未安装RSAT的计算机上的PowerShell直接导入Microsoft.ActiveDirectory.Management.dll实现功能。
1)导入模块可以实现PowerShell模块进行域信息收集。在导入模块前,在PowerShell中执行Get-Command get-adcom*命令查看可使用的模块,如图2-52所示。
图2-52 查看可使用的PowerShell模块
2)在PowerShell中执行Import-Module .\Microsoft.ActiveDirectory.Management.dll命令,导入ActiveDirectory.Management模块,如图2-53所示。
图2-53 导入ActiveDirectory.Management模块
注意,Microsoft.ActiveDirectory.Management.dll需要在已安装RSAT的计算机上获取。
Windows域环境是基于Microsoft Active Directory的,它将物理位置分散,将所属部门不同的用户在网络系统环境中进行分组,集中统一资源,有效对资源访问控制权限进行细粒化分配,提高了网络环境的安全性和对网络中资源统一分配管理的便利性。域环境中运行着大量应用,包含多种资源,为了方便对资源的合理分组、分类以及再分配(给用户使用),微软为域内的每种资源分配了不同的服务主体名称(Service Principal Name,SPN)。
1.概念介绍
在使用Kerberos身份验证的网络中,必须在内置计算机账户(如NetworkService或Local-System)或用户账户下为服务器注册SPN。对于内置账户,SPN将自动进行注册。但是,如果在域用户账户下运行服务,则必须为要使用的账户手动注册SPN。因为域环境中的每台服务器都需要在Kerberos身份验证服务中注册SPN,所以直接向域控制器查询我们所需服务的SPN,就可以找到我们需要使用的服务资源在哪台服务器上。Kerberos身份验证使用SPN将服务实例与服务登录账户相关联。如果在整个域中的计算机上安装多个服务实例,则每个实例都必须具有自己的SPN。如果客户端可能使用多个名称进行身份验证,则给定的服务实例可以具有多个SPN。例如,SPN总是包含运行服务实例的主机名称,所以服务实例可以为其主机的每个名称或别名注册一个SPN。
在Kerberos的协议中,当用户输入自己的账号和密码登录AD时,域控制器会对其账号和密码进行身份验证。身份验证通过后,KDC会将TGT颁发给用户,作为用户访问资源时验证身份的凭据。
例如,当用户需要访问MSSQL服务时,系统会以当前用户身份向域控制器查询SPN为MSSQL的记录。找到该SPN的记录后,用户会再次与KDC通信,将KDC颁发的TGT发送给KDC作为身份验证凭据,还会将需要访问资源的SPN发送给KDC。KDC中的身份验证服务(AS)对TGT解密校验无误后,TGS将一张允许访问该SPN对应的服务的票据和该SPN对应服务地址发送给用户,用户使用该票据成功访问到MSSQL服务资源。
2.获取SPN信息的方法
获取SPN信息的方法包括但不限于:使用Windows自带的SetSPN.exe获取,在Linux跨Windows的Python场景下使用Impacket获取,通过LDAP获取,在高版本的Windows中使用PowerShell获取,在低版本Windows使用VBS获取,利用常用的C2 Empire自带的模块获取。
1)SetSPN.exe是一个本地Windows二进制文件,可用于检索用户账户和服务之间的映射。该应用程序可以添加、删除或查看SPN注册信息,执行setspn -t dm.org -q */*命令获取该域中所有SPN信息。也可以执行setspn.exe -l dm1命令获取指定用户账户的所有SPN信息。
2)Get-SPN.psm1可以在Windows中导入AD模块,利用PowerShell获取SPN信息。
首先,导入模块。
然后,获取MSSQL服务对应的账号。
最后,在非域内获取以域管理员注册的服务。
3.利用LDAP手动查询的方式获取SPN信息
如果当前环境在域内,并且需要将工具落地在目标环境,那么常见的渗透自动化利用工具可能会被终端安全软件检测到或者因为固有流量特征被流量分析工具检测到,这时可以使用AdFind等工具手动查询指定SPN信息。例如,执行AdFind.exe -f "ServicePrin-cipalName=MSSQLSvc*"命令可获取所有MSSQL服务绑定的账号。
1.利用SID枚举域用户名
当在内网中通过nbtscan、nltest、DNS等方法发现内网有域环境,并且通过DC特征端口定位到域控制器IP时,我们需要枚举域用户名。可以先利用Windows的LookupAccountName函数(该函数接收用户名作为输入)查到域管理员的安全标识符(SID),然后通过遍历RID范围枚举域用户名。SID对应的RID一般在1000以上,可以通过自写工具完成,执行EnuDomainUser.exe dc01.dm.org dm\administrator 1000 2000 100命令,如图2-54所示。
图2-54 通过遍历RID范围枚举域用户名
2.Kerberos pre-auth
前文介绍过,如果要进行域信息收集,一般情况下需要拥有域用户权限。而要通过爆破的方式获得域用户权限,前提是知道域内存在的域用户名。Kerberos pre-auth攻击适合在非域内对域用户进行域用户名枚举和域密码爆破,它对应的端口默认为88。在Kerberos协议中的AS-REQ里,cname是请求的用户,根据AS_REP返回包的内容不同,判断用户名是否存在。制作用户名字典时,可以使用Responder等工具进行抓包嗅探,判断用户名格式类型,定向生成字典,从而提高成功率。
当利用Kerberos协议发起一个AS-REQ时:如域用户名存在,则返回“error-code:eRR-PREAUTH-REQUIRED(25)”;如域用户名不存在,则返回“error-code:eRR-C-PRINCIPAL-UNKNOWN(6)”。
Kerberos pre-auth通过88端口进行认证,使用该方法进行密码爆破不会产生登录失败日志4625,并且速度比其他爆破方法快。可以选择UDP或TCP传输协议,UDP速度较快且监控少,而TCP较为稳定。可以选择不同的加密方式,如RC4、AES128、AES256。使用RC4是最快的,但使用AES128和AES256较为隐蔽,更容易绕过监控设备。
Kerbrute工具的主要使用场景是将kerbrute.exe程序上传到已经控制的目标Windows计算机上进行操作,或者通过SOCKS5代理在本地Windows计算机上利用。
1)执行kerbrute.exe userenum--dc 172.16.6.132-d dm.org username.txt命令,通过Kerbrute工具进行域用户名枚举,如图2-55所示。
图2-55 域用户名枚举
2)执行kerbrute.exe passwordspray-d dm.org username.txt Aa1818@命令,利用Kerberos pre-auth进行密码喷洒,如图2-56所示。
图2-56 利用Kerberos pre-auth进行密码喷洒
3)执行kerbrute.exe bruteuser -d dm.org passwords.txt administrator命令,通过Kerbrute工具利用Kerberos pre-auth对指定用户进行密码爆破,如图2-57所示。
图2-57 利用Kerberos pre-auth对指定用户进行密码爆破
3.利用LDAP获取域用户名
在第1章讲过,域环境会使用Directory Database(目录数据库)来存储用户、计算机账户和组等对象。使用LDAP来查询和更新目录数据库的前提是,我们已经获得了域内的一个普通用户口令。
1)使用Kali通过LDAP使用ldapsearch工具获取域用户列表,如以下命令及图2-58所示。
图2-58 使用Kali通过LDAP使用ldapsearch工具获取域用户列表
2)在Windows中通过LDAP使用PowerShell获取域用户列表,如以下命令及图2-59所示。
图2-59 在Windows中通过LDAP使用PowerShell获取域用户列表
3)在Windows中利用PowerView获取域用户列表,如以下命令及图2-60所示。
图2-60 在Windows中利用PowerView获取域用户列表
4)在Windows GUI中通过LDAP获取域用户列表,打开任意文件属性中的“安全”选项卡,进入“编辑”界面添加用户即可,如图2-61所示。
图2-61 进入“编辑”界面添加用户
4.利用MS-SAMR协议获取域用户名
MS-RPC(Microsoft Remote Procedure Call,微软远程过程调用)基于DCE-RPC,一般会使用命令管道实现RPC over SMB,或者直接使用TCP进行传输。命名管道的使用情况比较多,利用TCP的445端口进行传输。
首先建立与域控制器的SMB连接,然后请求共享IPC$,绑定SAMR(Security Account Manager Remote,安全账户管理器远程)命名管道,进行多个SAMR查询。
1)在域内Windows主机上利用MS-SAMR协议获取域用户列表,执行net user /domain命令,如图2-62所示。
图2-62 在域内Windows主机上利用MS-SAMR协议获取域用户列表
2)在域外Linux主机上通过MS-SAMR协议获取域用户列表,如以下命令及图2-63所示。
图2-63 在域外Linux主机上通过MS-SAMR协议获取域用户列表
在内网中控制一台主机后,我们大致会遇到以下3种情况。
1)当前权限为域用户权限,可以进入域渗透阶段了。通过域信息收集拿下域控制器可以极大减少工作量。
2)当前权限为本地用户权限,但是计算机在域中。可以通过查看已运行域用户进程、未注销RDP连接、已保存RDP密码、LSASS中SSP缓存的密码是否有域密码、数据库连接工具是否有连接域内计算机的密码、未断开的SMB连接、模拟令牌,切换到域身份权限。
3)如果该计算机已经加入域,但是当前权限不是域用户权限。可以通过获得SYSTEM权限进而获得访问域的身份,因为SYSTEM本身代表HostName$,计算机账号也属于域账号。通过该计算机账户权限即可使用LDAP进行域信息收集。
常规定位域内指定用户的方法一是日志,二是会话,三是通过LDAP属性。日志指的是本地计算机的安全日志,可以使用脚本或wevtutil导出并查看。会话是域内每台计算机的登录会话,可以利用Windows API进行查询,可以使用netsess.exe或PowerView等工具查询。
1.查找指定用户登录位置的方法
❑本地会话、进程、线程检查。
❑利用NetSessionEnum来找寻登录会话。
❑利用NetWkstaUserEnum来枚举登录的用户。
❑查看LDAP中每个用户的userWorkStations属性以确定该用户能够登录的主机。
❑enumLoggedOnUsers模块返回当前和最近登录的用户的列表。
2.检查本地 , 查看是否有已运行域用户/域管理进程
❑获取域用户列表,可参考2.5.4节获得域用户名的方法。
❑执行net group"Domain Admins"/domain命令以获取域管理列表。
❑执行tasklist/v命令获取运行进程列表,是否出现域名\用户名启动的进程。
3.在域控制器上查看活动的域用户会话
❑通过域控制器OU获取域控制器列表。
❑通过域管理员组获取域管理员列表。
❑利用NetSessionEnum API收集域控制器上活动的会话列表。
4.常用域用户定位工具
假设我们已经在Windows域中获得普通域用户权限,并且希望在域内进行横向移动以提升权限,可以利用Windows API查找高权限在哪台计算机上存在会话、进程。常用的工具有psloggedon.exe、netsess.exe、hunter.exe、netview.exe等,在PowerShell中常用的脚本是PowerView,不过PowerShell现在受到越来越严密的监控。
NetSessionEnum Win32 API是枚举Windows信息的常用API,可以查看在服务器上建立的会话的信息,不需要管理员权限。可以列出当前登录到这台远程主机的所有用户的信息,需要目标主机的管理员权限。
PsLoggedOn可以显示本地登录的用户和通过资源登录的用户。PsLoggedO.exe通过检索远程主机注册表的HKEY_USERS来确定哪个用户通过本地登录到该主机,通过NetSes-sionEnum API来确定哪个用户通过资源共享访问该主机。可以通过指定用户名来批量检测该网段内主机是否登录该用户。
1)执行PsLoggedon64.exe \\srv1.dm.org命令,通过PsLoggedOn枚举在远程主机登录的用户,如图2-64所示。
图2-64 通过PsLoggedOn枚举在远程主机登录的用户
2)NetSess工具利用NetSessionEnum API调用远程主机的RPC,然后返回其他用户在访问这台远程主机的网络资源(如文件共享)时所创建的网络会话,从而可以看到这个用户来自何处。
3)执行netsess.exe srv1命令,通过NetSess枚举在远程主机登录的用户,如图2-65所示。
图2-65 通过NetSess枚举在远程主机登录的用户
4)使用PowerView中的Invoke-UserHunter可以搜索指定域用户现在在哪些主机上登录,并验证当前用户是否具有对这些主机的本地管理员访问权限。它使用Get-NetSessions和Get-NetLoggedon扫描每台服务器并对扫描结果进行比较,从而找出目标用户集,并且不需要管理员权限。它常常被用来在进入域之后寻找域管理员进程以提升权限,或拿下域管理员权限后定位关键用户。使用Invoke-UserHunter模块,如图2-66所示。
5)利用User-Workstations特性找到用户对应的计算机。在用户账户的LDAP属性中存在一个名为userworkstations的值,它控制该账户可以登录的计算机。但微软已经不建议使用该方法配置限制登录。微软建议,如果需要配置哪些账户可以登录哪些计算机,可以使用“允许本地登录”和“在本地拒绝登录”或“允许通过远程桌面服务登录”和“拒绝通过远程桌面服务登录”进行配置。
图2-66 使用Invoke-UserHunter模块
6)执行Adfind.exe-b cn=user1, cn=users, dc=dm, dc=org userworkstations命令查找指定用户可以在哪些计算机上登录,如图2-67所示。
图2-67 查找指定用户可以在哪些计算机上登录
5.后渗透定位个人用户
获得域管理员权限并不是内网渗透的终点,我们往往还需要找到特定用户的计算机,获取特定的资源。可以使用以下两种方式在高权限时定位特定域用户。方法一是通过登录的日志定位,因为域用户登录计算机时需要在域控制器中进行身份验证,并且每次身份验证会随机连接域内的一台域控制器,所以需要在所有域控制器的安全日志中查找指定用户登录过哪些主机。方法二是通过下发组策略,在域内所有计算机上执行quser命令并写入域控制器sysvol目录。
(1)查询域控制器登录成功日志,定位PC
在Windows日志中,ID 4624表示成功登录事件,主要用来筛选该系统的用户登录成功情况。在域控制器里记录了域内所有计算机和用户的登录情况,并记录了对应的IP。通过筛选该事件ID日志,我们可以定位在域内对应的PC,可以通过使用SharpEventLog来定位域内PC,具体实验环境如表2-12所示。
表2-12 实验环境
首先,使用TEST1用户登录到Windows 10计算机中,如图2-68所示。
图2-68 使用TEST1登录到Windows 10计算机中
执行ifconfig命令查看Windows 10计算机的主机名和IP地址,如图2-69所示,后续与域控制器中的日志进行对比。
图2-69 执行ifconfig命令查看主机名及IP地址
随后,在域控制器的事件查看器中查找ID为4624的事件,如图2-70所示,可以看到Windows 10计算机的登录日志。
图2-70 Windows 10计算机的登录日志
接着,使用SharpEventLog对特定账户进行定位,如图2-71所示,可以看到用户TEST1登录过IP为192.168.23.174的计算机。
图2-71 通过SharpEventLog筛选查询域控日志
最后,通过在域控日志中筛选出Windows 10计算机的登录日志,并且根据对应的IP地址找到其主机名为PC1,如图2-72所示,从而实现精准定位域内的PC。
(2)通过组策略定位PC
当我们在Windows计算机上执行query user命令时,系统会为我们呈现当前计算机上存在哪些用户的会话。利用以上特性,可以通过下发组策略设置对应的计划任务。计划任务的内容为将query user命令输出,并以每台计算机的名称为文件名创建文本,写入域控制器的sysvol目录,从而方便我们在内网渗透中定位PC。
图2-72 通过筛选日志精准定位域内的PC
1)通过执行Import-Module GroupPolicy;new-gpo -name QueryDomainUser003命令来创建一个名为QueryDomainUser003的组策略,如图2-73所示。
图2-73 通过命令创建名为QueryDomainUser003的组策略
2)在拥有域管理员权限下通过执行Import-Module GroupPolicy;new-gplink-name QueryDo-mainUser003-Target"dc=tets,dc=com"命令将GPO链接到域TEST.com,具体执行操作如图2-74所示。
图2-74 将GPO链接到域TEST.com
3)在命令终端中执行icacls c:\windows\sysvol\/grant Everyone:(OI)(CI)(F)/T命令来修改sysvol目录的权限,使任意用户能往里面写文件,如图2-75所示。
4)通过执行SharpGPOAbuse.exe--AddComputerTask--TaskName"QueryDomainUser003"--Author test\\administrator --Command "cmd.exe" --Arguments "/c query user>\\WIN-EAMMFCNN8TJ\sysvol\%COMPUTERNAME%.txt" --GPOName "QueryDomainUser003"命令添加定时任务,并指定我们刚才创建的组策略,执行结果如图2-76所示。
5)查看组策略中添加的定时任务执行内容,如图2-77所示
6)当组策略自动更新成功时会执行上述操作,或者我们可以使用gpupdate/forCE命令强制执行,此时域内每台Windows计算机会执行query user操作,然后将结果输出到域控制器的sysvol目录。我们能从中查找对应的计算机正在被哪个用户登录,达到定位PC的效果,如图2-78所示。
图2-75 修改sysvol目录的权限
图2-76 添加定时任务并执行创建的组策略
图2-77 查看组策略中添加的定时任务执行内容
图2-78 定位PC的结果