در این پست میخوام در مورد فایلهای Prefetch مطلبی رو بزارم و با نقش کلیدی اونها در تحقیقات فارنزیکی بیشتر آشنا بشیم. قبل از ورود به دنیای فارنزیک در ابتدا ببینیم این فایلها چی هستند.
مایکروسافت با ویندوز ایکس پی و سرور 2003 یک مولفه مدیریت حافظه بنام Prefetcher رو معرفی کرد. هدف این مولفه این بود که سرعت بوت رو کم کنه و همچنین زمان استارت برنامه ها رو هم کاهش بده. برای این هدف این مولفه ، فایلهایی که برای راه اندازی نیاز بود رو از رم کش میکرد و با این کار دسترسی به دیسک و جستجو به اون رو کاهش میداد . بعد از ویندوز ویستا این مولفه در قالب SuperFetch و ReadyBoost گسترش یافت .
وقتی یک کاربری یک برنامه رو از یک جای خاصی اجرا میکند ، ویندوز یک فایل Prefetch با فرمت .pf در مسیر %systemroot%\Prefetch ایجاد میکند .
در ویندوزهایی که روی SSD نصب می شوند این فولدر وجود ندارد .به دلیل اینکه به طور پیش فرض غیرفعال می باشد.برای فعال یا غیر فعال کردن این فرایند میتوانید از کلید زیر استفاده کنید :
HKLM/System/CurrentControlSet/Control/Session Manager/Memory Managment/Prefetch Parameters/EnablePrefetcher
که میتواند مقادیر 0 برابر غیرفعال ،1 برای فعال کردن کش نرم افزاری ، 2 برای فعال کردن کش بوت و 3 برای فعال کردن کش نرم افزاری و بوت باشد
در ابتدا محدودیت 128 فایل را داشت اما بعد از ویندوز هفت این محدودیت به 1024 فایل افزایش یافت و با ویندوز 10 این فایلها فشرده تر شدند .
بطور کلی 3 نوع فایل pf در این دایرکتوری می تواند باشد:
1- نوع بوت : یک فایل بنام NTOSBOOT-B00DFAAD.pf که برای افزایش بوت سیستم ایجاد می شود.
2- نوع برنامه ای : برای سرعت دادن به راه اندازی برنامه ها بکار میروند.نام آنها شامل نام فایل اجرایی + - + یک هش 8 رقمی از مکان آنها + .pf مثلا فایل CALC.EXE-DBDE74BE.pf
3- نوع برنامه خاص : برای افزایش سرعت راه اندازی در برنامه هایی می باشد که بواسطه برنامه اصلی اجرا می شود. مانند svhost.exe . نام آن شامل اسم اجرایی + هش 8 کاراکتری شامل مسیر و کامندلاین برای اجرای برنامه + .pf . چون محل این فایلهای یکی میباشد و اغلب با پارامتر اجرا می شوند از این متد استفاده می شود. برای مثال DLLHOST.EXE-1E73335C.pf
علاوه بر فایلهای pf فایلها و وفولدرهای دیگری نیز ممکن هست در این دایرکتوری وجود داشته باشد از جمله فایل layout.ini که در آن مسیر تمام فایلهای pf وجود دارد و Disk Defragmenter از این لیست برای انتقال منطقی فایلها استفاده میکند.
از طریق این فایلها ما میتوانیم نام فایل اجرایی ،تعداد اجرای برنامه ، مسیر اصلی و آخرین زمان اجرا، فایلها و دایرکتوریهای مورد استفاده در برنامه و اطلاعات مرتبط با volume را مشخص کنیم.
اگر محتوای یک فایل را باز کنیم (با برنامه های HxD ) محتوای آن قابل خواندن نیست.بنابراین نیاز به ابزارهایی برای آنالیز و pars کردن آن داریم .
برخی از برنامه هایی که باهاش میتونید این فایلها رو آنالیز کنید :
ابزارهای PEcmd و PF هر دو از نوع کامندلاینی می باشند و ابزار WinPrefetchView یک ابزار گرافیکی می باشد.در ادامه به بررسی 2 مورد از این ابزارها می پردازیم .
اگر این ابزار رو بدون هیچ پارامتری بکار ببرید تصویر زیر رو میبینید که یک راهنما از نحوه استفاده از اون رو براتون میاره :
بررسی گزینه های قابل استفاده در این ابزار :
گزینه d : یک فولدر را میگیرد و تمام فایلهای داخل آن را آنالیز میکند.
گزینه f : یک فایل را برای آنالیز میگیرد.
گزینه های خروجی : html,json,csv , ...
گزینه dt : نوع فرمت زمان را مشخص میکند.
مثالهایی از دستورات :
در این مثال فایل CALCULATOR.EXE-FC9AB22D.pf مورد بررسی قرار گرفته و در خروجی چاپ می شود.
در این مثال فولدر prefetch را گرفته و کل فایلهای موجود در آن را آنالیز کرده و نتایج را در قالب فایل html و در مسیر فولدر C:\Users\USER\Desktop\0\case0012 قرار میدهد .
یک ابزار گرافیکی می باشد و نتایج را در یک سیستم Live نمایش میدهد . نحوه استفاده ازشم ساده هست فقط باید باز کنید و منتظر بشید که لوود بشه .
فایلهای PF کمک خیلی زیادی برای فارنزیک و تحلیل بدافزار میکنند . با این فایلها ما میتونید آخرین اجرایی ها و تعداد و زمان و همچنین نیازمندیهای این برنامه ها رو استخراج کنیم . که هر کدوم از این مدارک میتونه کمک خیلی زیادی به ما بکنه .برای درک بهتر اینجا یک سناریوی عملی رو با هم میریم جلو.
فرض کنید کاربری فایلی رو از اینترنت بهمراه کرک اون دریافت و اجرا میکنه . بعد از مدتی میفهمه که سیستمش دچار آسیب شده و بخشی از اطلاعاتش رمزنگاری یا سرقت و ... شده و الان میخواد بدونه که سیستمش چطوری هک شده تا رفع عیب کنه .
برای اینکه سناریو تکمیل بشه نیاز به یک برنامه داشتم که این کار انجام بده برای اینکه آسیبی نرسه به سیستم و اینکه یک محیط شبیه سازی بشه یه برنامه کوچیک نوشتم که یک پیامی رو چاپ میکنه و کنار این فایل یک Dll هم قرار دادم که نقش بد مارو بازی میکنه. برای دریافت این فایلها از این لینک فایل dll رو دانلود کنید و از این لینک بخش اجرایی (چون تو کیوت/سی ++ نوشته شده همه فایلها رو دانلود کنید ) رو دریافت و کنار هم کپی کنید تا برنامه اجرا بشه .
ما بعنوان فارنزیک کار بررسی میکنیم که آخرین اجرایی ها در سیستم ایشون چی هست.که بسته به شرایط از یکی از ابزارهای اشاره شده در بالا استفاده می کنیم .
این فایلها رو بررسی کنیم اغلب فایلهای سیستمی هستند که با چک کردن مسیرشون تاحدودی میشه حذف کرد . بخشی از فایلها رو هم براساس زمان وقوع حادثه حذف میکنیم. یعنی مثلا اگه زمانی که کاربر متوجه شده 7 تیر باشه.موارد قبل از 6 تیر رو مثلا حذف میکنیم.(بعدا در صورت نیاز بررسی میکنیم )
اگه اینکارارو بکنیم تقریبا کار تا حدودی ساده تر میشه و ما با فایلها و اجراییهای کمی مواجه می شیم.بعد از اینکه بررسی کردیم متوجه میشیم که اجرایی با نام target مشکوک هست . بنابراین فایل pf مربوط به target.exe رو مورد بررسی قرار میدیم :
جزییات این خروجی میتونه موارد زیر باشه :
زمانی که ایجاد شده و در نتیجه میشه گفت اولین باری که برنامه اجرا شده.
زمانی که اصلاحاتی داشته (برنامه دوباره اجرا شده است ) و در نهایت آخرین زمان دسترسی(اصلاح در داخل خود فایل pf )
این اطلاعات هم برای فیلتر کردن مناسب هست و هم اینکه برای تایم لاین .
نام اجرایی و هش اون که برای بدست آوردن مسیر بکار میره . اندازه فایل اجرایی و نسخه سیستم عامل.
تعداد اجرا که برابر 1 می باشد و آخرین زمان اجرا (برنامه اجرا شده)
اطلاعات درایوی که فایل در داخل اون هست .(خود PEcmd مسیر کامل برنامه رو نشون میده اما از این مقدار هم میشه از طریق رجیستری تبدیل و مسیر داریور رو بدست آورد )
فولدرهایی که برای این اجرایی درگیر بودند .چون برنامه از dll های مختلف استفاده میکنه مثلا شما تو تصویر بالا مسیر system32 رو میبینید .
و در نهایت مسیر فایلها و DLLها و ... که تو اجرای برنامه تاثیر داشتند. با بررسی اونا متوجه میشیم که فایل از یک فولدر در دسکتاپ اجرا شده بنام TARGET که اگه بررسی کنیم و موجود باشه که میشه فایلها رو آنالیز کرد که در نتیجه متوجه میشیم که فایل baddll.dll یک بدافزار بوده که اینجا صرفا هدف بررسی فایلهای pf بوده.
فایلهای pf نقش مهمی رو در فرایند فارنزیک و تحلیل بدافزار میتونه داشته باشه . از شناسایی زمان نفوذ یا آسیب تا ابزارها و تکنیک هایی که در این حمله مورد استفاده قرار گرفته ... :)
امیدوارم که این آموزش هم به دردتون بخوره :)