امیرحسین تنگسیری نژاد
مهندس و مدرس شبکه و امنیت سایبری و مدیر کل جزیره هک و امنیت اطلاعات توسینسو

معرفی Parent-Child Process در تجهیزات امنیتی و نحوه دور زدن آن

یکی از تکنیک‌های پر استفاده ای که تجهیزات امنیتی جهت شناسایی فرآيند های مخرب مورد استفاده قرار میدهد تکنیک‌ Parent-Child Process میباشد. در این مقاله قصد داریم این تکنیک را بررسی کنیم و نحوه دور زدن آن را در Windows Defender توضیح دهیم.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

تکنیک Parent-Child Process چیست؟

دراصل زمانی که یک فرآیند یا به اصطلاح 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 صحبت کردیم و مفهوم آن را متوجه شدیم و کاربرد آن راهم تاحدودی برای افراد مهاجم توضیح دادیم اما تجهیزات امنیتی نظارت خودشان را بر روی 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 یک فرآیند عادی میباشد.

بررسی عملی تکنیک Parent-Child 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 استفاده شده است )

معرفی Parent-Child Process در تجهیزات امنیتی و نحوه دور زدن آن

حالا اگر Protection History را در Defender چک کنیم با همچین هشداری مواجه میشویم:

معرفی Parent-Child Process در تجهیزات امنیتی و نحوه دور زدن آن

[روش اول]چگونه تکنیک Parent-Child Process را دور بزنیم؟

در بالا دیدیم که فرآیند PowerShell عادی ما به راحتی شناسایی شد. حالا بیاید با کمی تغییر در VBA Script خودمان این موضوع را به گونه ای کنیم که Defender آن را شناسایی نکند و به اصطلاح Bypass شود.

  • قبل از تغییر:
Shell "powershell.exe -c ping google.com", vbNormalFocus
  • بعد از تغییر:
Shell "cmd.exe /c powershell.exe -c ping google.com", vbNormalFocus

معرفی Parent-Child Process در تجهیزات امنیتی و نحوه دور زدن آن

حالا میبینیم که به راحتی فایل VBA ما اجرا شد و Google.com را Ping کرد ! حدس بزنید دلیل این اتفاق چیست؟ درسته چون که به جای اینکه مستقیما PowerShell به عنوان یک Child Process برای MS Word قرار بگیرد یک Cmd.exe ایجاد کردیم و از طریق آن یک PowerShell را بازکردیم و دستور Ping را اجرا کردیم. قبل و بعد این اتفاق را میتوانیم اینجا ببینیم:

  • قبل

معرفی Parent-Child Process در تجهیزات امنیتی و نحوه دور زدن آن

  • بعد

معرفی Parent-Child Process در تجهیزات امنیتی و نحوه دور زدن آن


[روش دوم] چگونه تکنیک Parent-Child Process را دور بزنیم؟

در 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

معرفی Parent-Child Process در تجهیزات امنیتی و نحوه دور زدن آن


امیرحسین تنگسیری نژاد
امیرحسین تنگسیری نژاد

مهندس و مدرس شبکه و امنیت سایبری و مدیر کل جزیره هک و امنیت اطلاعات توسینسو

متخصص امنیت اطلاعات و کارشناس شکار تهدیدات بانک ملی ایران ، دارای مدارک مختلف از Splunk و AWS و Fortinet و Huawei حوزه اصلی فعالیت بنده در زمینه شبکه مباحث R&S و Service Provider می‌باشد و در زمینه امنیت نیز در موقعیت های مختلفی مانند PenTest و SoC فعالیت داشته و دارم. سابقه همکاری با بعضی سازمان های در قالب پروژه و... را داشته ام الان به عنوان تحلیلگر امنیت سایبری در زیرساخت بانک ملی مشغول به کار هستم. لینکداین: https://www.linkedin.com/in/amirhoseintangsirinezhad/

نظرات