ملخص
RevSuit عبارة عن منصة اتصال عكسي مرنة وقوية مصممة لتلقي الاتصال من المضيف المستهدف عند الاختراق. وهو يدعم حاليًا بروتوكولات HTTP و DNS و RMI و MySQL و FTP.
مرن:
- يمكن لـ RevSuit وضع قواعد مرنة لالتقاط اتصالات مختلفة.
- قم بالنشر والتشغيل عبر الثنائيات دون القلق بشأن أخطاء التبعية السيئة.
قوي:
- يسمح بتخصيص الاستجابة للاتصالات المختلفة من خلال القواعد ويدعم إنشاء الاستجابة الديناميكية باستخدام متغيرات القالب.
- دعم مجموعة متنوعة من البروتوكولات ، ودعم الاستخدام المتعمق لبعض البروتوكولات ، مثل إعادة ربط DNS ، و MySQL Load Local Data ، و JDBC Deserialize Exploit ، و FTP Passive Mode SSRF ، وما إلى ذلك.
- دعم أصلي للاستخدام مع الماسحات الضوئية.
- دعم دفع الإخطارات لبرامج المكتب الشعبية.
- ميزات أخرى مدروسة ومفصلة.
الاستخدام الأساسي
تحضير
قم بتنزيل أحدث إصدار أولاً. في الوقت الحالي ، يتوفر فقط الملف الثنائي لبنية amd64 للتنزيل ، إذا كنت بحاجة إلى استخدامه في بنيات أخرى ، فيمكنك تجميعه بنفسك.
سيقوم RevSuit بإنشاء ملف التكوين الافتراضي عند التشغيل لأول مرة. قم بتعديل ملف التكوين وفقًا لاحتياجاتك ، ثم أعد تشغيله.
لتأكيد موقع IP ، فإنه يحتاج إلى استخدام قاعدة بيانات موقع IP. QQwry
كمصدر بيانات افتراضيًا ، يمكنك أيضًا تعديل التكوين لاستخدامه GeoIP
. إذا كانت قاعدة البيانات المحددة غير متوفرة في الدليل الحالي أو تم تحديث قاعدة البيانات لأكثر من أسبوع ، فسيقوم RevSuit تلقائيًا بتنزيل أحدث قاعدة بيانات. إذا فشل التنزيل ، فسيظل IpArea
الحقل فارغًا دائمًا.
$ ./revsuit
2021/05/16 22:55:10 [INFO] جارٍ تنزيل qqwry.dat ...
____ _____ _ __
/ __ \ _ __ _ __ / ___ / __ __ (_) / _
/ / _ / / _ \ | / / \ _ _ \ / / / / __ /
/ _ ، _ / __ / | / / ___ / / / _ / / / / _
/ _ / | _ | \ _ __ / | ___ // ____ / \ _ _ ، _ / _ / \ _ _ /
احببيتا 0.1
https://revsuit.pro
2021/05/16 22:55:22 [INFO] بدء تشغيل خادم HTTP في: 80 ، الرمز المميز: your_token
2021/05/16 22:55:22 [INFO] ابدأ في الاستماع إلى منفذ FTP PASV على: 2020 ، PasvIP هو 10.9.8.7
2021/05/16 22:55:22 [INFO] بدء تشغيل خادم FTP في: 21
2021/05/16 22:55:22 [INFO] بدء تشغيل MySQL Server في: 3306
2021/05/16 22:55:22 [INFO] بدء تشغيل خادم RMI في: 1099
2021/05/16 22:55:22 [INFO] بدء تشغيل خادم DNS في: 53
بعد التشغيل ، يمكنك زيارة /revsuit/admin/
مسار خادم HTTP وإدخال الرمز المميز للوصول إلى لوحة التحكم.
إنشاء القواعد وتلقي الاتصال
خذ إنشاء قواعد HTTP كمثال:
بعض الملاحظات كالتالي :
- و
name
وflagFormat
الحكم هي فريدة من نوعها. FlagFormat
يستخدم صيغة التعبير العادي ، وبالنسبة للبروتوكولات المختلفة ، تختلف الحقول المطابقة بواسطة flagFormat ، يمكنك التحقق من التلميحات المقابلة للحصول على التفاصيل عند إنشاء القواعد.- القواعد ذات المرتبة العالية ستصبح سارية المفعول أولاً.
- بالنسبة لقواعد البروتوكول المختلفة ، يمكنك عمل استجابات مخصصة مختلفة ، وبالنسبة لبعض البروتوكولات ، يمكن استخدام متغيرات القالب.
- يمكنك تعيين المجموعة المسماة للتعبيرات العادية في
flagFormat
، وسيتم أيضًا استخدام نتيجة التجميع المطابق كمتغير قالب.
كما هو موضح أدناه ، نقوم بإنشاء قاعدة تستخدم متغيرات القالب المضمنة ومتغيرات القالب المخصصة لبروتوكول http ، ونقوم بتسميتها test_create_rule
:
ثم قدم طلبًا يفي بالقاعدة واطلع على الرد.
سيتم تسجيل الطلب على المنصة في نفس الوقت.
يلاحظ
إذا كنت تريد أن يتم إخطارك بالاتصالات الجديدة على برنامج مكتبك ، فيمكنك تكوين عنوان الرد التلقائي على الويب للبرنامج ذي الصلة في ملف التكوين وتشغيل Notice
المفتاح الخاص بالقاعدة المقابلة. دعم فقط أربعة أنواع من البرامج حاليًا: dingtalk و wechat و lark و Slack. (دعم Discord و telegram موجود في الخطة.)
قواعد الاستيراد / التصدير
إذا كنت تقوم بترحيل الأنظمة الأساسية أو إزالة البيانات ، فقد يكون من الصعب إعادة إنشاء القواعد. لهذا السبب تدعم المنصة استيراد القواعد وتصديرها.
تقع نقطة الدخول لهذه الوظيفة في Settings>RULES
.
يتم تخزين القواعد بتنسيق yaml للاستيراد والتصدير ، مثل ما يلي:
http :
- الاسم : test_create_rule
flag_format : (؟ P <what> \ w +) \؟
الترتيب : 0
push_to_client : إشعار خاطئ
: false response_status_code : " 302 " response_headers :
الموقع : $ {query.url} response_body : $ {header.say} $ {what}
- الاسم : other_rule flag_format : الرتبة الأخرى : 1 push_to_client : إشعار خاطئ :
صحيح
response_status_code : " 200 "
response_headers : {}
response_body : مرحبا Revsuit!
نظام أسماء النطاقات :
... ...
الاستخدام المسبق
استخدم مع الماسح
تم فصل RevSuit عن مشروع الماسح الخاص بي ، لذلك يعمل دعمه الأصلي مع الماسحات الضوئية.
من منظور RevSuit ، نسمي الماسح الضوئي بالعميل.
إنشاء اتصال
يستخدم RevSuit الأحداث التي يرسلها خادم HTTP (SSE) لإنشاء قناة اتصال أحادية الاتجاه مع العميل.
واجهة برمجة التطبيقات للقناة هي /revsuit/api/events?message
:. يحتاج العميل أولاً إلى إضافة Token: your token
الرأس إلى الرأس ، ثم الوصول إلى واجهة برمجة التطبيقات (API) لإنشاء القناة. عندما تتلقى المنصة اتصالاً جديدًا ، flag
سيتم تمرير القاعدة التي تم التقاطها إلى العميل عبر هذه القناة.
فيما يلي عرض توضيحي بسيط باستخدام مكتبة sse الخاصة بـ Golang كمثال.
متعدد العملاء
كما هو موضح أعلاه ، يدعم RevSuit العديد من العملاء ، ويتلقى كل عميل في الحالة المتصلة دفعة flag
، لذلك يمكن دعم المسح الموزع.
قائمة انتظار التخزين المؤقت
سيتم تخزين RevSuit flag
مؤقتًا في قائمة الانتظار عندما لا يكون هناك اتصال بالعميل وإرساله عند اتصال العميل ، لذلك لا داعي للقلق بشأن فقد الثغرة الأمنية لأن العميل قطع الاتصال. (هذا مفيد بشكل خاص لاكتشاف الثغرات الأمنية التي تسبب التأخير.)
استخدم FlagGroup
في سيناريو فحص الثغرات الأمنية في العالم الحقيقي ، قد ترسل عددًا كبيرًا من الحمولات المختلفة لنقطة ضعف واحدة ، وقد تكون جميعها صالحة ، مما قد يؤدي إلى تلقي النظام الأساسي للرابط الخلفي العديد من الطلبات ، ومع ذلك فهي ناتجة عن نفس الثغرة الأمنية . إذا كنت لا تريد أن يتلقى العميل الكثير flags
من نفس الثغرة الأمنية ، فيمكنك الاستفادة من flagGroup
ميزة تنسيق flagFormat للقاعدة.
FlagGroup
هو المحتوى المطابق للمجموعة المجهولة في flagFormat
مجال القاعدة. ستتحقق المنصة من المحتوى المطابق في التجميع ، ويتم دفع العلم إلى العميل فقط عندما يتم flagGroup
التقاط المحتوى ( ) لأول مرة.
على سبيل المثال ، مسح SSRF.
أولاً ، قم بإنشاء قاعدة مثل ما يلي:
http :
- اسم : ssrf
flag_format : (ssrf [A-Z0-9] {6}) [0-9] {1،3}
رتبة : 0
push_to_client : كاذبة
إشعار : كاذبة
response_status_code : " 200 "
response_headers : {}
response_body : " هنا SSRF! "
لنفترض أن هدفنا هو https://www.testvuln.com?url=api.com&p=useless
، وبالنسبة إلى SSRF لدينا 5 حمولات. قد يكون الطلب النهائي المرسل بواسطة الماسح الضوئي ['https://www.testvuln.com?url=http://revsuit.com/ssrfa98oni1&p=useless','https://www.testvuln.com?url=http://revsuit.com/ssrfa98oni2&p=useless', ... ,'https://www.testvuln.com?url=//revsuit.com/ssrfa98oni5&p=useless
"]. قد يهاجمون جميعًا بنجاح.
ومع ذلك، لأنه يتم استخدام تجمع المجهول في ال حكم flagFormat
، وستوفر هذه المنصة الاستعلام متصلا flagGroup
، في هذه الحالة ssrfa98oni
، ودفع flag
إلى العميل فقط في أول ظهور لها، وبالتالي فإن العميل سيحصل فقط راية واحدة: ssrfa98oni1
. إنه يثبت بالفعل أن url
معلمة الهدف معرضة للخطر.
التجميع متعدد الوحدات
في سيناريوهات اختبار الاختراق الفعلي ، يمكن تنفيذ مهام معينة بسهولة وبسرعة من خلال الجمع بين وحدات RevSuit المختلفة ومطابقتها. فيما يلي مثال على XXE أعمى في Java Web ، يوضح كيفية استخدام وحدتي HTTP و FTP من RevSuit ، جنبًا إلى جنب مع متغيرات القالب ، لإكمال فحص المنفذ بسرعة.
قم أولاً بإنشاء قاعدة HTTP لإرجاع evil.dtd ، وقم بتخصيص الاستجابة لمحتويات dtd بحيث يتم الاتصال بخدمة FTP الخاصة بـ RevSuit ، واستخدم متغيرات القالب لتمرير المضيف والمنفذ ليتم فحصهما إلى FTP عبر مستخدم وكلمة مرور FTP .
ثم قم بإنشاء قاعدة FTP تستقبل المضيف والمنفذ ليتم فحصهما من متغيرات قالب المستخدم وكلمة المرور ، واضبطها على Pasv Address.
ثم استخدم BurpSuit لبدء الفحص ، عن طريق تعيين معلمات المضيف والمنفذ في عنوان URL evil.dtd لتعيين هدف فحص المنفذ.
تأثير الجري كما يلي:
نظرًا لأنه سيتم تعطل اتصال FTP إذا Passive Address
لم يكن الوصول إليه متاحًا ، يمكننا تحديد ما إذا كان المنفذ مفتوحًا أم لا بناءً على ما إذا كان الاتصال يخرج بشكل طبيعي ، في هذا المثال ، اكتشفنا بنجاح أن المنفذين 8005 و 8080 مفتوحان.
المزيد من الاستخدام
يجري إعداد ويكي أكثر تفصيلاً ، يمكنك استكشافه بنفسك قبله.
ردود الفعل والاقتراحات والتواصل
أرسل مشكلة أو تواصل معي من خلال Weixin: TGk0bjA2Cg==
ليست هناك تعليقات:
إرسال تعليق