Skip to main content

c2-bof-development

Beacon Object File (BOF) development. Use when creating, porting, or debugging BOFs for C2 frameworks including API usage, DFR conventions, and compilation.

Ir a la instalación

Datos de origen

Repositorio
SpecterOps/skills
Última actividad en el origen
14 de agosto de 2026 a las 01:16
Idioma detectado de SKILL.md
inglés
Estrellas
657
Forks
72

Opciones de instalación

De forma predeterminada está seleccionado el prompt que primero revisa el origen. Puedes cambiar a un comando directo o descargar una copia local.

Revisa los archivos de origen

Lee SKILL.md y los archivos complementarios que muestra SkillsMP antes de decidir si quieres instalarlo.

Explorador de archivos
8 archivos

Mostrando SKILL.md

SKILL.md
Instrucciones de origen · Vista previa de solo lectura
name
c2-bof-development
description
Beacon Object File (BOF) development. Use when creating, porting, or debugging BOFs for C2 frameworks including API usage, DFR conventions, and compilation.
metadata
{"author":"GhostWorks"}
# BOF Development Skill ## When to Use Use this skill when developing BOF files (Beacon Object Files): - Creating new BOFs from scratch - Porting existing tools or repos into BOF format - Looking up BOF API functions (BeaconPrintf, BeaconDataParse, etc.) - Understanding Dynamic Function Resolution (DFR) conventions - Compiling and building BOFs - Linting BOF code with `boflint.py` ## When NOT to Use Do not use this skill unless you are certain that you are creating a BOF file, or working on a BOF project. ## Terminology - **BOF** - Beacon Object File - An object file format used by C2 frameworks for loading additional in-memory functionality - **DFR** - Dynamic Function Resolution - A convention to declare and call Win32 APIs as `LIBRARY$Function` ## BOF Overview BOFs are compiled C/C++ object files that execute in-memory within a C2 implant's process space. They provide a way to add functionality without writing artifacts to disk. Example BOF that queries the primary Domain Controller: ```c #include <windows.h> #include <stdio.h> #include <dsgetdc.h> #include "beacon.h" DECLSPEC_IMPORT DWORD WINAPI NETAPI32$DsGetDcNameA(LPVOID, LPVOID, LPVOID, LPVOID, ULONG, LPVOID); DECLSPEC_IMPORT DWORD WINAPI NETAPI32$NetApiBufferFree(LPVOID); void go(char * args, int alen) { PDOMAIN_CONTROLLER_INFO pdcInfo; DWORD dwRet = NETAPI32$DsGetDcNameA(NULL, NULL, NULL, NULL, 0, &pdcInfo); if (ERROR_SUCCESS == dwRet) { BeaconPrintf(CALLBACK_OUTPUT, "%s", pdcInfo->DomainName); } NETAPI32$NetApiBufferFree(pdcInfo); } ``` ## BOF Considerations - **Minimal footprint** — reduce memory usage, only include what's needed - **Stability** — a BOF crash kills the parent process; handle errors carefully - **No disk artifacts** — avoid writing to disk; advise the user when unavoidable - **Windows x64** — assume Windows x64 target unless told otherwise ## Linting Use the included linter to check BOF code for common issues: ```bash python3 ~/.agents/skills/bof/scripts/boflint.py <bof_source.c> ``` ## References * [DFR Information](./references/dynamic-function-resolution.md) - Dynamic Function Resolution process used in BOF development * [API](./references/api.md) - BOF APIs for communication with C2 frameworks * [Building](./references/building.md) - How to compile a BOF
Ver en GitHub