Darren Mar-Elia

Nota: Actualizado em 30 de Março de 2022

Numa anterior Conferência sobre Protecção da Identidade Híbrida, vários de nós falámos sobre a utilização contínua do Active Directory como um assunto de interesse em ataques de malware. Quer se trate de explorar o AD para obter informações sobre o acesso privilegiado, de comprometer as contas de utilizador que conduzem a níveis crescentes de privilégio no AD ou de visar propositadamente os controladores de domínio AD com ransomware, o Active Directory tem actualmente um grande alvo nas suas costas. Como resultado, tem havido muita investigação e discussão sobre segurança acerca dos diferentes caminhos para comprometer o AD. Uma variedade de métodos inteligentes aproveita as permissões mal delegadas do AD para assumir o controlo de entidades de segurança privilegiadas do AD. Um desses métodos envolve chegar ao ponto em que o atacante pode persistir no ambiente sem ser detectado. Uma das formas de o fazer é criar ou assumir o controlo de uma conta de utilizador privilegiada no AD e, em seguida, ocultar essa conta dos olhos de administradores curiosos.

Leitura relacionada

Por exemplo, se tiverem permissões suficientes num objecto de utilizador, um atacante pode assumir a propriedade do utilizador, definir um ACE de Negar Leitura para todos os utilizadores nesse objecto e o objecto fica essencialmente oculto, como se mostra aqui:

Figura 1: Um utilizador com a função negar leitura

Pode ainda impedir que o utilizador seja visível por outros administradores, negando a permissão "List Contents" a Everyone na UO oculta na captura de ecrã acima. Isto evitaria que qualquer administrador normal reparasse que este utilizador estava presente e um atacante poderia potencialmente utilizar a conta sem ser descoberto (ou pelo menos encontrado).

O amigo da Semperis, Michael Dubinsky(@MichaelDubinsky), escreveu uma excelente publicação no blogue sobre este fenómeno de ocultação, juntamente com um script do PowerShell para detectar objectos de utilizador ocultos, enumerando os Identificadores Relativos (RIDs) deixados no conjunto de RIDs do AD e tentando depois chegar ao SID de cada objecto. Se um SID procurado não puder ser encontrado utilizando uma chamada LDAP padrão, o script indicará que não tem acesso a esse objecto, o que poderá indicar um objecto oculto.

O nosso CTO Guy Teverovsky criou uma abordagem alternativa e um utilitário, Detetor de Objectos Ocultos ADque atinge o objetivo de encontrar objetos ocultos do Active Directory usando uma nova abordagem. Ele usa essencialmente as mesmas chamadas de API que nosso Directory Services Protector produto utiliza, para consultar o AD ao nível da replicação do diretório. Esta chamada de nível inferior permite-nos determinar o número de objectos que o AD conhece, independentemente das ACLs em vigor no objeto, e compará-lo com o número de objectos a que temos permissão. Em seguida, a ferramenta devolve todos os objectos encontrados através da nossa chamada de replicação, que não foram encontrados através de chamadas LDAP normais. O utilitário tem de ser executado como utilizador privilegiado no AD, mas encontra facilmente o meu objeto "Hidden User" (Utilizador oculto), como mostra a saída do utilitário abaixo.

utilitário de objectos ocultos do active directory
Figura 2: Execução do Detector de Objectos Ocultos AD para encontrar objectos ocultos

Uma coisa boa sobre este utilitário é que pode encontrar qualquer tipo de objeto oculto - não apenas objectos de utilizador. Pode descarregar o utilitário aqui AD Hidden Object Detetor e experimentá-lo. Diga-nos o que pensa e, se encontrar objectos ocultos do active directory, talvez seja altura de ir mais fundo e ver quem está à espreita!