
AzureRT - وحدة Powershell تنفذ تكتيكات متنوعة للفريق الأحمر (Red Team) على Azure.
وحدة Powershell تنفذ العديد من cmdlets للتفاعل مع Azure و Azure AD من منظور هجومي.
أدوات مساعدة مفيدة للتعامل مع التوثيق القائم على رمز الوصول (access token)، والتبديل بين واجهات Az و AzureAD و az cli، وهجمات جاهزة سهلة الاستخدام مثل تنفيذ الأوامر القائم على Runbook وغيرها.
تجلب هذه المجموعة الكثير من cmdlets المتنوعة. يسلط هذا القسم الضوء على أهمها وأكثرها فائدة.
يمكن تلخيص سير العمل النموذجي للفريق الأحمر / التدقيق الذي يبدأ ببيانات اعتماد مسروقة على النحو التالي:
Credentials Stolen -> Authenticate to Azure/AzureAD -> find whether they're valid -> find out what you can do with them
إن cmdlets أدناه مناسبة تمامًا لمساعدتك في اتباع هذا التسلسل:
Connect-ART - يقدم وسائل متنوعة للمصادقة على Azure - بيانات اعتماد، PSCredential، رمز وصول (token)
Connect-ARTAD - يقدم وسائل متنوعة للمصادقة على Azure AD - بيانات اعتماد، PSCredential، رمز وصول
Get-ARTWhoami - عند المصادقة - قم بتشغيل هذا للتحقق من whoami والتحقق من صحة وصولك
Get-ARTAccess - بعد ذلك، عندما تعرف أن لديك وصولاً - اكتشف ما يمكنك فعله وما هو ممكن عن طريق إجراء الوعي الظرفي لـ Azure
Get-ARTADAccess - بالمثل يمكنك معرفة ما يمكنك فعله ضمن نطاق Azure AD.
كانت cmdlets المنفذة في هذه الوحدة مفيدة في حالات الاستخدام وسيناريوهات الهجوم التالية:
Az إلى AzureAD والعودة مرة أخرى.Az و AzureAD و Microsoft.Graph و az cli في نفس الوقتتعتمد هذه الوحدة على وحدات Powershell Az و AzureAD المثبتة مسبقًا. Microsoft.Graph و az cli اختيارية ولكنها مفيدة حقًا. قبل البدء في العمل على Azure، يمكن استخدام الأوامر التالية لإعداد البيئة الهجومية:
Install-Module Az -Force -Confirm -AllowClobber -Scope CurrentUser
Install-Module AzureAD -Force -Confirm -AllowClobber -Scope CurrentUser
Install-Module Microsoft.Graph -Force -Confirm -AllowClobber -Scope CurrentUser # OPTIONAL
Install-Module MSOnline -Force -Confirm -AllowClobber -Scope CurrentUser # OPTIONAL
Install-Module AzureADPreview -Force -Confirm -AllowClobber -Scope CurrentUser # OPTIONAL
Install-Module AADInternals -Force -Confirm -AllowClobber -Scope CurrentUser # OPTIONAL
Import-Module Az
Import-Module AzureAD
على الرغم من أن الوحدتين الأوليين فقط مطلوبتان بواسطة AzureRT، إلا أنه من الجيد تثبيت الوحدات الأخرى أيضًا مسبقًا.
ثم لتحميل هذه الوحدة، اكتب ببساطة:
PS> . .\AzureRT.ps1
وستكون جاهزًا للانطلاق.
أو يمكنك ترك AzureRT يقوم بتثبيت واستيراد جميع التبعيات:
PS> . .\AzureRT.ps1
PS> Import-ARTModules
ستستقبل الوحدة تدريجيًا أدوات ومرافق أخرى، مصنفة بشكل طبيعي في مراحل سلسلة القتل التالية.
كل cmdlet لديه رسالة مساعدة جميلة توضح المعلمات والوصف ومثال الاستخدام:
PS C:\> Get-Help Connect-ART
حاليًا، تتضمن المرافق التالية:
Get-ARTWhoami - يعرض ويتحقق من سياق المصادقة الخاص بنا على واجهات Azure و AzureAD و Microsoft.Graph و AZ CLI.
Connect-ART - يستدعي Connect-AzAccount لمصادقة الجلسة الحالية على بوابة Azure عبر رمز الوصول المقدم أو بيانات الاعتماد. يتجاوز عناء توفير معرف المستأجر (Tenant ID) ومعرف الحساب عن طريق استخراجهما تلقائيًا من الرمز المقدم.
Connect-ARTAD - يستدعي Connect-AzureAD (واختياريًا Connect-MgGraph) لمصادقة الجلسة الحالية على Azure Active Directory عبر رمز الوصول المقدم أو بيانات الاعتماد. يتجاوز عناء توفير معرف المستأجر ومعرف الحساب عن طريق استخراجهما تلقائيًا من الرمز المقدم.
Connect-ARTADServicePrincipal - يستدعي Connect-AzAccount لمصادقة الجلسة الحالية على بوابة Azure عبر رمز الوصول المقدم أو بيانات الاعتماد. يتجاوز عناء توفير معرف المستأجر ومعرف الحساب عن طريق استخراجهما تلقائيًا من الرمز المقدم. ثم يقوم بإنشاء شهادة PFX ذاتية التوقيع ويربطها بـ Service Principal للمصادقة. بعد ذلك، يقوم بالمصادقة كـ Service Principal إلى AzureAD ثم يفصل تلك الشهادة للتنظيف.
Get-ARTAccess - ينفذ الوعي الظرفي لـ Azure.
Get-ARTADAccess - ينفذ الوعي الظرفي لـ Azure AD.
Get-ARTTenants - يسرد المستأجرين المتاحين للمستخدم المصادق عليه حاليًا (أو المستند إلى رمز الوصول المقدم)
Get-ARTDangerousPermissions - يحلل موارد Azure التي يمكن الوصول إليها والأذونات المرتبطة التي يمتلكها المستخدم عليها للعثور على جميع الأذونات الخطيرة التي يمكن استغلالها من قبل المهاجم.
Get-ARTResource - يصادق على https://management.azure.com باستخدام رمز الوصول المقدم ويسحب الموارد التي يمكن الوصول إليها والأذونات التي يمتلكها مالك الرمز تجاهها.
Get-ARTRoleAssignment - يعرض تمثيلًا أسهل للقراءة لأدوار Azure RBAC المعينة للمستخدم الأساسي المستخدم حاليًا.
Get-ARTADRoleAssignment - يعرض تعيينات أدوار Azure AD على مستخدم حالي أو على جميع مستخدمي Azure AD.
Get-ARTADScopedRoleAssignment - يعرض تعيينات الأدوار ذات النطاق في Azure AD على مستخدم حالي أو على جميع مستخدمي Azure AD، المرتبطة بالوحدات الإدارية
Add-ARTADGuestUser - يرسل بريدًا إلكترونيًا لدعوة مستخدم ضيف Azure AD، مما يسمح بتوسيع الوصول إلى مستأجر AAD للمهاجم الخارجي ويعيد عنوان URL لاسترداد الدعوة المستخدم لقبول الدعوة بسهولة.
Set-ARTADUserPassword - يسيء استخدام تعيين دور Authentication Administrator لإعادة تعيين كلمة مرور مستخدم آخر غير المسؤول.
Add-ARTUserToGroup - يضيف مستخدم Azure AD محدد إلى مجموعة Azure AD محددة.
Add-ARTUserToRole - يضيف مستخدم Azure AD محدد إلى دور Azure AD محدد.
Add-ARTADAppSecret - يضيف سر عميل (client secret) إلى تطبيقات Azure AD. من تأليف Nikhil Mittal, @nikhil_mitt
Invoke-ARTAutomationRunbook - ينشئ Runbook أتمتة ضمن حساب أتمتة محدد ومجموعة عمال محددة. سيحتوي هذا الـ Runbook على أوامر Powershell ليتم تنفيذها على جميع أجهزة Azure VM المتأثرة.
Invoke-ARTRunCommand - يسيء استخدام الإذن virtualMachines/runCommand على جهاز Azure VM محدد لتشغيل أمر Powershell مخصص.
Update-ARTAzVMUserData - يعدل سكريبت بيانات مستخدم Azure VM من خلال استدعاء API مباشر.
Invoke-ARTCustomScriptExtension - ينشئ أو يعدل امتداد سكريبت مخصص لجهاز Azure VM مما يؤدي إلى تنفيذ برمجي عن بُعد.
Get-ARTTenantID - يسترد معرف المستأجر للمستخدم الحالي أو معرف المستأجر بناءً على اسم النطاق المقدم.
Get-ARTPRTToken - يسترد قيمة PRT (Primary Refresh Token) للمستخدم الحالي باستخدام Dirk-Jan Mollema's ROADtoken
Get-ARTPRTNonce - يسترد قيمة nonce لـ PRT (Primary Refresh Token) للمستخدم الحالي
Get-ARTUserId - يحصل على المستخدم الحالي أو المستخدم المحدد في المعامل ObjectId عبر وحدة Az
Get-ARTSubscriptionId - مساعد يجمع معرف الاشتراك الحالي.
Parse-JWTtokenRT - يحلل رمز JWT المدخل ويطبعه بشكل جيد.
Invoke-ARTGETRequest - يأخذ رمز الوصول ويستدعي طلب API بطريقة REST GET ضد URI محدد. كما يتحقق مما إذا كان الرمز المقدم يحتوي على الجمهور المطلوب.
Import-ARTModules - يقوم بتثبيت واستيراد وحدات Powershell المطلوبة والاختيارية لأنشطة الفريق الأحمر لـ Azure
هذا المشروع وغيره هي نتيجة ليالٍ بلا نوم والكثير من العمل الشاق. إذا أعجبك ما أفعله وتقدر أنني دائمًا أرد الجميل للمجتمع، فكر في شراء قهوة لي (أو الأفضل بيرة) فقط لقول شكرًا! 💪
Mariusz Banach / mgeeky, (@mariuszbit)
<mb [at] binary-offensive.com>
Get-ARTAccessTokenAzCli - يحصل على رمز الوصول من az cli، عبر az account get-access-token
Get-ARTAccessTokenAz - يحصل على رمز الوصول من وحدة Az، عبر Get-AzAccessToken.
Get-ARTAccessTokenAzureAD - يحصل على رمز وصول من Azure Active Directory. من تأليف Simon Wahlin, @SimonWahlin
Get-ARTAccessTokenAzureADCached - يحاول استرداد رمز الوصول المخزن محليًا لـ AzureAD (https://graph.microsoft.com)، والمخزن بعد حدوث Connect-AzureAD.
Remove-ARTServicePrincipalKey - ينفذ إجراءات التنظيف بعد تشغيل Connect-ARTADServicePrincipal
Get-ARTRolePermissions - يعرض جميع الأذونات الممنوحة على دور Azure RBAC محدد.
Get-ARTADRolePermissions - يعرض جميع الأذونات الممنوحة على دور Azure AD محدد.
Get-ARTADDynamicGroups - يعرض مجموعات Azure AD الديناميكية بالإضافة إلى قواعد عضوية المستخدم الخاصة بها وعدد الأعضاء وحالة عضوية المستخدم الحالي
Get-ARTApplication - يسرد تطبيقات Azure AD Enterprise التي يكون المستخدم الحالي مالكًا لها (أو جميع الموجودة عند استخدام -All) بالإضافة إلى مالكيها و Service Principals
Get-ARTApplicationProxy - يسرد تطبيقات Azure AD Enterprise التي تحتوي على إعداد Application Proxy.
Get-ARTApplicationProxyPrincipals - يعرض المستخدمين والمجموعات المعينة لتطبيق Application Proxy المحدد.
Get-ARTStorageAccountKeys - يعرض جميع مفاتيح حساب التخزين المتاحة.
Get-ARTKeyVaultSecrets - يسرد جميع أسرار Azure Key Vault المتاحة. يفترض هذا cmdlet أن المستخدم الطالب متصل بـ Azure AD باستخدام KeyVaultAccessToken (محدد النطاق إلى https://vault.azure.net) ولديه دور "Key Vault Secrets User" (أو ما يعادله).
Get-ARTAutomationCredentials - يسرد جميع بيانات اعتماد حساب Azure Automation المتاحة ويحاول سحب قيمها (غير قادر على سحب القيم!).
Get-ARTAutomationRunbookCode - يستدعي طريقة REST API لسحب الكود المصدري لـ Runbook المحدد.
Get-ARTAzVMPublicIP - يسترد عنوان IP العام لجهاز Azure VM
Get-ARTResourceGroupDeploymentTemplate - يعرض قالب نشر مجموعة الموارد (Resource Group Deployment Template) بتنسيق JSON بناءً على معلمات الإدخال، أو يسحبها كلها مرة واحدة.
Get-ARTAzVMUserDataFromInside - يسترد بيانات مستخدم Azure VM من داخل الجهاز عن طريق الوصول إلى نقطة Instance Metadata.