
أداة فحص قابلية انتحال النطاقات بشكل جماعي باستخدام تحليل سجلات SPF و DMARC الموثوقة مع منطق انتحال مخصص ومختبر في العالم الحقيقي، وتعداد DKIM اختياري.
Spoofy هو برنامج يتحقق مما إذا كان يمكن انتحال قائمة من النطاقات بناءً على سجلات SPF و DMARC. قد تتساءل: "لماذا نحتاج إلى أداة أخرى يمكنها التحقق مما إذا كان يمكن انتحال نطاق ما؟"
حسنًا، Spoofy مختلف، وهذا هو السبب:
- منطق انتحال مخصص ومختبر يدويًا (لا تخمين ولا تكهنات، نتائج اختبار من العالم الحقيقي)
- اكتشاف السجلات وفقًا للمعايير: تقييم SPF وفق RFC 7208 واجتياز شجرة DMARC وفق RFC 9989، بما في ذلك
sp/npللنطاقات الفرعية- عمليات بحث جماعية دقيقة عبر مُحلِّل مشترك مع تخزين مؤقت وتجاوز الفشل (1.1.1.1، 8.8.8.8، 9.9.9.9)
- عدّاد استعلامات DNS الخاصة بـ SPF والاستعلامات الفارغة، بالإضافة إلى اكتشاف نطاقات SPF include غير المسجلة
- تعداد محدِّدات DKIM الاختياري عبر API
يتطلب Spoofy Python 3.9+. قم بتثبيته من PyPI:
pip3 install spoofy
spoofy -d example.com
أو شغّله من نسخة مستنسخة باستخدام pip3 install -r requirements.txt و ./spoofy.py بدلاً من spoofy. الاستخدام موضح أدناه:
Usage:
spoofy -d [DOMAIN] -o [stdout, xls or json] -t [NUMBER_OF_THREADS] [--dkim] [--dns-server IP]
OR
spoofy -iL [DOMAIN_LIST] -o [stdout, xls or json] -t [NUMBER_OF_THREADS] [--dkim] [--dns-server IP]
Options:
-d : Process a single domain.
-iL : Provide a file containing a list of domains to process (blank lines and # comments are skipped).
-o : Specify the output format: stdout (default), xls, or json.
-t : Set the number of threads to use (default: 4).
--dkim : Enable DKIM selector enumeration via API (optional).
--dns-server : Query this resolver instead of 1.1.1.1, 8.8.8.8 and 9.9.9.9.
Examples:
spoofy -d example.com -t 10
spoofy -d example.com --dkim
spoofy -iL domains.txt -o xls
spoofy -iL domains.txt -o json --dkim
(يسرد جدول قابلية الانتحال كل تركيبة من إعدادات SPF و DMARC التي تؤثر على التسليم إلى صندوق الوارد، باستثناء معدِّلات DKIM.) حمّل من هنا
| Code | Result | SPOOFING_POSSIBLE |
|---|---|---|
| 0 | Spoofing possible | true |
| 1 | Subdomain spoofing possible | true |
| 2 | Organizational domain spoofing possible | true |
| 3 | Spoofing might be possible (p=quarantine with pct < 100) | null |
| 4 | Spoofing might be possible (mailbox dependent) | null |
| 5 | Organizational domain spoofing might be possible (mailbox dependent) | null |
| 6 | Subdomain spoofing might be possible (mailbox dependent) | null |
| 7 | Subdomain spoofing possible, organizational domain spoofing might be possible | true |
| 8 | Spoofing is not possible | false |
| 9 | Unable to determine (a DNS lookup failed) | null |
الحكم هو الكود المُختبر لآلية all في SPF الخاصة بالنطاق ووسوم DMARC p و sp و aspf كما تكتبها السجل. يحتوي spoofy/master_table.py على جدول البيانات كبيانات (python3 -m spoofy.master_table يعيد كتابته بعد تغييرات جدول البيانات)، ويتحقق test.py من إعادة إنتاج كل صف. تُعالج المدخلات التي لا يغطيها الجدول على النحو التالي:
p مفروض مع aspf ولكن بدون sp (24 تركيبة غير مختبرة): القيمة الافتراضية لـ sp هي p، لذا يُستخدم الصف المُختبر مع كتابة sp صراحةً._dmarc خاص به): نتيجة النطاق الفرعي المُختبرة لسجلات SPF و DMARC الخاصة بالنطاق الأب، مع np بدلاً من sp عندما لا يكون النطاق الفرعي موجودًا.pct أقل من 100 مع p=quarantine: الكود 3، لأن البريد غير المُعيّن يحصل على p=none. مع p=reject يظل البريد غير المُعيّن محجوزًا، لذا لا يغيّر pct الحكم.t=y (وضع الاختبار وفق RFC 9989): تنخفض السياسة مستوى واحدًا (reject إلى quarantine، وquarantine إلى none) قبل البحث.تضمن إنشاء جدول قابلية الانتحال سرد كل إعدادات SPF و DMARC ذات الصلة، ودمجها، ثم إجراء جمع معلومات SPF و DMARC باستخدام نسخة مبكرة من Spoofy على عدد كبير من النطاقات الحكومية الأمريكية. تم اختبار ما إذا كانت تركيبة SPF و DMARC قابلة للانتحال أم لا باستخدام مجموعة اختبار اختراق أمن البريد الإلكتروني في emailspooftest باستخدام Microsoft 365. ومع ذلك، أُجري الاختبار الأولي باستخدام Protonmail و Gmail، لكن وُجد أن هاتين الخدمتين تستخدمان فحوصات البحث العكسي التي أثّرت على النتائج، خاصةً لاختبار انتحال النطاقات الفرعية. ونتيجة لذلك، استُخدم Microsoft 365 للاختبار، لأنه وفّر تحكمًا أكبر في التعامل مع البريد.
بعد الاختبار الأولي باستخدام Microsoft 365، أُعيد اختبار بعض التركيبات باستخدام Protonmail و Gmail نظرًا للاختلافات في تعاملهما مع الأشرطة في رسائل البريد الإلكتروني. يمكن لـ Protonmail و Gmail وضع البريد المنتحل في صندوق الوارد مع شريط أو في البريد العشوائي بدون شريط، مما يؤدي إلى الإبلاغ عن بعض تركيبات SPF و DMARC على أنها "تعتمد على صندوق البريد" عند استخدام Spoofy. في المقابل، يضع Microsoft 365 كلا الحالتين في البريد العشوائي. استغرقت عملية الاختبار وجمع البيانات عدة أيام لإكمالها، وبعد ذلك تم تجميع جدول رئيسي جيد واستُخدم كأساس لمنطق قابلية الانتحال في Spoofy.
هذه الأداة مخصصة فقط لأغراض الاختبار والأغراض الأكاديمية ولا يمكن استخدامها إلا حيث تم منح موافقة صارمة. لا تستخدمها لأغراض غير قانونية! تقع على عاتق المستخدم النهائي مسؤولية الامتثال لجميع القوانين المحلية والولائية والفيدرالية المعمول بها. لا يتحمل المطورون أي مسؤولية وليسوا مسؤولين عن أي إساءة استخدام أو ضرر ناتج عن هذه الأداة والبرمجيات.
هذا المشروع مرخّص بموجب رخصة Creative Commons Attribution-NonCommercial 4.0 International - راجع ملف LICENSE للتفاصيل