प्लेबुक-आधारित प्रतिद्वंद्वी सिमुलेशन फ्रेमवर्क जो JSON-परिभाषित हमले के पथों को स्थिति-स्वतंत्र शेलकोड पेलोड में संकलित करता है, उन्नत डिटेक्शन और AI-आधारित जांच एजेंटों को मान्य करने के लिए।

SynthAPT जटिल हमले के पथों को दोहराने के लिए एक प्लेबुक-आधारित प्रतिद्वंद्वी सिमुलेशन फ्रेमवर्क है। इसे उन्नत डिटेक्शन और AI-आधारित जांच एजेंटों को मान्य करने के लिए डिज़ाइन किया गया है। मुख्य विचार यह है कि मैलवेयर व्यवहार को JSON में व्यक्त किया जा सकता है और कार्यात्मक मैलवेयर में संकलित किया जा सकता है, जिससे LLMs का उपयोग करके यथार्थवादी परिदृश्यों का तेजी से विकास संभव हो सके।

कोर इम्प्लांट एक शेलकोड पेलोड है जो प्लेबुक इंटरप्रेटर द्वारा संचालित होता है। एक प्लेबुक पूरे हमले के पथ को पूर्वनिर्धारित करती है और इम्प्लांट उसका अनुसरण करता है, प्रोसेस इंजेक्शन, लेटरल मूवमेंट आदि के माध्यम से वातावरण में घूमता है। प्रत्येक इम्प्लांट अपने स्वयं के निर्देश सेट के साथ एक स्वतंत्र थ्रेड के रूप में उत्पन्न होता है, इसलिए बहु-चरणीय हमले (जैसे प्रारंभिक पहुंच → प्रिविलेज एस्केलेशन → लेटरल मूवमेंट → एक्सफिल्ट्रेशन) सहयोगात्मक इम्प्लांट के ग्राफ के रूप में व्यक्त किए जाते हैं, जो सभी प्लेबुक में पहले से परिभाषित होते हैं। इसके तीन प्रमुख लाभ हैं:

यदि आप रिलीज़ का उपयोग नहीं करना चाहते हैं तो आप इसे इस प्रकार संकलित कर सकते हैं:
cargo make के साथ बनाएँ:```bash
cargo make build
./target/release/synthapt
यह शेलकोड और संपादक को संकलित करेगा।
बिना किसी कमांड के SynthAPT चलाने से आप संपादक में प्रवेश कर जाएंगे। आप एक Claude API कुंजी प्रदान कर सकते हैं और प्रॉम्प्ट करते समय परिवर्तन देख सकते हैं।```bash SynthAPT playbook editor and compiler
Usage: synthapt [COMMAND]
Commands: edit Open the TUI editor with a playbook loaded from PATH validate Validate a playbook JSON file and print any errors export-skill Export the agent system prompt as a Claude Code slash command skill compile Compile a playbook to a payload
यदि आप किसी अन्य LLM या सब्सक्रिप्शन का उपयोग करना चाहते हैं, तो आप `synthapt export-skill` चला सकते हैं और इसे अपने किसी भी कोडिंग सेटअप के साथ उपयोग कर सकते हैं। इससे एक JSON प्लेबुक निकलनी चाहिए। इसे compile कमांड से पेलोड में कंपाइल करें:```bash
Compile a playbook to a payload
Usage: synthapt compile [OPTIONS] <PLAYBOOK> [OUTPUT]
Arguments:
<PLAYBOOK> Path to the playbook JSON file
[OUTPUT] Output file path (default: payload.bin / payload.exe / payload.dll)
Options:
-e, --exe Compile to PE EXE
-d, --dll Compile to PE DLL
-b, --base <BASE> Override the embedded base shellcode with a custom binary
-h, --help Print help
Constants can be defined as strings, hex objects, or base64 objects:```json "constants": [ "c:\windows\temp\file.txt", { "hex": "deadbeef" }, { "base64": "SGVsbG8=" } ]
---
### end (0x00)
कार्य सेट का अंत। संकलक द्वारा स्वचालित रूप से जोड़ा गया - आपको इसे जोड़ने की आवश्यकता नहीं है।
---
### store_result (0x01)
अंतिम संचालन परिणाम को एक चर में संग्रहीत करें।
| Field | Type | |
|-------|------|-|
| var | u16 | **आवश्यक** |```json
{ "op": "store_result", "var": 0 }
वर्तमान शेलकोड बाइट्स को एक वैकल्पिक task ID और/या magic value के साथ पैच करके लौटाएं।
| फ़ील्ड | प्रकार | |
|---|---|---|
| task | u8 | वैकल्पिक |
| magic | u32 हेक्स स्ट्रिंग या संख्या | वैकल्पिक |
| { "op": "get_shellcode" } | ||
| { "op": "get_shellcode", "task": 5, "magic": "0x18181818" } |
### स्लीप (0x03)
दिए गए मिलीसेकंड की संख्या के लिए सोएं।
| क्षेत्र | प्रकार | |
|---------|--------|-|
| ms | u32 | **आवश्यक** |```json
{ "op": "sleep", "ms": 5000 }
| फ़ील्ड | प्रकार | |
|---|---|---|
| command | string | आवश्यक |
| { "op": "run_command", "command": "whoami /all" } |
### get_cwd (0x05)
वर्तमान कार्य निर्देशिका प्राप्त करें। कोई तर्क नहीं।```json
{ "op": "get_cwd" }
एक फ़ाइल पढ़ें और उसकी सामग्री लौटाएँ।
| फ़ील्ड | प्रकार | |
|---|---|---|
| path | string | आवश्यक |
| { "op": "read_file", "path": "c:\users\public\data.txt" } | ||
| { "op": "read_file", "path": "%0" } |
---
### write_file (0x07)
एक फ़ाइल में बाइट्स लिखें।
| फ़ील्ड | प्रकार | |
|-------|------|-|
| path | string | **आवश्यक** |
| content | bytes | *वैकल्पिक* (यदि छोड़ दिया जाए तो खाली फ़ाइल) |```json
{ "op": "write_file", "path": "c:\\temp\\out.txt", "content": "hello" }
{ "op": "write_file", "path": "%0", "content": "$1" }
एक चर का स्थिति कोड प्रिंट करें (0 = सफलता, गैर-शून्य = त्रुटि)।
| फ़ील्ड | प्रकार | |
|---|---|---|
| var | u16 | आवश्यक |
| { "op": "check_error", "var": 0 } |
---
### conditional (0x09)
चर स्थिति के आधार पर विभिन्न कार्य सूचकांकों पर शाखा।
| फ़ील्ड | प्रकार | |
|-------|------|-|
| mode | `"data"` या `"error"` | **आवश्यक** |
| var1 | u16 | **आवश्यक** |
| var2 | u16 | *वैकल्पिक* (एकल जाँच के बजाय दो चरों की तुलना करें) |
| true | u16 | **आवश्यक** (यदि स्थिति सत्य है तो कार्य सूचकांक) |
| false | u16 | **आवश्यक** (यदि स्थिति असत्य है तो कार्य सूचकांक) |
`true_target` और `false_target` को `true` और `false` के उपनाम के रूप में स्वीकार किया जाता है।
एकल-चर मोड:
- `"data"` — सत्य यदि var1 में गैर-रिक्त डेटा है
- `"error"` — सत्य यदि var1 की स्थिति 0 है (सफलता)
दो-चर मोड (var2 मौजूद):
- `"data"` — सत्य यदि var1 डेटा var2 डेटा के बराबर है
- `"error"` — सत्य यदि var1 त्रुटि कोड var2 त्रुटि कोड के बराबर है```json
{ "op": "conditional", "mode": "error", "var1": 0, "true": 3, "false": 5 }
{ "op": "conditional", "mode": "data", "var1": 0, "var2": 1, "true": 3, "false": 5 }
एक वेरिएबल को शाब्दिक मान पर सेट करें।
| फ़ील्ड | प्रकार | |
|---|---|---|
| var | u16 | आवश्यक |
| data | bytes | वैकल्पिक (यदि छोड़ा गया तो खाली) |