
أداة سريعة وشاملة لمسح الشبكات التنظيمية
الميزات • الاستخدام • التثبيت • الاستخدام • المساهمة • ملاحظات إضافية
Domainim هي أداة سريعة لاستكشاف النطاقات لمسح شبكات المؤسسات. تهدف الأداة إلى تقديم نظرة عامة مختصرة عن هيكل المؤسسة باستخدام تقنيات مثل OSINT والهجوم بالقوة الغاشمة (bruteforcing) وحل DNS وغيرها.
الميزات الحالية (الإصدار 1.0.1)-

تعداد اسم المضيف الافتراضي
بحث عكسي DNS
اكتشاف النطاقات الفرعية ذات البطاقات الجامدة (للهجوم بالقوة الغاشمة)
مسح منافذ TCP أساسي
قبول النطاقات الفرعية كمدخل
تصدير النتائج إلى ملف JSON
بعض الميزات قيد التطوير. انظر الميزات المخطط لها لمزيد من التفاصيل.
المشروع مستوحى من Sublist3r. وحدة ماسح المنافذ مبنية بشكل كبير على NimScan.
يمكنك بناء هذا المستودع من المصدر-
git clone [email protected]:pptx704/domainim
nimble build
./domainim <domain> [--ports=<ports>]
أو يمكنك فقط تنزيل الملف الثنائي من صفحة الإصدارات. ضع في اعتبارك أن الملف الثنائي تم اختباره على أنظمة Debian فقط.
./domainim <domain> [--ports=<ports> | -p:<ports>] [--wordlist=<filename> | l:<filename> [--rps=<int> | -r:<int>]] [--dns=<dns> | -d:<dns>] [--out=<filename> | -o:<filename>]
<domain> هو النطاق المراد استكشافه. يمكن أن يكون نطاقاً فرعياً أيضاً.-- ports | -p هو سلسلة تحدد المنافذ المراد مسحها. يمكن أن تكون واحدة مما يلي-
all - مسح جميع المنافذ (1-65535)none - تخطي مسح المنافذ (الافتراضي)t<n> - مسح أعلى n من المنافذ (مثل nmap). أي t100 يمسح أعلى 100 منفذ. القيمة القصوى هي 5000. إذا كانت n أكبر من 5000، سيتم تعيينها إلى 5000.80 يمسح المنفذ 8080-100 يمسح المنافذ من 80 إلى 10080,443,8080 يمسح المنافذ 80 و443 و808080,443,8080-8090,t500 يمسح المنافذ 80 و443 و8080 إلى 8090 وأعلى 500 منفذ--dns | -d هو عنوان خادم DNS. يجب أن يكون عنوان IPv4 صحيحاً ويمكن أن يحتوي اختيارياً على رقم المنفذ-
أمثلة
./domainim nmap.org --ports=all./domainim google.com --ports=none --dns=8.8.8.8#53./domainim pptx704.com --ports=t100 --wordlist=wordlist.txt --rps=1500./domainim pptx704.com --ports=t100 --wordlist=wordlist.txt --outfile=results.json./domainim mysite.com --ports=t50,5432,7000-9000 --dns=1.1.1.1يمكن الوصول إلى قائمة المساعدة باستخدام ./domainim --help أو ./domainim -h.
Usage:
domainim <domain> [--ports=<ports> | -p:<ports>] [--wordlist=<filename> | l:<filename> [--rps=<int> | -r:<int>]] [--dns=<dns> | -d:<dns>] [--out=<filename> | -o:<filename>]
domainim (-h | --help)
Options:
-h, --help إظهار هذه الشاشة.
-p, --ports المنافذ المراد مسحها. [الافتراضي: `none`]
يمكن أن تكون `all`، `none`، `t<n>`، قيمة مفردة، نطاق قيم، توليفة
-l, --wordlist قائمة الكلمات للهجوم بالقوة الغاشمة للنطاقات الفرعية. يتم تخطي الهجوم بالقوة الغاشمة للملف غير الصالح.
-d, --dns عنوان IP والمنفذ لخادم DNS. يجب أن يكون IPv4 صحيحاً مع منفذ اختياري [الافتراضي: إعدادات النظام]
-r, --rps عدد استعلامات DNS في الثانية [الافتراضي: 1024 طلب/ثانية]
-o, --out ملف JSON حيث سيتم حفظ المخرجات. يجب أن ينتهي اسم الملف بـ `.json`
أمثلة:
domainim domainim.com -p:t500 -l:wordlist.txt --dns:1.1.1.1#53 --out=results.json
domainim sub.domainim.com --ports=all --dns:8.8.8.8 -t:1500 -o:results.json
مخطط JSON للنتائج كما يلي-
[
{
"subdomain": string,
"data": [
"ipv4": string,
"vhosts": [string],
"reverse_dns": string,
"ports": [int]
]
}
]
مثال على JSON لـ nmap.org موجود هنا.
المساهمات مرحب بها. لا تتردد في فتح طلب سحب أو مشكلة.
لا يزال هذا المشروع في مراحله المبكرة. هناك عدة قيود أعرفها.
المحركان اللذان أستخدمهما (أطلق عليهما محركين لأن Sublist3r يفعل ذلك) لديهما حالياً حد استجابة معين. يمكن لـ dnsdumpster جلب ما يصل إلى 100 نطاق فرعي. كما أن crt.sh يقوم بعشوائية النتائج في حالة وجود عدد كبير جداً من النتائج. مشكلة أخرى مع crt.sh هي أنها ترجع أحياناً خطأ SQL. لذلك بالنسبة لبعض النطاقات، قد تختلف النتائج بين عمليات التشغيل. أخطط لإضافة المزيد من المحركات في المستقبل (على الأقل محرك هجوم بالقوة الغاشمة).
ماسح المنافذ لديه فقط مهلة زمن استجابة ping + 750ms. قد يؤدي هذا إلى نتائج سلبية خاطئة. نظرًا لأن domainim ليس مصمماً لمسح المنافذ بل لتقديم نظرة عامة سريعة، فهذه الحالات مقبولة. ومع ذلك، أخطط لإضافة علامة لزيادة المهلة. لنفس السبب، لا يتم عرض المنافذ المُصفّاة. لمسح منافذ أكثر شمولاً، أوصي باستخدام Nmap. كما أن Domainim لا يتجاوز تحديد المعدل (إن وجد).
قد يبدو أن طريقة طباعة أسماء المضيفات الافتراضية تؤدي إلى تكرار في الجدول.

الطباعة كما يلي قد تكون أفضل-
ack.nmap.org, issues.nmap.org, nmap.org, research.nmap.org, scannme.nmap.org, svn.nmap.org, www.nmap.org
↳ 45.33.49.119
↳ Reverse DNS: ack.nmap.org.
لكن سابقًا أثناء الاختبار، وجدت حالات لا تشترك فيها جميع عناوين IP بمجموعة واحدة من أسماء المضيفات. لهذا قررت الإبقاء على هذه الطريقة.

قد يكون لخادم DNS بعض تحديد المعدل. لذلك أضفت تأخيرات عشوائية (بين 0-300 مللي ثانية) لحل IPv4 لكل استعلام. وذلك لعدم إرسال جميع الاستعلامات مرة واحدة إلى خادم DNS بل بطريقة أكثر طبيعية. بالنسبة لطريقة الهجوم بالقوة الغاشمة، تكون القيمة بين 0-1000 مللي ثانية افتراضياً ويمكن تغييرها باستخدام العلم --rps | -t.
أحد القيود التي تزعجني بشكل خاص هو أن محلل DNS لا يعيد جميع عناوين IP لنطاق ما. لذلك من الضروري إجراء استعلامات متعددة للحصول على جميع (أو معظم) عناوين IP. ولكن مرة أخرى، ليس من الممكن معرفة عدد عناوين IP الموجودة لنطاق ما. لا يزال يتعين علي إيجاد حل لهذا. كما أن nim-ndns لا يدعم سجلات CNAME. لذلك، إذا كان النطاق يحتوي على سجل CNAME، فلن يتم حله. أنتظر رداً من المؤلف بخصوص هذا.
في الوقت الحالي، يتم تخطي الهجوم بالقوة الغاشمة إذا تم العثور على نطاق فرعي جامد محتمل. وذلك لأنه إذا كان النطاق يحتوي على نطاق فرعي جامد، فإن الهجوم بالقوة الغاشمة سيحل IPv4 لجميع النطاقات الفرعية المحتملة. ومع ذلك، سيؤدي هذا إلى تخطي النطاقات الفرعية الصالحة أيضاً (أي scanme.nmap.org سيتم تخطيه حتى وإن لم يكن قيمة جامدة). سأضيف لاحقاً علامة --force-brute | -fb لفرض الهجوم بالقوة الغاشمة.
شيء مماثل ينطبق على تعداد المضيفات الافتراضية لمدخلات النطاقات الفرعية. نظراً لأنه يتم إرجاع عناوين URL التي تنتهي بالنطاقات الفرعية المعطاة، لا يتم النظر في النطاقات الفرعية للنطاقات المشابهة. على سبيل المثال، scannme.nmap.org لن يُطبع لـ ack.nmap.org ولكن something.ack.nmap.org قد يُطبع. يمكنني البحث عن جميع النطاقات الفرعية لـ nmap.org ولكن هذا يهدر الغرض من وجود نطاقات فرعية كمدخل.
رخصة MIT. انظر LICENSE للنص الكامل.
a.b.c.d - استخدام خادم DNS على a.b.c.d في المنفذ 53a.b.c.d#n - استخدام خادم DNS على a.b.c.d في المنفذ e--wordlist | -l - المسار إلى ملف قائمة الكلمات. يُستخدم للهجوم بالقوة الغاشمة للنطاقات الفرعية. إذا كان الملف غير صالح، سيتم تخطي الهجوم بالقوة الغاشمة. يمكنك الحصول على قائمة كلمات من SecLists. كما يتم توفير قائمة كلمات في صفحة الإصدارات.--rps | -r - عدد الطلبات في الثانية أثناء الهجوم بالقوة الغاشمة. القيمة الافتراضية هي 1024 طلب/ثانية. تجدر الإشارة إلى أن استعلامات DNS تُجرى على دفعات، ولا تُجرى الدفعة التالية إلا بعد اكتمال السابقة. نظرًا لإمكانية تقييد معدل الاستعلامات، فإن زيادة القيمة لا تضمن دائمًا نتائج أسرع.--out | -o - المسار إلى ملف الإخراج. سيتم حفظ المخرجات بتنسيق JSON. يجب أن ينتهي اسم الملف بـ .json.