
محرك توليد تبديلات أسماء النطاقات لكشف هجمات التصيد الاحتيالي المتشابهة بصريًا (Homograph)، والاستيلاء على النطاقات عبر الأخطاء الإملائية (Typosquatting)، وانتحال هوية العلامات التجارية.

اكتشف نوع المشاكل التي قد يقع فيها المستخدمون عند محاولة كتابة اسم نطاقك. ابحث عن نطاقات مشابهة يمكن للخصوم استخدامها لمهاجمتك. يمكنها اكتشاف مُصيدي النطاقات وهجمات التصيد والاحتيال وانتحال العلامة التجارية. وهي مفيدة كمصدر إضافي لاستخبارات التهديدات الموجَّهة.

إن تشويش DNS (DNS fuzzing) هو سير عمل آلي يهدف إلى كشف النطاقات الضارة المحتملة التي تستهدف مؤسستك. تولّد هذه الأداة قائمة شاملة من التباديل (permutations) استنادًا إلى اسم النطاق المُقدَّم، ثم تتحقق لاحقًا من كون أيٍّ من هذه التباديل قيد الاستخدام. بالإضافة إلى ذلك، يمكنها توليد تجزئات ضبابية (fuzzy hashes) لصفحات الويب لكشف هجمات التصيد الجارية أو انتحال العلامة التجارية، والمزيد!
هل أنت في عجلة من أمرك؟ جرّبه في متصفح الويب: dnstwist.it
Python PIP
$ pip install dnstwist[full]
بدلاً من ذلك، يمكنك تثبيت الحد الأدنى الأساسي وإضافة المتطلبات الأخرى يدويًا حسب احتياجاتك:
$ pip install dnstwist
Git
إذا كنت تريد تشغيل أحدث إصدار من الكود، يمكنك تثبيته من Git:
$ git clone https://github.com/elceef/dnstwist.git
$ cd dnstwist
$ pip install .
Debian/Ubuntu/Kali Linux
نفّذ الأمر التالي لتثبيت الأداة مع جميع الحزم الإضافية:
$ sudo apt install dnstwist
Fedora Linux
$ sudo dnf install dnstwist
Arch Linux User Repository (yay)
$ yay -S dnstwist
macOS
سيؤدي هذا إلى تثبيت dnstwist مع جميع التبعيات، وستتم إضافة الملف التنفيذي
إلى $PATH.
$ brew install dnstwist
Docker
اسحب الصورة الرسمية وشغّلها من Docker Hub:
$ docker run -it elceef/dnstwist
بدلاً من ذلك، يمكنك بناء صورك المحلية:
$ docker build -t dnstwist .
$ docker build -t dnstwist:phash --build-arg phash=1 .
ستُمرّر الأداة اسم النطاق المُقدَّم عبر خوارزميات التشويش الخاصة بها وتُنشئ قائمة بالنطاقات المحتملة للتصيد إلى جانب سجلات DNS.
عادةً ما يتم توليد آلاف التباديل للنطاقات - خاصةً بالنسبة لنطاقات الإدخال الأطول. في مثل هذه الحالات، قد يكون من العملي عرض التباديل المسجَّلة فقط:
$ dnstwist --registered domain.name
تأكد من أن خادم DNS لديك يمكنه التعامل مع آلاف الطلبات خلال فترة زمنية قصيرة.
بخلاف ذلك، يمكنك تحديد خادم DNS خارجي أو خادم DNS عبر HTTPS باستخدام الوسيط
--nameservers.
إذا كانت تباديل النطاقات التي تولّدها خوارزميات التشويش غير كافية، فيُرجى
تزويد dnstwist بملف قاموس. تتضمن الأداة بعض نماذج القواميس التي تحتوي على
قائمة بأكثر الكلمات شيوعًا المستخدمة في حملات التصيد.
$ dnstwist --dictionary dictionaries/english.dict domain.name
إذا كنت بحاجة إلى التحقق مما إذا كانت نطاقات ذات نطاقات علوية مختلفة (TLD) موجودة، فما عليك سوى تزويد الأداة بملف قاموس يحتوي على قائمة النطاقات العلوية.
$ dnstwist --tld dictionaries/common_tlds.dict domain.name
من ناحية أخرى، إذا كنت تحتاج إلى استخدام خوارزميات محددة فقط، فهناك الوسيط
--fuzzers الذي يقبل قائمة مفصولة بفواصل.
$ dnstwist --fuzzers "homoglyph,hyphenation" domain.name
إلى جانب إخراج الطرفية الملوّن، تتيح الأداة تصدير النتائج إلى CSV وJSON:
$ dnstwist --format csv domain.name | column -t -s,
$ dnstwist --format json domain.name | jq
في حال احتجت إلى التباديل المجرّدة فقط دون إجراء أي استعلامات DNS، استخدم
الوسيط --format list:
$ dnstwist --format list domain.name
يمكن للأداة إجراء استعلامات في الوقت الفعلي لإرجاع الموقع الجغرافي (مقرَّبًا إلى مستوى الدولة) لعناوين IPv4.
$ dnstwist --geoip domain.name
يتم استخدام مكتبة GeoIP2 افتراضيًا. يجب تحديد موقع قاعدة بيانات البلدان عبر
متغير البيئة $GEOLITE2_MMDB. إذا لم تكن المكتبة أو قاعدة البيانات موجودة،
فستتراجع الأداة إلى GeoIP Legacy الأقدم.
لعرض جميع الخيارات المتاحة مع أوصاف موجزة، ما عليك سوى تشغيل الأداة بدون أي وسائط.
قد يستغرق الفحص اليدوي لكل اسم نطاق من حيث كونه يقدّم موقع تصيد وقتًا طويلاً.
ولمعالجة ذلك، يستخدم dnstwist ما يسمى بالتجزئات الضبابية (تجزئة حساسة
للموقع، LSH) والتجزئات الإدراكية (pHash). التجزئة الضبابية هي مفهوم يتضمن
القدرة على مقارنة مدخلين (كود HTML) وتحديد مستوى أساسي من التشابه، بينما
التجزئة الإدراكية هي بصمة مشتقة من السمات البصرية لصورة (لقطة شاشة لصفحة ويب).
التجزئة الضبابية
يمكن تفعيل الميزة الفريدة لكشف كود HTML المماثل عبر الوسيط --lsh. لكل نطاق
مولَّد، سيجلب dnstwist المحتوى من خادم HTTP المستجيب (مع اتباع عمليات إعادة
التوجيه المحتملة)، ويطبّع كود HTML ويقارن تجزئته الضبابية مع تلك الخاصة بالنطاق
الأصلي (الأولي). يتم التعبير عن مستوى التشابه كنسبة مئوية.
في الحالات التي يكون فيها عنوان URL الفعلي هو نفسه بالنسبة للنطاق الأصلي، لا يتم حساب التجزئة الضبابية إطلاقًا لرفض المؤشرات الإيجابية الخاطئة.
ملاحظة: ضع في اعتبارك أنه من غير المرجح الحصول على تطابق 100%، حتى بالنسبة لأطر هجمات الرجل في المنتصف (MITM)، وأن موقع التصيد يمكن أن يكون له كود HTML مختلف تمامًا.
$ dnstwist --lsh domain.name
في بعض الحالات، تُقدَّم مواقع التصيد من عنوان URL محدد. إذا قدّمت عنوان URL
كاملًا أو جزئيًا كوسيط، فسيقوم dnstwist بتحليله وتطبيقه على كل متغير من
أسماء النطاقات المولَّدة. استخدم --lsh-url لتجاوز عنوان URL الذي يتم جلب
صفحة الويب الأصلية منه.
$ dnstwist --lsh https://domain.name/owa/
$ dnstwist --lsh --lsh-url https://different.domain/owa/ domain.name
افتراضيًا، يتم استخدام ssdeep كخوارزمية LSH، ولكن TLSH متاح أيضًا ويمكن تفعيله على النحو التالي:
$ dnstwist --lsh tlsh domain.name
التجزئة الإدراكية
إذا كان متصفح Chromium مثبتًا، يمكن لـ dnstwist استخدام وضعه بدون واجهة
رسومية (headless mode)، الذي يعمل دون واجهة مستخدم رسومية، لالتقاط لقطات
شاشة لصفحات الويب وعرضها وحساب قيم pHash. تتم مقارنة قيم pHash هذه بعد ذلك
لتقييم التشابه البصري، معبرًا عنه كنسبة مئوية.
$ dnstwist --phash domain.name
علاوة على ذلك، من الممكن حفظ لقطات الشاشة الملتقطة بصيغة PNG في الموقع الذي تختاره:
$ dnstwist --phash --screenshots /tmp/domain domain.name
ملاحظة: نظرًا للاستخدام متعدد الخيوط لمتصفح ويب كامل الوظائف، يجب توفير قدر مناسب من الموارد الحرة (الذاكرة بشكل أساسي).
دعم البروكسي
بالنسبة لجميع اتصالات HTTP، يتم استخدام البروكسيات تلقائيًا عند اكتشاف وجود
متغيرات بيئة باسم $<scheme>_proxy بطريقة غير حساسة لحالة الأحرف. إذا وُجد
متغيرا البيئة بالأحرف الصغيرة والكبيرة معًا، فيُفضَّل الصغير.
إذا احتجت إلى استهلاك البيانات التي تنتجها الأداة داخل الكود الخاص بك، فإن الطريقة الأكثر ملاءمة وكفاءة هي تمرير الإدخال على النحو التالي.
>>> import dnstwist
>>> data = dnstwist.run(domain='domain.name', registered=True, format='null')
للعمل في وضع تشغيل سلبي تمامًا وإنتاج تباديل النطاقات فقط، يلزم الجمع بين صيغة القائمة وإعادة توجيه المخرجات إلى الجهاز الفارغ (null device).
>>> dnstwist.run(domain='domain.name', format='list', output=dnstwist.devnull)
تتم ترجمة الوسائط الخاصة بـ dnstwist.run() داخليًا، لذا فإن الاستخدام مشابه
جدًا لسطر الأوامر. بنية البيانات المُرجَعة هي قائمة سهلة المعالجة من القواميس.
ضع في اعتبارك أن dnstwist.run() يستدعي عددًا من الخيوط الخلفية (daemon threads).
عندما يتعلق الأمر باختبار آلاف تباديل النطاقات، تكون السرعة والكفاءة أولويات واضحة. من ناحية أخرى، صُممت الأداة لتعمل «فورًا» (out of the box)، مع الامتناع عن إرباك محلّلات DNS والحفاظ على الموارد الثمينة. ومع ذلك، تحقق الإعدادات الافتراضية توازنًا حذرًا، لكن هناك دائمًا مجال للتحسين.
يُوصى بتجربة عدد الخيوط. يُحتسب هذا العدد مبدئيًا بناءً على أنوية المعالج المتاحة، لكن في معظم الحالات يعطي رفع هذه القيمة دفعة أداء كبيرة. اقتراح آخر هو اختيار محلّلات DNS سريعة بأقل زمن استجابة شبكة (RTT). في حين أن بضع ميلي ثانية قد لا تبدو فرقًا كبيرًا، إلا أنها عند ضربها عبر آلاف تباديل النطاقات تترجم إلى توفير ملحوظ في الوقت.
كلما زاد طول اسم نطاق الإدخال، زاد عدد المتغيرات التي تولّدها الخوارزميات بشكل كبير، مما يؤدي إلى زيادة كبيرة في الوقت والموارد اللازمة للتحقق منها. إن فحص كل تباديل ممكن للنطاقات أمر غير عملي، خاصةً بالنسبة لنطاقات الإدخال الأطول، الأمر الذي يتطلب ملايين استعلامات DNS. وبالتالي، تولّد هذه الأداة وتفحص النطاقات المشابهة جدًا للنطاق الأصلي. نظريًا، هذه النطاقات هي الأكثر جاذبية من وجهة نظر المهاجم. ومع ذلك، من الضروري ملاحظة أن خيال المهاجمين غير محدود.
تحتوي جداول Unicode على آلاف الأحرف، والعديد منها متشابه بصريًا مع بعضها البعض. ومع ذلك، وعلى الرغم من إمكانية ترميز أحرف معينة باستخدام punycode، فإن معظم سلطات النطاقات العلوية سترفضها أثناء عملية تسجيل النطاق. بشكل عام، تمنع سلطات النطاقات العلوية خلط الأحرف القادمة من نصوص Unicode مختلفة أو تحتفظ بمجموعاتها الخاصة من الأحرف المقبولة. ومع ذلك، فقد بُني مشوّش الأحرف المتشابهة (homoglyph fuzzer) على نطاق مدروس بعناية من أحرف Unicode (الأحرف المتشابهة بصريًا) لضمان إمكانية تسجيل النطاقات المولَّدة عمليًا.
يستخدم الماسح الضوئي عشرات فرق مراكز العمليات الأمنية (SOC) والاستجابة للحوادث حول العالم، بالإضافة إلى محللي وباحثي أمن المعلومات المستقلين. علاوة على ذلك، فهو مدمج في منتجات وخدمات العديد من مزودي الأمان، وعلى وجه الخصوص وليس الحصر:
Splunk add-on, RecordedFuture, SpiderFoot, DigitalShadows, SecurityRisk, SmartFense, ThreatPipes, PaloAlto Cortex XSOAR, Rapid7 InsightConnect SOAR, Mimecast, Watcher, Intel Owl, PatrOwl, VDA Labs, Appsecco, Maltego, Conscia ThreatInsights, Fortinet FortiSOAR, ThreatConnect, CISA Crossfeed.
لإرسال الأسئلة أو الأفكار أو قطعة شوكولاتة، ما عليك سوى إرسال بريد إلكتروني إلى [email protected]. نقدّر أي ملاحظات. إذا وجدت بعض نطاقات التصيد المؤكدة أو أعجبتك هذه الأداة فقط، فيرجى عدم التردد في إرسال رسالة. شكرًا لك.