Remote BOF Runner는 Crystal Palace로 만든 PIC 로더를 사용하여 Beacon Object Files(BOF)를 원격으로 실행하기 위한 Havoc 확장 프레임워크입니다.
Crystal Palace 기반 PIC 로더를 사용하여 Beacon Object Files(BOF)를 원격으로 실행할 수 있는 Havoc 확장 프레임워크입니다.
Remote BOF Runner는 Crystal Palace PIC 로더를 활용하여 임의의 프로세스에서 BOF를 안전하게 실행할 수 있게 해줍니다. 이 프레임워크는 명명된 파이프를 통한 정교한 프로세스 간 통신(IPC) 메커니즘을 구현하여 인젝션된 프로세스의 비콘 출력을 명령 및 제어(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. 비콘 프로세스 (Havoc) │
│ ├─ BOF 인젝터 실행 │
│ ├─ 더미 프로세스 생성 (일시 중단) │
│ ├─ PIC 로더 + 원격 BOF 인젝션 │
│ └─ IPC 명명된 파이프 생성 │
└────────────┬──────────────────────────────────────────────────────┘
│
▼
┌───────────────────────────────────────────────────────────────────┐
│ 2. PIC 로더 실행 │
│ ├─ Crystal Palace 로더 │
│ ├─ BSS 섹션 할당 수행 │
│ ├─ UI 컨텍스트 초기화 (.NET 호환성용) │
│ └─ 비콘 함수 후킹 (BeaconPrintf, BeaconOutput 등) │
└────────────┬──────────────────────────────────────────────────────┘
│
▼
┌───────────────────────────────────────────────────────────────────┐
│ 3. 원격 BOF 실행 │
│ ├─ 대상 BOF 실행 (whoami, ipconfig 등) │
│ ├─ BOF가 후킹된 비콘 함수 호출 │
│ ├─ 후킹된 함수가 출력을 IPC 파이프로 리디렉션 │
│ └─ 파이프를 통해 비콘 프로세스에 출력이 축적 │
└────────────┬──────────────────────────────────────────────────────┘
│
▼
┌───────────────────────────────────────────────────────────────────┐
│ 4. 출력 수집 및 전송 │
│ ├─ 비콘이 원격 프로세스 종료를 기다림 │
│ ├─ IPC 파이프에서 모든 출력을 축적 │
│ ├─ 분할된 메시지 집계 (8KB 버퍼) │
│ ├─ 프로토콜 구분자 (@START@, @END@) 필터링 │
│ └─ 통합된 출력을 팀 서버로 전송 │
└───────────────────────────────────────────────────────────────────┘
주 사용 사례는 네이티브 .NET 프로세스에서 BOF를 실행하는 것입니다:
비콘에서 직접 CLR 로딩이 위험한 이유: 비콘 프로세스에 직접 .NET 어셈블리를 로딩하는 것은 본질적으로 안전하지 않으며 탐지 가능합니다:
가능한 해결책: 네이티브 .NET 프로세스 인젝션: 비콘에 CLR을 로딩하는 대신, 이미 .NET 네이티브인 프로세스에 inline-execute-assembly BOF를 인젝션하여 실행합니다:
// ❌ 탐지 가능: 비콘에서 직접 실행
beacon.exe (네이티브) → load ClrCreateInstance → load .NET assembly → EDR 경고
// ✅ 은밀함: 네이티브 .NET 프로세스에서 실행
dotnet.exe (네이티브 .NET) → inject BOF → inline-execute-assembly →
.NET 프로세스의 기존 CLR 컨텍스트에서 .NET 어셈블리 실행 → 정상 동작
이 접근 방식은 .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"
출력 예시:

⚠️ 중요: 이 프로젝트는 개념 증명이며 기본적으로 OPSEC을 우선시하지 않습니다.
BOF 인젝터와 PIC 로더 모두 모의 공격 시뮬레이션을 위해 상당한 강화가 필요합니다:
이 도구는 교육 및 공인된 보안 테스트 목적으로만 제공됩니다. 허가되지 않은 컴퓨터 시스템 접근은 불법입니다. 사용자는 모든 관련 법률 및 규정을 준수할 책임이 있습니다.