Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
OST-C2-Spec — مصدر مفتوح لمواصفات C&C | Kitploit
أدوات/GitHubGitHub/rasta-mouse/ost-c2-spec
الاستغلالالحركة الجانبيةما بعد الاستغلالالقيادة والسيطرةالفريق الأحمر
GitHubrasta-mouse/ost-c2-spec

OST-C2-Spec

مصدر مفتوح لمواصفات C&C

عرض المستودع
283183منذ سنة واحدةتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

مسودة: طلب مناقشة

الملخص

توفر هذه الوثيقة نظرة عامة على الإصدار 1 من مواصفات OST C&C. يُقصد منها تقديم وصف تفصيلي للرسائل والحقول الموجودة داخل تلك الرسائل.

مقدمة

الدافع وراء هذه المواصفات هو توفير بروتوكول مراسلة للتحكم والقيادة (بما في ذلك تكليف المهام، والمخرجات المنظمة، والتوجيه من نظير إلى نظير) يمكن تنفيذه حرفيًا، أو ببساطة أن يكون مصدر إلهام لمطوري المشاريع. ليست هذه الوثيقة مخصصة لوصف ما هو C&C. من المفترض أن القارئ يفهم ما هو وما يُستخدم من أجله.

الكلمات المفتاحية "MUST"، "MUST NOT"، "REQUIRED"، "SHALL"، "SHALL NOT"، "SHOULD"، "SHOULD NOT"، "RECOMMENDED"، "MAY"، و"OPTIONAL" يجب تفسيرها كما هو موضح في [RFC2119].

الافتراضات البيئية

تفترض هذه المواصفات ما يلي:

  • يتم إرسال الرسائل عبر شبكة غير مشفرة.
  • يتم تضمين حمولات الزرع مع مفتاح RSA العام المستخدم بواسطة خادم الفريق الذي يُقصد التواصل معه.

مسرد المصطلحات

فيما يلي قائمة بالمصطلحات المستخدمة في هذه الوثيقة.

  • البيانات الوصفية للزرع: معلومات يبلغ بها الزرع عن نفسه إلى خادم الفريق.

  • طلب مهمة: مهمة تُعطى للزرع لتنفيذها.

  • استجابة مهمة: حالة المهمة ومخرجاتها (إن وجدت) لمهمة معينة.

  • مفتاح الجلسة: مفتاح تشفير فريد يستخدمه الزرع لتشفير رسائله.

رسائل المهام

ترويسة المهمة

يجب أن تحتوي كل رسالة طلب مهمة واستجابة على الترويسة التالية ذات الـ16 بايت.```text | Byte | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | | -------------------------------------------------------------| | 0 | Type | Code | Flags | Label | | -------------------------------------------------------------| | 1 | Identifier | Length | | -------------------------------------------------------------|

root@kitploit:~
- **Type**: عدد صحيح بطول 1 بايت.  «نوع» هذه المهمة.  انظر [[أنواع المهام ورموزها](https://github.com/rasta-mouse/ost-c2-spec?tab=readme-ov-file#task-types-and-codes)].
- **Code**: عدد صحيح بطول 1 بايت.  «رمز فرعي» للنوع المحدد.  انظر [[أنواع المهام ورموزها](https://github.com/rasta-mouse/ost-c2-spec?tab=readme-ov-file#task-types-and-codes)].
- **Flags**: عدد صحيح بطول 2 بايت.  مجموعة من أعلام bitwise لوصف حالة الرسالة.  انظر [[أعلام المهام](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

ValueDescription
0No flags
1Task Error
2Task Running (as job)
4Message is fragmented, more to follow
8Message is fragmented, no more to follow
root@kitploit:~
## بيانات المهمة

تُلحق بيانات المهمة بالترويسة وتتكون من بنية ثنائية، اعتمادًا على نوع المهمة المحدد ورمزها.  يتم تعريف كل نوع من أنواع رسائل طلب المهمة والاستجابة في [[تعريفات الرسائل](https://github.com/rasta-mouse/ost-c2-spec?tab=readme-ov-file#message-definitions)].

ليس من الإلزامي أن يحتوي طلب المهمة أو استجابتها على أي بيانات إذا لم تكن مطلوبة.

## رسالة المهمة المشفّرة

قبل الإرسال، يتم دمج ترويسة المهمة وبيانات المهمة معًا وتشفيرها بخوارزمية AES باستخدام مفتاح جلسة الـ implant.```text
| Byte | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| ------------------------------------ |
|  0   |            Iv                 |
|  8   |                               |
| ------------------------------------ |
|  16  |          Checksum             |
|  24  |                               |
|  32  |                               |
|  40  |                               |
| ------------------------------------ |
|  48  |           Data                |
|  ..  |                               |
| ------------------------------------ |
  • Iv: متجه تهيئة بطول 16 بايت.
  • Checksum: مجموع اختباري HMAC256 بطول 32 بايت.
  • Data: البيانات المشفّرة.

تبادل الرسائل

تسجيل الزرعة

يجب على الزرعة تسجيل نفسها لدى خادم الفريق قبل أن تتمكن من استلام أو إرسال أي بيانات مهام.

توليد IMPLANT-METADATA

تنشئ الزرعة رسالة [IMPLANT-METADATA]، وتشفّرها باستخدام مفتاح RSA العام لخادم الفريق، ثم ترسلها إلى خادم الفريق.

استلام IMPLANT-METADATA

يستخدم خادم الفريق مفتاح RSA الخاص به لفك تشفير رسالة [IMPLANT-METADATA] الخاصة بالزرعة، ويجب عليه تسجيلها كجلسة/استدعاء جديدة.

تسجيل وصول الزرعة

يجب على الزرعة أن "تسجّل وصولها" لدى خادم الفريق لتلقي أي بيانات مهام معلقة خاصة بها أو بزروعها الفرعية.

طلب تسجيل الوصول

طريقة تسجيل الوصول خاصة بقناة C2 وغير مشمولة في هذه المواصفات. يجوز للزرعة المسجّلة إرسال معرّفها فقط لتسجيل الوصول. ومع ذلك، إذا غيّرت الزرعة منذ ذلك الحين مفتاح الجلسة أو إعدادات السكون (sleep) أو التشتت (jitter)، فيجب عليها أيضًا إعادة إرسال بياناتها الوصفية.

استجابة تسجيل الوصول

إذا لم تكن هناك مهام معلقة، يجوز لخادم الفريق الرد بدون بيانات، أو ببيانات وهمية في شكل رسالة [NOP] أو أكثر. وبخلاف ذلك، يجب عليه الرد بمجموعة من طلبات المهام المشفّرة باستخدام AES بمفتاح جلسة الزرعة.

نظير إلى نظير

استلام LINK-X-REQ

يجب على الزرعة الفرعية كتابة بياناتها الوصفية إلى قناة P2P (مثل named pipe أو مقبس TCP) بمجرد إنشاء اتصال مع أصل جديد.

توليد LINK-REP

يجب على الأصل قراءة هذه البيانات الوصفية وإرسالها مرة أخرى إلى خادم الفريق في رسالة [LINK-REP].

استلام LINK-REP

يجب على خادم الفريق فك تشفير البيانات الوصفية للزرعة الفرعية وتسجيلها كجلسة/استدعاء جديدة، أو تحديث علاقات الأصل-الفرع الحالية في حالة فك الارتباط والربط (unlink & link).

توليد LINK-ACK

يجب على خادم الفريق إرسال رسالة [LINK-ACK] إلى الأصل الجديد لتأكيد معرّف الفرع. وينبغي للأصل استخدام حقل Label في الرسالة لربط هذه العملية.

مهام الزروع الفرعية

تُغلَّف مهام الزروع الفرعية في رسالة [LINK-PASS-THRU] أو أكثر. ستُشفَّر هذه الرسائل بمفتاح جلسة الأصل. عند الاستلام، يجب على الأصل فك تشفير الرسالة وإعادة توجيه البيانات المغلفة إلى الزرعة الفرعية المشار إليها بحقل child-id.

قد تكون البيانات المغلفة هي المهمة نفسها أو رسالة LINK-PASS-THRU أخرى إذا كان الفرع على مستوى آخر أسفل السلسلة.

تعريفات الرسائل

حقول الطابع الزمني

تُرسل جميع حقول Timestamp كأعداد صحيحة موقعة بطول 64 بت (Int64) تمثل حقبة UNIX (عدد الثواني المنقضية منذ 1 يناير 1970).

الحقول الاختيارية

لا تميز بعض اللغات بين القيمة المحذوفة والقيمة المرسلة التي تساوي صفرًا. لضمان الاتساق، يجب على التطبيقات إضافة بايت 1 أو 0 (أي TRUE أو FALSE) قبل الحقول الاختيارية للإشارة إلى ما إذا كانت القيمة موجودة أم لا.

الحقول المسبوقة بالطول

ليس من الممكن دائمًا معرفة متى ينتهي حقل ويبدأ آخر عند قراءة البيانات من تيار ثنائي. تفرض هذه المواصفات استخدام بادئة قيمة طول لهذه الحقول، حتى تعرف التطبيقات عدد البايتات أو العناصر التي يحتويها الحقل. يجب أن تُسبَق أنواع البيانات التالية بقيمة طول:

  • String (قد ينتهي أيضًا بحرف null، لكن هذا غير مطلوب).
  • SEQUENCEs التي لا يُحدَّد طولها بشكل ثابت.
  • IPV4-ADDRESS.
  • IPV6-ADDRESS.

توسيع المواصفات

يجوز للتطبيقات تضمين أنواع رسائل وأكواد تحكم وأعلام غير معرّفة في هذه المواصفات، وفقًا لتصميمها ووظائفها الفريدة. ومع ذلك، يُنصح باستخدام قيم في الطرف الأعلى من المجموعة غير المحجوزة لتقليل احتمال تخصيصها في مراجعة مستقبلية. يجب ألا تستخدم التطبيقات نوعًا أو كودًا أو علمًا معرّفًا لأي غرض آخر غير الغرض المقصود منه.

الرسائل غير المعروفة

ينبغي للتطبيقات معالجة استلام رسالة تحتوي على حقول أو أعلام لا تعرفها بشكل سلس، وإرجاع رسالة خطأ مناسبة.

IMPLANT-METADATA```text

IMPLANT-METADATA { id [1] UInt32 session-key [2] SEQUENCE of Byte (32) sleep [3] UInt32 OPTIONAL jitter [4] UInt32 OPTIONAL username [5] String OPTIONAL host-id [6] String OPTIONAL hostname [7] String OPTIONAL domain [8] String OPTIONAL ipv4-ips [9] SEQUENCE of IPV4-ADDRESS OPTIONAL ipv6-ips [10] SEQUENCE of IPV6-ADDRESS OPTIONAL process-name [11] String OPTIONAL process-id [12] UInt32 OPTIONAL architecture [13] [Architecture] OPTIONAL platform [14] [Platform] OPTIONAL os-description [15] String OPTIONAL integrity [16] [Integrity] OPTIONAL }

root@kitploit:~
### IPV4-ADDRESS```text
IPV4-ADDRESS {
  address  [1]  SEQUENCE of Byte (4)
}

IPV6-ADDRESS```text

IPV6-ADDRESS { address [1] SEQUENCE of Byte (16) }

root@kitploit:~
يجب نقل عناوين IP بترتيب بايت الشبكة.

### المنصة```text
Platform {
  Linux   = 0,
  MacOS   = 1,
  Windows = 2
}

TASK-ERROR```text

TASK-ERROR { error-code [1] UInt32 message [2] String OPTIONAL }

root@kitploit:~
## تعريفات NOP

### NOP```text
NOP {
  padding  [1]  SEQUENCE of Byte  OPTIONAL
}

تعريفات المجموعات

SET-SLEEP-REQ```text

SET-SLEEP-REQ { interval [1] UInt32 jitter [2] Byte OPTIONAL }

root@kitploit:~
### SET-SPAWNTO-REQ```text
SET-SPAWNTO-REQ {
  spawnto  [1]  String  OPTIONAL
}

إذا لم يتم تعيين حقل spawnto، يجب أن تعود الحمولة (implant) إلى تكوينها الافتراضي.

SET-BLOCKDLLS-REQ```text

SET-BLOCKDLLS-REQ { blockdlls [1] Boolean OPTIONAL }

root@kitploit:~
إذا لم يتم تعيين حقل `blockdlls`، فينبغي أن يعود البرنامج المدمج إلى تكوينه الافتراضي.

### SET-PPID-REQ```text
SET-PPID-REQ {
  ppid  [1]  UInt32  OPTIONAL
}

إذا لم يتم تعيين حقل ppid، فيجب أن تعود الزرعة إلى تكوينها الافتراضي.

تعريفات نظام الملفات

FILE-COPY-REQ```text

FILE-COPY-REQ { source [1] String destination [2] String force [3] Boolean OPTIONAL }

root@kitploit:~
### FILE-MOVE-REQ```text
FILE-MOVE-REQ {
  source       [1]  String
  destination  [2]  String
}

FILE-DELETE-REQ```text

FILE-DELETE-REQ { path [1] String }

root@kitploit:~
### FILE-UPLOAD-REQ```text
FILE-UPLOAD-REQ {
  destination  [1]  String
  content      [2]  SEQUENCE of Byte
}

FILE-DOWNLOAD-REQ```text

FILE-DOWNLOAD-REQ { path [1] String }

root@kitploit:~
### FILE-DOWNLOAD-REP```text
FILE-DOWNLOAD-REP {
  current-chuck  [1]  UInt16
  total-chunks   [2]  UInt16
  chunk-content  [3]  SEQUENCE of Byte
}

DIR-PRINT-REP```text

DIR-PRINT-REP { path [1] String }

root@kitploit:~
### DIR-CHANGE-REQ```text
DIR-CHANGE-REQ {
  path  [1]  String  OPTIONAL
}

إذا كان حقل path غير معيّن، ينبغي للـ implant تغيير دليل العمل الخاص به إلى موقع 'افتراضي' (مثل دليل المستخدم الرئيسي).

DIR-CREATE-REQ```text

DIR-CREATE-REQ { path [1] String }

root@kitploit:~
### DIR-CREATE-REP```text
DIR-CREATE-REP {
  entry  [1]  [FileSystemEntry]
}

DIR-COPY-REQ```text

DIR-COPY-REQ { source [1] String destination [2] String }

root@kitploit:~
### DIR-MOVE-REQ```text
DIR-MOVE-REQ {
  source       [1]  String
  destination  [2]  String
}

DIR-LIST-REQ```text

DIR-LIST-REQ { path [1] String OPTIONAL access-control [2] Boolean OPTIONAL }

root@kitploit:~
إذا كان حقل `path` *غير* معيّن، فينبغي على ال implant أن يعرض دليل العمل الحالي الخاص به.

### DIR-LIST-REP```text
DIR-LIST-REP {
  entries  [1]  SEQUENCE of [FileSystemEntry]
}

DIR-DELETE-REQ```text

DIR-DELETE-REQ { path [1] String recurse [2] Boolean OPTIONAL }

root@kitploit:~
### FileSystemEntry```text
FileSystemEntry {
  path            [1]  String
  length          [2]  UInt32                      OPTIONAL
  attributes      [3]  [FileAttributes]            OPTIONAL
  owner           [4]  String                      OPTIONAL
  created         [5]  Timestamp                   OPTIONAL
  last-accessed   [6]  Timestamp                   OPTIONAL
  last-written    [7]  Timestamp                   OPTIONAL
  access-control  [8]  SEQUENCE of [FileSecurity]  OPTIONAL
}

FileAttributes

أعلام على مستوى البت.```text FileAttributes { Normal = 1, Archive = 2, Compressed = 4, ReadOnly = 8, Hidden = 16, Directory = 32, System = 64 }

root@kitploit:~
### FileSecurity```text
FileSecurity {
  identity     [1]  String
  access-mask  [2]  Int32
  inheritance  [3]  [Inheritance]  OPTIONAL
  propagation  [4]  [Propagation]  OPTIONAL
}

الوراثة

أعلام بتية.```text Inheritance { None = 0, ContainerInherit = 1, ObjectInherit = 2, }

root@kitploit:~
### الانتشار

أعلام بت.```text
Propagation {
  None               = 0,
  NoPropagateInherit = 1,
  InheritOnly        = 2,
}

تعريفات WhoAmI

WHOAMI-REP```text

WHOAMI-REP { primary [1] String impersonation [2] String OPTIONAL }

root@kitploit:~
## تعريفات العمليات

### PROC-LIST-REP```text
PROC-LIST-REP {
  processes  [1]  SEQUENCE of [ProcessEntry]
}

PROC-KILL-REQ```text

PROC-KILL-REQ { process-id [1] UInt32 force [2] Boolean OPTIONAL }

root@kitploit:~
### PROC-INJ-REQ```text
PROC-INJ-REQ {
  shellcode   [1]  SEQUENCE of Byte
  capability  [2]  SEQUENCE of Byte
  process-id  [3]  UInt32            OPTIONAL
}

ProcessEntry```text

ProcessEntry { process-name [1] String process-id [2] UInt32 parent-process-id [3] UInt32 OPTIONAL session-id [4] Byte OPTIONAL owner [5] String OPTIONAL architecture [6] [Architecture] OPTIONAL integrity [7] [Integrity] OPTIONAL }

root@kitploit:~
### البنية```text
Architecture {
  X86   = 0,  // 32-bit Intel
  X64   = 1,  // 64-bit Intel
  Arm   = 2,  // 32-bit ARM
  Arm64 = 3,  // 64-bit ARM
  Wasm  = 4   // WebAssembly
}

السلامة```text

Integrity { Untrusted = 0, Low = 1, Medium = 2, // user High = 3, // sudoers System = 4 // root }

root@kitploit:~
## تعريفات السجل

### REG-QUERY-REQ```text
REG-QUERY-REQ {
  hive            [1]  [RegistryHive]
  key             [2]  String          OPTIONAL
  value           [3]  String          OPTIONAL
  access-control  [4]  Boolean         OPTIONAL
}

REG-QUERY-REP```text

REG-QUERY-REP { values [1] SEQUENCE of [RegistryValue] keys [2] SEQUENCE of [RegistryKey] }

root@kitploit:~
### REG-ADD-REQ```text
REG-ADD-REQ {
  hive   [1]  [RegistryHive]
  key    [2]  String
  name   [3]  String               OPTIONAL
  kind   [4]  [RegistryValueKind]  OPTIONAL
  value  [5]  SEQUENCE of Byte     OPTIONAL
}

REG-DELETE-REQ```text

REG-DELETE-REQ { hive [1] [RegistryHive] key [2] String }

root@kitploit:~
### RegistryHive```text
RegistryHive {
  ClassesRoot   = 0,
  CurrentUser   = 1,
  LocalMachine  = 2,
  Users         = 3,
  CurrentConfig = 4
}

RegistryKey```text

RegistryKey { name [1] String access-control [2] [RegistrySecurity] OPTIONAL }

root@kitploit:~
### RegistryValue```text
RegistryValue {
  name            [1]  String
  type            [2]  [RegistryValueKind]
  data            [3]  SEQUENCE of Byte
  access-control  [4]  SEQUENCE of [RegistrySecurity]  OPTIONAL
}

RegistryValueKind```text

RegistryValueKind { None = 0, // REG_NONE String = 1, // REG_SZ ExpandString = 2, // REG_EXPAND_SZ Binary = 3, // REG_BINARY DWord = 4, // REG_DWORD MultiString = 5, // REG_MULTI_SZ Qword = 6 // REG_QWORD }

root@kitploit:~
### RegistrySecurity```text
RegistrySecurity {
  identity     [1]  String
  access-mask  [2]  Int32
  inheritance  [3]  [Inheritance]  OPTIONAL
  propagation  [4]  [Propagation]  OPTIONAL
}

تعريفات إعادة توجيه المنفذ العكسي

RPORTFWD-START```text

RPORTFWD-START { bind-port [1] UInt16 localhost-only [2] Boolean OPTIONAL forward-host [3] String forward-port [4] UInt16 }

root@kitploit:~
### RPORTFWD-DATA```text
RPORTFWD-DATA {
  data  [1]  SEQUENCE of Byte
}

تعريفات البيئة

ENV-GET-REQ```text

ENV-GET-REQ { key [1] String }

root@kitploit:~
### ENV-GET-REP```text
ENV-GET-REP {
  value  [1]  String
}

ENV-SET-REQ```text

ENV-SET-REQ { key [1] String value [2] String }

root@kitploit:~
## تعريفات SOCKS

### SOCKS-CONNECT-REQ```text
SOCKS-CONNECT-REQ {
  id      [1]  UInt32
  target  [2]  SEQUENCE of Byte (4)
  port    [3]  UInt16
}

SOCKS-DATA```text

SOCKS-DATA { id [1] UInt32 data [2] SEQUENCE of Byte }

root@kitploit:~
### SOCKS-CLOSE-REQ```text
SOCKS-CLOSE-REQ {
  id  [1]  UInt32
}

## Token Definitions

### TOKEN-LIST-REP

```text
TOKEN-LIST-REP {
  tokens  [1]  SEQUENCE of [TokenEntry]
}```

### TOKEN-CREATE-REQ

```text
TOKEN-CREATE-REQ {
  username  [1]  String
  domain    [2]  String  OPTIONAL
  password  [3]  String  OPTIONAL
}```

### TOKEN-STEAL-REQ

```text
TOKEN-STEAL-REQ {
  process-id   [1]  UInt32
  access-mask  [2]  UInt32  OPTIONAL
}```

### TOKEN-USE-REQ

```text
TOKEN-USE-REQ {
  index  [1]  Byte
}```

### TOKEN-DELETE-REQ

```text
TOKEN-DELETE-REQ {
  index  [1]  Byte
}```

### TokenEntry

```text
Token {
  index       [1]  Byte
  username    [2]  String
  handle      [3]  String  OPTIONAL
  process-id  [4]  UInt32  OPTIONAL
}```

## Implant Store Definitions

### STORE-LIST-REP

```text
STORE-LIST-REP {
  items  [1]  SEQUENCE of [StoreItem]
}```

### STORE-ADD-ITEM Definition

```text
STORE-ADD-ITEM-REQ {
  item  [1]  SEQUENCE OF Byte
  name  [2]  String
  type  [3]  [StoreItemType]
}```

### STORE-DELETE-ITEM Definition

```text
STORE-DELETE-ITEM-REQ {
  index  [1]  Byte
}```

### StoreItem

```text
StoreItem {
  index  [1]  Byte
  name   [2]  String
  type   [3]  [StoreItemType]
}```

### StoreItemType

```text
StoreItemType {
  Assembly = 0,
  BOF      = 1,
  Script   = 2,
  Generic  = 3
}```

## Local Execution Definitions

### RUN-REQ

```text
RUN-REQ {
  program    [1]  String
  arguments  [2]  String  OPTIONAL
  token      [3]  Byte    OPTIONAL
}```

### RUN-REP

```text
RUN-REP {
  output  [1]  String
}```

### EXEC-ASM-REQ

Either store-index or assembly MUST be provided.

```text
EXEC-ASM-REQ {
  store-index  [1]  Byte                OPTIONAL
  assembly     [2]  SEQUENCE of Byte    OPTIONAL
  arguments    [3]  SEQUENCE of String  OPTIONAL
  bypass-amsi  [4]  Boolean             OPTIONAL
  bypass-etw   [5]  Boolean             OPTIONAL
}```

### EXEC-ASM-REP

```text
EXEC-ASM-REP {
  output  [1]  String
}```

### EXEC-BOF-REQ

Either store-index or bof MUST be provided.

```text
EXEC-BOF-REQ {
  store-index  [1]  Byte              OPTIONAL
  bof          [2]  SEQUENCE of Byte  OPTIONAL
  arguments    [3]  SEQUENCE of Byte  OPTIONAL
  bypass-amsi  [4]  Boolean           OPTIONAL
  bypass-etw   [5]  Boolean           OPTIONAL
}```

### EXEC-BOF-REP

```text
EXEC-BOF-REP {
  output  [1]  String
}```

### EXEC-POSH-REQ

Either store-index or script MUST be provided.

```text

EXEC-POSH-REQ { cmdlet [1] String store-index [2] Byte OPTIONAL script [3] SEQUENCE of Byte OPTIONAL bypass-amsi [3] Boolean OPTIONAL bypass-etw [4] Boolean OPTIONAL }

root@kitploit:~

### EXEC-POSH-REP

```text
EXEC-POSH-REP {
  output  [1]  String
}```

## Screenshot Definitions

### SCRNSHOT-REP

```text
SCRNSHOT-REP {
  data  [1]  SEQUENCE of Byte
}```

## Remote Execution Definitions

### WINRM-REQ

```text
```
WINRM-REQ {
  target     [1]  String
  program    [2]  String
  arguments  [3]  String  OPTIONAL
}

WMI-REQ

root@kitploit:~
WMI-REQ {
  target     [1]  String
  program    [2]  String
  arguments  [3]  String  OPTIONAL
}```

### PSEXEC-REQ

```text
PSEXEC-REQ {
  target               [1]  String
  service-name         [2]  String
  service-description  [3]  String  OPTIONAL
  bin-path             [4]  String
}```

## Peer-to-Peer Definitions

### LINK-SMB-REQ

```text

LINK-SMB-REQ { target [1] String pipename [2] String }

root@kitploit:~

### LINK-TCP-REQ

```text
LINK-TCP-REQ {
  target  [1]  String
  port    [2]  UInt32
}```

### LINK-REP

```text
LINK-SMB-REP {
  child-metadata  [1]  SEQUENCE of Byte
}```

### LINK-ACK

```text
LINK-ACK {
  child-id  [1]  UInt32
}```

### LINK-PASS-THRU

```text
LINK-PASS-THRU {
  child-id  [1]  UInt32
  message   [2]  SEQUENCE of Byte
}```

## JOB Definitions

### JOB-LIST-REP

```text
jobs  [1]  Sequence of [JobEntry]```

### JOB-KILL-REQ

```text
index  [1]  UInt32```

### JobEntry
```text
index  [1]  UInt32
  type   [2]  Byte
  code   [3]  Byte```
تنزيل الأداة