Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Pyramid — uno strumento per aiutare a operare nei punti ciechi degli EDR | Kitploit
Strumenti/GitHubGitHub/naksyn/pyramid
Post-ExploitPenetration TestingRed Teaming
GitHubnaksyn/pyramid

Pyramid

uno strumento per aiutare a operare nei punti ciechi degli EDR

Vedi Repository
775902 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Supported Python versions Twitter

Pyramid

immagine

Cos'è

Pyramid è composto da:

  1. un server HTTP/S Python che può consegnare file crittografati (chacha, xor)
  2. moduli Python che possono caricare in memoria le dipendenze di strumenti offensivi come Bloodhound-py, secretsdump, LaZagne, Pythonnet, DonPAPI, pythonmemorymodule, paramiko, pproxy.
  3. dipendenze Python fisse (file zip) che possono essere importate in memoria
  4. cradle Python che può scaricare, decrittare ed eseguire in memoria i moduli di Pyramid

Perché è utile

Pyramid è utile per svolgere attività di post-exploitation in modo elusivo, eseguendo strumenti offensivi da un binario firmato (ad esempio python.exe) importando le loro dipendenze in memoria. Ciò è possibile perché:

  1. il pacchetto Python Embeddable fornisce un interprete Python firmato con buona reputazione;
  2. Python ha molte applicazioni legittime, quindi c'è una grande quantità di telemetria diversa proveniente dal binario python.exe poiché l'interprete esegue nativamente le API. Ciò può essere abusato operando all'interno del processo Python.exe e cercando di confondersi nell'enorme "impronta di telemetria" del binario python.exe.
  3. Manca l'audit per l'esecuzione del codice Python - PEP-578 ha provato a risolvere questo problema, ma il binario python.exe standard non ha capacità di audit abilitate per impostazione predefinita.
  4. Le operazioni possono essere eseguite nativamente dall'interno di python.exe usando il linguaggio Python per svolgere attività di post-exploitation come importare dinamicamente moduli Python per eseguire strumenti offensivi ed eseguire Beacon Object Files (dopo alcune modifiche BOF) direttamente all'interno di python.exe.

Per maggiori informazioni, consulta la slide deck del talk "Python vs Modern Defenses" al DEFCON30 - Adversary village e questo post sul mio blog.

Disclaimer

Questo strumento è stato creato per dimostrare una strategia di bypass contro gli EDR basata su alcune ipotesi di punti ciechi. È una combinazione di tecniche e strumenti già esistenti in un modo (al meglio delle mie conoscenze) innovativo che può aiutare a eludere le difese. L'unico intento dello strumento è aiutare la comunità ad aumentare la consapevolezza su questo tipo di utilizzo e accelerare una risoluzione. Non è un 0day, non è un C2 completo e lucido, Pyramid sfrutta quelli che potrebbero essere punti ciechi degli EDR e lo strumento è stato reso pubblico per fare luce su di essi. È stato incluso un paragrafo sulla difesa, sperando che i blue-teamer esperti possano contribuire e fornire una migliore risoluzione possibile sul problema che Pyramid mira a evidenziare. Tutte le informazioni sono fornite solo a scopo educativo. Segui le istruzioni a tuo rischio. Né l'autore né il suo datore di lavoro sono responsabili per danni o perdite diretti o consequenziali derivanti da qualsiasi persona o organizzazione.

Crediti

Il caricamento in memoria di Pyramid è stato inizialmente ispirato ed espanso dal xorrior 's Empyre - Finder Class

Contributori

snovvcrash ha costruito i moduli mod-DonPAPI.py - mod-LaZagne.py - mod-clr.py

Funzionalità attuali

Le capacità dei moduli di Pyramid possono essere eseguite direttamente da un interprete Python e sono attualmente:

  1. Scaricamento, decrittazione e caricamento in memoria delle dipendenze Python.
  2. Caricamento dinamico ed esecuzione di BloodHound Python, impacket secretsdump, DonPAPI, LaZagne.
  3. Caricamento in memoria di una dll o exe recuperata da remoto tramite PythonMemoryModule
  4. Proxy SOCKS5 attraverso un tunnel SSH di port forwarding inverso.
  5. Caricamento in memoria di assembly .NET tramite Pythonnet

Caratteristiche principali del server HTTP Pyramid:

  1. crittografia al volo (chacha,xor) dei file da consegnare
  2. generazione automatica delle configurazioni del server basata sulla riga di comando di pyramid
  3. decodifica e decrittazione dei parametri HTTP (URL)
  4. Autenticazione HTTP di base

Caratteristiche principali del Cradle:

  1. Scaricamento, decrittazione ed esecuzione in memoria dei moduli di Pyramid.
  2. Dipendenze solo dalle librerie standard di Python

Descrizione

Pyramid può essere utilizzato con un interprete Python già esistente su una macchina target, o decomprimendo un pacchetto Python embeddable ufficiale e poi eseguendo python.exe per eseguire un cradle di download Python. Questo è un modo semplice per evitare di creare pattern di alberi dei processi insoliti e assomigliare a un normale utilizzo di un'applicazione Python.

In Pyramid, il cradle di download viene utilizzato per raggiungere un server Pyramid tramite HTTP/S per recuperare moduli e dipendenze.

I moduli sono specifici per la funzionalità che si desidera utilizzare e contengono:

  1. Classe Finder personalizzata per importare in memoria le dipendenze richieste (file zip).
  2. Codice per scaricare le dipendenze richieste.
  3. Logica principale per il programma che si desidera eseguire (bloodhound, secretsdump, paramiko, ecc.).

Le dipendenze Python sono già state fissate e modificate per essere importate in memoria senza conflitti.

Attualmente sono disponibili 8 moduli di Pyramid:

  1. bh.py importerà ed eseguirà in memoria python-BloodHound.
  2. secretsdump.py importerà ed eseguirà in memoria Impacket secretsdump.
  3. shellcode.py è un semplice injector di shellcode in memoria.
  4. DonPAPI.py importerà ed eseguirà in memoria DonPAPI. I risultati e le credenziali estratte vengono salvati su disco nella directory del pacchetto Python Embeddable.
  5. LaZagne.py importerà ed eseguirà in memoria LaZagne
  6. tunnel-socks5 importa ed esegue paramiko in un nuovo thread per creare un port forwarding remoto SSH verso un server SSH, quindi un server proxy socks5 viene eseguito localmente sul target e reso accessibile da remoto attraverso il tunnel SSH.
  7. clr importa Pythonnet per caricare ed eseguire un assembly .NET in memoria.
  8. pythonmemorymodule importa PythonMemoryModule per caricare una dll dalla memoria.

Utilizzo

Avviare il server

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

Genera certificati SSL per il server HTTP:

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

Se desideri utilizzare il tuo certificato SSL firmato, assicurati di:

  1. usare il formato pem
  2. rinominare i file in key.pem e cert.pem
  3. posizionare entrambi i file nella cartella Server.

Configurare il modulo

Ad esempio, se desideri utilizzare pythonmemorymodule con Pyramid, inserisci il tuo payload nella cartella Delivery_files, quindi apri pythonmemorymodule.py e configura i parametri necessari all'inizio dello script, come il nome del file del payload e la procedura che desideri chiamare dopo che il PE è stato caricato.

Decomprimere il pacchetto embeddable ed eseguire il cradle di download sul target

Una volta che il server Pyramid è in esecuzione e lo script Base è pronto, puoi impostare la variabile pyramid_module nel file Agent/cradle.py ed eseguirlo sul target. Il cradle è progettato per essere eseguito con le librerie standard di Python.

Esempio

Esempio di esecuzione del server HTTP Pyramid utilizzando un certificato SSL che fornisce l'autenticazione di base, crittografando i file di consegna con ChaCha e generando automaticamente la configurazione del server nei moduli e stampando un cradle pronto per l'uso per 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

All'avvio pyramid.py analizzerà la propria struttura di cartelle per cercare key.pem, cert.pem e consegnerà i file dalla cartella Server.

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

Suggerimento per eseguire Pyramid senza prompt visibile

Per eseguire Pyramid senza mostrare un prompt python.exe visibile, puoi sfruttare pythonw.exe che non apre una finestra della console all'esecuzione ed è contenuto nello stesso pacchetto Windows Embeddable. L'immagine seguente illustra un esempio di utilizzo di pythonw.exe per eseguire base-tunnel-socks5.py su una macchina remota senza aprire una finestra della console python.exe.

immagine

Limitazioni

Il caricamento dinamico dei moduli Python non supporta nativamente l'importazione di file *.pyd che sono essenzialmente dll. L'unica soluzione pubblica a mia conoscenza che risolve questo problema è fornita da Scythe *(in-memory-execution) riprogettando l'interprete CPython. Per non perdere la firma digitale, una soluzione che consentirebbe di utilizzare il pacchetto Python embeddable nativo prevede di salvare su disco i file pyd o wheel necessari. Ciò non dovrebbe avere implicazioni OPSEC significative nella maggior parte dei casi, tuttavia tieni presente che i seguenti wheel contenenti file pyd vengono salvati su disco per consentire il completamento del caricamento dinamico: *. Cryptodome - necessario per Bloodhound-Python, Impacket, DonPAPI e LaZagne *. bcrypt, cryptography, nacl, cffi - necessario per paramiko

Come difendersi da questa tecnica

Python.exe è un binario firmato con buona reputazione e non fornisce visibilità sul codice Python dinamico. Pyramid sfrutta queste proprietà elusive svolgendo attività offensive dall'interno dello stesso processo python.exe.

Per questo motivo, una delle soluzioni più efficienti sarebbe bloccare per impostazione predefinita i binari e le dll firmati dalla Python Foundation, creando eccezioni solo per gli utenti che hanno effettivamente bisogno di utilizzare i binari Python.

È anche possibile attivare avvisi per i download di pacchetti embeddable.

Anche la distribuzione di PEP-578 è fattibile, sebbene complessa, questo è un esempio di implementazione. Tuttavia, distribuire PEP-578 senza bloccare l'uso dei binari Python standard potrebbe rendere questa contromisura inutile.

Scarica lo strumento