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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
PowerShellArmoury — ترسانة PowerShell لعشاق الأمن | Kitploit
أدوات/GitHubGitHub/cfalta/powershellarmoury
أدوات التشفير/فك التشفيرتوليد الحمولةالبرمجة النصية والأتمتةاختبار الاختراقالأدوات والمكوناتالفريق الأحمرArchived
GitHubcfalta/powershellarmoury

PowerShellArmoury

ترسانة PowerShell لعشاق الأمن

عرض المستودع
47069منذ 2 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

[!IMPORTANT]
هذا المستودع مؤرشف الآن. على الرغم من أنها كانت رحلة ممتعة، أعتقد أن PSArmoury قد استنفدت فائدتها.


PowerShellArmoury

PowerShell Armoury مصممة لمختبري الاختراق، وفرق "أدخل اللون المناسب هنا"، وأي شخص آخر يستخدم مجموعة متنوعة من أدوات PowerShell أثناء مهامه. تتيح لك تنزيل وتخزين جميع نصوص PowerShell المفضلة لديك في ملف واحد مبهم.

لن تحتاج إلى عناء تحديث Rubeus، PowerView، ... يدويًا. فقط قم بإنشاء ملف تكوين مرة واحدة أو استخدم الملف الافتراضي المرفق مع الأداة. من الآن فصاعدًا، عليك فقط تشغيل "New-PSArmoury" قبل التوجه إلى المهمة التالية. بالإضافة إلى ذلك، يقوم PSArmoury بإبهام الكود الخاص بك ويأتي مع تجاوز AMSI مضمن. التصميم المعياري يسهل عليك تغيير كود التهرب أو الإبهام في حالة وجود اكتشاف له.



الهيكل العام

الإصدار الحالي من PSArmoury يفضل التصميم المعياري.

root@kitploit:~
 New-PSArmoury.ps1
 PSArmoury.json
 utilities
    ConvertTo-Powershell.ps1
    Invoke-Shuffle.ps1
 modules
    evasion.ps1
    obfuscation.ps1

الكود مقسم إلى سكريبت رئيسي يسمى New-PSArmoury.ps1، وهو الذي تقوم بتنفيذه. كود التهرب والإبهام وفك الإبهام مخزن في ملفات .ps1 منفصلة داخل مجلد modules. هذه الملفات المنفصلة يتم استدعاؤها بواسطة السكريبت الرئيسي ويجب أن تسهل عليك تغيير وظائف محددة (مثل تجاوز AMSI). بالإضافة إلى مجلد modules، يوجد أيضًا مجلد utilities. ستجد هنا سكريبتات مستقلة يمكن أن تكون مفيدة في سيناريوهات محددة.

مجلد modules

المسار الافتراضي لمجلد modules هو .\modules حيث تشير النقطة إلى مجلد العمل الحالي للشيل. يمكنك تغيير مسار مجلد modules باستخدام الوسيطة -ModulesDirectory للأمر New-PSArmoury. أسماء ملفات السكريبت نفسها مثبتة بشكل ثابت في السكريبت الرئيسي ومن المتوقع دائمًا أن تكون:

  • evasion.ps1
  • obfuscation.ps1

دعنا نلقي نظرة فاحصة على هذين الملفين.

evasion.ps1

يجب أن يحتوي هذا السكريبت على الكود المخصص لتجاوز ما تريد تجاوزه. افتراضيًا، يحتوي على تجاوز AMSI معروف (بفضل amsi.fail). يرجى ملاحظة ما يلي:

  • الكود هنا يعمل قبل كل شيء آخر (مثل فك الإبهام)
  • لا يوجد أي نوع من التحقق! كل ما تضعه هنا سيتم تمريره إلى IEX كما هو.

obfuscation.ps1

يجب أن يحتوي هذا السكريبت على الكود المستخدم للإبهام وفك الإبهام. obfuscation.ps1 الافتراضي يستخدم تشفير RC2. أمثلة جاهزة للاستخدام:

  • TEMPLATE_obfuscation_RC2.ps1 --> هذا هو الافتراضي
  • TEMPLATE_obfuscation_byte_convert.ps1
  • TEMPLATE_obfuscation_empty.ps1

لاحظ أن TEMPLATE_obfuscation_empty.ps1 لا يفعل شيئًا على الإطلاق ويعمل كقالب لبناء وظيفتك الخاصة.

إذا كنت ترغب في استخدام أي منها، فقط أعد تسميته إلى "obfuscation.ps1" واحذف الملف الافتراضي.

إذا كنت ترغب في إنشاء نسخة مخصصة، ضع في اعتبارك ما يلي فيما يتعلق بالإبهام:

  • يجب أن يكون اسم الوظيفة دائمًا "Get-PSArmouryObfuscation" مع معامل سلسلة واحد يسمى "Code" لأن هذا ما سيدعوه السكريبت الرئيسي لأي عنصر تريد وضعه في armoury.
  • يجب أن تعيد الوظيفة النسخة المبهمة من الكود مرة أخرى كقيمة سلسلة واحدة. السكريبت الرئيسي يقوم بحلقة base64 إضافية للتشفير/فك التشفير لضمان أنه يمكنه التعامل مع أشياء أخرى ترميها إليه، لكن سيكون من الأسهل إذا قمت بجعله سلسلة.
  • وظيفة فك الإبهام المقابلة يجب أن تفهم كل ما تعيده هنا. السكريبت الرئيسي يقوم فقط بتمرير النتائج -> لا يحدث أي سحر هنا

وتأكد من تذكر هذه الأمور فيما يتعلق بفك الإبهام:

  • يجب أن يكون اسم الوظيفة دائمًا Get-PSArmouryDeObfuscation بدون معامل لأنها تتكرر عبر متغير عام ثابت.
  • يجب أن تعيد الوظيفة النسخة المفككة من الكود مرة أخرى كقيمة سلسلة واحدة، جاهزة للتنفيذ. نحن فقط نمرر كل ما تعيده إلى IEX، لذا الباقي يعود إليك.

مجلد utilities

مجلد utilities يحتوي على سكريبتات مستقلة مفيدة.

  • ConvertTo-Powershell.ps1
    • يحول تطبيق c# لوحدة التحكم إلى سكريبت powershell. لمزيد من التفاصيل، انظر منشور المدونة المقابل.
  • Invoke-Shuffle.ps1
    • سكريبت إبهام بسيط يحول سطرًا واحدًا من الكود إلى متغيرات متعددة تحتوي على أجزاء من السلسلة الأصلية التي يتم دمجها واستدعاؤها أثناء التنفيذ.

مرجع التكوين

يجب أن يكون ملف التكوين json صالحًا يتكون من مصفوفة واحدة تحتوي على كائن واحد أو أكثر، حيث يتم تفسير كل كائن كمصدر سكريبت واحد. كل كائن له السمات التالية

Name (إجباري)

اسم من اختيارك لتحديد السكريبت المضمن في هذا الكائن. هذا مجرد مرجع لنفسك.

URL (إجباري)

الموقع للحصول على محتوى السكريبت. يمكن أن يكون عنوان URL لمورد ويب (https://) أو مسار محلي (C:) أو مورد شبكة (\...). يتم إلقاء URL في Net.Webclient أو Get-Item الخاص بـ PowerShells على التوالي. لذا، بشكل أساسي، أي تنسيق يمكن لأحد هذين التعامل معه افتراضيًا يجب أن يعمل.

Type (إجباري)

يعطي تلميحًا حول موقع السكريبت لمنشئ armoury. هناك ثلاثة أنواع صالحة:

  • GitHub
    • سيطلب بيانات الاعتماد حتى نتمكن من المصادقة ضد API الخاص بـ GitHub. سيحاول أيضًا التمييز بين عنوان URL "خام" يشير مباشرة إلى ملف أو عنوان URL يشير إلى مستودع. إذا كان عنوان URL يشير إلى مستودع، فسيقوم السكريبت تلقائيًا بالبحث عن جميع ملفات PowerShell في ذلك المستودع وتضمينها. مثل "https://github.com/cfalta/PoshRandom"
  • WebDownloadSimple
    • يعني ملف يمكن تنزيله بدون مصادقة أو أشياء باستخدام HTTP GET. مثل "http://mywebserver.com/file.ps1"
  • LocalFile
    • ملف على القرص مثل "C:\temp\test.ps1". إذا كان المسار يشير إلى مجلد، فسيتم تضمين جميع الملفات (بشكل متكرر) ذات الامتداد ".ps1".

FileInclusionFilter (اختياري)

سيتم تفسيره فقط في كائن من نوع "GitHub". سيتم مطابقته باستخدام عامل المقارنة "like" الخاص بـ PowerShell مع اسم الملف بالكامل، لذا ضع في اعتبارك أنك تحتاج إلى تضمين أحرف البدل بنفسك. لا تنس تضمين علامة نجمية (*) إذا كنت تريد مطابقة جزء من اسم الملف. "*.ps1" يعني جميع الملفات التي تنتهي بـ ".ps1" ولكن ".ps1" يعني فقط ".ps1".

ليس عليك تضمين عامل تصفية، ولكن إذا قمت بذلك، فيجب عليك استخدامه. يعني InclusionFilter فارغ عدم وجود ملفات.

FileExclusionFilter (اختياري)

مثل InclusionFilter ولكن بالطبع بالعكس. الاستبعاد له الأولوية.

الوسائط

راجع تعليمات PowerShell المضمنة (man -full New-PSArmoury) لمزيد من التفاصيل.

-Path

المسار إلى ملف armoury الجديد الخاص بك. الافتراضي هو ".\MyArmoury.ps1"

-FromFile

قم بتحميل نصوص PowerShell الخاصة بك مباشرة من مجلد أو ملف محلي ولا تحتاج إلى توفير ملف تكوين.

-Config

المسار إلى ملف تكوين JSON الخاص بك. ألق نظرة على العينة المرفقة مع هذا السكريبت للحصول على أفكار.

-ModulesDirectory

المسار إلى مجلد modules. الافتراضي هو ".\modules". إذا تم استخدام ModulesDirectory، فلا يمكن استخدام معاملات EvasionPath و ObfuscationPath.

-EvasionPath

المسار إلى سكريبت التهرب. إذا تم استخدام EvasionPath و ObfuscationPath، فلا يمكن استخدام معامل ModulesDirectory.

-ObfuscationPath

المسار إلى سكريبت الإبهام. إذا تم استخدام EvasionPath و ObfuscationPath، فلا يمكن استخدام معامل ModulesDirectory.

-ValidateOnly

استخدم هذا مع "-Config" للسماح للسكريبت بالتحقق من الصيغة الأساسية لملف تكوين JSON الخاص بك دون تنفيذه.

-GithubCredentials

مرر اسم مستخدم GitHub ورمز الوصول ككائن بيانات اعتماد حتى لا يطلب السكريبت ذلك. مفيد إذا كنت تنشئ armoury بشكل متكرر للاختبار.

استخدم مثل هذا:

root@kitploit:~
$c = get-credential
New-PSArmoury -GithubCredentials $c

رمز الوصول لـ GitHub

يجب عليك تقديم اسم مستخدم GitHub صالح بالإضافة إلى رمز وصول شخصي، حتى يتمكن السكريبت من استخدام API الخاص بـ GitHub بشكل صحيح. لا تستخدم اسم المستخدم/كلمة المرور لأن هذا لن يعمل على أي حال إذا كان لديك MFA مفعل (ويجب عليك تفعيل MFA). أيضًا، الوصول إلى API باستخدام اسم المستخدم/كلمة المرور الأساسي مهمل.

اتبع هذا الدليل لإنشاء رمز وصول شخصي.

يرجى ملاحظة: الإذن الوحيد الذي نحتاجه على رمز الوصول هو public_repo في قسم repo.

هذا لأنك تحتاج فقط إلى الرمز حتى لا يقوم GitHub بحظرنا إذا قمت بتحليل مستودعات أكبر (مثل PowerSploit) لملفات .ps1 لتضمينها.

مثال على الاستخدام

مثال 1 - كل شيء افتراضي

إذا كنت ترغب في إنشاء armoury بالإعدادات الافتراضية (ملاحظة: هذا لن يقوم بإبهام أي شيء إلى جانب ترميز base64)، فقط قم بتشغيل ما يلي.

root@kitploit:~
. .\New-PSArmoury.ps1
New-PSArmoury

سينشئ هذا ملف .ps1 يسمى "MyArmoury.ps1" في مجلد العمل الحالي باستخدام

  • التكوين الافتراضي ".\PSArmoury.json"
  • تجاوز AMSI الافتراضي الموجود في ".\modules\evasion.ps1"
  • الإبهام/فك الإبهام الافتراضي (base64) الموجود في ".\modules\obfuscation.ps1" و ".\modules\deobfuscation.ps1" على التوالي.

يمكنك تحميل armoury في جلستك الحالية باستخدام

root@kitploit:~
cat -raw .\MyArmoury.ps1 | iex

تحميل armoury الخاص بك يستدعي الخطوات التالية:

  • استدعاء كود التهرب
  • تسليم التحكم إلى وظيفة فك الإبهام التي بدورها يجب أن
  • تمر على كل عنصر مبهم و
    • فك الإبهام
    • تمريره إلى IEX

بعد ذلك، ستكون جميع أكواد PowerShell التي وضعتها في armoury متاحة. فقط قم باستدعاء cmdlets كالمعتاد مثل هذا

root@kitploit:~
Invoke-Rubeus -Command "kerberoast /stats"
Get-DomainGroupMember -Identity "Domain Admins" -Recurse

إذا حدث أنك لا تتذكر ما وضعته داخل armoury، فقط قم بتحميله واستدعاء المخزون :-)

root@kitploit:~
Get-PSArmoury

مثال 2 - استخدام تقنية إبهام byte-convert/json-format المرفقة مع PSArmoury وملف تكوين مختلف

ابدأ New-PSArmoury مع معاملات -EvasionPath و -ObfuscationPath مثل هذا:

root@kitploit:~
New-PSArmoury -Config C:\myarmouryconfig.json -ObfuscationPath .\modules\TEMPLATE_obfuscation_byte_convert.ps1 -EvasionPath .\modules\evasion.ps1

مثال 3 - إنشاء armoury من مجلد محلي يحتوي على نصوص PowerShell

ملاحظة: في هذه الحالة، سيتم إضافة جميع ملفات .ps1 في المجلد لأننا نرسل مسار مجلد. إذا أرسلنا المسار إلى ملف واحد، فسيتم معالجة هذا الملف فقط.

root@kitploit:~
New-PSArmoury -FromFile C:\myscriptfolder
تنزيل الأداة