روابط عمومی شرکت ایدکو (توزیعکنندهی محصولات کسپرسکی در ایران)؛ [1] AmCache در زمینه جرمشناسی دیجیتال، نقش حیاتی در شناسایی فعالیتهای مخرب در سیستمهای ویندوز ایفا میکند. این آرتیفکت امکان شناسایی نرمافزارهای مخرب و حتی نرمافزارهایی با تهدیدات کمخطر را روی یک ماشین فراهم میکند. این فایل توسط سیستمعامل مدیریت میشود و تا زمان نگارش این مقاله، هیچ روش قابل اطمینان و شناختهشدهای برای تغییر یا حذف دادههای AmCache وجود ندارد. بنابراین، در موقعیتهای واکنش به رخداد، این فایل میتواند به شناسایی آرتیفکتهای از دسترفته کمک کند (برای مثال، در مورد باجافزاری که خود را حذف میکند). همچنین این آرتیفکت به تحلیلگران این امکان را میدهد که به جستوجو برای الگوهای بهجا مانده از مهاجم، مانند نامها و مسیرهای فایل بپردازند. علاوه بر این، AmCache هشهای SHA-1 فایلهای اجراشده را ذخیره میکند، که به متخصصان DFIR [2] این امکان را میدهد که در منابع اطلاعات تهدید عمومی مانند OpenTIP و VirusTotal جستوجو کنند و قوانینی برای مسدود کردن همان فایل در دیگر سیستمهای شبکه تولید نمایند.
این مقاله تحلیلی جامع از آرتیفکت AmCache ارائه میدهد که به خوانندگان کمک میکند تا عملکرد داخلی آن را بهتر درک کنند. علاوه بر این، ابزار جدیدی به نام “AmCache-EvilHunter” معرفی میکنیم که هر فرد حرفهای بتواند از آن برای تجزیه و تفکیک کردن فایل Amcache.hve و استخراج IOCها بهسادگی استفاده کند. این ابزار همچنین قادر است تا از منابع اطلاعاتی مذکور پرسوجو کند تا تشخیصهای مربوط به فایلهای مخرب را بررسی نماید؛ این سطح از خودکارسازیِ داخلی، تلاش دستی را کاهش میدهد و سرعت شناسایی تهدید را افزایش میدهد که برای تحلیلگران و پاسخدهندگان ارزش قابلتوجهی دارد.
اهمیت شواهد اجرا
شواهد اجرا از نظر جرمشناسی دیجیتال و واکنش به رخداد ذاتاً مهم هستند، زیرا به محققان کمک میکنند تا بازسازی کنند سیستم در طول یک نفوذ چگونه مورد استفاده قرار گرفته است. آرتیفکتهایی مانند Prefetch، ShimCache و UserAssist سرنخهایی درباره آنچه اجرا شده ارائه میدهند. AmCache نیز آرتیفکت قدرتمندی برای مستندسازی اجراست و متادادهای را نگه میدارد که حضور و اجرای یک فایل را نشان میدهد، حتی اگر فایل حذف یا تغییر یافته باشد. امتیاز AmCache نسبت به سایر آرتیفکتهای ویندوز این است که بر خلاف آنها، هش فایل را ذخیره میکند، که برای تحلیلگران بسیار کاربردی است چون میتوان از آن برای شکار فایلهای مخرب در سراسر شبکه استفاده کرد و احتمال شناسایی کامل، مهار و ریشهکنی تهدید را افزایش میدهد.
معرفی AmCache
AmCache برای نخستین بار در ویندوز 7 معرفی شد و در ویندوز 8 و نسخههای بعدی بهطور کامل مورد بهرهبرداری قرار گرفت. هدف آن جایگزینی RecentFileCache.bcf قدیمی در سیستمهای جدیدتر است. AmCache برخلاف همتای پیشینش، اطلاعات جرمشناسی باارزشی درباره اجرای برنامه، باینریهای اجراشده و درایورهای بارگذاریشده را شامل میشود. این آرتیفکت بهصورت یک فایل هیوِ رجیستری به نام Amcache.hve در مسیر C:\Windows\AppCompat\Programs ذخیره میشود. متاداده ذخیرهشده در این فایل شامل مسیرهای فایل، دادهٔ ناشر، زمانهای کامپایل، اندازههای فایل و هشهای SHA-1 است.
یادتان باشد فرمت AmCache نه به نسخه سیستمعامل که به نسخه کتابخانهها(DLLها) وابسته است. از این رو، حتی سیستمهای ویندوزی با سطوح پچ متفاوت ممکن است تفاوتهای کوچکی در ساختار فایلهای AmCache داشته باشند. کتابخانههای شناختهشدهای که برای پر کردن این کش استفاده میشوند در %WinDir%\System32 با نامهای زیر ذخیره شدهاند:
aecache.dll
aeevts.dll
aeinv.dll
aelupsvc.dll
aepdu.dll
aepic.dll
قابل ذکر است که این آرتیفکت ویژگیها و محدودیتهای خاص خود را دارد. AmCache هش SHA-1 را تنها بر روی نخستین 31,457,280 بایت (≈31 مگابایت) از هر اجرایی محاسبه میکند، بنابراین مقایسه هش ذخیرهشدهی آن بهصورت آنلاین میتواند برای فایلهایی که از این اندازه بزرگترند شکست بخورد. علاوه بر این، Amcache.hve یک لاگ اجرای واقعی نیست: این فایل تنها فایلهایی را ثبت میکند که در دایرکتوریهایی که[3]Microsoft Compatibility Appraiser اسکن میکند قرار دارند. همچنین شامل فایلهای اجرایی و درایورهایی میشود که در طی اجرای برنامه کپی شدهاند، و برنامههای گرافیکی (GUI) که نیاز به شیمینگ[4] سازگاری داشتهاند. تنها دسته آخر بهطور قابلاطمینانی نشاندهنده اجرای واقعی است. آیتمهای دو گروه اول صرفاً وجود فایل را در سیستم تأیید میکنند و هیچ دادهای درباره اینکه آیا یا چه زمانی اجرا شدهاند ارائه نمیدهند.
در همان دایرکتوری، میتوان فایلهای LOG اضافیای را یافت که برای تضمین سازگاری Amcache.hve و عملیات بازیابی استفاده میشوند:
C:\Windows\AppCompat\Programs\Amcache.hve.*LOG1
C:\Windows\AppCompat\Programs\Amcache.hve.*LOG2
فایل Amcache.hve را میتوان برای تحلیل دیجیتال/جرمشناسی با ابزارهایی مانند Aralez، Velociraptor، یا Kape.
InventoryApplicationFile
کلیدInventoryApplicationFile برای پیگیری تمام فایلهای اجرایی کشفشده در سیستم اهمیت دارد. زیر این کلید، هر فایل اجرایی با یک زیرکلید یکتا نمایش داده میشود که متاداده اصلی زیر را ذخیره میکند:
- ProgramId: هش یکتایی که از نام باینری، نسخه، ناشر و زبان ساخته شده و چند صفر به ابتدای آن اضافه شده است.
- FileID:هش SHA-1 فایل که چهار صفر به ابتدای آن اضافه شده است.
- LowerCaseLongPath:مسیر کامل فایل اجرایی به حروف کوچک.
- Name:نام پایه فایل بدون مسیر.
- OriginalFileName: نام اصلی فایل همانطور که در منبع نسخه PE مشخص شده، نشاندهنده نامی که توسعهدهنده هنگام ساخت فایل اختصاص داده است.
- Publisher: معمولاً برای تأیید مشروعیت منبع باینری استفاده میشود. برای بدافزار، این زیرکلید معمولاً خالی است.
- Version:نسخه ساخت یا انتشار فایل اجرایی.
- BinaryType:نشان میدهد فایل اجرایی 32 بیتی است یا 64 بیتی.
- ProductName: فیلد ProductName در منبع نسخه، که نرمافزار یا مجموعهای که فایل اجرایی به آن تعلق دارد را توصیف میکند.
- LinkDate:زمان کامپایل استخراجشده از هدر PE.
- Size:اندازه فایل به بایت.
- IsOsComponent: این فلگ بهطور باینری (True/False) نشان میدهد که آیا فایل اجرایی از خود سیستمعامل است یا از برنامهها/کتابخانههای خارجی.
همانطور که گفته شد، AmCache هش SHA‑1را فقط روی نخستین 31,457,280 بایت (حدود 31 مگابایت) فایل محاسبه میکند. برای اثبات این موضوع یک آزمایش انجام شد: دو فایل باینری بررسی شد: یکی کوچکتر از 31 مگابایت (Aralez) و دیگری بزرگتر (نسخه سفارشی Velociraptor). نتیجه چنین بود:
برای فایل کوچکتر، AmCache هش SHA‑1 مربوط به کل فایل را ذخیره کرد. اما برای فایل بزرگتر، AmCache تنها هش SHA‑1 مربوط به نخستین 31,457,280 بایت را ذخیره کرده بود. در همان رکورد، فیلد Size اندازه واقعی فایل را نشان میداد.
پیامد فنی و عملی:
اتکای صرف به هش ذخیرهشده در AmCache هنگام جستوجو در پایگاههای تهدیدمثل VirusTotal برای فایلهای بزرگ نامطمئن است. قبل از جستوجو باید مقدار فیلد Size را چک کنید — اگر بزرگتر از 31,457,280 بایت باشد، هشِ ذخیرهشده نماینده کل فایل نیست. مهاجمان میتوانند از این ویژگی سوءاستفاده کنند و فایلهای مخرب بزرگ تولید نمایند؛ در این حالت هش واقعی کل فایل مشخص نیست و ردیابی آن در شبکه یا سرویسهای عمومی تشخیص بدافزار دشوارتر میشود. بنابراین در تحلیلهای جرمشناسی دیجیتال برای فایلهای بزرگ، همیشه همزمان با استفاده از هشِ AmCache، اندازه فایل را هم کنترل کنید و در صورت لزوم از محاسبه هشِ کامل فایل روی نمونه واقعی استفاده نمایید.
مثال کاربردی InventoryApplicationFile:یافتن ابزار حذفشدهای که استفاده شده است
فرض کنید در حال بررسی یک تهدید داخلی هستید. کاربر اجرای یک برنامه مشکوک را رد و ادعا میکند که هر نرمافزار مشکوکی از دیسک بهطور ایمن حذف شده است. اما در InventoryApplicationFile، رکوردی از وجود winscp.exe در پوشه Downloads کاربر پیدا میکنید. حتی اگر فایل حذف شده باشد، این اطلاعات نشان میدهند که ابزار قبلاً روی سیستم بوده و احتمالاً برای انتقال فایلها استفاده شده است. در تمرینات واکنش به حادثهای که انجام دادهایم، موارد مشابهی دیدهایم که در آن این دادهها بسیار مفید واقع شدهاند.
InventoryApplication
کلیدInventoryApplication جزئیاتی درباره برنامههایی که قبلاً روی سیستم نصب شدهاند ثبت میکند. بر خلاف InventoryApplicationFile که هر فایل اجرایی شناساییشده را ثبت میکند، InventoryApplication روی برنامههایی تمرکز دارد که رکورد نصب دارند. هر ورودی با ProgramIdیکتای خود نامگذاری شده است، که امکان اتصال مستقیم به کلید متناظر InventoryApplicationFile را فراهم میکند. علاوه بر این، InventoryApplication شامل زیرکلیدهای مهم زیر میشود:
- InstallDate: رشته تاریخ و زمان که نشان میدهد سیستمعامل اولین بار برنامه را ثبت یا شناسایی کرده است.
- MsiInstallDate:تنها در صورتی وجود دارد که برنامه با Windows Installer (MSI) نصب شده باشد؛ زمان دقیق اعمال بسته MSI را نشان میدهد و مستقیماً از متاداده MSI گرفته میشود.
- UninstallString: دستور خط فرمان دقیق استفادهشده برای حذف برنامه.
- Language:شناسه محلی عددی که توسط توسعهدهنده تعیین شده (LCID).
- Publisher:نام ناشر یا فروشنده نرمافزار.
- ManifestPath:مسیر فایل مانفیست نصب که توسط برنامههای UWP یا AppX/MSIX استفاده میشود.
وقتی یک ProgramId هم در این کلید و هم در InventoryApplicationFile ظاهر شود، تأیید میکند که فایل اجرایی فقط موجود یا اجرا نشده، بلکه بهطور رسمی نصب شده است. این تمایز به ما کمک میکند تا نسخههای موقت یا اجراهای تصادفی را از نرمافزارهای نصبشده جدا کنیم. نکته جالب دیگر درباره InventoryApplication، وجود زیرکلیدی به نام LastScanTime است که جدا ازProgramIdها ذخیره میشود و مقدار آن زمان آخرین اجرای Microsoft Compatibility Appraiser را نشان میدهد. این یک تسک زمانبندیشده است که باینری compattelrunner.exe را اجرا میکند و اطلاعات این کلید تنها زمانی بهروزرسانی میشوند که این تسک اجرا شود. بنابراین، نرمافزارهایی که پس از آخرین اجرای Appraiser نصب شدهاند ممکن است در اینجا ظاهر نشوند.
مثال کاربردی InventoryApplication: شناسایی نرمافزار دسترسی از راه دور
فرض کنید در جریان یک عملیات واکنش به رخداد، ورودیای برای AnyDesk در کلید InventoryApplication پیدا میکنید (اگرچه برنامه دیگر نصب نیست). این نشان میدهد که مهاجم احتمالاً از آن برای دسترسی از راه دور استفاده کرده و سپس برای پوشاندن ردپا آن را حذف کرده است. حتی اگر فایل از دیسک پاک شده باشد، این کلید اثبات میکند که نرمافزار روی سیستم وجود داشته است. این سناریو در موارد واقعی بیش از یک بار مشاهده شده است.
InventoryDriverBinary
کلید InventoryDriverBinary هر درایور مود کرنلرا که سیستم بارگذاری کرده ثبت میکند و متادادههای لازم برای شناسایی درایورهای مشکوک یا مخرب را ارائه میدهد. زیر این کلید، هر درایور در یک زیرکلید یکتا ذخیره میشود و شامل موارد زیر میشود:
- FileID:هش SHA-1 فایل درایور، با چهار صفر اضافهشده به ابتدای هش.
- LowerCaseLongPath:مسیر کامل فایل درایور به حروف کوچک.
- DigitalSignature:جزئیات گواهی امضای کد. امضای معتبر و مورد اعتماد به تأیید اصالت درایور کمک میکند.
- LastModified:زمان آخرین تغییر فایل از متاداده سیستم فایل، که نشان میدهد درایور چه زمانی آخرین بار روی دیسک تغییر یافته است.
از آنجا که درایورهای ویندوز با بالاترین سطح دسترسی اجرا میشوند، اغلب توسط بدافزارها سوءاستفاده میشوند. طبق مطالعات مادرکسپرسکی، مهاجمان از درایورهای آسیبپذیر برای متوقف کردن فرآیندهای EDR استفاده میکنند. در مواجهه با یک رخداد سایبری، محققان هش رمزنگاری هر درایور، مسیر فایل، وضعیت امضا و زمان آخرین تغییر آن را همبسته میکنند. این کار به آنها کمک میکند تا مطابقت فایل با نسخه امضاشده شناختهشده را تأیید کنند، تغییرات غیرمنتظره را شناسایی نمایند و درایورهای بدون امضا یا با نامهای غیرعادی را برای تحلیل عمیقتر علامتگذاری کنند. پروژههایی مانندLOLDrivers نیز برای شناسایی درایورهای آسیبپذیر مورد استفاده مهاجمان در محیط واقعی به کار میروند.
علاوه بر InventoryDriverBinary، AmCacheکلید InventoryApplicationDriverرا نیز ارائه میدهد که تمام درایورهایی را که توسط برنامههای مشخص نصب شدهاند، ردیابی میکند. این کلید شامل دو ورودی میشود:
- DriverServiceName: نام سرویس مرتبط با درایور نصبشده را مشخص میکند.
- ProgramIds:شناسههای برنامه مطابق با نامهای کلید در InventoryApplication که مسئول نصب درایور بودهاند را فهرست میکند.
مثال کاربردی InventoryDriverBinary: شناسایی درایور مخرب
اگر سیستم از طریق سوءاستفاده از یک درایور آسیبپذیر یا مخرب به خطر افتاده باشد، میتوان از کلید رجیستری InventoryDriverBinary برای تأیید وجود آن استفاده کرد. حتی اگر درایور حذف یا مخفی شده باشد، باقیماندههای آن در این کلید میتوانند نشان دهند که در گذشته بارگذاری شده است، که به شناسایی نفوذهای سطح کرنل و بازسازی خط زمانی تحقیقات کمک میکند. همین روش باعث کشف بدافزارAV Killer شد.
InventoryApplicationShortcut
این کلید شامل ورودیهایی برای فایلهای .lnk (میانبرها) است که در پوشههایی مانند منوی Start یا دسکتاپ هر کاربر وجود داشتهاند. در هر کلید میانبر:
ShortcutPath: مسیر مطلق فایل LNK در زمان کشف را نشان میدهد.
- ShortcutTargetPath: مسیر مقصدی که میانبر به آن اشاره میکند را نمایش میدهد.
- همچنین میتوان با استفاده از ShortcutProgramId، ورودی مربوط به برنامه را در InventoryApplication جستوجو کرد، مشابه کاری که برای درایورها انجام دادیم.
مثال کاربردی InventoryApplicationShortcut: تأیید استفاده از برنامه حذفشده
اگر برنامهای مشکوک از سیستم حذف شده باشد ولی کاربر ادعا کند هرگز آن را اجرا نکرده، کلید InventoryApplicationShortcut نشان میدهد که میانبری به آن برنامه روی دسکتاپ وجود داشته و اخیراً استفاده شده است. با شواهد تکمیلی، مانند تحلیل Prefetch، میتوان اجرای نرمافزار را تأیید کرد.
فایل AmCache.hve در جرمشناسی دیجیتال ویندوز مهم است. تا حالا ابزار کامل و قابلاعتمادی برای خواندن و استخراج اطلاعات تهدید از آن کم بوده. برای رفع این مشکل ابزار AmCache‑EvilHunter ساخته شده است. این برنامه خطفرمان، دادههای AmCache.hve را میخواند، اجرای فایلها و فایلهای مشکوک را پیدا و نتایج را با سرویسهایی مثل VirusTotal و Kaspersky OpenTIP بررسی میکند تا اطلاعات تهدید کاملتر شود.
نتیجهگیری
فایل AmCache.hve مانند دفترچهای از حضور فایلها در ویندوز است که مسیر کامل، هش SHA‑1، زمانهای کامپایل، ناشر و نسخه فایلهای اجرایی را ثبت میکند؛ اگرچه لاگ قطعی اجرای برنامه نیست، اما برای شناسایی باینریهای غیرعادی و تأیید هویت فایل از طریق هش بسیار ارزشمند است. برای ساختن یک تصویر قابلاعتماد از رخداد، دادههای AmCache باید با آرتیفکتهای دیگر (مثل Prefetch، ShimCache و لاگهای ویندوز) ترکیب شود تا اجرای واقعی و جدولزمانی دقیق تأیید گردد؛ مقایسه InventoryApplicationFile با InventoryApplication نشان میدهد که آیا فایل فقط کپی شده یا نصب شده، و رکوردهای درایور غیرمنتظره میتوانند نشانه روتکیت یا مکانیزم پایداری مخفی باشند. استفاده از تفکیککنندههایی مانند AmCache‑EvilHunter و ارجاع هشها به پایگاههایی مثل VirusTotal یا دیتابیسهای تهدید اختصاصی به تولید IOC و تقویت واکنش به رخداد کمک میکند — بنابراین تحلیل صحیح AmCache یکی از مهارتهای پایهای و حیاتی در DFIR است.
[1]یک فایل سیستم است که توسط ویندوز برای ذخیرهسازی اطلاعات مربوط به برنامهها و برنامههای اجرایی (Executable Files) استفاده میشود.
[2] Digital Forensics and Incident Response
[3]یک ابزار از مایکروسافت است که بهطور خاص برای ارزیابی سازگاری نرمافزارها و سختافزارها با نسخههای مختلف ویندوز طراحی شده است. این ابزار بهویژه در فرآیند ارتقاء به نسخههای جدیدتر ویندوز (مثل از ویندوز 7 به ویندوز 10 یا 11) کاربرد دارد.
[4]Shimming، یک اصطلاح فنی است که در زمینههای مختلف به کار میرود، اما به طور کلی به فرآیند قرار دادن یک لایه یا قطعه اضافی برای اصلاح، هماهنگسازی یا بهبود عملکرد چیزی اشاره دارد.
کسپرسکی آنلاین (ایدکو)
کسپرسکی اسم یکی از بزرگترین شرکتهای امنیتی و سازنده آنتی ویروس است که برخی از کاربران اشتباهاً این شرکت و محصولات آنتی ویروس آن را با عناوینی نظیر کسپرسکای،کاسپرسکی، کسپراسکای، کسپراسکای، و یا کاسپراسکای نیز میشناسد. همچنین لازم به ذکر است مدیرعامل این شرکت نیز یوجین کسپرسکی نام دارد.