سلام مجدد خدمت دوستان بریم برای قسمت دوم چالش memlab (قسمت قبلی را اینجا بخوانید)
راهحل بدست آوردن Flag2
با دستور زیر شروع میکنیم؟
volatility -f MemmoryDump_Lab1.raw –profile=Win7SP1x86 pslist
خب تو قسمت قبلی با هم دیدیم که با دستور pslist میشه لیست processهای سیستم رو ببینیم. اینجا یک process داریم که برای Paint هستش میریم تا Dump کنیمش.
volatility -f MemoryDump_Lab1.raw --profile Win7SP1x64 memdump -p 2424 -D .
دستور memdump درواقع میادprocess اون pid که ما بهش میدیم رو به صورت کامل dump می کنه . و D- هم مسیر خروجی ما رو که می خواییم فایل در اون ذخیره بشه مشخص می کنه.
خب توی خروجی به ما یک فایل داده میشه با پسوند dmp که باید اون رو برای اینکه بتونیم بخونیم به پسوند data تبدیلش کنیم . چون می خوایم فایل عکسی که در paint بوده رو ببینیم و ساختار Raw image data داره این تبدیل رو انجام می دیم(البته لینوکس با extension فایل ها کاری نداره ولی چون نرم افزار می خواد بازش کنه این کار رو انجام می دیم.)
فایلمون رو با نرم افزار GIMP باز می کنیم.
حالا با یکمی حوصله و صبر باید مقادیر offset ، width ، Height را با آزمون و خطا بدست بیارم مثل تصویر زیر.
همون طور که میبینید ما الان عکس رو داریم ولی به صورت وارونه که با برگردوندنش می رسیم به flag مون.
راهحل بدست آوردن Flag3
خوب بریم سراغ flag بعدی این Lab1
volatility --profile=Win7SP1x64 -f MemoryDump_Lab1.raw cmdline
دستور cmdline لیست دستوراتی که زده شده رو به ما نمایش می ده . البته یه دستور دیگه هم داریم که این کار رو برامون انجام می ده که یکم تفاوت و اون consoles هست که CONSOLE_INFORMATION رو اسکن می کنه که تفاوت این دو رو تو سریای دیگه و تو جاش بهتون توضیح می دم.
خب تو اینجا می بینیم که یک فایل rar. توسط ابزار winrar.exe ساخته شده . بریم ببینیم توش چی هست.
برای dump کردن این فایل باید از دستور dumpfiles استفاده کنیم که ورودی دستور با memdump فرق داره. memdump از ما pid رو می گرفت ولی dumpfilesfile از ما offset فایل رو می خواد.
به صورت ساده می تونیم بگیم offset محل وجود فایل ما رو تو memory مشخص می کنه.
حالا باید offset فایلمون رو پیدا کنیم . از دستور filescan برای این کار استفاده می کنم و خروجی رو می دم به grep که راحت تر بتونم چیزی رو که می خوام پیدا کنم.
volatility --profile=Win7SP1x64 -f MemoryDump_Lab1.raw filescan | grep "Important"
تو خروجی ون قسمتی که اول نوشته شده offset فایل تو memory هستش چیزی که ما برای ورودی دستور dumpfile می خواستیم.
volatility -f MemoryDump_Lab1.raw --profile=Win7SP1x64 dumpfiles -Q 0x000000003fa3ebc0 -D .
حالا می بینیم که یک فایل داریم با پسوند dat.که با دستور file تو لینوکس نوع اون رو میبینیم که rar هستش .
حالا اول rename می کنیمش به Important.rar و بعد سعی می کنیم unrar کنیمش.
unrar x Important.rar
خوب میبینیم که flag اینجاست و Password هم داره. اگر دقت کنیم میگه پسور کاربر Alissa رو میخواد (به صورت uppercase).
بریم برای درآوردن پسور. شما می تونید با پلاگین hashdump تو volatility پسورد های hash شده سیستم عامل ویندوز رو دربیارید (یوزرهایی که تو سیستم عامل وجود دارن “Local account”).
volatility -f MemoryDump_Lab1.raw --profile=Win7SP1x64 hashdump
حالا شما می تونید با هرچی حروف کوچیکاشو بکنید حروف بزرگ من با awk این کار رو انجام می دم.
echo "f4ff64c8baac57d22f22edc681055ba6" | awk '{print toupper($0)}'
حالا uppercase پسوردمون میشه این F4FF64C8BAAC57D22F22EDC681055BA6
اینم از flag3.
تو چالش بعدی lab های دیگه memlab رو براتون می زارم.
تا flag بعدی صبور باشید. منابع:
https://github.com/volatilityfoundation/volatility
https://www.sans.org/course/advanced-memory-forensics-and-threat-detection
https://github.com/teambi0s/MemLabs
با تشکر از مهندس راستیدوست.
به این اعتقاد دارم که هرچقدر سکوت کنی بهتر می شنوی