Command and Scripting Interpreter: PowerShell – (T1059.001)

التكنيك الأكثر شيوعًا في العالم و للعام الثاني على التوالي حسب تقرير “RedCanary” السنوي 2022وذلك لسهولته في تخطي الحمايات بسبب اندماجه مع نشاط النظام الطبيعي وكذلك تعدد استخداماته

تحليل لتكنيك ” Command and Scripting Interpreter: PowerShell – T1059.001″


ماهو T1059.001 ؟

في البداية الـ “PowerShell” هو واجهة سطر أوامر وبيئة برمجة مضمنة في نظام التشغيل “Windows” وتوجد مع النظام بشكل افتراضي مما يضمن للمهاجمين وجودها في الأنظمة بشكل دائم, لكل تكنيك رمز خاص فيه حسب تصنيف الـ”Mittre Att&ck” فنرى انه يشير الرمز “T1059” الى التكنيك “” Command and Scripting Interpreter ” فيما يشير الرقم “001” الى التفريع الخاص بـ”PowerShell” وفي العادة يوجد عدة تفريعات لكل تكنيك (لمزيد من المعلومات حول الـMittre Att&ck المصادر 1)


سبب شيوعها بين المهاجمين؟

تكمن الصعوبة في اصطياد مثل هذه التكنيكات في مدى مرونتها حيث يمكن التلاعب بها بطرق عدة وذلك لتجنب اكتشافها من قِبَل أنظمة الحماية “Security Controls”  من خلال تغيير ماهيتها باستخدم عدة سُبل بشكل منفصل او أستخدام كاثر من طريقة معًا ومن أمثلتها الـ “Obfuscation” و “Encoded” أي بمعنى  ترميز النص من ثم إعادته إلى صيغته الاصلية بدون الحاجة لمفتاح تشفير او شيء من هذا القبيل كما سنرى بعد قليل.


أشهر طرق الاستخدام

  1. التسلسل “Concatenation”
  2. إعادة الترتيب “Reordering”
  3. الترميز باستخدام”Base64
1. التسلسل “Concatenation”

في الأسلوب يقوم المهاجم بفصل النص “سواء كان رابط او مسار لملف” وإعادة جمعه عن طريقة أستخدام علامة الجمع الرياضية “+”:

التسلسل – “Concatenation”

“ملاحظة: علامة $ في البورشيل تعني متغير”

شرح بسيط للاوامر الشيء الي سويته انه بداية استخدمت“$a” كمتغير وخزنت فيه “https://modware.blue” ثم طبعته ونقدر نشوف انه طبع المتغير زي ماهو طبيعي

وفي الحالة الثانية خزنت في المتغير “$b” نص ولكن مفصول وجمعته بعلامة الجمع وبعدها طبعته وبنلاحظ انه أعاد جمع النص وطبعه بشكل متسلسل.


2. إعادة الترتيب “Reordering”

في هذا الأسلوب يقوم المهاجم بإعادة ترتيب صياغة النص باستخدام الخيار “-f” في البورشيل

إعادة الترتيب – Reordering

ترمز الأرقام في البداية على مكان وجود الحرف فمثلا رقم 5 يعني انه سوف يبدأ في العد البداية حتى الحرف الخامس بالضبط كانها مصفوفة في C++
“ملاحظة يبدأ العد من الصفر أي ان الحرف D يعني صفر”

صورة توضيحية:

توضيح لأسلوب إعادة الترتيب


3. “Base64” الترميز باستخدام

بداية نشفر النص المراد استخدامه في أي موقع Base64 encoding من ثم نعيده الى صيغته الاصلي

الترميز باستخدام Base64

توضيح للمتغيرات

هذي احد الأمثلة على استخدام الـPowerShell  والي تمكن المهاجم من تحميل Malware على جهاز الضحية على سبيل المثال وطبعا لو شفنا المحتوى الخاص بالمتغير “$Encoded”  راح نلاحظ انه الامر مشفر

محتوى المتغير $Encoded

هذه بعض الأمثلة الي تعطينا نظرة سريعة لطرق استخدام المهاجمين للـPowerShell وفي حال أراد أحد التعمق راح اترك رابط دورة في المصادر بعنوان “PowerShell For Hackers”


مرحلة الاكتشاف

استعملتAtomic RedCanary Framework لأجل أن احاكي هجمة حقيقية واستخدمة فيها التكنيك رقمT1059.001 الخاص بالـCommand and Scripting Interpreter: PowerShell  ما راح اتعمق في الكلام في الـ Atomic RedCanary Framework بس ممكن اكتب عنه مقالة في المستقبل ان شاء الله.

* المصدر 3: مجموعة من Sigma Rules خاصة بالتكنيك T1059.001

الان راح ننتقل الى الـ Splunk SIEM Solution وراح نكتشف الهجوم من خلاله ونشوف اهم العوامل الي تساعدنا في أكتشاف هذا النوع من التكنيكات

مافي قاعدة ثابته للبحث ولكن فيه بعض الـ “Indicator”  او المؤشرات الي تساعدنا في اكتشافه, هذه الـ”Query” الرئيسية الي راح استخدمها في البحث مع التعديل عليها بالاضافات في كل طريقة:

index=* Image="C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe"| table _time EventCode CommandLine
1. -encoded او أي جزء منها مثلا -e او -en الخ…,

من الممكن يكون استخدم أي أمر منهم لانهم كلهم نفس الامر عشان نختصر الموضوع من خلال البحث نبحث عن “-e*” عشان يظهرلنا سواء كان كاتب حرف او الامر كامل

powershell.exe -NoProfile -E VwByAGkAdABlAC0ASABvAHMAdAAgAGYAYQAwADcANwBiADkAOAAtADAAZgAyADMALQA0AGUAMgA5AC0AOAA3ADYAOAAtAGYAZgA5AGIANwBmADMAMABiADcANQA3AA==

بعد فك الترميز الخاص بالـBase64 راح يظهرلنا التالي:

Write-Host fa077b98-0f23-4e29-8768-ff9b7f30b757

ملاحظة: هذه الطريقة تشمل اكثر من امر “باختصار أي امر يبدأ بـe” مثلا “-EncodedArguments

powershell.exe -NoProfile -EncodedArguments PABPAGIAagBzACAAVgBlAHIAcwBpAG8AbgA9ACIAMQAuADEALgAwAC4AMQAiACAAeABtAGwAbgBzAD0AIgBoAHQAdABwADoALwAvAHMAYwBoAGUAbQBhAHMALgBtAGkAYwByAG8AcwBvAGYAdAAuAGMAbwBtAC8AcABvAHcAZQByAHMAaABlAGwAbAAvADIAMAAwADQALwAwADQAIgA+AA0ACgAgACAAPABPAGIAagAgAFIAZQBmAEkAZAA9ACIAMAAiAD4ADQAKACAAIAAgACAAPABUAE4AIABSAGUAZgBJAGQAPQAiADAAIgA+AA0ACgAgACAAIAAgACAAIAA8AFQAPgBTAHkAcwB0AGUAbQAuAEMAbwBsAGwAZQBjAHQAaQBvAG4AcwAuAEEAcgByAGEAeQBMAGkAcwB0ADwALwBUAD4ADQAKACAAIAAgACAAIAAgADwAVAA+AFMAeQBzAHQAZQBtAC4ATwBiAGoAZQBjAHQAPAAvAFQAPgANAAoAIAAgACAAIAA8AC8AVABOAD4ADQAKACAAIAAgACAAPABMAFMAVAA+AA0ACgAgACAAIAAgACAAIAA8AFMAPgAzADYANgAxADUAZQBhAGEALQBlAGEAYgBkAC0ANAA4AGEAZgAtADkAMQA1ADcALQBhADMANAA0AGEAOQAwADEAYQA0ADEAMgA8AC8AUwA+AA0ACgAgACAAIAAgADwALwBMAFMAVAA+AA0ACgAgACAAPAAvAE8AYgBqAD4ADQAKADwALwBPAGIAagBzAD4A -E VwByAGkAdABlAC0ASABvAHMAdAAgACQAYQByAGcAcwBbADAAXQA=

الامر قبل فك الترميز

<Objs Version="1.1.0.1" xmlns="http://schemas.microsoft.com/powershell/2004/04">
  <Obj RefId="0">
    <TN RefId="0">
      <T>System.Collections.ArrayList</T>
      <T>System.Object</T>
    </TN>
    <LST>
      <S>36615eaa-eabd-48af-9157-a344a901a412</S>
    </LST>
  </Obj>
</Objs>

الامر بعد فك الترميز


2.   “-f*”

راح يظهر لنا الـ “f-” في حال كان مستخدم إعادة ترتيب “Reordering” زي ما ذكرنا قبل

powershell.exe -e JgAgACgAZwBjAG0AIAAoACcAaQBlAHsAMAB9ACcAIAAtAGYAIAAnAHgAJwApACkAIAAoACIAVwByACIAKwAiAGkAdAAiACsAIgBlAC0ASAAiACsAIgBvAHMAdAAgACcASAAiACsAIgBlAGwAIgArACIAbABvACwAIABmAHIAIgArACIAbwBtACAAUAAiACsAIgBvAHcAIgArACIAZQByAFMAIgArACIAaAAiACsAIgBlAGwAbAAhACcAIgApAA==

بعد فك الترميز الخاص بالـBase64 راح يظهرلنا التالي:

& (gcm ('ie{0}' -f 'x')) ("Wr"+"it"+"e-H"+"ost 'H"+"el"+"lo, fr"+"om P"+"ow"+"erS"+"h"+"ell!'")

نلاحظ هنا انه استخدم طريقتين مع بعض في البداية أسلوب إعادة الترتيب وبعدها

طرق أخرى إضافية: –


Event Code=4104

راح يساعدنا بانه يظهر الأوامر الي استخدم فيها هذا النص والي هو جزء من امر أطول لترميز الأوامر فنقدر نقول انه هذا من الأوامر الشائعة في الترميز

(‘*-nop*’ OR ‘*-noni*’ OR ‘*invoke-expression*’ OR ‘*iex*’ OR ‘*.downloadstring*’ OR ‘*downloadfile*’)

هذه اغلب الأوامر المستخدمة عند التحميل بالإضافة الى بعض الأوامر الإضافية التي تساعد في إخفاء العملية مثل “noni” بمعنى “non-interactive session” أي بدون تفاعل

5. “*FromBase64String*”

راح يساعدنا بانه يظهر الأوامر الي استخدم فيها هذا النص والي هو جزء من امر أطول لترميز الأوامر فنقدر نقول انه هذا من الأوامر الشائعة في الترميز

6. “Invoke-*”

هذا من اكثر الاومر الي راح تواجهك بشكل عام في الـ powershell
ملاحظة: لو كنت تعمل Threat Hunting  في بيئة كبيرة تجنب البحث بهذا الامر   
  • الخاتمة

التكنيك T1059.001 من اكثر التكنيات شيوعًا ودائما ما يستخدم ضمن العديد الهجمات وعلى رأسها هجمات APT بشكل عام فتكنيك بهذه البساطة والمرونة قد يكون دليل مبدئي على هجوم أكبر وهو بداية جيدة لأي عملية Threat Hunting.