
أدوات استغلال PowerShell MachineAccountQuota و DNS

إعداد السمة الافتراضي ms-DS-MachineAccountQuota في Active Directory يسمح لجميع مستخدمي المجال بإضافة ما يصل إلى 10 حسابات جهاز إلى المجال. يتضمن Powermad مجموعة من الدوال لاستغلال ms-DS-MachineAccountQuota دون إرفاق نظام فعلي بـ AD.
يمكن لهذه الدالة إرجاع القيم المعبأة في سمة حساب جهاز.
Get-MachineAccountAttribute -MachineAccount test -Attribute discriptionتستفيد هذه الدالة من الخاصية ms-DS-CreatorSID في حسابات الجهاز لإرجاع قائمة بأسماء المستخدمين أو معرفات الأمان (SIDs) وحساب الجهاز المرتبط. يتم تعبئة الخاصية ms-DS-CreatorSID فقط عند إنشاء حساب جهاز بواسطة مستخدم غير مميز.
Get-MachineAccountCreatorيمكن لهذه الدالة تعطيل حساب جهاز تمت إضافته عبر New-MachineAccount. يجب استخدام هذه الدالة مع نفس المستخدم الذي أنشأ حساب الجهاز.
Disable-MachineAccount -MachineAccount testيمكن لهذه الدالة تمكين حساب جهاز تم تعطيله عبر Disable-MachineAccount. يجب استخدام هذه الدالة مع نفس المستخدم الذي أنشأ حساب الجهاز.
Enable-MachineAccount -MachineAccount testيمكن لهذه الدالة إضافة حساب جهاز جديد مباشرة عبر طلب إضافة LDAP إلى وحدة تحكم المجال دون التأثير على حالة ارتباط النظام المضيف بـ Active Directory.
تم تصميم طلب إضافة LDAP بناءً على طلب الإضافة المستخدم عند ربط نظام بالمجال. يتم تعيين السمات التالية (التي تم التحقق منها في الغالب بواسطة وحدة التحكم بالمجال):
يمكن استخدام حساب جهاز جديد لمهام مثل الاستفادة من الامتياز الممنوح لمجموعة 'Domain Computers' أو كحساب إضافي لتعداد المجال، أو استغلالات DNS، وما إلى ذلك. بشكل افتراضي، لا تمتلك حسابات الجهاز صلاحية تسجيل الدخول محلياً. يمكنك إما استخدام أدوات/عملاء يقبلون بيانات الاعتماد الشبكية مباشرة أو من خلال استخدام 'runas /netonly' أو @harmj0y's Invoke-UserImpersonation/Invoke-RevertToSelf المضمنة في PowerView.
حسابات الجهاز التي تم إنشاؤها باستخدام مستخدمين عاديين ستكون الخاصية mS-DS-CreatorSID معبأة بـ SID المستخدم العادي.
لاحظ أن ms-DS-MachineAccountQuota لا يوفر القدرة للمستخدمين المصادق عليهم لحذف حسابات الجهاز المضافة من AD. ستحتاج إلى الحصول على امتياز مرتفع لإزالة الحساب إذا كنت ترغب في تجنب تحويل المهمة إلى عميلك.
إضافة حساب جهاز جديد
New-MachineAccount -MachineAccount test
استخدام الحساب المضاف مع runas /netonly
runas /netonly /user:domain\test$ powershell
تقوم هذه الدالة بإزالة حساب جهاز باستخدام حساب مميز.
Remove-MachineAccount -MachineAccount test -Credential $domainadminيمكن لهذه الدالة تعبئة بعض السمات لحساب تمت إضافته عبر New-MachineAccount، إذا كان لدى المستخدم صلاحية كتابة. يجب استخدام هذه الدالة مع نفس المستخدم الذي أنشأ حساب الجهاز.
إليك قائمة ببعض السمات التي عادةً ما تكون صلاحية الكتابة مفعلة لها:
إزالة '$' من نهاية سمة SamAccountName
Set-MachineAccountAttribute -MachineName test -Attribute SamAccountName -Value test
استخدام الحساب المعدّل مع runas /netonly
runas /netonly /user:domain\test powershell
تستفيد هذه الدالة من New-MachineAccount لإنشاء أكبر عدد ممكن من حسابات الجهاز بشكل متكرر من حساب واحد غير مميز عبر MachineAccountQuota. راجع منشور المدونة التالي للتفاصيل:
بشكل افتراضي، المستخدمون المصادق عليهم لديهم صلاحية 'إنشاء جميع الكائنات الفرعية' على نطاق DNS المتكامل مع Active Directory (ADIDNS). يمكن إضافة/حذف معظم السجلات غير الموجودة حالياً في نطاق AD.
يمكن استخدام هذه الدالة لإضافة/حذف سجلات DNS الديناميكية إذا تم تكوين الإعداد الافتراضي للتحديثات الديناميكية الآمنة المفعلة على وحدة تحكم المجال. يتم دعم سجلات A، AAAA، CNAME، MX، PTR، SRV، و TXT حالياً. تم تصميم Invoke-DNSUpdate بناءً على أداة nsupdate الخاصة بـ BIND عند استخدام الخيارات '-g' أو 'gsstsig'.
إضافة سجل A
Invoke-DNSUpdate -DNSType A -DNSName www -DNSData 192.168.100.125
حذف سجل A
Invoke-DNSUpdate -DNSType A -DNSName www.test.local
إضافة سجل SRV
Invoke-DNSUpdate -DNSType SRV -DNSName _autodiscover._tcp.test.local -DNSData system.test.local -DNSPriority 100 -DNSWeight 80 -DNSPort 443
يمكن لهذه الدالة تجميد عقدة ADIDNS (وضع علامة مقبرة).
Disable-ADIDNSNode -Node *يمكن لهذه الدالة تحويل عقدة مجمدة مرة أخرى إلى سجل صالح.
Enable-ADIDNSNode -Node *يمكن لهذه الدالة إرجاع القيم المعبأة في سمة عقدة DNS.
Get-ADIDNSNodeAttribute -Node test -Attribute dnsRecordيمكن لهذه الدالة إرجاع مالك عقدة ADIDNS.
Get-ADIDNSNodeOwner -Node testتحصل هذه الدالة على DACL لعقدة أو نطاق ADIDNS.
الحصول على DACL للنطاق الافتراضي المتكامل مع Active Directory من نظام مرتبط بالمجال.
Get-ADIDNSPermission
الحصول على DACL لعقدة DNS اسمها test من نظام مرتبط بالمجال.
Get-ADIDNSPermission -Node test
يمكن لهذه الدالة إرجاع نطاقات ADIDNS.
Get-ADIDNSZoneتضيف هذه الدالة إدخال تحكم وصول (ACE) إلى DACL لعقدة أو نطاق DNS.
Grant-ADIDNSPermission -Node * -Principal "authenticated users"تضيف هذه الدالة عقدة DNS إلى نطاق DNS المتكامل مع Active Directory (ADIDNS) عبر طلب إضافة LDAP مشفر.
New-ADIDNSNode -Node * -Tombstoneتنشئ هذه الدالة مصفوفة بايت صالحة لسمة dnsRecord.
New-DNSRecordArray -Data 192.168.0.1تحصل هذه الدالة على رقم التسلسل الحالي لـ SOA لنطاق DNS وتزيده بمقدار محدد.
New-SOASerialNumberArrayيمكن لهذه الدالة إعادة تسمية عقدة DNS.
Rename-ADIDNSNode -Node test -NodeNew test2يمكن لهذه الدالة إزالة عقدة DNS.
Remove-ADIDNSNode -Node *تزيل هذه الدالة إدخال تحكم وصول (ACE) من DACL لعقدة أو نطاق DNS.
Revoke-ADIDNSPermission -Node * -Principal user1 -Access GenericAllيمكن لهذه الدالة إضافة أو تعبئة أو الكتابة فوق القيم في سمة عقدة DNS.
Set-ADIDNSNodeAttribute -Node test -Attribute description -Value "do not delete"يمكن لهذه الدالة تعيين مالك عقدة DNS. لاحظ أن رمزاً مميزاً مع صلاحية SeRestorePrivilege مطلوب.
Set-ADIDNSNodeOwner -Node test -Principal user1يمكن لهذه الدالة توليد مفاتيح Kerberos AES 256 و 128 من اسم مستخدم وكلمة مرور معروفين. يمكن استخدام هذا لاختبار تمرير التجزئة في invoke-DNSUpdate.
Get-KerberosAESKey -Salt TEST.LOCALuser