Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
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
Inline-Execute-PE — Esegui eseguibili Windows non gestiti nei Beacon di CobaltStrike | Kitploit
Strumenti/GitHubGitHub/octoberfest7/inline-execute-pe
Escalation di Privilegi
GitHuboctoberfest7/inline-execute-pe

Inline-Execute-PE

Esegui eseguibili Windows non gestiti nei Beacon di CobaltStrike

Vedi Repository
72310373 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

Inline-Execute-PE

DICHIARAZIONE DI NON RESPONSABILITÀ:

Questo progetto è complesso e la mancata comprensione del suo funzionamento e un test adeguato possono causare il crash dei Beacon e la perdita di accesso!

Ti consiglio vivamente di leggere tutta la documentazione fino alla sezione "Considerazioni progettuali e commento"!

Introduzione

Inline-Execute-PE è una suite di file oggetto Beacon (BOF) e un corrispondente script Aggressor per CobaltStrike che consente agli Operatori di caricare eseguibili Windows non gestiti nella memoria del Beacon ed eseguirli, recuperando l'output e visualizzandolo nella console del Beacon.

Questo consente agli Operatori di utilizzare molti strumenti di terze parti (Mimikatz, Dsquery, strumenti Sysinternals, ecc.) senza doverli scrivere su disco, riformattarli in codice indipendente dalla posizione usando uno strumento come Donut, o creare un nuovo processo per eseguirli.

Questi eseguibili vengono mappati nella memoria del Beacon in modo da poter essere eseguiti ripetutamente senza doverli inviare sulla rete, allocare nuova memoria e creare un nuovo processo conhost.exe ogni volta.

Gli eseguibili caricati nei Beacon sono accessibili e possono essere eseguiti da tutti i client CobaltStrike connessi al Team Server di CobaltStrike.

Inline-Execute-PE è stato progettato per Beacon x64 ed eseguibili Windows C o C++ x64 compilati con Mingw o Visual Studio. Questo progetto non supporta eseguibili x86 o eseguibili x64 scritti in un linguaggio diverso o compilati con un compilatore diverso.

Configurazione

Clona il repository ed esegui opzionalmente make per ricompilare i BOF.

Carica Inline-Execute-PE.cna nel client CobaltStrike. Assicurati che la directory in cui è in esecuzione CobaltStrike sia scrivibile dal tuo utente; Inline-Execute-PE crea lì un file di testo (petable.txt) per garantire la disponibilità dei dati necessari al funzionamento di Inline-Execute-PE.

Comandi

Inline-Execute-PE comprende 3 comandi orientati al target che eseguono BOF e 3 comandi interni che manipolano la struttura dati del progetto:

Orientati al target:

  1. peload
  2. perun
  3. peunload

Struttura dati interna:

  1. petable
  2. peconfig
  3. pebroadcast

peload

peload è l'inizio di Inline-Execute-PE. Questo comando viene utilizzato per caricare un PE nella memoria del Beacon. Esegue le seguenti azioni principali:

  1. Invia il PE specificato sulla rete al Beacon OPPURE invia il nome del PE da leggere dal disco sulla macchina target
  2. Crea una struttura nella memoria del Beacon per contenere vari puntatori e handle necessari a Inline-Execute-PE durante il suo ciclo di vita
  3. Alloca memoria nel Beacon e scrive il PE con protezione RW
  4. Cifra XOR il PE in memoria usando una chiave specificata dall'utente
  5. Alloca un altro blocco di memoria e copia il PE cifrato XOR in esso. Ciò è necessario per poter "ripristinare" il PE per le esecuzioni successive
  6. Genera un processo figlio conhost.exe sotto il Beacon per inizializzare stdin/stdout/stderr
  7. Reindirizza stdout e stderr a una pipe anonima in modo che l'output del PE possa essere catturato

perun

perun è il secondo passo di Inline-Execute-PE. Esegue le seguenti azioni principali:

  1. Invia gli argomenti della riga di comando sulla rete al Beacon
  2. Decifra XOR il PE in memoria
  3. Corregge la tabella di importazione del PE, hookando determinate API relative agli argomenti della riga di comando e all'uscita dai processi
  4. Cambia la protezione della memoria del PE in RWX
  5. Esegue il PE in un proprio thread
  6. Cattura l'output dal PE e lo restituisce a CobaltStrike
  7. Ripristina la protezione della memoria del PE in RW
  8. Sovrascrive il PE in memoria con la copia XOR creata durante peload

peunload

peunload viene chiamato per rimuovere il PE dalla memoria del Beacon quando un Operatore ha finito o desidera caricare un PE diverso. Esegue le seguenti azioni principali:

  1. Chiude gli handle e i puntatori a file creati durante peload
  2. Termina il processo conhost.exe creato durante peload
  3. Azzera e poi libera entrambe le copie del PE in memoria
  4. Tenta di scaricare eventuali DLL caricate dal PE nel processo Beacon (opzionale)

petable

petable viene utilizzato per visualizzare informazioni riguardanti tutti i PE attualmente caricati nei Beacon.

Ogni client CobaltStrike ha il proprio petable; Inline-Execute-PE fa di tutto per garantire la sincronizzazione dei suoi dati tra tutti i client CobaltStrike connessi in modo che i PE possano essere utilizzati da tutti gli Operatori. Per maggiori informazioni, vedi "Considerazioni progettuali e commento".

image

peconfig

peconfig viene utilizzato per configurare le opzioni relative al funzionamento di Inline-Execute-PE. Le due opzioni attuali che possono essere modificate sono:

  1. Timeout. Questo stabilisce quanto tempo perun attenderà il completamento del PE prima di terminarlo. Esiste come salvaguardia nel caso in cui vengano forniti argomenti errati a un PE che ne causino l'esecuzione senza fine/il mancato completamento. Questa impostazione è di 60 secondi per impostazione predefinita, ma può essere modificata per supportare PE con tempi di esecuzione più lunghi.
  2. UnloadLibraries. Questa opzione controlla se peunload tenterà di liberare le DLL dal processo Beacon caricate dal PE. È impostata su TRUE per impostazione predefinita. Alcuni PE causano problemi quando le DLL vengono scaricate dal processo Beacon e possono causare il crash del Beacon, nel qual caso è meglio lasciare tutte le DLL caricate dal PE nel processo Beacon. Ciò è stato osservato quando si utilizza powershell.exe (forse perché carica il CLR .NET nel processo Beacon).

pebroadcast

pebroadcast può essere utilizzato per trasmettere manualmente il contenuto del petable di un client a tutti gli altri client CobaltStrike connessi.

Ogni altro client CobaltStrike aggiornerà il proprio petable con i dati trasmessi. Non dovrebbe mai essere realmente necessario, ma la funzione esiste per sicurezza.

Utilizzo

Usa peload per caricare un PE nella memoria del Beacon image

In alternativa, se c'è un PE sulla macchina target che vuoi usare senza creare un nuovo processo, fornisci il percorso e lo switch --local image

Chiama perun, passando eventuali argomenti al PE caricato image

I doppi apici negli argomenti devono essere escaped con backslash image

Se hai identificato che un PE causa problemi quando si tenta di liberare le DLL durante lo scaricamento, usa peconfig per impostare unloadlibraries su false image

Una volta che hai finito di usare un PE, chiama peunload per pulirlo dal Beacon image

Un PE diverso ora può essere caricato nel Beacon image

Scarica lo strumento