Pyramid: scripts Python para bypass EDRs

Pyramid é um conjunto de scripts Python e dependências de módulos que podem ser usados ​​para evitar EDRs.
Compartilhe

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:

  1. o pacote Python Embeddable fornece um interpretador Python assinado com boa reputação ;
  2. 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.
  3. 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.
  4. 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 .

Pyramid: scripts Python para bypass EDRs

Recursos atuais

Os recursos da pirâmide são executados diretamente do processo python.exe e atualmente são:

  1. Carregamento dinâmico de BloodHound Python, empacket secretsdump e paramiko.
  2. Execução de BOFs usando injeção de shellcode em processo.
  3. 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:

  1. Classe Custom Finder para dependências necessárias de importação na memória (arquivos zip).
  2. Código para baixar as dependências necessárias.
  3. 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:

  1. O script base-bh.py importará na memória e executará python-BloodHound.
  2. O script base-secretsdump.py importará na memória e executará o Impacket secretsdump.
  3. 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.
  4. 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.

Instalar e usar