O que é isso
Pyramid é um conjunto de scripts Python e dependências de módulos que podem ser usados para evitar EDRs. O principal objetivo da ferramenta é executar tarefas ofensivas, aproveitando algumas propriedades de evasão do Python e procurando um uso legítimo do aplicativo Python. Isso pode ser alcançado porque:
- o pacote Python Embeddable fornece um interpretador Python assinado com boa reputação ;
- O Python tem muitos aplicativos legítimos, portanto, há muitas telemetrias diferentes provenientes do binário python.exe, pois o interpretador executa as APIs nativamente. Isso pode ser abusado operando dentro do processo Python.exe e tentando misturar a enorme “impressão digital de telemetria” do binário python.exe.
- Há uma falta de auditoria para a execução do código Python – o PEP-578 tentou resolver isso, mas o binário python.exe padrão não possui recursos de auditoria ativados por padrão.
- As operações podem ser feitas nativamente de dentro do python.exe usando nativamente a linguagem Python para executar tarefas pós-exploração, como importar módulos Python dinamicamente para executar ferramentas ofensivas e executar arquivos de objeto Beacon (após algumas modificações do BOF) diretamente no python.exe.
Para obter mais informações, consulte o deck de slides DEFCON30 – Adversary village talk “Python vs Modern Defenses” e esta postagem no meu blog .
Recursos atuais
Os recursos da pirâmide são executados diretamente do processo python.exe e atualmente são:
- Carregamento dinâmico de BloodHound Python, empacket secretsdump e paramiko.
- Execução de BOFs usando injeção de shellcode em processo.
- Injeção em processo de um agente C2 e tunelamento de seu tráfego com encaminhamento de porta SSH local.
Descrição da ferramenta
O Pyramid deve ser usado para descompactar um pacote Python incorporável oficial e, em seguida, executar python.exe para executar uma base de download do Python. Essa é uma maneira simples de evitar a criação de um padrão de árvore de processo incomum e a aparência de um uso normal de aplicativo Python.
No Pyramid, a base de download é usada para acessar um Pyramid Server (servidor HTTPS simples com autenticação) para buscar scripts e dependências de base.
Os scripts base são específicos para o recurso que você deseja usar e contêm:
- Classe Custom Finder para dependências necessárias de importação na memória (arquivos zip).
- Código para baixar as dependências necessárias.
- Lógica principal para o módulo que você deseja executar (bloodhound, secretsdump, paramiko etc.).
BOFs são executados por meio de um script base contendo o shellcode resultante de bof2shellcode e o código de injeção em processo relacionado.
As dependências do Python já foram corrigidas e modificadas para serem importadas na memória sem conflitos.
Existem atualmente 4 scripts de base principais disponíveis:
- O script base-bh.py importará na memória e executará python-BloodHound.
- O script base-secretsdump.py importará na memória e executará o Impacket secretsdump.
- O script base-BOF-lsass.py está usando uma versão simplificada do nanodump para despejar lsass de python.exe. Isso é obtido com a saída de shellcode de injeção na memória obtida de bof2shellcode e COFFloader. Para fazer BOFs complexos funcionarem com essa técnica, eles devem primeiro ser adaptados para execução em Python.
- importação de script base-tunnel-inj.py e executa paramiko em um novo Thread para criar uma porta local SSH para um servidor SSH remoto. Posteriormente, um shellcode pode ser injetado localmente em python.exe.
11 thoughts on “Pyramid: scripts Python para bypass EDRs”
Comments are closed.