
أداة للبحث عن الأسرار في أنواع ملفات متنوعة.
دمبستردايفر هي أداة يمكنها تحليل كميات كبيرة من البيانات بحثًا عن الأسرار المكتوبة بشكل صلب مثل المفاتيح (مثل مفتاح الوصول إلى AWS، مفتاح المشاركة في Azure أو مفاتيح SSH) أو كلمات المرور. بالإضافة إلى ذلك، تسمح بإنشاء قواعد بحث بسيطة مع شروط أساسية (مثل الإبلاغ عن ملفات CSV فقط التي تحتوي على 10 عناوين بريد إلكتروني على الأقل). الفكرة الرئيسية لهذه الأداة هي اكتشاف أي تسرب محتمل للأسرار. يمكنك مشاهدتها وهي تعمل في فيديو تجريبي أو قراءة عن جميع ميزاتها في هذه المقالة.
usage: DumpsterDiver.py [-h] -p LOCAL_PATH [-r] [-a] [-s] [-o OUTFILE]
[--min-key MIN_KEY] [--max-key MAX_KEY]
[--entropy ENTROPY] [--min-pass MIN_PASS]
[--max-pass MAX_PASS]
[--pass-complex {1,2,3,4,5,6,7,8,9}]
[--exclude-files EXCLUDE_FILES [EXCLUDE_FILES ...]]
[--bad-expressions BAD_EXPRESSIONS [BAD_EXPRESSIONS ...]]
-p LOCAL_PATH - المسار إلى المجلد الذي يحتوي على الملفات المراد تحليلها.-a, --advance - عند تعيين هذه العلامة، سيتم تحليل جميع الملفات بالإضافة إلى ذلك باستخدام القواعد المحددة في ملف rules.yaml.-r, --remove - عند تعيين هذه العلامة، سيتم إزالة الملفات التي لا تحتوي على أي سر (أو أي شيء مثير للاهتمام إذا تم تعيين علامة -a).-s, --secret - عند تعيين هذه العلامة، سيتم تحليل جميع الملفات بالإضافة إلى ذلك بحثًا عن كلمات المرور المكتوبة بشكل صلب.-o OUTFILE - ملف الإخراج بتنسيق JSON.لتشغيل دمبستردايفر، يجب عليك تثبيت مكتبات بايثون. يمكنك القيام بذلك عن طريق تشغيل الأمر التالي:
$> pip install -r requirements.txt
إذا كنت قد قمت بتثبيت Python 2 و 3 بشكل منفصل، فيجب عليك استخدام pip3 أو pip3.6.
لا توجد أداة واحدة تناسب احتياجات الجميع ودمبستردايفر ليست استثناءً هنا. هناك طريقتان لتخصيص بحثك:
config.yaml--min-key MIN_KEY - يحدد الحد الأدنى لطول المفتاح المراد تحليله (الافتراضي هو 20).--max-key MAX_KEY - يحدد الحد الأقصى لطول المفتاح المراد تحليله (الافتراضي هو 80).--entropy ENTROPY - يحدد عتبة الإنتروبيا العالية (الافتراضي هو 4.3).هناك أيضًا برنامج نصي منفصل مضاف يسمح لك بحساب إنتروبيا حرف في كلمة واحدة. سيساعدك ذلك على تخصيص دمبستردايفر بشكل أفضل لاحتياجاتك. يمكنك التحقق منه باستخدام الأمر التالي:
$> python3 entropy.py f2441e3810794d37a34dd7f8f6995df4
هذه الطريقة مفيدة جدًا عندما تعرف ما تبحث عنه. فيما يلي بعض الأمثلة:
$> python3 DumpsterDiver.py -p [PATH_TO_FOLDER] --min-key 40 --max-key 40 --entropy 4.3
$> python3 DumpsterDiver.py -p [PATH_TO_FOLDER] --min-key 66 --max-key 66 --entropy 5.1
$> python3 DumpsterDiver.py -p [PATH_TO_FOLDER] --min-key 76 --max-key 76 --entropy 5.1
aws_access_key_id أو aws_secret_access_key:$> python3 DumpsterDiver.py -p ./test/ --grep-words *aws_access_key_id* *aws_secret_access_key* -a
يرجى ملاحظة أن أحرف البدل قبل وبعد كلمة البحث تستخدم عن قصد. بهذه الطريقة، سيتم أيضًا الإبلاغ عن تعبيرات مثل
"aws_access_key_id"أوaws_access_key_id=.
استخدام الإنتروبيا للعثور على كلمات المرور ليس فعالاً للغاية لأنه يولد الكثير من النتائج الإيجابية الخاطئة. لهذا السبب يستخدم دمبستردايفر نهجًا مختلفًا للعثور على كلمات المرور المكتوبة بشكل صلب - فهو يتحقق من تعقيد كلمة المرور باستخدام passwordmeter. لتخصيص هذا البحث، يمكنك استخدام الأوامر التالية:
--min-pass MIN_PASS - يحدد الحد الأدنى لطول كلمة المرور المراد تحليلها (الافتراضي هو 8). يتطلب إضافة علامة -s إلى الصيغة.--max-pass MAX_PASS - يحدد الحد الأقصى لطول كلمة المرور المراد تحليلها (الافتراضي هو 12). يتطلب إضافة علامة -s إلى الصيغة.--pass-complex {1,2,3,4,5,6,7,8,9} - يحدد عتبة تعقيد كلمة المرور بين 1 (كلمات مرور تافهة) إلى 9 (كلمات مرور معقدة جدًا) (الافتراضي هو 8). يتطلب إضافة علامة -s إلى الصيغة.على سبيل المثال، إذا كنت تريد العثور على كلمات مرور معقدة (تحتوي على أحرف كبيرة، صغيرة، حرف خاص، رقم وطولها من 10 إلى 15 حرفًا)، فيمكنك القيام بذلك باستخدام الأمر التالي:
$> python3 DumpsterDiver.py -p [PATH_TO_FOLDER] --min-pass 10 --max-pass 15 --pass-complex 8
قد ترغب في تخطي مسح ملفات معينة. لهذا الغرض، يمكنك استخدام المعلمات التالية:
--exclude-files - يحدد أسماء الملفات أو الامتدادات التي لا ينبغي تحليلها. يجب أن يحتوي امتداد الملف على حرف . (مثل .pdf). يجب فصل أسماء الملفات والامتدادات المتعددة بمسافة.
--bad-expressions - يحدد التعبيرات غير المرغوب فيها. إذا وجد دمبستردايفر مثل هذا التعبير في ملف، فلن يتم تحليل هذا الملف. يجب فصل التعبيرات غير المرغوب فيها المتعددة بمسافة.
إذا كنت تريد تحديد أسماء ملفات متعددة أو تعبيرات غير مرغوب فيها أو كلمات بحث باستخدام ملف منفصل، يمكنك القيام بذلك عبر الحيلة التالية في bash:
$> python3 DumpsterDiver.py -p ./test/ --exclude-files `while read -r line; do echo $line; done < blacklisted_files.txt`
بدلاً من استخدام معاملات سطر أوامر متعددة، يمكنك تحديد قيم لجميع المعاملات المذكورة أعلاه مرة واحدة في ملف config.yaml.
يدعم دمبستردايفر أيضًا البحث المتقدم. بالإضافة إلى البحث البسيط بأحرف البدل، تسمح لك هذه الأداة بإنشاء شروط. لنفترض أنك تبحث عن تسرب رسائل البريد الإلكتروني للشركة. بالإضافة إلى ذلك، أنت مهتم فقط بالتسريبات الكبيرة التي تحتوي على 100 عنوان بريد إلكتروني على الأقل. لهذا الغرض، يجب عليك تحرير ملف rules.yaml بالطريقة التالية:
filetype: [".*"]
filetype_weight: 0
grep_words: ["*@example.com"]
grep_words_weight: 10
grep_word_occurrence: 100
لنفترض سيناريو مختلفًا، أنت تبحث عن مصطلحات "pass"، "password"، "haslo"، "hasło" (إذا كنت تقوم بتحليل مستودع شركة بولندية) في ملف .db أو .sql. يمكنك تحقيق ذلك عن طريق تعديل ملف rules.yaml بالطريقة التالية:
filetype: [".db", ".sql"]
filetype_weight: 5
grep_words: ["*pass*", "*haslo*", "*hasło*"]
grep_words_weight: 5
grep_word_occurrence: 1
لاحظ أنه سيتم تشغيل القاعدة فقط عندما يكون الوزن الإجمالي (filetype_weight + grep_words_weight) >=10.
صورة Docker متاحة لـ DumpsterDiver. قم بتشغيلها باستخدام:
$> docker run -v /path/to/my/files:/files --rm rzepsky/dumpsterdiver -p /files
إذا كنت تريد تجاوز أحد ملفات التكوين (config.yaml أو rules.yaml):
$> docker run -v /path/to/my/config/config.yaml:/config.yaml /path/to/my/config/rules.yaml:/rules.yaml -v /path/to/my/files:/files --rm rzepsky/dumpsterdiver -p /files
هل لديك أفكار أفضل؟ هل تريد المساعدة في هذا المشروع؟ يرجى الاتصال بي عبر تويتر @Rzepsky. سأكون سعيدًا جدًا برؤية أي مساهمين هنا!
هنا أود أن أشكر كثيرًا كل من ساعد في تطوير هذا المشروع:
انظر ملف LICENSE.