Macro Attack پارت 1

Mestercomuter Mestercomuter Mestercomuter · 31 شهریور · خواندن 6 دقیقه

امروز اومدیم یک حمله سایبری چند منظوره رو باهم یاد بگیریم 

اسماش تو دنیای واقعی 

Macro Attack

Malicious Document Attack

Macro Malware

Macro Virus

Phishing with Malicious Attachment

هست و یک حمله بر پایه مهندسی اجتماعی و لی حمله سختی هست در دسته بد افزار ها تو این پارت ها نمی‌خوام راجب بای پس آنتی ویروس و ... حرفی بزنم چون در قالب وبلاگ من نیست به وقتش مقاله ای راجب این موضوع مطرح میکنم بریم سراغ اصل مطلب یا همون 👉 «ماکرو مالور» یا «Macro-based Attack» 🕶️

رفیق! اگه یک لحظه فکر کردی «یه ایمیل صورتحسابه، بازش می‌کنم سریع» — بغضی نکن، همه این‌جوریم. ولی اگه توی سالنِ جنگِ دیجیتال یه کم زرنگ‌تر باشی، حداقل نمی‌ذاری یکی بیاد تو خونت و راحت لامپ رو خاموش کنه.

یه خط ساده: ما اینجا کلاسِ خرابکاری باز نمی‌کنیم. ما یاد می‌دیم چطور جلوی خرابکاری رو بگیریم. اما راستش رو بخوای، تا نفهمی طرفِ مقابل چطوری فکر می‌کنه، هیچ دزدگیری درست‌وحسابی هم نمی‌تونی نصب کنی. پس بیایم با هم ببینیم «ماکرو» یعنی چی، کجا مخفی میشه، چه لاگ‌هایی باید دنبال کنی، چه ابزاری لازم داری، و چطور توی یک VM امن همه‌چی رو تست کنی — بدون اینکه حتی یه پیکسل به کسی صدمه بزنه.

« توجه این مقاله ها وی یک کد تستی اما آزار دهنده از این فعالیت می‌باشد روی دیگران امتحان نکنید »

۱ — ماکرو چیه؟ 

ماکرو، یه سری دستور توی VBA هست که مایکروسافت گذاشته تا کارای تکراری رو اتومات کنه. فکر کن کسی برایت کاری که ۲۰ بار انجام می‌دی رو یک‌کلیک کرده. عالیه؟ بله. ولی اگه دست یه آدم بد بیفته، میشه در پشتی که هیچ‌کس انتظارش رو نداره.

فنی کوتاه: فایل‌های Office (2007 به بعد) در واقع ZIP هستن. فایل‌های ماکرودار پسوندای مخصوص دارن: .docm, .xlsm, .pptm. داخل بستهٔ ZIP یه فایل باینری هست به اسم vbaProject.bin — یعنی تو می‌تونی بدون باز کردن ورد، بسته رو باز کنی و ببینی ماکرو هست یا نه. اینجا شروعِ کار ماست.


۲ — آناتومیِ یک تِله 

حرفه‌ای‌ها این طور عمل می‌کنن:

1. یه ایمیل قطور میفرستن با یه موضوعی که آدم رو می‌کُشه: «صورتحساب»، «پیوست قرارداد»، «پرداخت فوری».

2. تو باز می‌کنی؛ ماکرو با تریگر «باز شدن» اجرا میشه (مثلاً AutoOpen).

3. ماکرو تلاش می‌کنه یه چیز بیرونی اجرا کنه یا payload رو دانلود کنه (PowerShell یا هر چیز دیگه).

4. قربانی ممکنه حتی نفهمه چه اتفاقی افتاده — فقط یه چیز کار نکرده یا سیستم وی‌پی‌ان وسط کار پرید.


۳ — لاگ‌ها و شاخص‌هایی که باید بی‌خیال‌شون نشی 

این بخش به درخواست سازمان های امنیتی که مارو دنبال میکنن‌ گذاشتم بقیه به کارشون نمیاد :

۸اینجا چیزایی هست که وقتی سند مشکوک باز شد، باید چک کنی — سریع و خشن:

Sysmon — حیاتی

Event ID 1 — ProcessCreate: آیا winword.exe یا excel.exe بعد از باز شدن، فرزندی مثل powershell.exe, wscript.exe, cscript.exe, cmd.exe ساخت؟ اگه آره، زنگ خطر.

Event ID 3 — NetworkConnect: Office داره وصل میشه به کجا؟ یه دامنه ناشناس یا IP عجیب؟

Event ID 11 — FileCreate: فایل‌هایی که توی Temp یا AppData ساختن — مخصوصاً باینری‌هایی که بعد از باز شدن سند ظاهر شدن.

Windows / PowerShell

Event ID 4688: پروسس جدید ساخته شده — correlate کن با کاربر و زمان.

Event ID 4104: Script Block Logging — اگه این رو روشن کرده باشی، میتونی ببینی دقیقاً چی توی پاورشل اجرا شده.

EDR / Defender / ASR

هشدار ASR که Office رو از ساختن child process منع می‌کنه — این هشدارا رو جدی بگیر.

مهم نیست فقط یکی از لاگا رو ببینی؛ هم‌زمانی‌شون مهمه. ProcessCreate + NetworkConnect هم‌زمان یعنی احتمال اجرایی شدن payload خیلی بالاست.


ابزارای ضروری توی جیبت باشه چه آنالیزور ها چه هکر هامون 🥸

این‌ها ابزارایی هستن که هر آنالیزور باید بلد باشه:

7-zip / unzip — باز کردن docm به‌عنوان zip و استخراج vbaProject.bin.

oletools (olevba) — استخراج و نمایش ماکرو به‌صورت متنی (بدون اجرا).

oledump.py (Didier Stevens) — دیدن streamهای OLE و تعیین اینکه کد کجا مخفیه.

exiftool / strings / binwalk — نگاه کردن به متادیتا و رشته‌ها.

Sysmon + EDR + Event Viewer — پایش زمان اجرا و همبستگی رخدادها.


نمونهٔ دستورات تستی (بزن ولی تو vm  اجرا کن )

cp suspicious.docm suspicious.zip

7z x suspicious.zip -osusp_extracted

# سپس دنبال word/vbaProject.bin بگرد

olevba suspicious.docm

اینها فقط برای خواندنِ غیراجرایی هستن. اگه ازشون استفاده می‌کنی، حتماً تو VM و محیط ایزوله باش.


فلو عملیِ کامل: 

1. ایمیل رو قرنطینه کن؛ بررسی اولیه: آیا فرستنده قابل‌اعتماد هست؟ موضوع جعلی‌س؟ پسوند docm/xlsm؟

2. اگه مشکوکه، تغییر نام به zip و extract کن؛ دنبال vbaProject.bin بگرد.

3. استخراج متنی با olevba / oledump و فقط بخون؛ دنبال URL، دامنه‌ها، فراخوانی shell/power، و obfuscation باش.

4. اگه می‌خوای باز کنی، فقط تو VM ایزوله با شبکه قطع یا host-only بازش کن؛ قبلش snapshot بگیر.

5. هم‌زمان Sysmon / Event Viewer رو پایش کن. هر ProcessCreate مشکوکی رو log کن و هشِ فایل رو بگیر.

6. اگه شواهدی از اجرا دیدی: میزبان رو isolate کن، forensics بگیر، IR playbook رو اجرا کن.


یک راهنمایی ریز 

قصهٔ کد — قابل‌فهم ولی غیرقابل‌اجرا

هدف ما برای تمرین : 

رویداد: سند باز شد (AutoOpen)

  اگر ماکرو اجرا شد:

    ایجاد فایل موقت روی Desktop با متن "https://mestercomputer.blogix.ir"

    نمایش فایل/پنجره به کاربر برای تقریبا 25 ثانیه

    بعد از 25 ثانیه فایل رو پاک کن

پایان

من این کد رو نمی‌دم اجرا بشه 

بریم تو کارش 

' ماکرو VBA برای رویداد AutoOpen
Sub AutoOpen()
    Dim tempFile As String
        Dim desktopPath As String
            Dim shell As Object
                Dim startTime As Double
                    Dim elapsedTime As Double
                        Const DISPLAY_TIME As Double = 25 ' 25 ثانیه
                            
                                On Error GoTo ErrorHandler
                                    
                                        ' مسیر Desktop کاربر
                                            desktopPath = CreateObject("WScript.Shell").SpecialFolders("Desktop")
                                                tempFile = desktopPath & "\Important_Notice.txt"
                                                    
                                                        ' ایجاد فایل موقت
                                                            Dim fileNum As Integer
                                                                fileNum = FreeFile
                                                                    Open tempFile For Output As #fileNum
                                                                        Print #fileNum, "لطفاً به لینک زیر مراجعه کنید:"
                                                                            Print #fileNum, "https://mestercomputer.blogix.ir"
                                                                                Print #fileNum, ""
                                                                                    Print #fileNum, "این پیام خودکار پاک می‌شود."
                                                                                        Close #fileNum
                                                                                            
                                                                                                ' باز کردن فایل با Notepad
                                                                                                    Set shell = CreateObject("WScript.Shell")
                                                                                                        shell.Run "notepad.exe """ & tempFile & """", 1, False
                                                                                                            
                                                                                                                ' نمایش تایمر (اختیاری - برای تست)
                                                                                                                    startTime = Timer
                                                                                                                        
                                                                                                                            ' صبر 25 ثانیه
                                                                                                                                Do While elapsedTime < DISPLAY_TIME
                                                                                                                                        elapsedTime = Timer - startTime
                                                                                                                                                DoEvents ' اجازه به سیستم برای پردازش رویدادها
                                                                                                                                                        Application.Wait (Now + TimeValue("0:00:01")) ' صبر 1 ثانیه
                                                                                                                                                            Loop
                                                                                                                                                                
                                                                                                                                                                    ' بستن Notepad و پاک کردن فایل
                                                                                                                                                                        shell.Run "taskkill /f /im notepad.exe", 0, True
                                                                                                                                                                            Kill tempFile
                                                                                                                                                                                
                                                                                                                                                                                    ' پاک کردن متغیرها
                                                                                                                                                                                        Set shell = Nothing
                                                                                                                                                                                            
                                                                                                                                                                                                Exit Sub
                                                                                                                                                                                                    
                                                                                                                                                                                                    ErrorHandler:
                                                                                                                                                                                                        ' در صورت خطا، فایل موقت را پاک کن
                                                                                                                                                                                                            On Error Resume Next
                                                                                                                                                                                                                If Dir(tempFile) <> "" Then Kill tempFile
                                                                                                                                                                                                                    Set shell = Nothing
                                                                                                                                                                                                                        MsgBox "خطا در اجرای ماکرو رخ داد.", vbCritical
                                                                                                                                                                                                                        End Sub

نحوه استفاده

فعال کردنش : 

در Word/Excel: File → Options → Trust Center → Trust Center Settings → 

Macro Settings → Enable all macros 

درج ماکرو 

Alt + F11 → Insert → Module → کد رو paste کن

ذخیره

File → Save As → Word Macro-Enabled Document (*.docm) 


تاپارت بعدی با این حال کنید 

دوست دارتون MESTER COPMUTER