
برای شروع تحقیق درباره نرمافزارهای آنتیویروس، ابتدا باید چند گام مقدماتی برداریم تا مطمئن شویم تحقیق ما در بالاترین سطح ممکن انجام شده و کمترین زمان را ببرد.
برخلاف تحقیقات «معمولی» که محققان امنیت و مهندسان معکوس روی فایلها انجام میدهند، تحقیق روی آنتیویروس در هدف نهایی خود متفاوت است. باید درک کنیم که نرمافزار آنتیویروس در واقع مجموعهای از فایلها و اجزای مختلف است که به هم پیوستهاند و بیشتر این فایلها و اجزا از طریق یک فرآیند مرکزی کنترل میشوند که معمولاً همان فرآیند مبتنی بر رابط کاربری گرافیکی (GUI) آنتیویروس است.
در این فصل، شما خواهید فهمید که آنتیویروس در محیط ویندوز چگونه کار میکند. همچنین، خواهید آموخت که چگونه با استفاده از ابزارهای پایهای تحلیل بدافزار پویا، سرنخهای تحقیق آنتیویروس را جمعآوری کنید.
در این فصل، موضوعات زیر را بررسی خواهیم کرد:
شروع تحقیق
محیط کاری و جمعآوری سرنخها
تعریف سرنخ
کار با Process Explorer
کار با Process Monitor
کار با Autoruns
کار با Regshot
پیشنیازهای فنی:
تجربه قبلی در استفاده از ابزارهای تحلیل بدافزار مورد نیاز است.
شروع تحقیق
تعداد فایلها و اجزایی که نرمافزار آنتیویروس را تشکیل میدهند میتواند به صدها مورد برسد؛ بهطوریکه هر فایل در یک مدل یا بخش متفاوت از آنتیویروس تخصص دارد. برای مثال، یک پردازه مشخص مسئول پایش فایلها در سیستمعامل است، پردازهای دیگر مسئول اسکن ایستای فایلهاست، پردازهای دیگر سرویس آنتیویروس را در سیستمعامل اجرا میکند و به همین ترتیب.
انتخاب فایلها و اجزای مناسب برای اهداف تحقیقاتی بسیار حیاتی است، زیرا هر تحقیقی زمانبر است. ما نمیخواهیم وقت خود را صرف بررسی فایلی یا مؤلفهای کنیم که در دور زدن (بایپس) آنتیویروس نقشی ندارد یا بیربط است.
به همین دلیل، پیش از انجام خودِ تحقیق، باید سرنخهای تحقیقاتی را جمعآوری کرده و برای هرکدام اولویت مشخصی تعیین کنیم؛ برای مثال، تصمیم بگیریم چه مقدار زمان و منابع را روی هر سرنخ سرمایهگذاری کنیم.
علاوه بر این، مهم است بدانیم که بیشتر نرمافزارهای آنتیویروس دارای مکانیزم «خودحفاظتی» هستند. هدف این مکانیزمها دشوار کردن خاموش کردن آنتیویروس یا ایجاد تغییرات در آن بدون مجوز کاربر نهایی است. با این حال، حتی اگر برخی آنتیویروسها از خودحفاظتی استفاده کنند، باز هم امکان دور زدن این تکنیکهای خودحفاظتی وجود دارد.
محیط کاری و جمعآوری سرنخها
پیش از آنکه شروع به انجام تحقیق روی آنتیویروس کنیم، ابتدا باید برخی از جنبههای بنیادیتر نحوه عملکرد سیستمعامل خود را درک کنیم.
در اینجا سه مفهوم اصلی وجود دارد که هنگام جمعآوری سرنخها برای ما اهمیت دارند.
پردازه (Process)
پردازه یک شیء (Object) از یک فایل است که هنگام اجرا شدن، از هارددیسک به حافظه سیستم بارگذاری میشود.
برای مثال، mspaint.exe نام پردازه مربوط به برنامه Paint در ویندوز است.

شکل ۲٫۱ پردازههای در حال اجرا در ویندوز ۱۰ را با استفاده از ابزار Process Explorer نشان میدهد.
رشته (Thread)
رشته یک واحد اجرایی است که توسط سیستمعامل اختصاص داده میشود تا پردازنده (CPU) بتواند کد (دستورالعملهای CPU) را در یک پردازه اجرا کند. در یک پردازه میتوان چندین نخ داشت، اما وجود حداقل یک نخ اصلی (Main Thread) الزامی است.

رجیستری (Registry)
رجیستری پایگاهدادهٔ سیستمعامل ویندوز است که اطلاعات لازم برای راهاندازی (Boot) و پیکربندی سیستم را در خود نگه میدارد. رجیستری همچنین شامل تنظیمات پایه مربوط به سایر برنامهها و اپلیکیشنهای ویندوز نیز میشود.

علاوه بر این، پیش از شروع، مفید است که مشخص کنیم «سرنخ» (Lead) چیست و چرا جمعآوری سرنخها ضروری است.
برای تحقیق روی نرمافزارهای آنتیویروس، ما از نرمافزار مجازیسازی VMware Fusion در محصولات مبتنی بر مک (macOS) استفاده کردیم. اگر از یک سیستم مبتنی بر ویندوز استفاده میکنید، میتوانید از VMware Workstation برای نصب یک سیستمعامل مجازی Windows 10 بهره ببرید. پس از نصب سیستمعامل، ابزار VMware Tools و نرمافزار آنتیویروس AVG را بهمنظور جمعآوری سرنخها نصب میکنیم.
در این مرحله، تهیه یک Snapshot بسیار مهم است تا بعدها بتوانیم هر بار از یک وضعیت تمیز و اولیه شروع کنیم، بدون اینکه نگران این باشیم که چیزی در روند جمعآوری سرنخها اختلال ایجاد کند.
تعریف سرنخ (Defining a Lead)
سرنخ تحقیق آنتیویروس، فایلی است که ما از نقش و هدف آن در عملکرد کلی نرمافزار آنتیویروس آگاه هستیم و تشخیص دادهایم که برای اضافه شدن به تحقیق ما مناسب است. فایلهای سرنخ، مرتبطترین فایلها در تحقیقات آنتیویروس به شمار میروند.
میتوان جمعآوری سرنخ را با مرحلهٔ اول یک تست نفوذ، که با نام Reconnaissance (شناسایی) شناخته میشود، مقایسه کرد. زمانی که در حال انجام شناسایی روی یک هدف هستیم، اطلاعات بهدستآمده نوعی سرنخ محسوب میشود و میتوان از آن برای نزدیک شدن به هدف نهایی استفاده کرد.
برای جمعآوری سرنخها، باید کشف کنیم که نرمافزار آنتیویروس چگونه روی سیستمعامل کار میکند و جریان عملکرد (Flow) آن به چه صورت است.
همانطور که پیشتر اشاره کردیم، محیط کاریای که برای اجرای این مثالهای جمعآوری سرنخ از آن استفاده کردیم، Windows 10 با نصب AVG 2020 بوده است. برای جمعآوری سرنخها، در این فصل از مجموعهای از ابزارهای تحلیل پویای بدافزار استفاده کردهایم؛ از جمله مجموعه ابزارهای Sysinternals و ابزار Regshot
کار با Process Explorer
پس از آنکه درک کردیم پردازهها (Processها) در سیستمعامل چه هستند، لازم است آنها را روی سیستم مقصد (Endpoint) مشاهده کنیم تا بتوانیم سرنخهای تحقیق آنتیویروس را جمعآوری کنیم.
برای مشاهده فهرست پردازههای در حال اجرا در سیستمعامل، از ابزار Process Explorer استفاده میکنیم. این ابزار اطلاعات بسیار مرتبط و مفیدی درباره پردازههایی که در سیستمعامل در حال اجرا هستند، در اختیار ما قرار میدهد.

در شکل ۲٫۴ میتوانید فهرستی از پردازههایی را که در حال حاضر در سیستمعامل ویندوز در حال اجرا هستند، بههمراه مقدار زیادی اطلاعات مرتبط دیگر مشاهده کنید.
برای انجام تحقیق بهصورت درست، مهم است که دادههای ارائهشده توسط Process Explorer را درک کنیم. از چپ به راست، میتوان اطلاعات زیر را مشاهده کرد:
. Process – نام فایل پردازه به همراه آیکون آن
. CPU – درصد استفاده پردازه از منابع پردازنده (CPU)
. Private Bytes – میزان حافظهای که به پردازه اختصاص یافته است
. Working Set – میزان RAM اختصاص داده شده به این پردازه
. PID – شناسه پردازه (Process Identifier)
. Description – توضیحی درباره پردازه
. Company Name – نام شرکت سازنده پردازه

ابزار Process Explorer این امکان را میدهد که ستونهای بیشتری اضافه کنید تا اطلاعات بیشتری درباره هر پردازه در سیستمعامل بهدست آورید.
برای این کار، کافی است روی یکی از ستونها راستکلیک کنید و سپس گزینه Select Columns را انتخاب کنید.
پس از کلیک روی دکمه Select Columns، یک پنجره با گزینههای اضافی باز میشود و شما میتوانید گزینههایی را که میخواهید به ستونهای اصلی Process Explorer اضافه شوند، انتخاب کنید.

برخی از دادههای جالب درباره پردازه میتواند شامل موارد زیر باشد:
Image – اطلاعاتی درباره پردازه، از جمله نسخه، زمان ساخت، مسیر و موارد دیگر
Performance – اطلاعات مربوط به عملکرد پردازه
Performance Graph – اطلاعات گرافیکی درباره عملکرد پردازه
Disk and Network – شمارش عملیات ورودی/خروجی (I/O) دیسک و شبکه
CPU Graph – دادههای گرافیکی درباره مصرف CPU، حافظه GPU اختصاصی، حافظه GPU سیستم و موارد دیگر
Threads – رشتههای پردازه
TCP/IP – ارتباطات شبکه ورودی و خروجی
Security – مجوزهای پردازه
Environment – متغیرهای محیطی
Job – فهرست پردازههایی که به یک Job Object اختصاص داده شدهاند
Strings – رشتههایی که بخشی از پردازه هستند (در سطح فایل و حافظه)
برای آنکه نرمافزار آنتیویروس بتواند هر پردازه موجود در سیستمعامل را مانیتور کند، معمولاً یک Hook اجرا میکند.
این Hook معمولاً یک فایل DLL است که در هر پردازه در حال اجرا در سیستمعامل تزریق میشود و حاوی نوعی اطلاعات است که بعداً برای ما اهمیت خواهد داشت.
برای مشاهده اینکه کدام DLLها درگیر هستند، همراه با نام و مسیرشان، میتوانیم از ابزار Process Explorer استفاده کنیم: پردازه مورد نظر را پیدا کرده، با کلیک روی آن انتخاب کنیم و سپس کلیدهای Ctrl + D را فشار دهیم. این کار نتیجهای مشابه زیر به ما میدهد:

در اینجا (در مستطیل شکل ۲٫۹) مشاهده میکنیم که دو فایل DLL از آنتیویروس AVG به پردازهای در سیستمعامل اضافه شدهاند. این سرنخها بعداً میتوانند مورد بررسی دقیقتر قرار بگیرند.
حالا همان کار را انجام میدهیم، اما این بار روی پردازه System با شناسه PID 4:

در اینجا مشاهده میکنیم که ۱۲ فایل سیستم (sys) از AVG به پردازه System بارگذاری شدهاند.
با احتساب دو فایل DLL که در اسکرینشات قبلی دیدیم، اکنون ۱۴ فایل داریم که میتوانیم بعداً آنها را بررسی کنیم و اینها ۱۴ سرنخ ما برای تحقیقات آینده هستند.
نکته:
میتوانید از ستون Description در Process Explorer استفاده کنید تا زمان تحقیق خود را کوتاهتر کرده و بهتر بفهمید که هر فایل چه کاری انجام میدهد.
کار با Process Monitor
اکنون که دیدهایم چگونه با استفاده از Process Explorer سرنخها را جمعآوری کنیم و کدام پردازههای آنتیویروس در حال اجرا هستند و بدون دخالت کاربر عملکرد سیستمعامل را مانیتور میکنند، میتوانیم جمعآوری سرنخهای تحقیقاتی را ادامه دهیم.
این بار، پردازهای را که نرمافزار آنتیویروس برای اسکن فایلها استفاده میکند، پیدا خواهیم کرد. این سرنخ را از طریق مانیتورینگ سیستمعامل با استفاده از ابزار Process Monitor شناسایی میکنیم.
ابزار Process Monitor
ابزاری است که میتوان از آن برای مشاهده رفتار هر پردازه در سیستمعامل استفاده کرد.
برای مثال، اگر پردازه notepad.exe را اجرا کنیم، محتوا در آن بنویسیم و سپس محتوا را در فایلی ذخیره کنیم، Process Monitor قادر خواهد بود همه اتفاقاتی را که از لحظه اجرای پردازه تا لحظه بستن آن رخ داده، مشاهده کند، مانند مثال زیر:

میتوانید روی هر یک از رویدادها (Events) دوبار کلیک کنید تا اطلاعات بیشتری درباره یک رویداد خاص بهدست آورید.
اسکرینشات زیر پنجره Event Properties را نشان میدهد که پس از دوبار کلیک روی یک رویداد باز شده است:

سه تب وجود دارد که میتواند به ما کمک کند تا اطلاعات بیشتری درباره رویداد بهدست آوریم:
Event – اطلاعات مربوط به رویداد، مانند تاریخ وقوع رویداد، نتیجه عملیاتی که باعث ایجاد رویداد شده، مسیر فایل اجرایی و موارد دیگر
Process – اطلاعات مربوط به پردازهای که در رویداد دخیل است
Stack – پشته (Stack) پردازه
قبل از اینکه اسکن روی یک فایل آزمایشی انجام دهیم، ابتدا باید Process Monitor (procmon.exe) را اجرا کنیم.
پس از اجرای Process Monitor، مشاهده میکنیم که پردازههای زیادی در حال انجام عملیاتهای مختلف روی سیستمعامل هستند، بنابراین نیاز به فیلتر کردن داریم.
دکمه فیلتر در نوار ابزار اصلی قرار دارد:

ما نیاز داریم که فیلتر بر اساس نام شرکت اعمال کنیم، زیرا نام شرکت تنها موردی است که درباره پردازهای که قرار است اجرا شود کاملاً مطمئن هستیم. نام پردازهای که روی دیسک اجرا خواهد شد را نمیدانیم و شناسه پردازه (PID) آن را هم نمیدانیم، اما میدانیم که نام شرکت مورد نظر AVG است.
برای این منظور، میتوانیم شرط contains را به نام شرکت اضافه کنیم.

سپس، با اجرای ابزار Process Monitor در پسزمینه، فایل مورد نظر برای اسکن را پیدا کرده، روی آن راستکلیک کرده و گزینه Scan selected items for viruses را انتخاب میکنیم:

پس از انتخاب Scan selected items for viruses، به Process Monitor بازمیگردیم و مشاهده میکنیم که دو پردازه در اسکن دخیل هستند — یکی به نام AVGUI.exe و دیگری AVGSvc.exe.

از این مشاهده میتوان نتیجه گرفت که پردازه AVGSvc.exe، که سرویس AVG است، نیز در اسکن فایل برای ویروسها دخیل است. پس از آن، پردازهای به نام AVGUI.exe، که پردازه رابط کاربری گرافیکی (GUI) آنتیویروس AVG است، شروع به اجرا میکند. بنابراین بر اساس این اطلاعات، میتوان این دو پردازه را به لیست سرنخهای تحقیقاتی خود اضافه کرد.
پس از اتمام اسکن فایل، میتوان جریان اجرای پردازههای آنتیویروس که در اسکن فایل دخیل بودهاند را در نمای درختی (Tree View) مشاهده کرد، با فشردن Ctrl + T :

نمای درختی پردازهها (Process Tree View) میتواند اطلاعات زیادی درباره جریان اجرای پردازهها در سیستم به ما بدهد و نشان دهد که کدام پردازههای والد، پردازههای فرزند را ایجاد میکنند. این اطلاعات به ما کمک میکند تا اجزای نرمافزار آنتیویروس را بهتر درک کنیم.
نکته:
برای نمایش تنها فایلهای EXE در Process Monitor، میتوانید بر اساس Path فیلتر کنید و شرط ends with را انتخاب کرده و مقدار .exe را مشخص کنید.

اکنون که دیدیم چگونه میتوان با ابزارهایی مانند Process Explorer و Process Monitor روی پردازههای سیستم کار کرد، بیایید یاد بگیریم چگونه با ابزارهای بیشتری کار کنیم که سرنخهای بیشتری برای تحقیقات آنتیویروس در اختیار ما قرار میدهند.
کار با Autoruns
همانند همه سیستمعاملها، ویندوز نیز مکانهای زیادی برای ایجاد ماندگاری (Persistence) دارد و همانطور که نویسندگان بدافزار از این قابلیت استفاده میکنند، شرکتهای آنتیویروس نیز میخواهند از ماندگاری استفاده کنند تا پردازههایشان هنگام راهاندازی سیستمعامل اجرا شوند.
در ویندوز، مکانهای متعددی وجود دارد که میتوان فایلهایی را در آنها قرار داد تا هنگام شروع به کار سیستمعامل اجرا شوند؛ از جمله موارد زیر:

اما نیازی نیست تمام این مکانها را حفظ کنید، زیرا ابزاری به نام Autoruns برای همین منظور وجود دارد.
با استفاده از Autoruns میتوانیم تمام مکانهایی که امکان ایجاد ماندگاری در سیستمعامل وجود دارد را نمایش دهیم.
و برای هر مکان، میتوانیم فهرستی از فایلهایی که هنگام راهاندازی سیستمعامل اجرا میشوند، ایجاد کنیم. با استفاده از این فهرستها، میتوانیم سرنخهای بیشتری برای تحقیقات آنتیویروس جمعآوری کنیم.
هنگام اجرای Autoruns میتوانیم از فیلترها نیز استفاده کنیم و این بار، رشتهای را مشخص میکنیم که همان نام نرمافزار آنتیویروس (AVG) است:

پس از فیلتر کردن رشته AVG، Autoruns دهها فایل AVG را که هنگام راهاندازی سیستمعامل اجرا میشوند نمایش میدهد. علاوه بر نام فایل، هر خط شامل مکان فایل، توضیحات، نام ناشر و اطلاعات دیگر نیز هست.
فایلهای نمایش داده شده توسط Autoruns میتوانند شامل فایلهای حیاتی AVG باشند و اگر فایل خاصی اجرا نشود، برنامه آنتیویروس نمیتواند بهدرستی کار کند. بنابراین منطقی است که اینها فایلهایی باشند که باید روی آنها برای تحقیقات آینده تمرکز کنیم و این فایلها را بهعنوان سرنخ (Leads) جمعآوری میکنیم تا تحقیق ما مؤثرتر شود.
کار با Regshot
هنگام جمعآوری سرنخها برای تحقیق روی آنتیویروس، باید بفهمیم که نرمافزار آنتیویروس کدام مقادیر رجیستری را اضافه کرده است تا بتوانیم تشخیص دهیم چه فایلها و مقادیر رجیستریای توسط آن اضافه شدهاند. برای جمعآوری این اطلاعات از ابزار Regshot استفاده میکنیم.
Regshot یک ابزار متنباز است که به شما امکان میدهد یک Snapshot از رجیستری بگیرید و سپس دو عکس رجیستری را قبل و بعد از نصب یک برنامه مقایسه کنید.
برای گرفتن اولین عکس، ابزار را باز میکنیم، مشخص میکنیم که خروجی به چه فرمتی باشد (HTML یا متن ساده)، محل ذخیره فایل را تعیین میکنیم و سپس روی 1st shot کلیک میکنیم:

فقط پس از گرفتن اولین عکس (1st shot)، نرمافزار آنتیویروسی را که قصد تحقیق روی آن را داریم، نصب میکنیم. پس از تکمیل نصب، دوباره به Regshot بازمیگردیم و روی 2nd shot کلیک میکنیم:

پس از گرفتن دومین عکس (2nd shot)، میتوانید روی Compare کلیک کنید.
این کار یک فایل خروجی از نوعی که کاربر انتخاب کرده است (متن ساده یا HTML) ایجاد میکند. فایل خروجی تمام تغییرات رجیستری که پس از نصب نرمافزار آنتیویروس رخ داده است، نمایش میدهد.

بدیهی است که برای جمعآوری سرنخها، باید این مکانهای مقادیر رجیستری را جمعآوری کنیم، اما نکته جالب این است که این مقادیر عمدتاً مربوط به فایلهای EXE و DLL هستند.
اگر در این فایل خروجی به دنبال DLL و EXE بگردیم، میتوانیم نتایج ارزشمندتری بهدست آوریم:

همچنین خوب است بدانید که برای دسترسی و جستوجو در رجیستری نیازی به استفاده از Regedit یا ابزارهای شخص ثالث مانند Regshot ندارید؛ میتوانید از PowerShell نیز استفاده کنید، همانطور که در اسکرینشات قبلی مشاهده شد.
خلاصه
جمعآوری سرنخها یک مرحلهٔ حیاتی در فرآیند آمادهسازی برای تحقیق روی نرمافزارهای آنتیویروس است. در این فصل، چندین ابزار از مجموعه Sysinternals و همچنین ابزار Regshot را معرفی و بررسی کردیم. با استفاده از این ابزارها میتوانیم سرنخهای لازم را جمعآوری کرده و خود را برای انجام این تحقیق آماده کنیم.
توصیه میکنیم به جستوجوی ابزارهای بیشتری ادامه دهید که بتوانند به شناسایی سرنخهای اضافی کمک کنند. همچنین ابزارهای بسیار خوب دیگری برای تحلیل پویای بدافزار وجود دارد که میتوانید از آنها استفاده کنید.
در فصل بعدی، درباره دو روش دور زدن آنتیویروس، مبانی سیستمعامل ویندوز، مدل حلقههای حفاظتی (Protection Rings Model) و موضوعات دیگر صحبت خواهیم کرد.
Telegram: @CaKeegan
Gmail : amidgm2020@gmail.com