وضع نظام الملفات - ماسح الملفات ومخازن المفاتيح
وضع نظام الملفات - ماسح الملفات ومخازن المفاتيح
اكتشاف تكراري للشهادات ومخازن المفاتيح والمفاتيح الخاصة عبر الأدلة ومخازن شهادات نظام التشغيل
منفّذ - متاح في v1.0.0. مبني بلغة Rust باستخدام walkdir + rayon للاجتياز المتوازي وx509-parser لتحليل الشهادات.
نظرة عامة
يجري وضع نظام الملفات فحصًا تكراريًا للأدلة لاكتشاف الشهادات ومخازن المفاتيح والمفاتيح الخاصة. يستخدم اجتياز الملفات المتوازي المدعوم بـ walkdir وrayon، ويحلل الشهادات باستخدام حزمة x509-parser. بالإضافة إلى الفحص القائم على الملفات، يمكنه اختياريًا تعداد مخزن شهادات Windows (عبر حزمة schannel، بما يشمل مخزنَي LocalMachine و CurrentUser).
كيف يعمل
تدفق وضع نظام الملفات
اجتياز الأدلة
يجتاز الأدلة تكراريًا باستخدام walkdir مع عمق أقصى قابل للتهيئة
تصفية الامتدادات
يصفّي الملفات حسب الامتداد (.jks, .p12, .pfx, .pem, .crt, .cer, .key) ويستثني المسارات المهيّأة
معالجة متوازية
يعالج الملفات المكتشفة بالتوازي باستخدام rayon (الافتراضي 4 خيوط)
تحليل خاص بالتنسيق
يختار المحلل المناسب: PEM أو DER أو PKCS#12/PFX أو JKS/JCEKS أو مفتاح خاص
تحليل الشهادات
يحلل شهادات X.509 عبر x509-parser لاستخراج الخوارزميات وأحجام المفاتيح وتاريخ الانتهاء
تسجيل المخاطر
يحسب درجات الثغرة الكمومية لكل أصل مكتشف
التنسيقات المدعومة
تنسيق PEM
- شهادات X.509 (.pem, .crt, .cer)
- المفاتيح الخاصة (RSA, EC, PKCS#8 عام)
- المفاتيح العامة
- عدة كتل PEM لكل ملف
تنسيق DER
- شهادات X.509 المرمّزة ثنائيًا (.der, .cer)
- المفاتيح الخاصة المرمّزة ثنائيًا
- يُحلَّل عبر x509-parser from_der
PKCS#12 / PFX
- ملفات .p12 و .pfx
- استخراج الشهادات
- اكتشاف المفتاح الخاص
- الحزم المحمية بكلمة مرور
مخازن مفاتيح Java
- JKS (Java KeyStore)
- JCEKS (Java Cryptography Extension KeyStore)
- تعداد الأسماء المستعارة
- دعم مخزن المفاتيح المحمي بكلمة مرور
المفاتيح الخاصة
- مفاتيح RSA الخاصة
- مفاتيح EC الخاصة
- المفاتيح المغلّفة بـ PKCS#8
- ملفات .key المستقلة
مخازن شهادات نظام التشغيل
- مخزن شهادات Windows (حزمة schannel): مخزنا LocalMachine و CurrentUser
- يُفعّل عبر --scan-windows-certstore (اختر المخزن بـ --certstore-name: MY أو ROOT أو CA أو TRUST أو ALL)
الاستخدام
فحص أساسي
# Scan current directory (default --path is .)
dke-scanner-agent filesystem
# Scan a specific directory recursively (recursive is true by default)
dke-scanner-agent filesystem --path /opt/applications
# Scan with output to a file
dke-scanner-agent filesystem --path /etc/ssl --output certs-report.json
# Scan and output in YAML format
dke-scanner-agent filesystem --path /srv --format yaml
خيارات سطر الأوامر
| العلم | الوصف | الافتراضي | مطلوب |
|---|---|---|---|
| --path <PATH> | مسار الدليل المراد فحصه | . (الدليل الحالي) | لا |
| --recursive | فحص الأدلة الفرعية تكراريًا | true | لا |
| --max-depth <N> | العمق الأقصى للتكرار | 10 | لا |
| --extensions <EXT> | امتدادات الملفات المراد فحصها (مفصولة بفواصل) | .jks,.p12,.pfx,.pem,.crt,.cer,.key | لا |
| --exclude <PATHS> | الأدلة المراد استثناؤها (مفصولة بفواصل) | node_modules,.git,target | لا |
| --threads <N> | عدد خيوط المعالجة المتوازية | 4 | لا |
| --scan-windows-certstore | فحص مخزن شهادات Windows (LocalMachine و CurrentUser) | false | لا |
| --certstore-name <NAME> | مخزن شهادات Windows المراد فحصه: MY أو ROOT أو CA أو TRUST أو ALL | ALL | لا |
| --output <FILE> | مسار ملف الإخراج | stdout | لا |
| --format <FMT> | تنسيق الإخراج: json أو yaml أو terminal أو html | json | لا |
أمثلة متقدمة
البنية
يستخدم وضع نظام الملفات walkdir للاجتياز التكراري للأدلة وrayon لمعالجة الملفات المتوازية:
- يجتاز شجرة الأدلة حتى العمق الأقصى المهيّأ (الافتراضي 10)، مع الاحتفاظ بالملفات التي تطابق الامتدادات المهيّأة وليست في مسار مستثنى.
- يحلل الملفات المطابقة بالتوازي عبر عدد الخيوط المهيّأ.
- يعدّد اختياريًا مخزن شهادات Windows (LocalMachine + CurrentUser) عند تعيين
--scan-windows-certstore.
يتولى تحليل الشهادات حزمة x509-parser، التي توفّر فك ترميز كامل لشهادات X.509 من تنسيقَي PEM و DER.
مثال على الإخراج
{
"scan_metadata": {
"scanner_version": "1.0.0",
"scan_mode": "filesystem",
"scan_date": "2025-01-30T15:45:22Z",
"scan_path": "/opt/applications",
"recursive": true,
"max_depth": 10
},
"summary": {
"files_scanned": 45678,
"keystores_found": 23,
"certificates_found": 156,
"private_keys_found": 67,
"total_findings": 246
},
"findings": [
{
"id": "fs-001",
"type": "keystore",
"file_path": "/opt/tomcat/conf/keystore.jks",
"format": "JKS",
"password_protected": true,
"certificates": [
{
"alias": "tomcat-ssl",
"subject": "CN=app.example.com",
"issuer": "CN=Example CA",
"not_after": "2025-12-31T23:59:59Z",
"algorithm": "RSA",
"key_size": 2048,
"has_private_key": true,
"quantum_vulnerable": true
}
],
"risk_assessment": {
"quantum_risk_score": 8.0,
"priority": "P1",
"severity": "HIGH"
}
},
{
"id": "fs-002",
"type": "certificate",
"file_path": "/etc/ssl/certs/server.crt",
"format": "PEM",
"certificate": {
"subject": "CN=www.example.com",
"algorithm": "ECDSA",
"curve": "P-256",
"quantum_vulnerable": true
},
"risk_assessment": {
"quantum_risk_score": 8.0,
"priority": "P1",
"severity": "HIGH"
}
}
]
}
السلوك الافتراضي
افتراضيًا، يفحص وضع نظام الملفات الدليل الحالي (.) تكراريًا حتى 10 مستويات عمقًا باستخدام 4 خيوط. ويبحث عن الملفات ذات الامتدادات .jks و.p12 و.pfx و.pem و.crt و.cer و.key، مع الاستثناء التلقائي لأدلة node_modules و.git وtarget.