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
BOF_RunPe — BOF per eseguire PE in Cobalt Strike Beacon senza creazione della console | Kitploit
Strumenti/GitHubGitHub/ntdallas/bof_runpe
Memory ForensicsShellcodePost-ExploitRed Teaming
GitHubntdallas/bof_runpe

BOF_RunPe

BOF per eseguire PE in Cobalt Strike Beacon senza creazione della console

Vedi Repository
200258 mesi 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

BOF_RunPE

BOF RunPE è un Beacon Object File per Cobalt Strike che esegue file PE interamente in memoria all'interno del processo del beacon. A differenza del tradizionale fork&run, nessun processo figlio viene generato, nessuna console viene creata e nessuna pipe viene utilizzata - tutto l'output viene catturato tramite hooking IAT e reindirizzato alla console del beacon.

Architettura: solo x64

Panoramica

root@kitploit:~
┌──────────────────────────────────────────────────────────────┐
│                   Cobalt Strike Beacon                       │
│                    (Current Process)                         │
└────────────────────────┬─────────────────────────────────────┘
                         │
                         │  beacon_inline_execute()
                         │
                         ▼
┌──────────────────────────────────────────────────────────────┐
│                    BOF RunPE                                 │
│  ┌────────────────────────────────────────────────────────┐  │
│  │  VxTable + Draugr Initialization                       │  │
│  │  (Syscall Resolution + Stack Spoofing)                 │  │
│  └──────────────────────┬─────────────────────────────────┘  │
│                         │                                    │
│  ┌──────────────────────▼─────────────────────────────────┐  │
│  │  PE Mapping                                            │  │
│  │  - Section Copy    - IAT Patching (with hooks)         │  │
│  │  - Relocations     - Memory Protection                 │  │
│  └──────────────────────┬─────────────────────────────────┘  │
│                         │                                    │
│  ┌──────────────────────▼─────────────────────────────────┐  │
│  │  Thread Execution                                      │  │
│  │  - Spoofed Start Address                               │  │
│  │  - RIP Hijacking to Entry Point                        │  │
│  │  - Output Redirection via Hooks                        │  │
│  └────────────────────────────────────────────────────────┘  │
└──────────────────────────────────────────────────────────────┘

Caratteristiche Principali

  • Nessuna Creazione di Processi: il PE viene eseguito all'interno del processo del beacon
  • Nessuna Console/Pipe: Output catturato tramite hook printf/WriteConsole
  • Metodi di Allocazione Multipli: Heap, VirtualAlloc, Module Stomping
  • Caricamento Proxy: Timer Queue, RegisterWait o chiamate dirette
  • Ntdll Unhooking: Copia fresca opzionale dal disco
  • RWX: Allocazione opzionale della memoria in RWX
  • Thread Start Spoofing: Indirizzo di partenza legittimo con hijacking RIP

Opzioni di Configurazione

Il comportamento del BOF può essere modificato in Additionals postex -> RunPe Config

Custom BOF

Metodi Proxy

MetodoDescrizione
NoneChiamate API dirette
DraugrChiamate API con spoofing dello stack

Metodi di Allocazione

MetodoDescrizione
HeapHeap privato tramite RtlCreateHeap con Draugr
VirtualAllocNtAllocateVirtualMemory con Draugr
Module stompingSovrascrive la sezione .text di una DLL legittima

Opzioni Generali

OpzioneDescrizione

Thread Spoofing

OpzioneDescrizione
ModuleNameModulo legittimo per l'indirizzo di avvio (es. Kernel32.dll)
ProcedureName

Cattura dell'Output

Tutto l'output del PE viene reindirizzato alla console del beacon tramite hook IAT. Nessuna finestra di console o named pipe viene creata.

Tecniche di Evasione

Vettori di Rilevamento

Telemetria del Kernel (ETW-TI)

NtGetContextThread / NtSetContextThread:

  • Manipolazione del contesto del thread su thread sospesi e poi ripresa

Operazioni di Memoria:

  • Allocazione NtAllocateMemory, può essere in RWX (dipende dalla configurazione)
  • Transizioni NtProtectVirtualMemory (RW → RX)
  • La memoria eseguibile nelle regioni heap è sospetta (dipende dalla configurazione)
  • Module stomping rilevabile tramite mancata corrispondenza dell'hash della sezione (dipende dalla configurazione)

Indicatori Comportamentali

  • Thread sospeso creato, acquisizione del contesto e modifica del valore di RIP
  • Memoria heap marcata come eseguibile (se l'allocatore di memoria è heap)
  • DLL caricata con DONT_RESOLVE_DLL_REFERENCES (se l'allocatore di memoria è module stomping)
  • Sezione .text di ntdll modificata (se unhooking abilitato)

Utilizzo

Caricamento dello Script

root@kitploit:~
Cobalt Strike → Script Manager → Load → BOF_RunPe.cna

Comandi Aggressor

root@kitploit:~
beacon> runpe /path/to/binary.exe --arg1 value1

Mimikatz

root@kitploit:~
beacon> help runpe

Help

Compilazione

Richiede GCC 13 (mingw-w64). Usa il Dockerfile fornito:

root@kitploit:~
sudo docker build -t ubuntu-gcc-13 .
sudo docker run --rm -it -v "$PWD":/work -w /work ubuntu-gcc-13:latest make

Output: Bin/runpe.o

Limitazioni

LimitazioneDescrizione
CETControl-flow Enforcement Technology potrebbe bloccare i frame di stack sintetici

Crediti / Risorse utilizzate per lo sviluppo

Repository e Blogpost

  • https://github.com/susMdT/LoudSunRun
  • https://github.com/Octoberfest7/Inline-Execute-PE
  • https://www.coresecurity.com/core-labs/articles/running-pes-inline-without-console
  • https://0xdarkvortex.dev/proxying-dll-loads-for-hiding-etwti-stack-tracing/

Libri

  • Windows Native API Programming di Pavel Yosifovich
  • Windows Internals, Part 1 di Pavel Yosifovich
  • Windows Internals, Part 2 di Andrea Allievi
Scarica lo strumento
Regwait
Callback RegisterWaitForSingleObject
TimerCallback Timer Queue
AllocRWXAlloca come RWX (vs transizione RW→RX)
UnhookNtdllSostituisce ntdll.dll .text con una copia fresca dal disco
TimeoutTimeout di esecuzione in millisecondi (0 = infinito)
StompModulePercorso DLL per module stomping (es. chakra.dll)
Nome della funzione all'interno del modulo (es. BaseThreadInitThunk)
OffsetOffset dall'inizio della funzione
Funzione HookataDestinazione
GetCommandLineA/WRestituisce argomenti spoofati
__getmainargs / __wgetmainargsInizializzazione argomenti CRT
printf / wprintfReindirizzamento BeaconPrintf
WriteConsoleA/WReindirizzamento BeaconPrintf
__stdio_common_vfprintfFunzioni di stampa UCRT
ExitProcess / exitConvertito in ExitThread
TecnicaElude
Indirect SyscallsHook API in userland (EDR/AV)
Draugr Stack SpoofingIspezione dello stack di chiamate
Thread Start SpoofingAnalisi dell'indirizzo di avvio del thread
Module StompingRilevamento di memoria non mappata
Private Heap AllocationMonitoraggio di VirtualAlloc
Ntdll UnhookingSovrascrittura in memoria di ntdll con Ntdll dal disco
IAT Hooking (no pipes)Monitoraggio delle named pipe
Solo x64
Nessun supporto x86/WoW64
Visibilità del KernelCreazione di thread visibile ai callback del kernel
.NETEseguibili gestiti non supportati