
Remote BOF Runner — это фреймворк расширения Havoc для удалённого выполнения Beacon Object Files (BOFs) с использованием PIC-загрузчика, созданного с помощью Crystal Palace.
Фреймворк расширения Havoc для удалённого выполнения Beacon Object Files (BOFs) с использованием PIC-загрузчика, созданного с помощью Crystal Palace.
Remote BOF Runner обеспечивает безопасное выполнение BOF в произвольных процессах за счёт использования PIC-загрузчика Crystal Palace. Этот фреймворк реализует сложный механизм межпроцессного взаимодействия (IPC) через именованные каналы (named pipes) для прозрачной пересылки вывода beacon из внедрённых процессов обратно на сервер управления (C2).
Убедитесь, что расширение установлено в каталог расширений Havoc:
YOUR_HAVOC_FOLDER + /data/extensions/
Для компиляции PIC-загрузчика на вашей системе должны быть установлены следующие инструменты и библиотеки:
Подробные инструкции по настройке приведены в руководстве по настройке WSL.
sudo apt-get update
sudo apt-get install mingw-w64
sudo apt-get install make
sudo apt-get install openjdk-11-jdk
sudo apt-get install zip
Компонент BOF отвечает за:
PIC-загрузчик состоит из:
┌───────────────────────────────────────────────────────────────────┐
│ 1. Beacon Process (Havoc) │
│ ├─ Execute BOF Injector │
│ ├─ Create dummy process (suspended) │
│ ├─ Inject PIC Loader + Remote BOF │
│ └─ Create IPC named pipe │
└────────────┬──────────────────────────────────────────────────────┘
│
▼
┌───────────────────────────────────────────────────────────────────┐
│ 2. PIC Loader Execution │
│ ├─ Crystal Palace loader │
│ ├─ Performs BSS section allocation │
│ ├─ Initializes UI context (for .NET compatibility) │
│ └─ Hooks beacon functions (BeaconPrintf, BeaconOutput, etc.) │
└────────────┬──────────────────────────────────────────────────────┘
│
▼
┌───────────────────────────────────────────────────────────────────┐
│ 3. Remote BOF Execution │
│ ├─ Execute target BOF (whoami, ipconfig, etc.) │
│ ├─ BOF calls hooked beacon functions │
│ ├─ Hooked functions redirect output to IPC pipe │
│ └─ Output accumulates in beacon process via pipe │
└────────────┬──────────────────────────────────────────────────────┘
│
▼
┌───────────────────────────────────────────────────────────────────┐
│ 4. Output Collection & Transmission │
│ ├─ Beacon waits for remote process termination │
│ ├─ Accumulates all output from IPC pipe │
│ ├─ Aggregates fragmented messages (8KB buffer) │
│ ├─ Filters protocol delimiters (@START@, @END@) │
│ └─ Transmits consolidated output to Team Server │
└───────────────────────────────────────────────────────────────────┘
Основной вариант использования — выполнение BOF в нативных .NET-процессах:
Почему прямая загрузка CLR в beacon рискованна:
Прямая загрузка .NET-сборок в процесс beacon по своей сути небезопасна и легко обнаруживается:
Возможное решение: внедрение в нативный .NET-процесс:
Вместо загрузки CLR в beacon мы внедряем и выполняем наш BOF inline-execute-assembly в процессе, который уже является нативным .NET:
// ❌ DETECTABLE: Direct execution in beacon
beacon.exe (native) → load ClrCreateInstance → load .NET assembly → EDR ALERT
// ✅ STEALTHY: Execution in native .NET process
dotnet.exe (native .NET) → inject BOF → inline-execute-assembly →
execute .NET assembly in already-CLR context → normal behavior
Этот подход использует тот факт, что выполнение .NET внутри .NET-процесса неотличимо от обычного поведения приложения.
remote-bof-runner whoami
remote-bof-runner ipconfig
remote-bof-runner cacls C:\Windows\System32
remote-bof-runner reg-query DC01 HKLM SYSTEM\CurrentControlSet
remote-bof-runner reg-query HKLM SYSTEM\CurrentControlSet\Control\Lsa
remote-bof-runner reg-query HKLM SYSTEM\CurrentControlSet\Control\Lsa RunAsPPL
remote-bof-runner execute-assembly --dotnetassembly "/Payloads/Rubeus.exe" --assemblyargs "triage"
Пример вывода:

⚠️ Важно: этот проект является Proof-of-Concept и по умолчанию НЕ уделяет приоритетного внимания OPSEC.
Как инжектор BOF, так и PIC-загрузчик требуют значительного усиления для симуляции действий противника:
Этот инструмент предоставляется исключительно для образовательных целей и авторизованного тестирования безопасности. Несанкционированный доступ к компьютерным системам является незаконным. Пользователи несут ответственность за соблюдение всех применимых законов и нормативных требований.