Usando o PowerShell para elevar o privilégio de contas locais

Usando o PowerShell para elevar o privilégio de contas locais

A escalação de privilégio é o uso por um invasor dos direitos atuais de uma conta para obter acesso adicional, geralmente um nível mais alto, ao sistema. Embora a escalação de privilégios possa ser o resultado da exploração de vulnerabilidades de dia zero ou do trabalho de hackers de primeira classe conduzindo um ataque direcionado ou malware bem disfarçado, na maioria das vezes é devido à configuração incorreta do computador ou da conta. Desenvolvendo o ataque ainda mais, os invasores usam várias vulnerabilidades individuais, que juntas podem levar a um vazamento de dados catastrófico.

Por que os usuários não devem ter direitos de administrador local?

Se você for um profissional de segurança, pode parecer óbvio que os usuários não devem ter direitos de administrador local, pois:

  • Torna suas contas mais vulneráveis ​​a vários ataques
  • Torna esses mesmos ataques muito mais graves

Infelizmente, para muitas organizações este ainda é um assunto muito controverso e às vezes acompanhado de discussões acaloradas (ver, por exemplo, meu supervisor diz que todos os usuários devem ser administradores locais). Sem entrar nos detalhes desta discussão, acreditamos que o invasor obteve direitos de administrador local no sistema sob investigação, seja por meio de um exploit ou porque as máquinas não estavam devidamente protegidas.

Etapa 1Resolução de DNS reversa com PowerShell

Por padrão, o PowerShell é instalado em muitas estações de trabalho locais e na maioria dos servidores Windows. E embora não seja sem exagero que é considerado uma ferramenta de automação e controle incrivelmente útil, é igualmente capaz de se transformar em um quase invisível malware sem arquivo (um programa de hacking que não deixa rastros do ataque).

Em nosso caso, o invasor começa a realizar o reconhecimento de rede usando um script do PowerShell, iterando sequencialmente no espaço de endereços IP da rede, tentando determinar se um determinado IP resolve para um host e, em caso afirmativo, qual é o nome de rede desse host.
Há muitas maneiras de realizar essa tarefa, mas usando o cmdlet Pegue-ADComputer é uma opção sólida porque retorna um conjunto realmente rico de dados sobre cada nó:

 import-module activedirectory Get-ADComputer -property * -filter { ipv4address -eq ‘10.10.10.10’}

Se a velocidade em grandes redes for um problema, um retorno de chamada DNS pode ser usado:

[System.Net.Dns]::GetHostEntry(‘10.10.10.10’).HostName

Usando o PowerShell para elevar o privilégio de contas locais

Esse método de listar hosts em uma rede é muito popular, já que a maioria das redes não usa um modelo de segurança de confiança zero e não monitora consultas DNS internas em busca de rajadas suspeitas de atividade.

Passo 2: Escolha um alvo

O resultado final desta etapa é obter uma lista de nomes de host de servidores e estações de trabalho que podem ser usados ​​para continuar o ataque.

Usando o PowerShell para elevar o privilégio de contas locais

Pelo nome, o servidor 'HUB-FILER' parece um alvo digno, já que com o tempo, os servidores de arquivos, via de regra, acumulam um grande número de pastas de rede e o acesso excessivo a elas por muitas pessoas.

A navegação com o Windows Explorer nos permite detectar a presença de uma pasta compartilhada aberta, mas nossa conta atual não pode acessá-la (provavelmente só temos direitos de listagem).

Passo 3: Aprenda ACLs

Agora, em nosso host HUB-FILER e compartilhamento de destino, podemos executar um script do PowerShell para obter a ACL. Podemos fazer isso na máquina local, pois já temos direitos de administrador local:

(get-acl hub-filershare).access | ft IdentityReference,FileSystemRights,AccessControlType,IsInherited,InheritanceFlags –auto

Resultado da execução:

Usando o PowerShell para elevar o privilégio de contas locais

A partir dele vemos que o grupo Usuários do Domínio tem acesso apenas à listagem, mas o grupo Helpdesk também tem direitos de alteração.

Etapa 4: identificação da conta

Correndo Get-ADGroupMember, podemos obter todos os membros deste grupo:

Get-ADGroupMember -identity Helpdesk

Usando o PowerShell para elevar o privilégio de contas locais

Nesta lista vemos uma conta de computador que já identificamos e já acessamos:

Usando o PowerShell para elevar o privilégio de contas locais

Etapa 5: usar o PSExec para executar como uma conta de computador

PsExec da Microsoft Sysinternals permite executar comandos no contexto da conta do sistema SYSTEM@HUB-SHAREPOINT, que sabemos ser membro do grupo-alvo do Helpdesk. Ou seja, só precisamos fazer:

PsExec.exe -s -i cmd.exe

Bem, então você tem acesso total à pasta de destino HUB-FILERshareHR, pois está trabalhando no contexto da conta de computador HUB-SHAREPOINT. E com esse acesso, os dados podem ser copiados para um dispositivo de armazenamento portátil ou recuperados e transmitidos pela rede.

Passo 6: Detectando este ataque

Essa vulnerabilidade específica de ajuste de privilégio de conta (contas de computador acessando compartilhamentos de rede em vez de contas de usuário ou contas de serviço) pode ser descoberta. No entanto, sem as ferramentas certas, isso é muito difícil de fazer.

Para detectar e prevenir esta categoria de ataques, podemos usar DataAdvantage para identificar grupos com contas de computador neles e, em seguida, negar acesso a eles. DataAlert vai além e permite que você crie uma notificação específica para esse tipo de cenário.

A captura de tela abaixo mostra uma notificação personalizada que será disparada sempre que uma conta de computador acessar dados em um servidor monitorado.

Usando o PowerShell para elevar o privilégio de contas locais

Próximas etapas com o PowerShell

Quer saber mais? Use o código de desbloqueio "blog" para acesso gratuito ao conteúdo completo Curso em vídeo do PowerShell e noções básicas do Active Directory.

Fonte: habr.com

Adicionar um comentário