
سكين الجيش السويسري مفتوح المصدر للاتصال التعسفي عبر بروتوكولات التطبيقات
![]() |
|---|
| شعار Mística من تصميم JoelGMSec |
Mística هي أداة تسمح بتضمين البيانات في حقول بروتوكول طبقة التطبيق، بهدف إنشاء قناة ثنائية الاتجاه للاتصالات التعسفية. حالياً، تم تنفيذ التضمين في بروتوكولات HTTP وHTTPS وDNS وICMP، لكن من المتوقع إضافة المزيد من البروتوكولات في المستقبل القريب.
تمتلك Mística تصميمًا معياريًا، مبنيًا حول بروتوكول نقل مخصص يُسمى SOTP: بروتوكول النقل البسيط فوق الشبكة. يتم تشفير البيانات، وتقسيمها إلى أجزاء، ووضعها في حزم SOTP. تُرمَّز حزم SOTP وتُضمَّن في الحقل المطلوب من بروتوكول التطبيق، ثم تُرسل إلى الطرف الآخر.
الهدف من طبقة SOTP هو تقديم بروتوكول نقل ثنائي عام مع أقل حمل إضافي. يمكن إخفاء حزم SOTP أو تضمينها بسهولة في بروتوكولات التطبيق المشروعة. كذلك تضمن SOTP استلام الطرف الآخر للحزم، وتشفر البيانات باستخدام RC4 (قد يتغير هذا في المستقبل)، وتضمن تدفق المعلومات في كلا الاتجاهين بشفافية باستخدام آلية استقصاء.
تتفاعل الوحدات مع طبقة SOTP لأغراض مختلفة:
تعمل وحدات الغلاف والطبقة العليا معًا لبناء تطبيقات مخصصة، مثل إعادة توجيه الإدخال عبر DNS أو إعادة توجيه المنافذ عن بُعد عبر HTTP.
يسمح التصميم المعياري لـ Mística بتطوير وحدات جديدة بسهولة. كما يمكن للمستخدم بسهولة اشتقاق وحدات حالية لاستخدام حقل أو ترميز مخصص، أو تعديل سلوك وحدة طبقة عليا.
يوجد قطعتان رئيسيتان من البرامج:
ms.py): يستخدم وحدات تعمل كخادم لبروتوكول طبقة التطبيق المطلوب (HTTP، HTTPS، DNS، ICMP...). وهو مصمم أيضًا بطريقة تسمح بتشغيل عدة خوادم ووحدات غلاف وطبقة عليا في نفس الوقت باستخدام نسخة واحدة من ms.py، رغم أن هذه الميزة لم تُطبق بالكامل بعد.mc.py): يستخدم وحدات تعمل كعميل لبروتوكول طبقة التطبيق المطلوب (HTTP، HTTPS، DNS، ICMP...). يمكنه استخدام وحدة طبقة عليا واحدة ووحدة غلاف واحدة فقط في نفس الوقت.يمكنك مشاهدة بعض العروض التوضيحية لـ Mística في قائمة التشغيل هذه.
المشروع له تبعيات قليلة جدًا. حاليًا:
dnslib.```
python3.7 -m pip install pip --user
pip3.7 install dnslib --userإذا كنت لا ترغب في تثبيت بايثون على نظامك، يمكنك استخدام إحدى الإصدارات المحمولة التالية:
- 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)
### المعلمات
- يُستخدم `-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`) في كل مثال.