یکی از تکنیکهای پر استفاده ای که تجهیزات امنیتی جهت شناسایی فرآيند های مخرب مورد استفاده قرار میدهد تکنیک Parent-Child Process میباشد. در این مقاله قصد داریم این تکنیک را بررسی کنیم و نحوه دور زدن آن را در Windows Defender توضیح دهیم.
دراصل زمانی که یک فرآیند یا به اصطلاح Process در سیستم ایجاد میشود میتواند یا یک Child Process باشد یا یک Parent Process باشد. زمانی که به واسطه یک Process یک یا چند Process دیگر ایجاد میشود Process های که به واسطه Process قبلی ایجاد شده اند به عنوان Child Process یا فرآیند فرزند شناخته میشوند و Process که Child Process را ایجاد کرده است به عنوان Parent Process شناخته میشود.
Parent-Child Process ها از دیدگاه تجهیزات امنیتی بسیار مهم هستند زیرا خیلی از تکنیک مخربی که هکرها استفاده میکنند برای اجرا سازی دستورات مورد نظر خودشان یا پیاده سازی حملات خودشان این تکنیک میباشد و سعی بر این دارند که Process بدافزار و یا مخرب خودشان را از طریق یک Parent Process ایجاد میکنند. پس در نتیجه این موضوع برای تجهیزات امنیتی از جمله EDR ها و AV ها مهم میباشد و رصد و نظارت خودشان را بر روی این موضوع قرار میدهند.
در بالا در رابطه با Parent-Child Process صحبت کردیم و مفهوم آن را متوجه شدیم و کاربرد آن راهم تاحدودی برای افراد مهاجم توضیح دادیم اما تجهیزات امنیتی نظارت خودشان را بر روی Parent-Child Process ها قرار میدهند و زمانی که یک Child Process بر روی یک Parent Process ایجاد میشود را بررسی میکنند. برای مثال زمانی که یک Child Process بر روی MS Word ایجاد میشود و آن Child Process یک Process مربوط به Powershell میباشد آنتی ویروس و یا تجهیزات امنیتی دیگر آن را بلاک میکنند و هشدارهای را در سیستم صادر میکنند. سوال اینجاست که چرا PowerShell ؟
Powershell یکی از ابزارهای کاربردی برای مدیریت سیستم میباشد اما این ابزار کاربردی درکنار خوبی ها میتواند ابزار بسیار مناسبی برای پیاده سازی حملات مختلف در سیستم باشد و به اصطلاح به عنوان یک Fileless Malware عمل کند ! پس طبیعی است که زمانی که یک PowerShell Process به عنوان Child Process نرم افزاری مثله MS Word ایجاد میشود به عنوان یک رفتار مخرب شناسایی شود فارغ از اینکه آن PowerShell Process یک فرآیند عادی میباشد.
برای اینکه این موضوع را بررسی کنیم و به صورت عملی متوجه شیم یک فایل VBA Script ایجاد میکنیم و محتويات زیر را درونش قرار میدهیم که قرار است به واسطه تابع Shell یک PowerShell را بازکند و Google.com را Ping کند. به صورت کلی این VBA Script هیچ مشکلی ندارد و کار مخربی را انجام نمیدهد.
Sub AutoOpen()
Test
End Sub
Sub Document_Open()
Test
End Sub
Sub Test()
Shell "powershell.exe -c ping google.com", vbNormalFocus
End Sub
به صورت کلی تجهیزات امنیتی توانایی تشخیص اینکه این اتفاق یک اتفاق مخرب نیست را ندارد و زمانی که میبیند یک PowerShell به عنوان Child Process یک MS Word قرار گرفته است آن را به عنوان یک Process مخرب شناسایی میکند و آن را بلاک میکند و هشدارهای برای آن صادر میکند ! ( در این سناریو از Microsoft Defender استفاده شده است )
حالا اگر Protection History را در Defender چک کنیم با همچین هشداری مواجه میشویم:
در بالا دیدیم که فرآیند PowerShell عادی ما به راحتی شناسایی شد. حالا بیاید با کمی تغییر در VBA Script خودمان این موضوع را به گونه ای کنیم که Defender آن را شناسایی نکند و به اصطلاح Bypass شود.
Shell "powershell.exe -c ping google.com", vbNormalFocus
Shell "cmd.exe /c powershell.exe -c ping google.com", vbNormalFocus
حالا میبینیم که به راحتی فایل VBA ما اجرا شد و Google.com را Ping کرد ! حدس بزنید دلیل این اتفاق چیست؟ درسته چون که به جای اینکه مستقیما PowerShell به عنوان یک Child Process برای MS Word قرار بگیرد یک Cmd.exe ایجاد کردیم و از طریق آن یک PowerShell را بازکردیم و دستور Ping را اجرا کردیم. قبل و بعد این اتفاق را میتوانیم اینجا ببینیم:
در Process Monitoring بالا دیدیم که CMD.EXE بعد از MS Word اجرا شده بود و پس از CMD.EXE یک conhost.exe اجرا شده است تاحدودی میشه گفت اجرا شدن CMD.exe به عنوان یک Child Process برای MS Word نیز یک رفتار مخرب میباشد از همین بابت میتوانیم از روش زیر هم در VBA Script خود استفاده کنیم و مستقیما با conhost.exe فرآیند مربوط به Powershell را اجرا و دستور مورد نظرمان را بزنیم.
Shell "conhost.exe --headless powershell.exe -c ping google.com", vbNormalFocus
مهندس و مدرس شبکه و امنیت سایبری و مدیر کل جزیره هک و امنیت اطلاعات توسینسو
متخصص امنیت اطلاعات و کارشناس شکار تهدیدات بانک ملی ایران ، دارای مدارک مختلف از Splunk و AWS و Fortinet و Huawei حوزه اصلی فعالیت بنده در زمینه شبکه مباحث R&S و Service Provider میباشد و در زمینه امنیت نیز در موقعیت های مختلفی مانند PenTest و SoC فعالیت داشته و دارم. سابقه همکاری با بعضی سازمان های در قالب پروژه و... را داشته ام الان به عنوان تحلیلگر امنیت سایبری در زیرساخت بانک ملی مشغول به کار هستم. لینکداین: https://www.linkedin.com/in/amirhoseintangsirinezhad/
زمان پاسخ گویی روز های شنبه الی چهارشنبه ساعت 9 الی 18
فقط به موضوعات مربوط به محصولات آموزشی و فروش پاسخ داده می شود