Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
Powermad — أدوات استغلال PowerShell MachineAccountQuota و DNS | Kitploit
أدوات/GitHubGitHub/kevin-robertson/powermad
تصعيد الامتيازاتالاستطلاعإدارة الهويةالحركة الجانبيةاختبار الاختراقالمصادقةالفريق الأحمر
GitHubkevin-robertson/powermad

Powermad

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

عرض المستودع
1.5k188منذ 3 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

Powermad_logo

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

ويكي

  • https://github.com/Kevin-Robertson/Powermad/wiki

منشور المدونة

  • ما وراء انتحال LLMNR/NBNS - استغلال DNS المتكامل مع Active Directory

الدوال

  • دوال MachineAccountQuota
  • دوال DNS
  • دوال التحديثات الديناميكية
  • دوال ADIDNS
  • دوال متنوعة

دوال MachineAccountQuota

إعداد السمة الافتراضي ms-DS-MachineAccountQuota في Active Directory يسمح لجميع مستخدمي المجال بإضافة ما يصل إلى 10 حسابات جهاز إلى المجال. يتضمن Powermad مجموعة من الدوال لاستغلال ms-DS-MachineAccountQuota دون إرفاق نظام فعلي بـ AD.

Get-MachineAccountAttribute

يمكن لهذه الدالة إرجاع القيم المعبأة في سمة حساب جهاز.

مثال:
  • الحصول على قيمة 'description' من حساب جهاز اسمه 'test'.
    Get-MachineAccountAttribute -MachineAccount test -Attribute discription

Get-MachineAccountCreator

تستفيد هذه الدالة من الخاصية ms-DS-CreatorSID في حسابات الجهاز لإرجاع قائمة بأسماء المستخدمين أو معرفات الأمان (SIDs) وحساب الجهاز المرتبط. يتم تعبئة الخاصية ms-DS-CreatorSID فقط عند إنشاء حساب جهاز بواسطة مستخدم غير مميز.

مثال:
  • الحصول على قائمة بجميع سمات ms-DS-CreatorSID المعبأة.
    Get-MachineAccountCreator

Disable-MachineAccount

يمكن لهذه الدالة تعطيل حساب جهاز تمت إضافته عبر New-MachineAccount. يجب استخدام هذه الدالة مع نفس المستخدم الذي أنشأ حساب الجهاز.

مثال:
  • تعطيل حساب جهاز اسمه test.
    Disable-MachineAccount -MachineAccount test

Enable-MachineAccount

يمكن لهذه الدالة تمكين حساب جهاز تم تعطيله عبر Disable-MachineAccount. يجب استخدام هذه الدالة مع نفس المستخدم الذي أنشأ حساب الجهاز.

مثال:
  • تمكين حساب جهاز اسمه test.
    Enable-MachineAccount -MachineAccount test

New-MachineAccount

يمكن لهذه الدالة إضافة حساب جهاز جديد مباشرة عبر طلب إضافة LDAP إلى وحدة تحكم المجال دون التأثير على حالة ارتباط النظام المضيف بـ Active Directory.

تم تصميم طلب إضافة LDAP بناءً على طلب الإضافة المستخدم عند ربط نظام بالمجال. يتم تعيين السمات التالية (التي تم التحقق منها في الغالب بواسطة وحدة التحكم بالمجال):

  • objectClass = Computer
  • SamAccountName = اسم حساب الجهاز مع $ في النهاية
  • userAccountControl = 4096
  • DnsHostName = FQDN
  • ServicePrincipalName = 2 HOST و 2 RestrictedKrbHost SPNs باستخدام كل من FQDN واسم الحساب
  • unicodePwd = كلمة المرور المحددة

يمكن استخدام حساب جهاز جديد لمهام مثل الاستفادة من الامتياز الممنوح لمجموعة 'Domain Computers' أو كحساب إضافي لتعداد المجال، أو استغلالات DNS، وما إلى ذلك. بشكل افتراضي، لا تمتلك حسابات الجهاز صلاحية تسجيل الدخول محلياً. يمكنك إما استخدام أدوات/عملاء يقبلون بيانات الاعتماد الشبكية مباشرة أو من خلال استخدام 'runas /netonly' أو @harmj0y's Invoke-UserImpersonation/Invoke-RevertToSelf المضمنة في PowerView.

  • https://github.com/PowerShellMafia/PowerSploit/tree/dev/Recon

حسابات الجهاز التي تم إنشاؤها باستخدام مستخدمين عاديين ستكون الخاصية mS-DS-CreatorSID معبأة بـ SID المستخدم العادي.

لاحظ أن ms-DS-MachineAccountQuota لا يوفر القدرة للمستخدمين المصادق عليهم لحذف حسابات الجهاز المضافة من AD. ستحتاج إلى الحصول على امتياز مرتفع لإزالة الحساب إذا كنت ترغب في تجنب تحويل المهمة إلى عميلك.

أمثلة:
  • إضافة حساب جهاز جديد
    New-MachineAccount -MachineAccount test

  • استخدام الحساب المضاف مع runas /netonly
    runas /netonly /user:domain\test$ powershell

Remove-MachineAccount

تقوم هذه الدالة بإزالة حساب جهاز باستخدام حساب مميز.

مثال:
  • إزالة حساب جهاز اسمه test باستخدام بيانات اعتماد مدير المجال
    Remove-MachineAccount -MachineAccount test -Credential $domainadmin

Set-MachineAccountAttribute

يمكن لهذه الدالة تعبئة بعض السمات لحساب تمت إضافته عبر New-MachineAccount، إذا كان لدى المستخدم صلاحية كتابة. يجب استخدام هذه الدالة مع نفس المستخدم الذي أنشأ حساب الجهاز.

إليك قائمة ببعض السمات التي عادةً ما تكون صلاحية الكتابة مفعلة لها:

  • AccountDisabled
  • description
  • displayName
  • DnsHostName
  • ServicePrincipalName
  • userParameters
  • userAccountControl
  • msDS-AdditionalDnsHostName
  • msDS-AllowedToActOnBehalfOfOtherIdentity
  • SamAccountName
أمثلة:
  • إزالة '$' من نهاية سمة SamAccountName
    Set-MachineAccountAttribute -MachineName test -Attribute SamAccountName -Value test

  • استخدام الحساب المعدّل مع runas /netonly
    runas /netonly /user:domain\test powershell

Invoke-AgentSmith

تستفيد هذه الدالة من New-MachineAccount لإنشاء أكبر عدد ممكن من حسابات الجهاز بشكل متكرر من حساب واحد غير مميز عبر MachineAccountQuota. راجع منشور المدونة التالي للتفاصيل:

  • https://blog.netspi.com/machineaccountquota-transitive-quota

دوال DNS

بشكل افتراضي، المستخدمون المصادق عليهم لديهم صلاحية 'إنشاء جميع الكائنات الفرعية' على نطاق DNS المتكامل مع Active Directory (ADIDNS). يمكن إضافة/حذف معظم السجلات غير الموجودة حالياً في نطاق AD.

دوال التحديثات الديناميكية

Invoke-DNSUpdate

يمكن استخدام هذه الدالة لإضافة/حذف سجلات 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

يمكن لهذه الدالة تجميد عقدة ADIDNS (وضع علامة مقبرة).

مثال:
  • تجميد سجل بطاقة بدل.
    Disable-ADIDNSNode -Node *

Enable-ADIDNSNode

يمكن لهذه الدالة تحويل عقدة مجمدة مرة أخرى إلى سجل صالح.

مثال:
  • تمكين سجل بطاقة بدل.
    Enable-ADIDNSNode -Node *

Get-ADIDNSNodeAttribute

يمكن لهذه الدالة إرجاع القيم المعبأة في سمة عقدة DNS.

مثال:
  • الحصول على القيمة المعبأة في سمة dnsRecord لعقدة اسمها test.
    Get-ADIDNSNodeAttribute -Node test -Attribute dnsRecord

Get-ADIDNSNodeOwner

يمكن لهذه الدالة إرجاع مالك عقدة ADIDNS.

مثال:
  • الحصول على مالك عقدة اسمها test. Get-ADIDNSNodeOwner -Node test

Get-ADIDNSPermission

تحصل هذه الدالة على DACL لعقدة أو نطاق ADIDNS.

أمثلة:
  • الحصول على DACL للنطاق الافتراضي المتكامل مع Active Directory من نظام مرتبط بالمجال.
    Get-ADIDNSPermission

  • الحصول على DACL لعقدة DNS اسمها test من نظام مرتبط بالمجال.
    Get-ADIDNSPermission -Node test

Get-ADIDNSZone

يمكن لهذه الدالة إرجاع نطاقات ADIDNS.

أمثلة:
  • الحصول على جميع نطاقات ADIDNS.
    Get-ADIDNSZone

Grant-ADIDNSPermission

تضيف هذه الدالة إدخال تحكم وصول (ACE) إلى DACL لعقدة أو نطاق DNS.

مثال:
  • إضافة وصول كامل لسجل بطاقة بدل لـ "المستخدمون المصادق عليهم".
    Grant-ADIDNSPermission -Node * -Principal "authenticated users"

New-ADIDNSNode

تضيف هذه الدالة عقدة DNS إلى نطاق DNS المتكامل مع Active Directory (ADIDNS) عبر طلب إضافة LDAP مشفر.

مثال:
  • إضافة سجل بطاقة بدل إلى نطاق ADIDNS وتجميد العقدة.
    New-ADIDNSNode -Node * -Tombstone

New-DNSRecordArray

تنشئ هذه الدالة مصفوفة بايت صالحة لسمة dnsRecord.

مثال:
  • إنشاء مصفوفة dnsRecord لسجل A يشير إلى 192.168.0.1.
    New-DNSRecordArray -Data 192.168.0.1

New-SOASerialNumberArray

تحصل هذه الدالة على رقم التسلسل الحالي لـ SOA لنطاق DNS وتزيده بمقدار محدد.

مثال:
  • توليد مصفوفة بايت من رقم التسلسل الحالي لـ SOA بعد زيادته بواحد.
    New-SOASerialNumberArray

Rename-ADIDNSNode

يمكن لهذه الدالة إعادة تسمية عقدة DNS.

مثال:
  • إعادة تسمية عقدة DNS اسمها test إلى test2.
    Rename-ADIDNSNode -Node test -NodeNew test2

Remove-ADIDNSNode

يمكن لهذه الدالة إزالة عقدة DNS.

مثال:
  • إزالة عقدة بطاقة بدل.
    Remove-ADIDNSNode -Node *

Revoke-ADIDNSPermission

تزيل هذه الدالة إدخال تحكم وصول (ACE) من DACL لعقدة أو نطاق DNS.

مثال:
  • إزالة إدخال GenericAll المرتبط بحساب user1.
    Revoke-ADIDNSPermission -Node * -Principal user1 -Access GenericAll

Set-ADIDNSNodeAttribute

يمكن لهذه الدالة إضافة أو تعبئة أو الكتابة فوق القيم في سمة عقدة DNS.

مثال:
  • تعيين سمة description القابلة للكتابة على عقدة اسمها test.
    Set-ADIDNSNodeAttribute -Node test -Attribute description -Value "do not delete"

Set-ADIDNSNodeOwner

يمكن لهذه الدالة تعيين مالك عقدة DNS. لاحظ أن رمزاً مميزاً مع صلاحية SeRestorePrivilege مطلوب.

مثال:
  • تعيين مالك عقدة اسمها test إلى user1.
    Set-ADIDNSNodeOwner -Node test -Principal user1

دوال متنوعة

Get-KerberosAESKey

يمكن لهذه الدالة توليد مفاتيح Kerberos AES 256 و 128 من اسم مستخدم وكلمة مرور معروفين. يمكن استخدام هذا لاختبار تمرير التجزئة في invoke-DNSUpdate.

مثال:
  • توليد مفاتيح لمستخدم AD صالح باسم [email protected].
    Get-KerberosAESKey -Salt TEST.LOCALuser
تنزيل الأداة