Remote BOF Runner, Beacon Object Files (BOFs) के दूरस्थ निष्पादन के लिए Crystal Palace के साथ बने PIC लोडर का उपयोग करने वाला एक Havoc विस्तार ढांचा है।
# रिमोट BOF रनर
Crystal Palace के साथ बने PIC लोडर का उपयोग करके Beacon Object Files (BOFs) के रिमोट निष्पादन के लिए एक Havoc एक्सटेंशन फ्रेमवर्क।
## अवलोकन
रिमोट BOF रनर Crystal Palace PIC लोडर का लाभ उठाकर मनमानी प्रक्रियाओं में BOFs के सुरक्षित निष्पादन को सक्षम बनाता है। यह फ्रेमवर्क नेम्ड पाइप के माध्यम से एक परिष्कृत अंतर-प्रक्रिया संचार (IPC) तंत्र को लागू करता है ताकि इंजेक्ट की गई प्रक्रियाओं से बीकन आउटपुट को पारदर्शी रूप से कमांड और कंट्रोल (C2) सर्वर पर वापस भेजा जा सके।
## सेटअप और इंस्टॉलेशन
### एक्सटेंशन इंस्टॉलेशन
सुनिश्चित करें कि एक्सटेंशन Havoc एक्सटेंशन निर्देशिका में स्थापित है:
```
YOUR_HAVOC_FOLDER + /data/extensions/
```
### निर्भरताएँ
PIC लोडर को संकलित करने के लिए, निम्नलिखित उपकरण और लाइब्रेरी आपके सिस्टम पर स्थापित होने चाहिए:
- **MinGW-w64**: Windows लक्ष्यों के लिए क्रॉस-कंपाइलर
- **Make**: बिल्ड ऑटोमेशन टूल
- **OpenJDK 11**: जावा डेवलपमेंट किट (Crystal Palace संकलन के लिए आवश्यक)
- **Zip**: संपीड़न उपयोगिता
विस्तृत सेटअप निर्देशों के लिए, [WSL सेटअप गाइड](https://tradecraftgarden.org/wslsetup.html) देखें।
#### इंस्टॉलेशन कमांड
```bash
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
```
## आर्किटेक्चर
### घटक
#### 1. BOF इंजेक्टर
BOF घटक निम्नलिखित के लिए जिम्मेदार है:
- एक डमी प्रक्रिया बनाना और उसे सस्पेंड करना।
- डमी प्रक्रिया में Crystal Palace लोडर + लक्ष्य BOF इंजेक्ट करना।
- आउटपुट संचार के लिए एक IPC चैनल (नेम्ड पाइप) स्थापित करना।
- रिमोट BOF निष्पादन से आउटपुट प्राप्त करना और एकत्र करना।
#### 2. PIC लोडर (Crystal Palace)
PIC लोडर में शामिल हैं:
- **Crystal Palace लोडर**: मेमोरी आवंटन, BSS सेक्शन प्रबंधन, और सुरक्षित निष्पादन संदर्भ प्रारंभिकरण को संभालता है।
- **रिमोट BOF पेलोड**: निष्पादित करने के लिए वास्तविक BOF कोड (whoami, ipconfig, cacls, reg-query, आदि)।
- **तर्क मार्शलिंग**: रिमोट BOF निष्पादन के लिए लोडर के माध्यम से पास किए गए सीरियलाइज़ किए गए तर्क।
### निष्पादन प्रवाह
```
┌───────────────────────────────────────────────────────────────────┐
│ 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 │
└───────────────────────────────────────────────────────────────────┘
```
## मुख्य विशेषताएँ
### 1. प्रक्रिया पृथक्करण
- BOF निष्पादन एक अलग, पृथक प्रक्रिया में होता है।
- बीकन प्रक्रिया स्थिरता पर प्रभाव को कम करता है।
- मनमानी प्रक्रिया संदर्भों में निष्पादन सक्षम करता है।
### 2. IPC आउटपुट फ़ॉरवर्डिंग
- नेम्ड पाइप-आधारित संचार चैनल।
- रिमोट BOF से पारदर्शी आउटपुट रीडायरेक्शन।
- संदेश विखंडन हैंडलिंग (8KB संचय बफर)।
- प्रोटोकॉल सीमांकक फ़िल्टरिंग।
### 3. .NET प्रक्रिया निष्पादन
प्राथमिक उपयोग मामला मूल .NET प्रक्रियाओं में BOFs निष्पादित करना है:
**बीकन में प्रत्यक्ष CLR लोडिंग जोखिमपूर्ण क्यों है:**
बीकन प्रक्रिया में सीधे .NET असेंबली लोड करना स्वाभाविक रूप से असुरक्षित और पहचानने योग्य है:
- बीकन प्रक्रिया (आमतौर पर एक मूल बाइनरी जैसे cmd.exe या rundll32.exe) सामान्यतः CLR स्पॉन नहीं करती है।
- जब एक गैर .NET प्रक्रिया में CLR लोड किया जाता है, तो तत्काल EDR/XDR अलर्ट ट्रिगर होने चाहिए।
**एक संभावित समाधान: मूल .NET प्रक्रिया इंजेक्शन:**
बीकन में CLR लोड करने के बजाय, हम अपने inline-execute-assembly BOF को ऐसी प्रक्रिया में इंजेक्ट और निष्पादित करते हैं जो पहले से .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 निष्पादित करना सामान्य एप्लिकेशन व्यवहार से अप्रभेद्य है।
### 4. Crystal Palace एकीकरण
- स्थिति-स्वतंत्र कोड निष्पादन।
- हैश-आधारित फंक्शन लुकअप के माध्यम से गतिशील API रिज़ॉल्यूशन।
- कोई आयात पता तालिका निर्भरता नहीं।
- डीप इंजेक्शन परिदृश्यों के लिए उपयुक्त।
## निष्पादन मोड
### स्थानीय निष्पादन
```
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
```
### .NET असेंबली निष्पादन
```
remote-bof-runner execute-assembly --dotnetassembly "/Payloads/Rubeus.exe" --assemblyargs "triage"
```
**उदाहरण आउटपुट:**

## उपलब्ध BOFs
- **whoami** - वर्तमान उपयोगकर्ता और समूह जानकारी प्रदर्शित करें (CS-Situational-Awareness-BOF)।
- **ipconfig** - नेटवर्क एडॉप्टर कॉन्फ़िगरेशन दिखाएं (CS-Situational-Awareness-BOF)।
- **cacls** - फ़ाइल अनुमतियाँ सूचीबद्ध करें (CS-Situational-Awareness-BOF)।
- **reg-query** - Windows रजिस्ट्री क्वेरी करें (CS-Situational-Awareness-BOF)।
- **execute-assembly** - वास्तविक प्रक्रिया में .NET असेंबली लोड करता है (https://github.com/VoldeSec/PatchlessInlineExecute-Assembly)।
- **bof** - कस्टम BOF बाइनरी निष्पादित करें।
## परिचालन सुरक्षा विचार
⚠️ **महत्वपूर्ण**: यह प्रोजेक्ट एक **प्रूफ-ऑफ-कॉन्सेप्ट** है और डिफ़ॉल्ट रूप से OPSEC को प्राथमिकता **नहीं** देता है।
### अनुशंसित संशोधन
BOF इंजेक्टर और PIC लोडर दोनों को प्रतिकारक सिमुलेशन के लिए महत्वपूर्ण हार्डनिंग की आवश्यकता है:
#### BOF इंजेक्टर हार्डनिंग
- कस्टम प्रक्रिया निर्माण विधियों को लागू करें (CreateProcessW नहीं)।
- मानक WriteProcessMemory से परे वैकल्पिक इंजेक्शन तकनीकों का उपयोग करें।
- IPC पाइप नामकरण को अस्पष्ट करें (पहचानकर्ताओं को यादृच्छिक बनाएं)।
#### PIC लोडर हार्डनिंग
- संचार प्रोटोकॉल को एन्क्रिप्ट करें (पाइप संदेश)।
- ज्ञात हस्ताक्षरों के लिए YARA नियम चोरी लागू करें।
- प्रक्रिया हुक से बचने की विधि जोड़ें (अप्रत्यक्ष सिस्कॉल, अनहुकिंग विधियाँ, आदि)।
- लक्ष्य BOF + Args को संग्रहीत करने के लिए एन्क्रिप्शन विधि जोड़ें।
## संदर्भ
- [Crystal Palace](https://tradecraftgarden.org/)
- [LibIPC](https://github.com/pard0p/LibIPC) - Crystal Palace की नेम्ड पाइप-आधारित अंतर-प्रक्रिया संचार के लिए साझा लाइब्रेरी।
- [PatchlessInlineExecute-Assembly](https://github.com/VoldeSec/PatchlessInlineExecute-Assembly) - BOF InlineExecute-Assembly जो प्रक्रिया में .NET असेंबली लोड करता है लेकिन हार्डवेयर ब्रेकपॉइंट का उपयोग करके पैचलेस AMSI और ETW बाईपास के साथ।
- [CS-Situational-Awareness-BOF](https://github.com/trustedsec/CS-Situational-Awareness-BOF) - बीकन ऑब्जेक्ट फ़ाइलों का उपयोग करके कार्यान्वित सिचुएशनल अवेयरनेस कमांड।
## अस्वीकरण
यह उपकरण केवल शैक्षिक और अधिकृत सुरक्षा परीक्षण प्रयोजनों के लिए प्रदान किया गया है। कंप्यूटर सिस्टम तक अनाधिकृत पहुंच अवैध है। उपयोगकर्ता सभी लागू कानूनों और विनियमों के अनुपालन को सुनिश्चित करने के लिए जिम्मेदार हैं।