
تحديد خوادم Microsoft Exchange المتاحة للعام وتحديد إصدارات برامجها

تقوم هذه الأداة بفحص العديد من الخدمات العامة الشائعة على مضيف هدف لاكتشاف Microsoft Exchange Server وتحديد بصمة إصدار برامجه إن أمكن.
وللقيام بذلك، تستخدم التقنيات التالية:
تتم مطابقة أرقام البناء المكتشفة مع جدول إصدارات مستخرج من Microsoft ويغطي كل إصدار من Exchange Server 5.5 وحتى Exchange Server Subscription Edition (SE)، بما في ذلك مستويات Service Pack (SP) وCumulative Update (CU) وSecurity Update (SU) وHotfix Update (HU) وUpdate Rollup (RU). يتم الإبلاغ عن التطابقات مع اسم المنتج وتاريخ الإصدار وسلاسل CPE بصيغة قاموس NVD.
الطريقة الموصى بها لتشغيل الماسح هي باستخدام Docker، والتي لا تتطلب أي اعتماديات محلية سوى Docker نفسه. وإذا أردت تشغيل البرنامج النصي مباشرة بدلاً من ذلك، فهو مصمم للاستخدام على Debian Linux بنية 64-بت، لكنه يجب أن يعمل مع أي توزيعة Linux مدعومة من Python 3 وdnsx وfingerprintx (مع تعديلات طفيفة على برنامج التثبيت النصي).
قم ببناء الصورة. فهي تضم Python وحزم Python المثبتة على إصدارات محددة وثنائيات dnsx وfingerprintx المثبتة على إصدارات محددة، وتستخرج جدول إصدارات Exchange Server من Microsoft وقت البناء:
docker build -t exchange-scanner .
ثم شغّل الماسح مع تمرير نفس الوسائط التي تمررها إلى البرنامج النصي (الموصوفة تحت قسم الاستخدام أدناه):
# Scan a single target
docker run --rm exchange-scanner -q -t 192.168.5.3
# Scan a list of targets (mount the file into the container)
docker run --rm -v "$PWD/targets.txt:/app/targets.txt" exchange-scanner -l targets.txt
أعد بناء الصورة لتحديث جدول الإصدارات.
شغّل scripts/install-requirements.sh لتثبيت الأدوات والحزم والاعتماديات الأخرى المطلوبة. يتم تثبيت حزم Python على إصدارات محددة في scripts/requirements.txt.
لا تتردد في إعادة تشغيل scripts/get-exchange-versions.py بشكل منفصل في أي وقت لتحديث جدول إصدارات البرامج الموجود في exchange-versions.json.
شغّل البرنامج النصي exchange-scanner.py مع -h لعرض تفاصيل الاستخدام:
❯ ./exchange-scanner.py -h
usage: exchange-scanner.py [-h] [-q] [-d] [-x TIMEOUT] [-o OUTFILE] (-t TARGET | -l LIST)
optional arguments:
-h, --help show this help message and exit
-q, --quiet Suppress log output (except errors)
-d, --debug Print debugging messages
-x TIMEOUT, --timeout TIMEOUT
Set timeout for HTTP requests (defaults to 3 seconds)
-o OUTFILE, --outfile OUTFILE
Save output to a file instead of writing to stdout
-t TARGET, --target TARGET
A single hostname or IP address to scan
-l LIST, --list LIST File containing a list of hostnames and/or IP addresses to scan (one per line)
مطلوب: -t أو -l
-t مع اسم مضيف واحد أو عنوان IP واحد. إذا كان اسم المضيف يحل إلى عناوين IP متعددة، فسيقوم البرنامج النصي بفحص كل عنوان منها على حدة.-l مع اسم الملف.تسجيل الأحداث: لكتم معظم مخرجات السجل، استخدم -q. لعرض مزيد من تفاصيل السجل، استخدم -d.
المهلة الزمنية: لتغيير الحد الأقصى لزمن الاستجابة لكل طلب HTTP، حدد قيمة مهلة بالثواني (الافتراضي هو 3). ضع في اعتبارك أن عنوان IP واحد يمكن أن يولّد أكثر من 200 طلب في ظروف معينة (على الرغم من أن معظم عمليات الفحص لا تصل إلى هذا الحجم)، لذلك يُفضّل عمومًا مهلة زمنية أقصر.
المخرجات: تتم طباعة نتائج الفحص بتنسيق JSON افتراضيًا. ولحفظ المخرجات في ملف بدلاً من الطباعة إلى stdout، استخدم -o مع اسم ملف.
$ ./exchange-scanner.py -q -t 192.168.5.3
[
{
"hostname": "192.168.5.3",
"ip_address": "192.168.5.3",
"build_number": "15.2.1118",
"exchange_services": [
"https://192.168.5.3:443",
"imaps://192.168.5.3:993"
],
"product_name": "Exchange Server 2019 CU12 (2022H1)",
"major_version": "2019",
"update": "Cumulative Update 12",
"security_update": null,
"release_date": "2022-04-20",
"recalled": false,
"cpes": [
"cpe:2.3:a:microsoft:exchange_server:2019:cumulative_update_12:*:*:*:*:*:*",
"cpe:2.3:a:microsoft:outlook_web_access:2019:cumulative_update_12:*:*:*:*:*:*"
]
}
]
استخدام هذه الأداة لمهاجمة أهداف دون موافقة متبادلة مسبقة يعد غير قانوني. وتقع على عاتق المستخدم النهائي مسؤولية الامتثال لجميع القوانين المحلية والولائية والاتحادية المعمول بها. لا يتحمل المطورون أي مسؤولية ولا يتحملون مسؤولية أي إساءة استخدام أو ضرر ناتج عن هذا البرنامج.
هذا المشروع مرخص بموجب رخصة جنو العمومية العامة.
recalled في مخرجاته.