
أداة لاكتشاف سطح الهجوم الشبكي الخارجي والداخلي
يهدف ASF إلى حماية المؤسسات من خلال العمل كمراقب لسطح الهجوم، حيث يتم توفير "كائن" قد يكون: نطاقاً، عنوان IP أو CIDR (داخلي أو خارجي)، وسيقوم ASF باكتشاف الأصول/النطاقات الفرعية، تعداد منافذها وخدماتها، تتبع التغييرات، والعمل كإطار هجوم وتنبيه مستمر ومرن يستفيد من طبقة إضافية من الدعم ضد ثغرات اليوم صفر (0 day) مع إثباتات المفاهيم (POCs) المتاحة للعامة.
كان الافتقار إلى الدعم والمرونة لأتمتة اكتشاف الأصول الديناميكية ونقاط الضعف المرتبطة بها من خلال المسح المستمر أو الاستغلال في نافذة واحدة هو القوة الدافعة وراء إنشاء ASF. الحلول الحالية مقيدة بالتكنولوجيا أو البرنامج الذي صُممت من أجله. أردنا حلاً قابلاً للتوسع ويستخدم أيضاً أدوات أمنية مفتوحة المصدر شائعة للتعامل مع دورة حياة الثغرات الأمنية الكاملة.
ASF هو سلالة من المشاريع مفتوحة المصدر التي تستفيد من ترسانة قوية من الأدوات المغلفة في نافذة واحدة فوق واجهة مستخدم رسومية. مخطط بنية ASF موضح أدناه:

أحدث إصدار من Kali Linux (تم اختباره على إصدار 64 بت) - https://kali.org/get-kali/
ذاكرة وصول عشوائي بحجم 16 جيجابايت على الأقل
قرص صلب بحجم 1 تيرابايت - يُوصى بنظام الملفات XFS
نفذ الخطوات التالية كمستخدم root لتثبيت وتشغيل Attack Surface Framework.
استنساخ المستودع
/opt/ خاصتك.git clone https://github.com/vmware-labs/attack-surface-framework.git /opt/asf
انتقل إلى /opt/asf/
تكوين ملف البيئة
قم بإنشاء ملف .env.prod في دليل المشروع. هذا ضروري لتشغيل setup.sh بشكل صحيح.
ملاحظة: يمكنك إنشاء ملف .env.prod أو نسخه من backup.env.prod، مع إجراء التغييرات اللازمة لتكييفه مع بيئتك.
مثال على هيكل .env.prod:
# Django settings, don't enable debug on production!
DEBUG=True
DJANGO_ADMIN_ENABLED=True
#LOGIN CONFIGURATIONS
LOGIN_FORM=True
SOCIAL_AUTH_GOOGLE_ENABLED=False
SOCIAL_AUTH_GITHUB_ENABLED=False
DJANGO_SAML2_ENABLED=False #Enable Social Authenticatio with Google.
SAML2_SSO_URL=https://saml2.local
SAML2_ASF_URL=https://atttacksurfaceframework.local
ALLOWED_HOSTS=*,localhost, config('SERVER', default='127.0.0.1')
MONGO_USER=admin
MONGO_PASSWORD=
MONGO_URL=
MONGO_PORT=27017
JIRA_ENABLED=False
JIRA_TOKEN=
JIRA_URL=
JIRA_USER=
JIRA_SEVERITY={"info":"Lowest","low":"Low","medium":"Medium","high":"High","critical":"Highest"}
JIRA_PROJECT=""
WPScan_Default_Severity=medium
لبيئة Kali Linux المحلية: انتقل إلى http://127.0.0.1:2021 في متصفح الويب الخاص بك للوصول إلى ASF
ليس من المفترض أن يكون ASF معرضاً للعامة، بافتراض تثبيته على مزود سحابي أو حتى على مثيل محلي، نوصي بالوصول إليه باستخدام إعادة توجيه المنفذ عبر SSH، إليك مثال:
ssh -i "key.pem" -L 2021:127.0.0.1:2021 user@yourhost - لواجهة ASF الرسومية
ثم افتح المتصفح وانتقل إلى:
http://127.0.0.1:2021 - لـ ASF - المستخدم:youruser كلمة المرور:yourpass (المقدمة في الإعداد الأولي)
نصيحة أمنية: تأكد من أن كل مكون، بما في ذلك MongoDB، تم تكوينه بشكل آمن، وأنه يتم الوصول إلى ASF بشكل آمن، حتى داخلياً. يعد الالتزام بأفضل الممارسات الأمنية أمراً بالغ الأهمية عند تنفيذ ASF في استراتيجيتك الأمنية.
بالإضافة إلى ذلك، يمكنك تكوين تسجيل الدخول الاجتماعي عن طريق تمكين ميزة تسجيل الدخول الاجتماعي الصحيحة في ملف .env.prod:
#LOGIN CONFIGURATIONS
LOGIN_FORM=True
SOCIAL_AUTH_GOOGLE_ENABLED=True (False)
SOCIAL_AUTH_GITHUB_ENABLED=True (False)
DJANGO_SAML2_ENABLED=True (False)
انتقل إلى لوحة الإدارة http://127.0.0.1:2021/admin لإضافة التطبيق الاجتماعي.
لاحظ أنه إذا تم تمكين تسجيل الدخول الاجتماعي ولم يتم تكوينه في لوحة الإدارة، فلن يعرض ASF صفحة تسجيل الدخول - للتراجع، ببساطة قم بتعطيل تسجيل الدخول الاجتماعي في ملف .env.prod
لتمكين تكامل Jira وإدارة التذاكر، يدعم ASF تعيين القيم التالية في ملف .env.prod:
JIRA_ENABLED=True
JIRA_TOKEN=
JIRA_URL=
JIRA_USER=
JIRA_SEVERITY={"info":"Lowest","low":"Low","medium":"Medium","high":"High","critical":"Highest"}
JIRA_PROJECT=
لاستخدام فحص WordPress في وحدات الفريق الأحمر، أدخل رمز WPScan API في السطر #7 من redteam/wpscan/wpscan.sh
لدى ASF نطاقان:
أ) خارجي: للأصول المعرضة للعامة.
ب) داخلي: الأصول في شبكة الشركة الخاصة بك.
بالنسبة للنطاق الخارجي، يمر التدفق بأربع خطوات أساسية:
أ.1 الأهداف - هنا تقوم بإدخال أهدافك

أ.2 الاكتشاف - وحدة تقوم بتشغيل عملية Amass لاكتشاف الأصول المعرضة للعامة، لا تتردد في إنشاء ملف التكوين الخاص بك لإعداد مفاتيح API الخاصة بك https://github.com/OWASP/Amass/blob/master/examples/config.ini

أ.3 التعداد - وحدة تقوم بتشغيل عملية NMAP لتعداد المنافذ/الخدمات وإنشاء مرشحات لوحدة الفريق الأحمر. الإعداد الافتراضي هو البحث عن --top-ports 200 ولكن يمكنك تكييفه حسب احتياجاتك في /opt/asf/tools/nmap/*.sh

أ.4 الفريق الأحمر - وحدة تقوم بتشغيل وحدات فرعية موجودة في "/opt/asf/redteam"

ملاحظة: بالنسبة للنطاق الداخلي، يمر التدفق عبر أ.1 (الأهداف)، أ.3 (التعداد) و أ.4 (الفريق الأحمر).
يرحب فريق مشروع attack-surface-framework بالمساهمات من المجتمع. قبل البدء في العمل مع attack-surface-framework، يرجى قراءة شهادة المنشأ للمطورين. يجب توقيع جميع المساهمات في هذا المستودع كما هو موضح في تلك الصفحة. توقيعك يشهد بأنك كتبت التصحيح أو لديك الحق في تمريره كتصحيح مفتوح المصدر. لمزيد من المعلومات التفصيلية، راجع CONTRIBUTING.md.
Attack Surface Framework حقوق النشر 2021 VMware, Inc.
ينطبق ترخيص BSD-2 ("الترخيص") المنصوص عليه أدناه على جميع أجزاء مشروع Attack Surface Framework. لا يجوز لك استخدام هذا الملف إلا وفقاً لشروط الترخيص.
ترخيص BSD-2
يُسمح بإعادة التوزيع والاستخدام في أشكال المصدر والثنائية، مع أو بدون تعديل، بشرط استيفاء الشروط التالية:
يجب أن تحتفظ عمليات إعادة توزيع كود المصدر بإشعار حقوق النشر أعلاه، هذه القائمة من الشروط وإخلاء المسؤولية التالي.
يجب أن تعيد عمليات إعادة التوزيع في الشكل الثنائي إنتاج إشعار حقوق النشر أعلاه، هذه القائمة من الشروط وإخلاء المسؤولية التالي في الوثائق و/أو المواد الأخرى المقدمة مع التوزيع.
يتم توفير هذا البرنامج "كما هو" من قبل أصحاب حقوق النشر والمساهمين، وإخلاء المسؤولية من أي ضمانات صريحة أو ضمنية، بما في ذلك على سبيل المثال لا الحصر، الضمانات الضمنية الخاصة بالقابلية للتسويق والملاءمة لغرض معين. لا يكون مالك حقوق النشر أو المساهمين مسؤولين بأي حال من الأحوال عن أي أضرار مباشرة أو غير مباشرة أو عرضية أو خاصة أو نموذجية أو تبعية (بما في ذلك على سبيل المثال لا الحصر، شراء سلع أو خدمات بديلة؛ فقدان الاستخدام، البيانات، أو الأرباح؛ أو انقطاع الأعمال) مهما كانت أسبابها وعلى أي نظرية من نظريات المسؤولية، سواء كانت تعاقدية أو صارمة أو تقصيرية (بما في ذلك الإهمال أو غير ذلك) تنشأ بأي شكل من الأشكال عن استخدام هذا البرنامج، حتى لو تم الإبلاغ عن احتمال حدوث مثل هذه الأضرار.
Attack Surface Framework حقوق النشر 2021 VMware, Inc.
هذا المنتج مرخص لك بموجب ترخيص BSD-2 ("الترخيص"). لا يجوز لك استخدام هذا المنتج إلا وفقاً لترخيص BSD-2.
قد يتضمن هذا المنتج عدداً من المكونات الفرعية مع إشعارات حقوق نشر وشروط ترخيص منفصلة. يخضع استخدامك لهذه المكونات الفرعية لشروط وأحكام ترخيص المكون الفرعي، كما هو مذكور في ملف LICENSE.
https://www.djangoproject.com/
https://github.com/creativetimofficial/material-dashboard-django
https://github.com/OWASP/Amass
https://github.com/lanjelot/patator
https://github.com/FortyNorthSecurity/EyeWitness
https://github.com/projectdiscovery/nuclei
https://www.graylog.org/products/open-source
https://github.com/wpscanteam/wpscan
https://github.com/vanhauser-thc/thc-hydra
https://nxlog.co/products/nxlog-community-edition
ملاحظة: MongoDB ضرورية لوظائف التنبيه أو إعداد التقارير في ASF.
docker run -dp 27017:27017 -v local-mongo:/data/db --name local-mongo --restart=always -e MONGO_INITDB_ROOT_USERNAME=<<>> -e MONGO_INITDB_ROOT_PASSWORD=<<>> mongo
.env.prod بالتفاصيل التالية:MONGO_USER=admin
MONGO_PASSWORD=
MONGO_URL=
MONGO_PORT=27017
قم بتشغيل ./setup.sh