در این مقاله به بررسی ابزار Volatility میپردازیم که روی image دامپ شده از مموری مانور میده و در حوزه Digital Forensic و Incident Handling & Response کاربرد داره میپردازیم
و در آخر یک فایل نقشه ذهنی(MindMap) از پلاگین های پرکاربرد این ابزار رو به همراه برقه تقلب(Cheat Sheet) برخی از دستورات این ابزار رو در اختیارتون قرار میدم، امید وارم که بدردتون بخوره :)
بعد گرفتن image از حافظه ای همون دامپ ، ما میخوایم این فایل رو انالیز کنیم و ببینیم چه سیستم عاملی در مموری (همون RAM) سیستم طرف بالا بوده و چه چیزایی توش انجام شده
ما برای کار با این ابزار باید سه تا پارامتر رو براش مشخص کنیم :
1- فایل دامپ شده از مموری
2-سیستم عامل و ورژنش (OS Profle)
3- پلاگین یا ماژول (این پلاگین به ابزار میگه که دنبال چه چیزی در مموری بگرده)
با سویچ -h که برای گرفتن راهنما هست کارو شروع میکنیم :
volatility -h
خب میبینیم خیلی پلاگین داره ، در وهله اول ما با OS Profile رو مشخص کنیم ، دستور به این صورت:
volatility -f imagefile.raw imageinfo
در دستور بالا با سویچ -f فایل دامپ شدمونو بهش دادیم و پلاگین imageinfo برای ما اطلاعات حافظرو نمایش میده
در وهله اول باید بدونید که KDBG میشه Kernel Debugging Data Block تا همین حد بیشتر نیاز نیست بدونید که یک ساختار دادس که توسط هسته ویندوز نگهداری میشه برای مباحث دیباگینگ و شامل لیست Process هایی هست که لود شدن و یا در حال اجران
ابزار volatility میاد و بر اساس KDBG ساختار سیستم عاملی که درون RAM فعالیت میکرده رو شناسایی میکنه ، پروفایل هایی که شناخته چند تا سیستم عامله که ابزار Volatility میاد و اون سیستم عاملیو که بیشترین احتمالو میده رو میزاره اول ، در اینجا ویندوز xp سرویس پک دو 32 بیتی اولینه که با فلش قرمز مشخص شده ، مورد بعد KDBG عه که با فلش نارنجی مشخص شده و اطلاعات دیگه ای مشخص شده که میتونید مشاهده کنید مثل تاریخ زنده سیستم عامل و تاریهی که ایمیج گرفته شده که با فلش سبز مشخصه
چند تا نکته :
1 - میتونید برای هر چیزی که این مرحله بدست آوردید یک متغییر تعریف کنید و خودتونو از تایپ مجدد همه این اطلاعات راحت کنید ، مثلا
vol_kdbg = "0x80545ae0"
2 - استفاده از مقدار KDBG در اخر دستور ضروری نیست ولی استفادش در اخر هر دستور میتونه برای پلاگین هایی که بهش نیاز دارن مفید باشه و باعث افزایش سرعت کار بشه :)
3- میتونید پروفایل رو ساده مثل من بنویسید ، یا میتونید از سویچ --profile استفاده کنید (بعضی جاها لازم میشه)
--profile
4- میتونید پلاگینو قبل تایپ کنید یا بعدش فرقی نداره :)
قدم بعدی لیست کردن Process های ویندوزه که با پلاگین pslist میتونیم اینکارو انجام بدیم :
Volatility -f image.raw Profile pslist
ولی با این پلاگین Process های مخفی مثل rootkit ها نشون داده نمیشن
Direct Kernel Object Modification by Rootkits
برخی از روت کیت ها میان و ساختار لیست EPROCESS رو که یک لیست دو طرفست شامل FLINK(Forward Link) و BLINK(Backward Link) هست رو عوض میکنن و خودوشونو اینطوری مخفی میکنن ، ساختار داده EPROCESS یکی از اعضا مهم ActiveProcessLinks هست و مکانیزم کاریش اینطوریه که پردازش های سیستم رو با دو پوینتر روبه جلو (FLINK) و روبه عقب (BLINK) پیدا میکنه ، روت کیت میاد و این ساختار عوض میکنه ، به نحوی که پیونتر پردازش قبل خودشو هدایت میکنه به پردازش بعد خودش ، و پوینتر پردازش بعد خودشو هدایت میکنه به پردازش قبل خودش و با اینکار تا حد خیلی زیادی اختفا خودشو حفظ میکنه
واسه اینکه این نوع بدافزار هارو شناسایی کنیم میاییم و از دو پلاگین psscan و psxview اسفتاده میکنیم :
با این دستور ما میبینیم که کدوم پردازش در کجاها امده و در کجاها نیامده ، اگر یکی از این ستون ها false باشه ،به ما سرنخی میده که بریم سراغ اون Process و ببینیم چرا اونجاها نیامده؟ برای مثال اینجا csrss خیلی مشکوکه (csrss اسم بدافزاره نیست و یک Process سیستمیه ، یعنی مال خود ویندوزه و معتبره ولی اینجا آلوده شده) !!
یکی از تکنیک های بدافزار ها اینه که بیان و DLL های الوده ای که دارن رو مخفی کنن به وسیله unlink یا جدا کردن DLL از Process Environment Block (PEB) ، هرچند باز میشه آثار جرمو از Virtual Address Descriptor (VAD) پیدا کرد ، پلاگین ldrmodules میاد و لیست Process هارو بررسی میکنه و میبینه که ایا توی PEB هستن یا خیر و به این وسیله شما میفهمید که آیا اون Process امده و DLL هاشو مخفی کنه یا نه !
یه مثال ریز برای درک بهتر این موضوع بزنم : فرض کنید شما دزدی وارد یک عروسی شدید و نشستید رو صندلی ، طبعیتا وقتی برای بقیه شام میارن برای شما هم میارن ، ولی شما به صورت قانونی توی لیست نبودید ! چطوری میتونن این موضوع رو بفهمن که کی بوده و کی نبوده ؟ یه لیست از مهمون های دعوتی و یه لیست از مهمون های حاضر میگیرن و میفهمن عه مثلا یکی این وسط اضافی و زیادیه ، دقیقا جریان برای بدافزار هام همینه ، یه Process میاد تو سیستم و اطلاعاتشو به PEB نمیده و از EPROCESS فرار میکنه ولی قانونا منابع سیستمو مصرف میکنه (همون شام خوردنه) و تنها راه پیدا کردن این ها اینه که در زمانی که Memory اطلاعات توش هست ازش دامپ گرفته بشه و آنالیز بشه
پس واسه پیدا کردن unlinked DLLs میاییم و از ldrmodules استفاده میکنیم :
همونطور ک میبینید یک Process بنام csrss وجود داره که dll های متصل نشده مشکوک داره، از کجا فهمیدیم؟ در سه ستون InLoad - InInit - InMem سه تاش false برگردونده شده (system رو در نظر نگیرید)
حالا میریم سراغ پردازش هایی که کد مخرب بهشون تزریق شده ، با malfind میتونیم پیداشون کنیم :
با استفاده از پلاگین malfind کل پردازش های سیستم مورد ازمایش قرار میگیرن ، همونطور ک توی عکس میبینید Process ای که با مستطیل سبز دورش مشخصش کردم سالمه ، ولی دوتا Process پایینی که مستطیل قرمز دارن ، در header هاشون مقدار MZ مشاهده میشه که یعنی آلوده شدن
ما میخوایم حالا این Process هارو استخراج کنیم برای آنالیز ثانویه با -D و مشخص کردن مسیر :
در اینجا ما میتونیم dll هارو با dllist مشاهده کنیم و dll های اون Process آلوده کننده رو استخراج کنیم (با مشخص کردن pid) برای آنالیز ثانویه با dlldump و -D :
حالا میریم سراغ حل دوتا از چالش های فارنزیک مسابقات CTF و با این ابزار حلش میکنیم :
My sister’s computer crashed. We were very fortunate to recover this memory dump. Your job is get all her important files from the system. From what we remember, we suddenly saw a black window pop up with some thing being executed. When the crash happened, she was trying to draw something. Thats all we remember from the time of crash.
and i'll be glad if you tell me how many times she opend paint and how much
Note: This challenge is composed of 3 flags
اول میریم سراغ OS Profile و میبینیم که ویندوز7 سرویس پک یک 64 بیتی هست :
همونطور که از ما خوسته میریم ببینیم خواهرش چی داشته رو سیستمش (چه Process هایی، پس پلاگین شد pslist ) و بعد اون هارو کنکاش میکنیم :
سه تا Processهستن که توجه مارو جلب میکنن ، اول بریم ببینیم تو cmd چی نوشته بوده ، با پلاگین consoles میتونید بفهمید :
میبینیم که بله، خانم یه متن encode شده تایپ کرده که به سادگی میشه فهمید base64 عه با "=" اخر استرینگ و دیکودش میکنیم
بریم سراغ فلگ دوم ، تو قسمت توضیح گفته بود یه چیزی داشته میکشیده سر همین mspaint توجه مارو جلب کرده ، واسه اینکه ببینیم چی میکشیده میتونیم مموریشو دامپ کنیم و انالیز کنیم (باید حواستون باشه که pid رو مشخص کنید ، ما با پلاگین memdump و سویچ -D کارمونو انجام میدیم) :
بعد فرمت رو از dmp میکنیم data که بشه توسط نرم افزار های تجزیه تحلیل دیتا آنالیزش کرد ، میریم سراغ GIMP و فایلو باهاش باز میکنیم ، میبینیم یه عکس نا مفهوم میاد ، با offset بازی میکنیم تا به یه نتیجه متفاوت برسیم ، زمانی که کادر سفید شد و وسطش انگار یه چیزی نوشته شده بود با width بازی میکنیم تا متن مفهوم بشه
فقط کافیه بچرخوندیش
میریم سراغ فلگ سوم ، با کامند های cmdscan - consoles - cmdline به جون cmd می افتیم ببینیم چیزی پیدا میکنیم که توش کلمه WinRAR امده باشه ؟
و بله ، مسیر یه فایل رو پیدا کردیم ! اسمشم که مهمه و ...
با پلاگین filescan میریم سراغ offset فایل (به آدرس آغازین هر فایل میگن offset ، به ابتدا خود اون فایل هم میگن ، مثلا ما در فلگ دوم وقتی offset رو تغییر میدادیم مقادیر اون فایلو تغییر میدادیم ، حالا اینجا میخوایم مقادیر آدرس یه فایلو پیدا کنیم و فایلو دامپ کنیم با dumpfiles) (دقت کنید که همیشه آدرس آغازین مهمه)
دقت کنید که سویچ -Q برای این استفاده شد که ما با offset خواستیم اون فایلو دامپ کنیم
فایل با فرمت dat هست و باید تبدیلش کنیم به rar هم با cp میتونیم هم با mv
بعد بازکردن فایل rar میبینیم که زارت ، به خشکی شانس، رمز داره ، ولی یه کامنت داره و نوشته پسورد حساب آیسا خانم NTLM هست ، خب بریم که با hashdump هش رو بگیریم و به عنوان پسورد تستش کنیم :
هش هایی که ویندوز میگیره دو نوع هست: LANMAN - NTLM ، هش LANMAN که با رنگ سبز نشونش دادم خیلی ضعیفه و از ویندوز ویستا به بعد دیگ استفاده نمیشه ، هش نوع دومم ک NTLM هست یکم بهتره نسبت به LANMAN ولی بازم نا امنه و میشه کرکش کرد
بریم این هشو تست کنیم به عنوان پسورد (البته باید توجه کنید که با حروف بزرگ بزنیدش)
و یه عکس ما درمیاریم که فلگ سومه :)
و در آخر از ما خواسته که ببینیم خواهرش چند بار پینتو باز کرده و چند دقیقه توش بوده ، راحت با userassist میشه فهمیدش :
چون دستورات و پلاگین های این ابزار خیلی زیاده من تصمیم گرفتم یه نقشه ذهنی به همراه برقه تقلب این ابزارو اماده کنم
امید وارم براتون مفید واقع شده باشه ، سوالی چیزی بوددر خدمتم :)
عاشق امنیت و نفوذ ، رد تیم و دوستدار بزن بکش :)
کارشناس تست نفوذ سنجی ، علاقه مند به امنیت تهاجمی و رد تیمینگ | عضو انجمن بین المللی ورزش های رزمی کشور آلمان و دارای احکام بین المللی و داخلی کمربند مشکی در سبک های کیوکوشین ، هاپکیدو ، کیک بوکسینگ و چند تام قهرمانی کشوری
زمان پاسخ گویی روز های شنبه الی چهارشنبه ساعت 9 الی 18
فقط به موضوعات مربوط به محصولات آموزشی و فروش پاسخ داده می شود