محمد حسن پزشکیان
عاشق امنیت و نفوذ ، رد تیم و دوستدار بزن بکش :)

آموزش ابزار volatility به همراه نقشه ذهنی و برقه تقلب

در این مقاله به بررسی ابزار Volatility میپردازیم که روی image دامپ شده از مموری مانور میده و در حوزه Digital Forensic و Incident Handling & Response کاربرد داره میپردازیم

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

و در آخر یک فایل نقشه ذهنی(MindMap) از پلاگین های پرکاربرد این ابزار رو به همراه برقه تقلب(Cheat Sheet) برخی از دستورات این ابزار رو در اختیارتون قرار میدم، امید وارم که بدردتون بخوره :)

بعد گرفتن image از حافظه ای همون دامپ ، ما میخوایم این فایل رو انالیز کنیم و ببینیم چه سیستم عاملی در مموری (همون RAM) سیستم طرف بالا بوده و چه چیزایی توش انجام شده

معرفی و آموزش ابزار Volatility :

ما برای کار با این ابزار باید سه تا پارامتر رو براش مشخص کنیم :

1- فایل دامپ شده از مموری

2-سیستم عامل و ورژنش (OS Profle)

3- پلاگین یا ماژول (این پلاگین به ابزار میگه که دنبال چه چیزی در مموری بگرده)

با سویچ -h که برای گرفتن راهنما هست کارو شروع میکنیم :

volatility -h

خب میبینیم خیلی پلاگین داره ، در وهله اول ما با OS Profile رو مشخص کنیم ، دستور به این صورت:

volatility -f imagefile.raw imageinfo 

در دستور بالا با سویچ -f فایل دامپ شدمونو بهش دادیم و پلاگین imageinfo برای ما اطلاعات حافظرو نمایش میده

آموزش ابزار volatility به همراه نقشه ذهنی و برقه تقلب

در وهله اول باید بدونید که 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

آموزش ابزار volatility به همراه نقشه ذهنی و برقه تقلب

ولی با این پلاگین Process های مخفی مثل rootkit ها نشون داده نمیشن 

Direct Kernel Object Modification by Rootkits

آموزش ابزار volatility به همراه نقشه ذهنی و برقه تقلب

برخی از روت کیت ها میان و ساختار لیست EPROCESS رو که یک لیست دو طرفست شامل FLINK(Forward Link) و BLINK(Backward Link) هست رو عوض میکنن و خودوشونو اینطوری مخفی میکنن ، ساختار داده EPROCESS یکی از اعضا مهم ActiveProcessLinks هست و مکانیزم کاریش اینطوریه که پردازش های سیستم رو با دو پوینتر روبه جلو (FLINK) و روبه عقب (BLINK) پیدا میکنه ، روت کیت میاد و این ساختار عوض میکنه ، به نحوی که پیونتر پردازش قبل خودشو هدایت میکنه به پردازش بعد خودش ، و پوینتر پردازش بعد خودشو هدایت میکنه به پردازش قبل خودش و با اینکار تا حد خیلی زیادی اختفا خودشو حفظ میکنه

واسه اینکه این نوع بدافزار هارو شناسایی کنیم میاییم و از دو پلاگین psscan و psxview اسفتاده میکنیم :

آموزش ابزار volatility به همراه نقشه ذهنی و برقه تقلب

با این دستور ما میبینیم که کدوم پردازش در کجاها امده و در کجاها نیامده ، اگر یکی از این ستون ها 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 استفاده میکنیم :

آموزش ابزار volatility به همراه نقشه ذهنی و برقه تقلب

همونطور ک میبینید یک Process بنام csrss وجود داره که dll های متصل نشده مشکوک داره، از کجا فهمیدیم؟ در سه ستون InLoad - InInit - InMem سه تاش false برگردونده شده (system رو در نظر نگیرید)

حالا میریم سراغ پردازش هایی که کد مخرب بهشون تزریق شده ، با malfind میتونیم پیداشون کنیم :

آموزش ابزار volatility به همراه نقشه ذهنی و برقه تقلب

با استفاده از پلاگین malfind کل پردازش های سیستم مورد ازمایش قرار میگیرن ، همونطور ک توی عکس میبینید Process ای که با مستطیل سبز دورش مشخصش کردم سالمه ، ولی دوتا Process پایینی که مستطیل قرمز دارن ، در header هاشون مقدار MZ مشاهده میشه که یعنی آلوده شدن

ما میخوایم حالا این Process هارو استخراج کنیم برای آنالیز ثانویه با -D و مشخص کردن مسیر :

آموزش ابزار volatility به همراه نقشه ذهنی و برقه تقلب

در اینجا ما میتونیم dll هارو با dllist مشاهده کنیم و dll های اون Process آلوده کننده رو استخراج کنیم (با مشخص کردن pid) برای آنالیز ثانویه با dlldump و -D :

آموزش ابزار volatility به همراه نقشه ذهنی و برقه تقلب

حل یک چالش فارنزیک به وسیله Volatility :

حالا میریم سراغ حل دوتا از چالش های فارنزیک مسابقات 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 بیتی هست :

آموزش ابزار volatility به همراه نقشه ذهنی و برقه تقلب

همونطور که از ما خوسته میریم ببینیم خواهرش چی داشته رو سیستمش (چه Process هایی، پس پلاگین شد pslist ) و بعد اون هارو کنکاش میکنیم :

آموزش ابزار volatility به همراه نقشه ذهنی و برقه تقلب

سه تا Processهستن که توجه مارو جلب میکنن ، اول بریم ببینیم تو cmd چی نوشته بوده ، با پلاگین consoles میتونید بفهمید :

آموزش ابزار volatility به همراه نقشه ذهنی و برقه تقلب

میبینیم که بله، خانم یه متن encode شده تایپ کرده که به سادگی میشه فهمید base64 عه با "=" اخر استرینگ و دیکودش میکنیم

بریم سراغ فلگ دوم ، تو قسمت توضیح گفته بود یه چیزی داشته میکشیده سر همین mspaint توجه مارو جلب کرده ، واسه اینکه ببینیم چی میکشیده میتونیم مموریشو دامپ کنیم و انالیز کنیم (باید حواستون باشه که pid رو مشخص کنید ، ما با پلاگین memdump و سویچ -D کارمونو انجام میدیم) :

آموزش ابزار volatility به همراه نقشه ذهنی و برقه تقلب

بعد فرمت رو از dmp میکنیم data که بشه توسط نرم افزار های تجزیه تحلیل دیتا آنالیزش کرد ، میریم سراغ GIMP و فایلو باهاش باز میکنیم ، میبینیم یه عکس نا مفهوم میاد ، با offset بازی میکنیم تا به یه نتیجه متفاوت برسیم ، زمانی که کادر سفید شد و وسطش انگار یه چیزی نوشته شده بود با width بازی میکنیم تا متن مفهوم بشه

آموزش ابزار volatility به همراه نقشه ذهنی و برقه تقلب

فقط کافیه بچرخوندیش

میریم سراغ فلگ سوم ، با کامند های cmdscan - consoles - cmdline به جون cmd می افتیم ببینیم چیزی پیدا میکنیم که توش کلمه WinRAR امده باشه ؟

آموزش ابزار volatility به همراه نقشه ذهنی و برقه تقلب

و بله ، مسیر یه فایل رو پیدا کردیم ! اسمشم که مهمه و ...

با پلاگین filescan میریم سراغ offset فایل (به آدرس آغازین هر فایل میگن offset ، به ابتدا خود اون فایل هم میگن ، مثلا ما در فلگ دوم وقتی offset رو تغییر میدادیم مقادیر اون فایلو تغییر میدادیم ، حالا اینجا میخوایم مقادیر آدرس یه فایلو پیدا کنیم و فایلو دامپ کنیم با dumpfiles) (دقت کنید که همیشه آدرس آغازین مهمه)

آموزش ابزار volatility به همراه نقشه ذهنی و برقه تقلب

دقت کنید که سویچ -Q برای این استفاده شد که ما با offset خواستیم اون فایلو دامپ کنیم

فایل با فرمت dat هست و باید تبدیلش کنیم به rar هم با cp میتونیم هم با mv

آموزش ابزار volatility به همراه نقشه ذهنی و برقه تقلب

بعد بازکردن فایل rar میبینیم که زارت ، به خشکی شانس، رمز داره ، ولی یه کامنت داره و نوشته پسورد حساب آیسا خانم NTLM هست ، خب بریم که با hashdump هش رو بگیریم و به عنوان پسورد تستش کنیم :

آموزش ابزار volatility به همراه نقشه ذهنی و برقه تقلب

هش هایی که ویندوز میگیره دو نوع هست: LANMAN - NTLM ، هش LANMAN که با رنگ سبز نشونش دادم خیلی ضعیفه و از ویندوز ویستا به بعد دیگ استفاده نمیشه ، هش نوع دومم ک NTLM هست یکم بهتره نسبت به LANMAN ولی بازم نا امنه و میشه کرکش کرد

بریم این هشو تست کنیم به عنوان پسورد (البته باید توجه کنید که با حروف بزرگ بزنیدش)

و یه عکس ما درمیاریم که فلگ سومه :)

و در آخر از ما خواسته که ببینیم خواهرش چند بار پینتو باز کرده و چند دقیقه توش بوده ، راحت با userassist میشه فهمیدش :

آموزش ابزار volatility به همراه نقشه ذهنی و برقه تقلب


نقشه ذهنی (MindMap) و برقه تقلب (Cheat Sheet) ابزار Volatility :

چون دستورات و پلاگین های این ابزار خیلی زیاده من تصمیم گرفتم یه نقشه ذهنی به همراه برقه تقلب این ابزارو اماده کنم

لینک گیت هاب فایل Xmind

آموزش ابزار volatility به همراه نقشه ذهنی و برقه تقلب

امید وارم براتون مفید واقع شده باشه ، سوالی چیزی بوددر خدمتم :)



محمد حسن پزشکیان
محمد حسن پزشکیان

عاشق امنیت و نفوذ ، رد تیم و دوستدار بزن بکش :)

کارشناس تست نفوذ سنجی ، علاقه مند به امنیت تهاجمی و رد تیمینگ | عضو انجمن بین المللی ورزش های رزمی کشور آلمان و دارای احکام بین المللی و داخلی کمربند مشکی در سبک های کیوکوشین ، هاپکیدو ، کیک بوکسینگ و چند تام قهرمانی کشوری

نظرات