
مكتشف النطاقات الفرعية
Lepus هي أداة لتعداد النطاقات الفرعية، والتحقق من عمليات الاستيلاء على النطاقات الفرعية، وإجراء مسح للمنافذ - وهي سريعة جدًا!
lepus.py yahoo.com
أوضاع التعداد هي طرق مختلفة يستخدمها Lepus لتحديد النطاقات الفرعية لنطاق معين. هذه الأوضاع هي:
علاوة على ذلك:
يقوم وضع الجمع بجمع النطاقات الفرعية من الخدمات التالية:
يمكنك إضافة مفاتيح API الخاصة بك في ملف config.ini.
سيتم تشغيل وحدة الجمع افتراضيًا على Lepus. إذا كنت لا تريد استخدام الجمع أثناء تشغيل Lepus (حتى لا تستنفد حدود مفتاح API الخاص بك)، يمكنك استخدام الوسيطة -nc أو --no-collectors.
يمكن استخدام وضع القاموس عندما تريد تقديم قائمة من النطاقات الفرعية إلى Lepus. يمكنك استخدام الوسيطة -w أو --wordlist متبوعة باسم الملف. تأتي قائمة مخصصة مع Lepus موجودة في lists/subdomains.txt. مثال على التشغيل:
lepus.py -w lists/subdomains.txt yahoo.com
يقوم وضع التباديل بإجراء تغييرات على قائمة النطاقات الفرعية التي تم تحديدها. لكل نطاق فرعي، سيكون هناك عدد من التباديل بناءً على ملف lists/words.txt. يمكنك أيضًا تقديم قائمة كلمات مخصصة للتباديل باستخدام الوسيطة -pw أو --permutation-wordlist متبوعة باسم الملف. مثال على التشغيل:
lepus.py --permutate yahoo.com
أو
lepus.py --permutate -pw customsubdomains.txt yahoo.com
سيقوم وضع DNS العكسي بجمع جميع عناوين IP التي تم حلها وإجراء DNS عكسي على كل منها من أجل اكتشاف المزيد من النطاقات الفرعية. على سبيل المثال، إذا تم حل www.example.com إلى 1.2.3.4، سيقوم Lepus بإجراء DNS عكسي لـ 1.2.3.4 وجمع أي نطاقات فرعية أخرى تابعة لـ example.com، مثل www2, internal أو oldsite.
لتشغيل وحدة DNS العكسي استخدم الوسيطة --reverse. بالإضافة إلى ذلك، يمكن استخدام --ripe (أو -ripe) لتوجيه الوحدة للاستعلام عن قاعدة بيانات RIPE باستخدام النطاق من المستوى الثاني لنطاقات الشبكة المحتملة. علاوة على ذلك، يدعم Lepus الوسيطة --ranges (أو -r). يمكنك استخدامها لإجراء استعلامات DNS عكسية ضد CIDRs التي تنتمي إلى النطاق الهدف.
بشكل افتراضي، ستأخذ هذه الوحدة في الاعتبار جميع عناوين IP المحددة سابقًا، ثم النطاقات المعرفة، ثم النطاقات المحددة من خلال قاعدة بيانات RIPE. في حالة كنت تريد تشغيل الوحدة فقط ضد نطاقات محددة أو نطاقات محددة بواسطة RIPE، وليس ضد جميع عناوين IP المحددة بالفعل، يمكنك استخدام الوسيطة --only-ranges (-or).
مثال على التشغيل:
lepus.py --reverse yahoo.com
أو
lepus.py --reverse -ripe -r 172.216.0.0/16,183.177.80.0/23 yahoo.com
أو فقط ضد النطاقات المعرفة أو المحددة من RIPE
lepus.py --reverse -or -ripe -r 172.216.0.0/16,183.177.80.0/23 yahoo.com
تلميح: سيحدد Lepus ASNs و Networks أثناء التعداد، لذا يمكنك أيضًا استخدام هذه النطاقات لتحديد المزيد من النطاقات الفرعية في تشغيل لاحق.
مع هذه الوحدة، سيستخدم Lepus سلاسل ماركوف لتدريب نفسه ثم إنشاء نطاقات فرعية بناءً على النطاقات المعروفة بالفعل. كلما كان السطح العام أكبر، كان الأداة أفضل في تدريب نفسها، وبالتالي تكون النتائج أفضل.
يمكن تفعيل الوحدة باستخدام الوسيطة --markovify. تتضمن المعلمات أيضًا حجم حالة ماركوف، أقصى طول للإضافة المرشحة التي تم إنشاؤها، وعدد المرشحين الذين تم إنشاؤهم. القيم المحددة مسبقًا هي 3 و 5 و 5 على التوالي. يمكن تغيير هذه الوسائط باستخدام -ms (--markov-state), -ml (--markov-length) و -mq (--markov-quantity) لتلبية احتياجاتك. ضع في اعتبارك أنه كلما كانت هذه القيم أكبر، كلما احتاج Lepus وقتًا أطول لإنشاء المرشحين.
يجب ملاحظة أن عمليات التشغيل المختلفة لهذه الوحدة قد تنشئ مرشحين مختلفين، لذا لا تتردد في تشغيلها عدة مرات متتالية. ضع في اعتبارك أنه كلما ارتفعت قيم -ms, -ml و -mq، كلما زاد الوقت اللازم لإنشاء المرشحين.
lepus.py --markovify yahoo.com
أو
lepus.py --markovify -ms 5 -ml 10 -mq 10
لدى Lepus قائمة من التوقيعات لتحديد ما إذا كان يمكن الاستيلاء على نطاق أم لا. يمكنك استخدامه من خلال تقديم الوسيطة --takeover. تدعم هذه الوحدة أيضًا إشعارات Slack، بمجرد تحديد عملية استيلاء محتملة، عن طريق إضافة رمز Slack في ملف config.ini. تتم الفحوصات ضد الخدمات التالية:
ستتحقق وحدة مسح المنافذ من المنافذ المفتوحة ضد هدف وتسجيلها في النتائج. يمكنك استخدام الوسيطة --portscan التي ستقوم افتراضيًا بمسح المنافذ 80, 443, 8000, 8080, 8443. يمكنك أيضًا استخدام منافذ مخصصة أو اختيار مجموعة محددة مسبقًا من المنافذ.
| مجموعة المنافذ | المنافذ |
|---|---|
| صغيرة | 80, 443 |
| متوسطة (افتراضي) | 80, 443, 8000, 8080, 8443 |
مثال على التشغيل:
lepus.py --portscan yahoo.com
أو
lepus.py --portscan -p huge yahoo.com
أو
lepus.py --portscan -p 80,443,8082,65123 yahoo.com
التثبيت العادي:
$ python3.7 -m pip install -r requirements.txt
يفضل التثبيت في virtualenv:
$ pyenv virtualenv 3.7.4 lepus
$ pyenv activate lepus
$ pip install -r requirements.txt
تثبيت أحدث إصدار من python على debian:
$ apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev wget
$ curl -O https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tar.xz
$ tar -xf Python-3.7.4.tar.xz
$ cd Python-3.7.4
$ ./configure --enable-optimizations --enable-loadable-sqlite-extensions
$ make
$ make altinstall
usage: lepus.py [-h] [-w WORDLIST] [-hw] [-t THREADS] [-nc] [-zt]
[--permutate] [-pw PERMUTATION_WORDLIST] [--reverse]
[-r RANGES] [--portscan] [-p PORTS] [--takeover] [--markovify]
[-ms MARKOV_STATE] [-ml MARKOV_LENGTH] [-mq MARKOV_QUANTITY]
[-f] [-v]
domain
Infrastructure OSINT
positional arguments:
domain النطاق للبحث
optional arguments:
-h, --help عرض رسالة المساعدة هذه والخروج
-w WORDLIST, --wordlist WORDLIST
قائمة كلمات تحتوي على نطاقات فرعية
-hw, --hide-wildcards
إخفاء حلول الوايلد كارد
-t THREADS, --threads THREADS
عدد الخيوط [الافتراضي هو 100]
-nc, --no-collectors تخطي التعداد السلبي للنطاقات الفرعية
-zt, --zone-transfer محاولة نقل النطاق من خوادم الأسماء المحددة
--permutate إجراء التباديل على النطاقات التي تم حلها
-pw PERMUTATION_WORDLIST, --permutation-wordlist PERMUTATION_WORDLIST
قائمة كلمات لإجراء التباديل بها [الافتراضي هو
lists/words.txt]
--reverse إجراء استعلامات DNS عكسية على عناوين IP العامة التي تم حلها
-ripe, --ripe استعلام قاعدة بيانات RIPE باستخدام النطاق من المستوى الثاني
للشبكات لاستخدامها في استعلامات DNS العكسية
-r RANGES, --ranges RANGES
نطاقات IP مفصولة بفواصل لإجراء استعلامات DNS عكسية عليها
-or, --only-ranges استخدام النطاقات المقدمة فقط مع -r أو -ripe وليس جميع
عناوين IP المحددة سابقًا
--portscan مسح عناوين IP العامة التي تم حلها بحثًا عن المنافذ المفتوحة
-p PORTS, --ports PORTS
مجموعة المنافذ التي ستستخدمها وحدة مسح المنافذ
[الافتراضي هو medium]
--takeover التحقق من المضيفين المحددين بحثًا عن عمليات استيلاء محتملة
على النطاقات الفرعية
--markovify استخدام سلاسل ماركوف لتحديد المزيد من النطاقات الفرعية
-ms MARKOV_STATE, --markov-state MARKOV_STATE
حجم حالة ماركوف [الافتراضي هو 3]
-ml MARKOV_LENGTH, --markov-length MARKOV_LENGTH
أقصى طول لاستبدالات ماركوف [الافتراضي هو 5]
-mq MARKOV_QUANTITY, --markov-quantity MARKOV_QUANTITY
أقصى كمية من نتائج ماركوف لكل طول مرشح
[الافتراضي هو 5]
-f, --flush مسح جميع سجلات النطاق المحدد من قاعدة البيانات
-v, --version عرض رقم إصدار البرنامج والخروج
فيما يلي مثال على تشغيل مع جميع الوسائط النشطة المتاحة:
./lepus.py python.org --wordlist lists/subdomains.txt --permutate -pw ~/mypermsword.lst --reverse -ripe -r 10.11.12.0/24 --portscan -p huge --takeover --markovify -ms 3 -ml 10 -mq 10
الأمر التالي يقوم بمسح جميع إدخالات قاعدة البيانات لنطاق معين:
./lepus.py python.org --flush
| الخدمة | مطلوب API |
|---|
| كبيرة | 80, 81, 443, 591, 2082, 2087, 2095, 2096, 3000, 8000, 8001, 8008, 8080, 8083, 8443, 8834, 8888, 9000, 9090, 9443 |
| ضخمة | 80, 81, 300, 443, 591, 593, 832, 981, 1010, 1311, 2082, 2087, 2095, 2096, 2480, 3000, 3128, 3333, 4243, 4567, 4711, 4712, 4993, 5000, 5104, 5108, 5800, 6543, 7000, 7396, 7474, 8000, 8001, 8008, 8014, 8042, 8069, 8080, 8081, 8088, 8090, 8091, 8118, 8123, 8172, 8222, 8243, 8280, 8281, 8333, 8443, 8500, 8834, 8880, 8888, 8983, 9000, 9043, 9060, 9080, 9090, 9091, 9200, 9443, 9800, 9943, 9980, 9981, 12443, 16080, 18091, 18092, 20720, 28017 |