Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
Pyramid — uma ferramenta para ajudar a operar nos pontos cegos dos EDRs | Kitploit
Ferramentas/GitHubGitHub/naksyn/pyramid
Pós-ExploraçãoTestes de PenetraçãoRed Teaming
GitHubnaksyn/pyramid

Pyramid

uma ferramenta para ajudar a operar nos pontos cegos dos EDRs

Ver Repositório
77590há 2 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Supported Python versions Twitter

Pyramid

imagem

O que é

Pyramid é composto por:

  1. um servidor HTTP/S Python que pode entregar arquivos criptografados (chacha, xor)
  2. módulos Python que podem carregar dependências em memória de ferramentas ofensivas como Bloodhound-py, secretsdump, LaZagne, Pythonnet, DonPAPI, pythonmemorymodule, paramiko, pproxy.
  3. dependências Python fixas (arquivos zip) que podem ser importadas em memória
  4. cradle Python que pode baixar, descriptografar e executar em memória módulos do Pyramid

Por que é útil

Pyramid é útil para realizar tarefas de pós-exploração de forma evasiva, executando ferramentas ofensivas a partir de um binário assinado (ex.: python.exe) importando suas dependências em memória. Isso é possível porque:

  1. o Python Embeddable package fornece um interpretador Python assinado com boa reputação;
  2. Python tem muitas aplicações legítimas, então há uma grande quantidade de telemetria diferente vindo do binário python.exe, já que o interpretador executa as APIs nativamente. Isso pode ser abusado operando dentro do processo do Python.exe e tentando se misturar na enorme "impressão digital de telemetria" do binário python.exe.
  3. Há uma falta de auditoria para execução de código Python - PEP-578 tentou resolver isso, mas o binário padrão do python.exe não possui capacidades de auditoria habilitadas por padrão.
  4. As operações podem ser feitas nativamente a partir do python.exe usando a linguagem Python para realizar tarefas de pós-exploração, como importar dinamicamente módulos Python para executar ferramentas ofensivas e executar Beacon Object Files (após algumas modificações no BOF) diretamente dentro do python.exe.

Para mais informações, consulte o slide deck da palestra "Python vs Modern Defenses" do DEFCON30 - Adversary Village e este post no meu blog.

Aviso Legal

Esta ferramenta foi criada para demonstrar uma estratégia de bypass contra EDRs baseada em algumas suposições de pontos cegos. É uma combinação de técnicas e ferramentas já existentes de uma maneira (até onde sei) inovadora que pode ajudar a evadir defesas. A única intenção da ferramenta é ajudar a comunidade a aumentar a conscientização sobre esse tipo de uso e acelerar uma resolução. Não é um 0day, não é um C2 completo e brilhante; Pyramid explora o que podem ser pontos cegos de EDRs e a ferramenta foi tornada pública para lançar luz sobre eles. Um parágrafo sobre defesa foi incluído, na esperança de que experientes blue-teamers possam contribuir e fornecer uma melhor resolução possível para o problema que Pyramid visa destacar. Todas as informações são fornecidas apenas para fins educacionais. Siga as instruções por sua própria conta e risco. Nem o autor nem seu empregador são responsáveis por qualquer dano ou perda direta ou consequente resultante de qualquer pessoa ou organização.

Créditos

O carregamento em memória do Pyramid foi inicialmente inspirado e expandido a partir do Empyre - Finder Class de xorrior

Contribuidores

snovvcrash construiu os módulos mod-DonPAPI.py - mod-LaZagne.py - mod-clr.py

Funcionalidades Atuais

As capacidades dos módulos do Pyramid podem ser executadas diretamente de um interpretador Python e atualmente são:

  1. Download, descriptografia e carregamento em memória de dependências Python.
  2. Carregamento dinâmico e execução de BloodHound Python, impacket secretsdump, DonPAPI, LaZagne.
  3. Carregamento em memória de uma dll ou exe buscada remotamente via PythonMemoryModule
  4. Proxy SOCKS5 através de túnel reverso SSH de encaminhamento de porta.
  5. Carregamento de assembly .NET em memória via Pythonnet

Principais funcionalidades do servidor HTTP Pyramid:

  1. criptografia sob demanda (chacha, xor) de arquivos a serem entregues
  2. geração automática de configurações do Servidor com base na linha de comando do pyramid
  3. decodificação e descriptografia de parâmetros HTTP (URL)
  4. Autenticação HTTP Básica

Principais funcionalidades do Cradle:

  1. Download, descriptografia e execução em memória de módulos do Pyramid.
  2. Dependência apenas de bibliotecas padrão do Python

Descrição

Pyramid pode ser usado com um Interpretador Python já existente em uma máquina alvo, ou descompactando um pacote Python embeddable oficial e então executando python.exe para executar um cradle de download Python. Esta é uma maneira simples de evitar criar um padrão de árvore de processos incomum e parecer com um uso normal de aplicativo Python.

No Pyramid, o cradle de download é usado para alcançar um Servidor Pyramid via HTTP/S para buscar módulos e dependências.

Os módulos são específicos para a funcionalidade que você deseja usar e contêm:

  1. Classe Finder personalizada para importar em memória as dependências necessárias (arquivos zip).
  2. Código para baixar as dependências necessárias.
  3. Lógica principal para o programa que você deseja executar (bloodhound, secretsdump, paramiko, etc.).

As dependências Python já foram corrigidas e modificadas para serem importadas em memória sem conflitos.

Atualmente existem 8 módulos Pyramid disponíveis:

  1. bh.py importará em memória e executará python-BloodHound.
  2. secretsdump.py importará em memória e executará Impacket secretsdump.
  3. shellcode.py é um injetor de shellcode simples em memória.
  4. DonPAPI.py importará em memória e executará DonPAPI. Os resultados e credenciais extraídos são salvos em disco no Diretório do Pacote Python Embeddable.
  5. LaZagne.py importará em memória e executará LaZagne
  6. tunnel-socks5 importa e executa paramiko em uma nova Thread para criar um encaminhamento de porta remoto SSH para um servidor SSH, em seguida, um servidor proxy socks5 é executado localmente no alvo e tornado acessível remotamente através do túnel SSH.
  7. clr importa Pythonnet para carregar e executar um assembly .NET em memória.
  8. pythonmemorymodule importa PythonMemoryModule para carregar uma dll da memória.

Uso

Iniciando o servidor

git clone https://github.com/naksyn/Pyramid

Gerar certificados SSL para o Servidor HTTP:

openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365

Se você quiser usar seu próprio certificado SSL assinado, certifique-se de:

  1. usar o formato pem
  2. renomear os arquivos para key.pem e cert.pem
  3. colocar ambos os arquivos na pasta Server.

Configurando o módulo

Como exemplo, se você quiser usar pythonmemorymodule com Pyramid, coloque seu payload na pasta Delivery_files, depois abra pythonmemorymodule.py e configure os parâmetros necessários no topo do script, como o nome do arquivo de payload e o procedimento que você deseja chamar após o PE ter sido carregado.

Descompactar o pacote embeddable e executar o cradle de download no alvo

Assim que o servidor Pyramid estiver em execução e o script Base estiver pronto, você pode definir a variável pyramid_module no arquivo Agent/cradle.py e executá-lo no alvo. O cradle foi construído para ser executado com as bibliotecas padrão do Python.

Exemplo

Exemplo de execução do Servidor HTTP Pyramid usando certificado SSL fornecendo Autenticação Básica, criptografando arquivos de entrega usando ChaCha e gerando automaticamente a configuração do servidor nos módulos e imprimindo um cradle copiável para pythonmemorymodule:

root@kitploit:~
python3 pyramid.py -p 443 -ssl -u testuser -pass Sup3rP4ss! -enc "chacha20" -passenc "TestPass1" -server "192.168.1.2" -generate -setcradle pythonmemorymodule.py

Ao iniciar, pyramid.py analisará sua própria estrutura de pastas para procurar key.pem, cert.pem e entregará arquivos da pasta Server.

https://github.com/naksyn/Pyramid/assets/59816245/4fbc997e-af2d-4ead-881b-ee108c91d195

Dica para executar Pyramid sem prompt visível

Para executar Pyramid sem exibir um prompt python.exe visível, você pode usar pythonw.exe, que não abrirá uma janela de console na execução e está contido no mesmo Pacote Windows Embeddable. A imagem a seguir ilustra um exemplo de uso do pythonw.exe para executar base-tunnel-socks5.py em uma máquina remota sem abrir uma janela de console do python.exe.

image

Limitações

Carregar dinamicamente módulos Python não suporta nativamente a importação de arquivos *.pyd que são essencialmente dlls. A única solução pública que conheço que resolve esse problema é fornecida pela Scythe (execução em memória) ao reengenharia do interpretador CPython. Para não perder a assinatura digital, uma solução que permitiria usar o pacote Python embeddable nativo envolve descartar em disco os arquivos pyd ou wheels necessários. Isso não deve ter implicações significativas de OPSEC na maioria dos casos, no entanto, lembre-se de que os seguintes wheels contendo arquivos pyd são descartados em disco para permitir a conclusão do carregamento dinâmico: *. Cryptodome - necessário para Bloodhound-Python, Impacket, DonPAPI e LaZagne *. bcrypt, cryptography, nacl, cffi - necessário para paramiko

Como se defender desta técnica

Python.exe é um binário assinado com boa reputação e não fornece visibilidade sobre código Python dinâmico. Pyramid explora essas propriedades de evasão realizando tarefas ofensivas dentro do mesmo processo python.exe.

Por esse motivo, uma das soluções mais eficientes seria bloquear por padrão binários e dlls assinados pela Python Foundation, criando exceções apenas para usuários que realmente precisam usar binários Python.

Alertas sobre downloads de pacotes embeddable também podem ser levantados.

Implantar PEP-578 também é viável, embora complexo; esta é uma implementação de exemplo. No entanto, implantar PEP-578 sem bloquear o uso de binários Python padrão pode tornar essa contramedida inútil.

Baixar ferramenta