Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
Stracciatella — مُساحة تشغيل Powershell آمنة من منظور عمليات الأمن (OpSec) من داخل C# (المعروفة بـ SharpPick) مع تعطيل AMSI ووضع اللغة المقيد وتسجيل كتل البرامج النصية عند بدء التشغيل. | Kitploit
أدوات/GitHubGitHub/mgeeky/stracciatella
تصعيد الامتيازاتأطر الاستغلالالتهرب من IDS/IPSالحركة الجانبيةالبرمجة النصية والأتمتةما بعد الاستغلالاختبار الاختراقالقيادة والسيطرةالفريق الأحمرتطوير الحمولات
GitHub
5436291منذ 4 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

Stracciatella

مُساحة تشغيل Powershell آمنة من منظور عمليات الأمن (OpSec) من داخل C# (المعروفة بـ SharpPick) مع تعطيل AMSI ووضع اللغة المقيد وتسجيل كتل البرامج النصية عند بدء التشغيل.

عرض المستودع

Stracciatella v0.7

مساحة تشغيل PowerShell من داخل C# (تُعرف بتقنية SharpPick) مع تعطيل AMSI وETW وتسجيل كتل النصوص (Script Block Logging) لراحتك.

في الوقت الحالي، وبعد أن تم تجهيز PowerShell بشكل كبير باستخدام تقنيات مثل:

  • AMSI
  • ETW
  • تسجيل كتل النصوص (Script Block Logging)
  • ملف السجل (Transcript)
  • تسجيل الوحدات النمطية (Modules Logging)
  • وضع اللغة المقيدة (Constrained Language Mode)

يجب على المهاجمين المتقدمين إيجاد طرق لتجاوز هذه الجهود من أجل تقديم تمارين محاكاة خصومة متطورة. للمساعدة في هذه الجهود، تم إنشاء المشروع التالي.

هذا البرنامج مبني على تجاوزات لتقنيات محددة مضمنة في:

  • Disable-Amsi.ps1
  • KillETW.ps1 بواسطة tandasat
  • Disable-ScriptLogging.ps1

والتي بدورها كانت مبنية على الأبحاث التالية:

  • Matt Graeber: https://github.com/mattifestation/PSReflect
  • Matt Graeber: https://twitter.com/mattifestation/status/735261120487772160
  • Avi Gimpel: https://www.cyberark.com/threat-research-blog/amsi-bypass-redux/
  • Adam Chester: https://www.mdsec.co.uk/2018/06/exploring-powershell-amsi-and-logging-evasion/
  • Ryan Cobb: https://cobbr.io/ScriptBlock-Logging-Bypass.html
  • Ryan Cobb: https://cobbr.io/ScriptBlock-Warning-Event-Logging-Bypass.html

فكرة SharpPick، أي تشغيل سكربتات PowerShell من داخل تجميع C# باستخدام مساحات التشغيل (Runspaces) ليست جديدة أيضًا، وقد تم تنفيذها لأول مرة بواسطة Lee Christensen (@tifkin_) في:

  • UnmanagedPowerShell

أيضًا، الكود المصدري يستعير تنفيذ CustomPSHost من Lee.

هذا المشروع يرث من الأبحاث المذكورة أعلاه ومن مجتمع الأمن الرائع لتوفير بيئة PowerShell قريبة من الفعالية مع تعطيل الدفاعات عند بدء التشغيل.

الآن يُجمّع بسهولة مع .NET 4.0 بينما إذا تم تجميعه مع .NET Framework 4.7.1+ يتم تضمين وظيفة إضافية تسمح بتفريغ مكتبات DLL التي تشكل أدوات تجاوز CLM ومحاولة حذفها بعد ذلك (تعمل بصعوبة لنكون صادقين).

أفضل أداء تحصل عليه مع Stracciatella المُجمّع مع .NET 4.0.

OpSec

  • يوفر هذا البرنامج وظيفة لفك تشفير المعلمات المُمررة أثناء التنفيذ، باستخدام فك تشفير XOR أحادي البايت
  • قبل تشغيل أي أمر، يتأكد من تعطيل AMSI باستخدام طريقتين وETW
  • قبل تشغيل أي أمر، يتأكد من تعطيل تسجيل كتل النصوص (Script Block Logging) باستخدام طريقتين
  • هذا البرنامج لا يصحح أي مكتبة نظام، أو كود أصلي للنظام (مثل amsi.dll)
  • تم بذل جهود لعدم تخزين السكربت/الأوامر المفكوكة لفترة طويلة، لحماية نفسه من تقنيات تفريغ الذاكرة التي تُدار بواسطة EDRs وAVs

الاستخدام

هناك عدة خيارات متاحة:

PS D:\> Stracciatella -h

  :: Stracciatella - مساحة تشغيل PowerShell مع تعطيل AMSI وETW وتسجيل كتل النصوص.
  Mariusz Banach / mgeeky, '19-22 <[email protected]>
  v0.7

الاستخدام: stracciatella.exe [options] [command]
  -s <path>, --script <path> - مسار الملف الذي يحتوي على سكربت PowerShell للتنفيذ. إذا لم تُعطَ أي خيارات، سيدخل
                               في حلقة شبه-شيل. يمكن أن يكون هذا أيضًا رابط HTTP(S) لتحميل وتنفيذ سكربت PowerShell.
  -v, --verbose              - يطبع معلومات تفصيلية
  -n, --nocleanup            - لا تقم بإزالة بقايا تعطيل CLM (ملفات DLL في TEMP ومفاتيح التسجيل COM).
                               بشكل افتراضي ستتم إزالتها دائمًا.
  -C, --leaveclm             - لا تحاول تعطيل CLM. أكثر تمويهاً. سيتجنب ترك بقايا تعطيل CLM غير محذوفة.
  -f, --force                - استمر في التنفيذ حتى لو لم يتم تعطيل دفاعات PowerShell.
                               بشكل افتراضي نخرج عند الفشل.
  -c, --command              - ينفذ الأوامر المحددة. يمكنك إما استخدام -c أو إلحاق الأوامر بعد
                               معاملات stracciatella: cmd> straciatella ipconfig /all
                               إذا تم إعطاء معاملات الأمر والسكربت، ينفذ الأمر بعد تشغيل السكربت.
  -x <key>, --xor <key>      - اعتبار الإدخال مشفرًا بـ XOR، حيث <key> هو مفتاح بايت واحد بالعشري
                               (أسبق بـ 0x للسداسي عشر)
  -p <name>, --pipe <name>   - قراءة أوامر PowerShell من أنبوب مسمى محدد. يجب أن يسبق الأمر بـ 4 بايت من
                               طوله مشفرًا بـ little-endian (ترميز الطول-القيمة).
  -t <millisecs>, --timeout <millisecs>
                             - يحدد مهلة لعملية قراءة الأنبوب (بالمللي ثانية). الافتراضي: 60 ثانية. 0 - غير محدود.
  -e, --cmdalsoencoded       - اعتبار أمر الإدخال (المحدد في '--command') مشفرًا أيضًا.
                               يفك تشفير أمر الإدخال بعد فك تشفير وتشغيل ملف السكربت الإدخالي.
                               بشكل افتراضي، نفك تشفير ملف الإدخال فقط ونعتبر الأمر معطى بنص عادي

البرنامج يقبل الأمر ومسار ملف السكربت كمدخل. كلاهما اختياري، إذا لم يُعطَ أي منهما - سيبدأ شبه-شيل. يمكن ترميز كل من الأمر والسكربت باستخدام XOR أحادي البايت (سينتج مخرجات مشفرة بـ Base64) لتجربة OpSec أفضل.

فيما يلي بعض الأمثلة التي توضح حالات الاستخدام:

  1. شبه-شيل - يتم بدؤه عندما لا يتم إعطاء أي من خيارات الأمر أو مسار السكربت:
PS D:\> Stracciatella.exe -v

  :: Stracciatella - مساحة تشغيل PowerShell مع تعطيل AMSI وETW وتسجيل كتل النصوص.
  Mariusz Banach / mgeeky, '19-22 <[email protected]>
  v0.7

[.] إصدار PowerShell: 5.1
[.] وضع اللغة: FullLanguage
[+] ليست هناك حاجة لتعطيل وضع اللغة المقيدة. بالفعل في FullLanguage.
[+] تم تعطيل تسجيل كتل النصوص.
[+] تم تعطيل AMSI.
[+] تم تعطيل ETW.

Stracciatella D:\> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      5.1.18362.1
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.18362.1
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
  1. أمر مشفر بـ XOR (المفتاح = 0x31) ومسار ملف سكربت

أولاً، لإعداد العبارات المشفرة يمكننا استخدام سكربت encoder.py المرفق، الذي يمكن استخدامه كالتالي:

PS D:\> python encoder.py -h
الاستخدام: encoder.py [options] <command|file>

positional arguments:
  command               يحدد إما أمرًا أو مسار ملف سكربت للترميز

optional arguments:
  -h, --help            يُظهر رسالة المساعدة هذه ويخرج
  -x KEY, --xor KEY     يحدد مفتاح ترميز XOR للأمر/الملف (بايت واحد)
  -o PATH, --output PATH
                        (اختياري) ملف الإخراج. إذا لم يُعطَ - سيطبع الإخراج إلى stdout

PS D:\> python encoder.py -x 0x31 "Write-Host \"It works like a charm!\" ; $ExecutionContext.SessionState.LanguageMode"
ZkNYRVQceV5CRRETeEURRl5DWkIRXVhaVBFQEVJZUENcEBMRChEVdElUUkRFWF5fcl5fRVRJRR9iVEJCWF5fYkVQRVQffVBfVkRQVlR8XlVU

ثم نُغذي مخرجات encoder.py كمدخل لأمر مشفر لـ Stracciatella:

PS D:\> Stracciatella.exe -v -x 0x31 -c "ZkNYRVQceV5CRRETeEURRl5DWkIRXVhaVBFQEVJZUENcEBMRChEVdElUUkRFWF5fcl5fRVRJRR9iVEJCWF5fYkVQRVQffVBfVkRQVlR8XlVU" .\Test2.ps1

  :: Stracciatella - مساحة تشغيل PowerShell مع تعطيل AMSI وETW وتسجيل كتل النصوص.
  Mariusz Banach / mgeeky, '19-22 <[email protected]>
  v0.7

[.] سيتم تحميل ملف السكربت: '.\Test2.ps1'
[+] تم تعطيل AMSI.
[+] تم تعطيل ETW.
[+] تم تعطيل تسجيل كتل النصوص.
[.] وضع اللغة: FullLanguage

PS> & '.\Test2.ps1'
PS> Write-Host "It works like a charm!" ; $ExecutionContext.SessionState.LanguageMode
[+] نعم، لقد عمل حقًا.
It works like a charm!
FullLanguage

بينما:

  • Command تم بناؤه من الأوامر التالية: Base64Encode(XorEncode("Write-Host \"It works like a charm!\" ; $ExecutionContext.SessionState.LanguageMode", 0x31))
  • Test2.ps1 - يحتوي على: "ZkNYRVQceV5CRRETahpsEWhUVFRIHRFYRRFDVFBdXUgRRl5DWlRVHxM=" (Base64(XorEncode("Write-Host \"[+] Yeeey, it really worked.\"", 0x31)))

دعم Cobalt Strike

تنزيل الأداة