
حوّل بسهولة تطبيقات سطر الأوامر أحادية الخيط إلى تطبيق سريع متعدد الخيوط مع دعم CIDR و glob.
حوّل بسهولة تطبيقات سطر الأوامر أحادية الخيط إلى تطبيق سريع متعدد الخيوط مع دعم CIDR و glob.
Install using:
$ python3 setup.py install
سيتم تثبيت التبعيات وسيتم إضافة Interlace إلى مسارك كـ interlace.
| Example | Notation Type |
|---|---|
| 80 | منفذ واحد |
| 1-80 | تدوين الشرطة، تنفيذ أمر لكل منفذ من 1 إلى 80 |
| 80,443 | تنفيذ أمر لكل من المنفذين 80 و443 |
يتم معالجة كل من -t و -tL بنفس الطريقة. يمكنك تمرير الأهداف كما تفعل عند استخدام nmap. يمكن القيام بذلك باستخدام تدوين CIDR، أو تدوين الشرطة، أو قائمة مفصولة بفواصل من الأهداف. يمكن لملف قائمة أهداف واحد أيضًا استخدام أنواع تدوين مختلفة لكل سطر.
بدلاً من ذلك، يمكنك تمرير الأهداف عبر STDIN ولن تكون هناك حاجة إلى -t أو -tL.
سيتم استبدال المتغيرات التالية في الأوامر في وقت التشغيل:
Interlace أيضًا يستخدم ميزتين إضافيتين للتحكم في تدفق التنفيذ داخل ملف الأوامر: _blocker_ و _block:<name>_. تمنع الحواجز تنفيذ الأوامر المدرجة بعدها حتى تكتمل جميع الأوامر قبلها، ويمكن استخدام الكتل لفرض تنفيذ تسلسلي للأوامر المدرجة داخل الكتلة، لهدف واحد.
يتم تشغيلها على مستوى كل هدف. إذا كانت هناك خيوط متاحة وكان هناك حاجز في طريق الهدف الحالي، فسيبدأ Interlace أوامر من الهدف التالي ضمن قائمة الأهداف لتعظيم الكفاءة.
سيتيح لك استخدام هذه الميزات التحكم في تدفق التنفيذ للأهداف الفردية بشكل أكثر مباشرة لمنع الأوامر من التشغيل خارج الترتيب.
تمنع الحواجز أي شيء أسفلها من التنفيذ حتى تكتمل جميع الأوامر فوقها (للمضيف النشط حاليًا). على سبيل المثال، في ما يلي:
mkdir -p _output_/_target_/scans/
_blocker_
nmap _target_ -oA _output_/_target_/scans/_target_-nmap
استخدام حاجز هنا يمنع nmap من التشغيل على هدف قبل إنشاء هيكل المجلد الأساسي، مما يمنع nmap من إلقاء استثناء.
تفرض الكتل تشغيل كل شيء داخلها بشكل تسلسلي. يمكنك أيضًا استخدام كتل متعددة لكل ملف أوامر. على سبيل المثال، في ما يلي:
_block:nmap_
mkdir -p _target_/output/scans/
nmap _target_ -oN _target_/output/scans/_target_-nmap
_block:nmap_
nikto --host _target_
في هذا المثال، ستعمل الكتلة بنفس الطريقة السابقة، ولكن على افتراض أن عدد الخيوط مرتفع بما يكفي، فسيبدأ nikto في التشغيل فورًا، وتمرير النتائج مرة أخرى إلى الطرفية (بينما يحدث nmap وإنشاء الملفات في الخلفية).
لنفترض أن لديك ملفًا targets.txt يحتوي على المحتويات التالية:
bugcrowd.com
hackerone.com
يمكنك استخدام Interlace للتشغيل على أي عدد من الأهداف داخل هذا الملف باستخدام: bash
➜ /tmp interlace -tL ./targets.txt -threads 5 -c "nikto --host _target_ > ./_target_-nikto.txt" -v
=========================================================================
Interlace v1.0 by Michael Skelton (@codingo_) & Sajeeb Lohani (@sml555_)
=========================================================================
[14:33:23] [THREAD] [nikto --host hackerone.com > ./hackerone.com-nikto.txt] Added to Queue
[14:33:23] [THREAD] [nikto --host bugcrowd.com > ./bugcrowd.com-nikto.txt] Added to Queue
سيقوم هذا بتشغيل Nikto على كل مضيف وحفظه في ملف لكل هدف. لاحظ أنه في المثال أعلاه بما أننا نستخدم عامل >، فلن يتم تغذية النتائج مرة أخرى إلى الطرفية؛ ومع ذلك فهذه وظيفة مرغوبة لأننا بخلاف ذلك لن نتمكن من إسناد النتائج التي يعيدها Nikto إلى الهدف الصحيح.
بالنسبة للتطبيقات التي ترغب فيها في التغذية الراجعة، ما عليك سوى تمرير الأوامر كالمعتاد (أو استخدام tee).
باستخدام المثال أعلاه، لنفترض أنك تريد تشغيل فحوصات مستقلة لكل من المنفذين 80 و443 لنفس الأهداف. ستستخدم بعد ذلك ما يلي:
➜ /tmp interlace -tL ./targets.txt -threads 5 -c "nikto --host _target_:_port_ > ./_target_-_port_-nikto.txt" -p 80,443 -v
=========================================================================
Interlace v1.0 by Michael Skelton (@codingo_) & Sajeeb Lohani (@sml555_)
=========================================================================
[14:33:23] [THREAD] [nikto --host hackerone.com:80 > ./hackerone.com-nikto.txt] Added to Queue
[14:33:23] [THREAD] [nikto --host bugcrowd.com:80 > ./hackerone.com-nikto.txt] Added to Queue
[14:33:23] [THREAD] [nikto --host bugcrowd.com:443 > ./bugcrowd.com-nikto.txt] Added to Queue
[14:33:23] [THREAD] [nikto --host hackerone.com:443 > ./hackerone.com-nikto.txt] Added to Queue
غالبًا في اختبارات الاختراق، هناك قائمة أوامر تريد تشغيلها في كل مهمة تقريبًا. بافتراض أن القائمة تتضمن testssl.sh وnikto وsslscan، يمكنك حفظ قائمة أوامر بالمحتوى التالي في ملف يسمى commands.txt:
nikto --host _target_:_port_ > _output_/_target_-nikto.txt
sslscan _target_:_port_ > _output_/_target_-sslscan.txt
testssl.sh _target_:_port_ > _output_/_target_-testssl.txt
إذا تم إعطاؤك هدفًا example.com، فيمكنك تشغيل كل من هذه الأوامر ضد هذا الهدف باستخدام ما يلي:
interlace -t example.com -o ~/Engagements/example/ -cL ./commands.txt -p 80,443
سيقوم هذا بعد ذلك بتشغيل nikto وsslscan وtestssl.sh لكل من المنفذين 80 و443 ضد example.com وحفظ الملفات في مجلد المهام الخاص بك.
يقوم Interlace تلقائيًا بتوسيع تدوين CIDR عند بدء الخيوط (ما لم يتم تمرير العلم --no-cidr). يتيح لك ذلك تمرير تدوين CIDR إلى مجموعة متنوعة من التطبيقات:
لتشغيل فحص مضيف افتراضي ضد كل هدف ضمن 192.168.12.0/24 باستخدام أمر مباشر يمكنك استخدام:
interlace -t 192.168.12.0/24 -c "vhostscan _target_ -oN _output_/_target_-vhosts.txt" -o ~/scans/ -threads 50
هذا على الرغم من أن VHostScan لا يحتوي على أي دعم مدمج لتدوين CIDR. نظرًا لأن Interlace يوسع التدوين قبل بناء قائمة انتظار من الخيوط، فإن VHostScan من جميع النوايا يتلقى فقط قائمة بعناوين IP مباشرة لفحصها.
يقوم Interlace تلقائيًا بتوسيع نطاقات glob عند بدء الخيوط. يتيح لك ذلك تمرير نطاقات glob إلى مجموعة متنوعة من التطبيقات:
لتشغيل فحص مضيف افتراضي ضد كل هدف ضمن 192.168.12.* باستخدام أمر مباشر يمكنك استخدام:
interlace -t 192.168.12.* -c "vhostscan _target_ -oN _output_/_target_-vhosts.txt" -o ~/scans/ -threads 50
مرة أخرى، VHostScan لا يحتوي على أي دعم مدمج لصيغة نطاق glob.
يقوم Interlace تلقائيًا بتوسيع نطاقات الشرطة عند بدء الخيوط. يتيح لك ذلك تمرير نطاقات glob إلى مجموعة متنوعة من التطبيقات:
لتشغيل فحص مضيف افتراضي ضد كل هدف ضمن 192.168.12.1-15 باستخدام أمر مباشر يمكنك استخدام:
interlace -t 192.168.12.1-15 -c "vhostscan _target_ -oN _output_/_target_-vhosts.txt" -o ~/scans/ -threads 50
مرة أخرى، VHostScan لا يحتوي على أي دعم مدمج لصيغة نطاق الشرطة.
قم بتشغيل فحص مضيف افتراضي ضد كل مضيف في ملف (target-lst.txt)، مع تحديد الفحوصات في أي وقت بحد أقصى 50 خيطًا.
يمكن القيام بذلك باستخدام أمر مباشر:
interlace -tL ./target-list.txt -c "vhostscan -t _target_ -oN _output_/_target_-vhosts.txt" -o ~/scans/ -threads 50
أو بدلاً من ذلك، لتشغيل نفس الأمر أعلاه، ولكن باستخدام ملف أوامر:
interlace -cL ./vhosts-commands.txt -tL ./target-list.txt -threads 50 -o ~/scans
يفترض هذا أن محتوى ملف الأوامر هو:
vhostscan -t $target -oN _output_/_target_-vhosts.txt
سيؤدي هذا إلى إخراج ملف لكل هدف في مجلد الإخراج المحدد. يمكنك أيضًا تشغيل أوامر متعددة بمجرد إضافتها إلى ملف الأوامر.
يقوم Interlace تلقائيًا باستثناء أي مضيفين يتم توفيرهم عند تحديدهم عبر الوسيطات -e أو -eL. هذه الوسيطات متوافقة أيضًا مع تدوينات النطاق المذكورة أعلاه (CIDR وglob والشرطة)
لتشغيل فحص مضيف افتراضي ضد كل هدف في نطاق CIDR 192.168.12.0/24 ولكن ليس للأهداف في النطاق 192.168.12.0/26، باستخدام أمر مباشر، يمكنك استخدام:
interlace -t 192.168.12.0/24 -e 192.168.12.0/26 -c "vhostscan _target_ -oN _output_/_target_-vhosts.txt" -o ~/scans/ -threads 50
باستخدام المثال أعلاه، لنفترض أنك تريد تشغيل فحوصات مستقلة عبر بروكسيات مختلفة لنفس الأهداف. ستستخدم بعد ذلك ما يلي:
➜ /tmp interlace -tL ./targets.txt -pL ./proxies.txt -threads 5 -c "nikto --host _target_:_port_ -useproxy _proxy_ > ./_target_-_port_-nikto.txt" -p 80,443 -v
تمت كتابته في الأصل بواسطة Michael Skelton (codingo) وSajeeb Lohani (sml555) بمساعدة من Charelle Collett (@Charcol0x89) لإعادة هيكلة الخيوط والنهج العام، وLuke Stephens (hakluke) للاختبار والنهج.
المساهمات في هذا المشروع مرحب بها جدًا. إذا كنت جديدًا في المصادر المفتوحة وترغب في بعض المساعدة في ذلك، فلا تتردد في التواصل معنا على Twitter (@codingo_) / (@sml555_) وسنساعدك حيثما أمكن.
| Argument | Description |
|---|
| (stdin) | قم بتوجيه قوائم الأهداف من تطبيق آخر بصيغة مفصولة بفواصل، أو تدوين CIDR، أو كمضيف فردي |
| -t | حدد هدفًا أو اسم نطاق إما بصيغة مفصولة بفواصل، أو تدوين CIDR، أو كمضيف فردي |
| -tL | حدد قائمة بالأهداف أو أسماء النطاقات |
| -e | حدد قائمة بالأهداف لاستثنائها إما بصيغة مفصولة بفواصل، أو تدوين CIDR، أو كمضيف فردي |
| -eL | حدد قائمة بالأهداف لاستثنائها |
| -threads | حدد الحد الأقصى لعدد الخيوط التي تعمل في وقت واحد (الافتراضي: 5) |
| -timeout | حدد قيمة مهلة بالثواني لأي خيط واحد (الافتراضي: 600) |
| -c | حدد أمرًا واحدًا لتنفيذه على كل هدف أو نطاق |
| -cL | حدد قائمة أوامر لتنفيذها على كل هدف أو نطاق |
| -o | حدد متغير مجلد الإخراج الذي يمكن استخدامه في الأوامر كـ _output_ |
| -p | حدد قائمة متغير المنافذ التي يمكن استخدامها في الأوامر كـ _port_. يمكن أن يكون منفذًا واحدًا، أو قائمة مفصولة بفواصل، أو نطاقًا باستخدام تدوين الشرطة |
| -pL | حدد قائمة بالبروكسيات |
| --proto | حدد البروتوكولات التي يمكن استخدامها في الأوامر كـ _proto_ |
| -rp | حدد متغير المنفذ الحقيقي الذي يمكن استخدامه في الأوامر كـ _realport_ |
| -random | حدد دليل ملفات يمكن استخدامها عشوائيًا في الأوامر كـ _random_ |
| --no-bar / --sober | إذا تم تعيينه فسيتم إزالة شريط التقدم |
| --no-cidr | إذا تم تعيينه فلن يتم توسيع تدوين CIDR في ملف الهدف تلقائيًا إلى مضيفين فرديين |
| --no-color | إذا تم تعيينه فسيتم إزالة أي ألوان أمامية أو خلفية |
| --silent | إذا تم تعيينه فسيتم عرض المعلومات المهمة فقط وسيتم حجب اللافتات والمعلومات الأخرى |
| -v | إذا تم تعيينه فسيتم عرض مخرجات مفصلة في الطرفية |
| Variable | Replacement |
|---|
| _target_ | يتم استبداله بقائمة الأهداف الموسعة التي يعمل عليها الخيط الحالي |
| _cleantarget_ | يتم استبداله بالهدف بعد تنظيفه من http:// أو https:// |
| _safe-target_ | يتم استبداله بالهدف مع الاقتباس التلقائي للأوامر، لمنع تشغيل الأوامر الفرعية |
| _host_ | يعمل بنفس طريقة _target_، ويمكن استخدامه بالتبادل |
| _output_ | يتم استبداله بمتغير مجلد الإخراج من Interlace |
| _port_ | يتم استبداله بمتغير المنفذ الموسع من Interlace |
| _realport_ | يتم استبداله بمتغير المنفذ الحقيقي من Interlace |
| _proxy_ | يتم استبداله بقائمة البروكسيات من Interlace |
| _random_ | يتم استبداله بالملف المختار عشوائيًا من Interlace |