
ओपन सोर्स C&C विनिर्देश
प्रारूप: चर्चा के लिए अनुरोध
यह दस्तावेज़ OST C&C Specification के संस्करण 1 का अवलोकन प्रदान करता है। इसका उद्देश्य संदेशों और उन संदेशों के भीतर के फ़ील्ड्स का विस्तृत विवरण प्रदान करना है।
इस विनिर्देश के पीछे की प्रेरणा एक C&C messaging protocol (जिसमें कार्यकरण, संरचित आउटपुट, और peer-to-peer रूटिंग शामिल है) प्रदान करना है, जिसे शब्दशः लागू किया जा सकता है, या केवल प्रोजेक्ट डेवलपर्स के लिए प्रेरणा के रूप में काम कर सकता है। इस दस्तावेज़ का उद्देश्य यह बताना नहीं है कि C&C क्या है। यह मान लिया गया है कि पाठक समझता है कि यह क्या है और किस लिए उपयोग किया जाता है।
मुख्य शब्द "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", और "OPTIONAL" की व्याख्या [RFC2119] में वर्णित अनुसार की जानी चाहिए।
यह विनिर्देश निम्नलिखित मान्यताएँ बनाता है:
नीचे इस दस्तावेज़ में उपयोग किए गए शब्दों की सूची दी गई है।
इम्प्लांट मेटाडेटा: वह जानकारी जो एक इम्प्लांट अपने बारे में टीम सर्वर को रिपोर्ट करता है।
कार्य अनुरोध: एक कार्य जो किसी इम्प्लांट को करने के लिए दिया जाता है।
कार्य प्रतिक्रिया: किसी दिए गए कार्य की स्थिति और आउटपुट (यदि कोई हो)।
सत्र कुंजी: एक अद्वितीय एन्क्रिप्शन कुंजी जिसका उपयोग एक इम्प्लांट अपने संदेशों को एन्क्रिप्ट करने के लिए करता है।
प्रत्येक कार्य अनुरोध और प्रतिक्रिया संदेश में निम्नलिखित 16-बाइट हैडर होना अनिवार्य है।```text | Byte | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | | -------------------------------------------------------------| | 0 | Type | Code | Flags | Label | | -------------------------------------------------------------| | 1 | Identifier | Length | | -------------------------------------------------------------|
- **Type**: 1-बाइट पूर्णांक। यह जिस कार्य का प्रकार है, उसका 'type'। देखें [[कार्य प्रकार और कोड](https://github.com/rasta-mouse/ost-c2-spec?tab=readme-ov-file#task-types-and-codes)]।
- **Code**: 1-बाइट पूर्णांक। दिए गए Type के लिए एक 'sub code'। देखें [[कार्य प्रकार और कोड](https://github.com/rasta-mouse/ost-c2-spec?tab=readme-ov-file#task-types-and-codes)]।
- **Flags**: 2-बाइट पूर्णांक। संदेश की स्थिति दर्शाने के लिए बिटवाइज़ फ़्लैग्स का एक सेट। देखें [[कार्य फ़्लैग्स](https://github.com/rasta-mouse/ost-c2-spec?tab=readme-ov-file#task-flags)]।
- **Label**: 4-बाइट पूर्णांक। एक अद्वितीय लेबल जो एक ही कार्य से संबंधित कई संदेशों को सहसंबंधित करता है।
- **Identifier**: 4-बाइट पूर्णांक। एक अनुक्रमिक पहचानकर्ता जिसका उपयोग खंडित संदेशों को सही क्रम में बनाने के लिए किया जाता है।
- **Length**: 4-बाइट पूर्णांक। कार्य डेटा की कुल लंबाई।
## कार्य प्रकार और कोड```text
|------------------|--------------------------|
| Type | Code |
|------------------|--------------------------|
| 0 - NOP | 0 |
|------------------|--------------------------|
| 1 - Exit | 0 |
|------------------|--------------------------|
| 2 - Set | 0 - Sleep/Jitter |
| | 1 - SpawnTo |
| | 2 - BlockDLLs |
| | 3 - PPID |
|------------------|--------------------------|
| 3 - File | 0 - Copy |
| | 1 - Move |
| | 2 - Delete |
| | 3 - Upload |
| | 4 - Download |
|------------------|--------------------------|
| 4 - Directory | 0 - Print |
| | 1 - Change |
| | 2 - Create |
| | 3 - Copy |
| | 4 - Move |
| | 5 - List |
| | 6 - Delete |
|------------------|--------------------------|
| 5 - WhoAmI | 0 |
|------------------|--------------------------|
| 6 - Process | 0 - List |
| | 1 - Kill |
| | 2 - Inject Spawn |
| | 3 - Inject Explicit |
|------------------|--------------------------|
| 7 - Registry | 0 - Query |
| | 1 - Add |
| | 2 - Delete |
|------------------|--------------------------|
| 8 - RPortFwd | 0 - Start |
| | 1 - Data |
|------------------|--------------------------|
| 9 - Environment | 0 - Get |
| | 1 - Set |
|------------------|--------------------------|
| 10 - SOCKS | 0 - Connect |
| | 1 - Data |
| | 2 - Close |
|------------------|--------------------------|
| 11 - Tokens | 0 - List |
| | 1 - Make |
| | 2 - Steal |
| | 3 - Use |
| | 4 - Revert |
| | 5 - Delete |
| | 6 - Purge |
|------------------|--------------------------|
| 12 - Run | 0 |
|------------------|--------------------------|
| 13 - ItemStore | 0 - List |
| | 1 - Add |
| | 2 - Delete |
| | 3 - Purge |
|------------------|--------------------------|
| 14 - LocalExec | 0 - .NET |
| | 1 - BOF |
| | 2 - Managed PowerShell |
| | 3 - Unmanaged PowerShell |
|------------------|--------------------------|
| 15 - PrintScreen | 0 |
|------------------|--------------------------|
| 16 - RemoteExec | 0 - WinRM |
| | 1 - WMI |
| | 2 - PsExec |
| | 3 - SSH |
|------------------|--------------------------|
| 17 - Link | 1 - Link SMB |
| | 2 - Link TCP |
|------------------|--------------------------|
| 18 - Unlink | 0 |
|------------------|--------------------------|
| 19 - P2P | 0 - Acknowledge |
| | 1 - PassThru |
|------------------|--------------------------|
| 20 - Jobs | 0 - List |
| | 1 - Kill |
|---------------------------------------------|
कुछ फ़्लैग परस्पर अनन्य होते हैं और इन्हें एक साथ सेट नहीं किया जाना चाहिए। यदि कोई फ़्लैग सेट नहीं है, तो कार्य को सफलतापूर्वक पूर्ण मान लिया जाना चाहिए और संबंधित आउटपुट (यदि कोई है) खंडित नहीं है।```text
| Value | Description |
|---|---|
| 0 | No flags |
| 1 | Task Error |
| 2 | Task Running (as job) |
| 4 | Message is fragmented, more to follow |
| 8 | Message is fragmented, no more to follow |
## कार्य डेटा
कार्य डेटा हेडर से जुड़ा होता है और विशिष्ट कार्य प्रकार और कोड के आधार पर, एक बाइनरी संरचना से बना होगा। प्रत्येक कार्य अनुरोध और प्रतिक्रिया संदेश प्रकार को [[Message Definitions](https://github.com/rasta-mouse/ost-c2-spec?tab=readme-ov-file#message-definitions)] में परिभाषित किया गया है।