Memlabs یک مجموعه آموزشی مقدماتی به سبک CTF است که توسط teambi0s ساختهشده است که برای شروع کار درزمینه Memory Forensics بسیار عالی میباشد. من میخوام که تمام چالشهای این Lab رو در چند قسمت براتون بزارم.با این چالش همراه ما باشید. اول از همه شاید از خودتون بپرسید چرا باید Memory Forensic یاد بگیریم.
باید بهتون بگم که واقعاً داشتن دانش Forensic هم برای کسایی که جرائم سایبری کارمیکنن خوبه هم برای هکرهای کلاهسفید چون با روند کار سیستمعاملها و ردپاهایی که از مهاجمها می مونه آشنا میشی و Memory Forensic هم که یکی از زیباترین مباحث در حوزه Forensic هست که شما رو به اعماق حافظه سیستم می بره تا ببینید اونجا از مهاجم ها چه اطلاعاتی وجود داره که با هم کم کم می بینیم.
معرفی ابزار Volatility
یکی از بهترین ابزارها درزمینهٔ Memory Forensic ،Volatility میباشد. این ابزار که با زبان python نوشتهشده است برای کشف بدافزار استفاده میشود.
حل پیکار
بریم سراغ challenge تا بیشتر با این ابزار فوقالعاده آشنا بشیم (لینک پیکار).
خلاصه این چالش به ما میگه که کامپیوتر خواهرم خراب شده ولی ما خوش شانس بودیم که یه memory dump قبل از crash کردن سیستم از اون داشتیم .و از ما 3 تا flag می خواد.
خب ما این فایل dump رو دانلود می کنیم کارمون و شروع می کنیم. ابتدا با توجه به ساختار کاری volatility ما نیاز به شناخت profile مربوط به این memory داریم. در زبان ساده باید برای volatility مشخص کنیم که این فایل مربوط به چه سیستم عاملی هست. بریم یکم تخصصیتر برسی کنیم.
پروفایل volatility
Profile مجموعهای از VTypes ها، overlaysها و object classهای یک نسخه خاص سیستمعامل و همچنین معماری سختافزاری اون سیستمعامل میباشد. علاوه بر این مؤلفهها یک پروفایل شامل موارد زیر هم هست:
- Metadata
- System call information
- Constant values
- Native types
- System map
یه پروفایل شامل یک نام unique میشه که مواردی مثل نام سیستمعامل، version،service pack و معماری اون image میشه که تهیهشده. برای مثال Win7SP1x64
Volatility برای سیتم عامل ویندوز خیلی خوب کار میکنه چون خودش کلی پروفایل از قبل تهیهشده برای انواع نسخهها داره ولی برای لینوکس و iOS و غیره باید پروفایل بسازیم که امیدوارم در یک مقاله دیگه بهتون توضیح بدمش.
خوب حالا بریم ببینیم profile این image چیه. برای این کار از دستور imageinfo استفاده میکنیم.
volatility -f MemmoryDump_Lab1.raw imageinfo
با زدن این دستور نوع پروفایلی که این ایمج داره مشخص میشه که اینجا برای ما Win7SP1x64 شده. چندتا نکته رو خوبه اینجا بدونیم:
- یکی اینکه اگر داریم با volatility کار میکنیم و image ما هم XP هستش نیازی به پیدا کردن Profile نیست (دستور imageinfo)
- دومی اینکه اصلاً این دستور از کجا profile رو تشخیص میده.
تو Memory یه قسمتی وجود داره به نام (KDBG(Kernel Debugger Data Block که Volatility این اطلاعات رو از اینجا میاره (داخل image ما هم هست)
این قسمت شامل اطلاعات زیادی ازجمله:
- لیست processها
- لیست driverها
- لیست page frameها
- لیست service patchها
- سوم اینکه KDBG در ویندوز 8.1 به بعد Encrypt شده (که البته volatility بازهم می تونه بخونتش نگران نباشید)
خوب حالا که فهمیدیم KDBG چیه و profile چیه میریم سراغ دستورات دیگه
دستور pslist
این دستور لیست process های فعال رو سیستم رو بهمون نشون می ده
البته باید یادمون باشه از این قسمت به بعد باید profile ای که در مرحله قبل پیدا کردیم رو هم تو دستورمون استفاده کنیم.
volatility -f MemmoryDump_Lab1.raw –profile=Win7SP1x86 pslist
که میبینیم cmd.exe در حال اجرا بوده. چند تا نکته
- اول اینکه اگر تو قسمت Exit خروجی دستور pslist زمانی مشخصشده بود اون زمان پایان process بوده و نشون میده در اون زمانی که dump گرفتهشده پروسه بستهشده بوده.
- دوم اینکه این دستور فقط اون پروسههایی رو میاره که Eprocess داشته باشن
Eprocess تگی هست که kernel بر روی process می زنه و شامل شروع و پایان process میشه
بعضی از برافزاها برای جلوگیری از شناسایی کاری می کنن که Etag نمگیرن که البته تو این چالش ما استفاده نمیشه.
دستور consoles
برای اینکه ببینیم که از چه دستوراتی استفادهشده از دستور زیر استفاده میکنیم.
volatility -f MemmoryDump_Lab1.raw –profile=Win7SP1x86 consoles
این لیست دستوراتی که تو این سیستم زدهشده و این هم یه کد base64 که اولین flag ماست.
تا flag بعدی صبور باشید. منابع:
https://github.com/volatilityfoundation/volatility
https://www.sans.org/course/advanced-memory-forensics-and-threat-detection
https://github.com/teambi0s/MemLabs
با تشکر از مهندس راستیدوست.
به این اعتقاد دارم که هرچقدر سکوت کنی بهتر می شنوی
[…] سلام مجدد خدمت دوستان بریم برای قسمت دوم چالش memlab (قسمت قبلی را اینجا بخوانید) […]