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.

Zur Installation springen

Quellinformationen

Repository
SpecterOps/skills
Letzte Quellaktivität
14. August 2026 um 01:16
Erkannte Sprache von SKILL.md
Englisch
Sterne
657
Forks
72

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

Datei-Explorer
8 Dateien

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
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
Auf GitHub ansehen