تارا فایل

پاورپوینت جرم یابی قانونی دیجیتال


جرم یابی قانونی دیجیتال

فهرست
تعریف جرم یابی قانونی دیجیتال
انواع جرم یابی قانونی دیجیتال
جرم یابی قانونی دیسک
جرم یابی قانونی شبکه
جرم یابی قانونی حافظه
پاسخ گویی زنده (معرفی ابزارهای جمع آوری اطلاعات فرار از حافظه)
معرفی متدولوژی های پاسخ گویی زنده
معرفی ابزارهای تحلیل اطلاعات جمع آوری شده

جرم یابی قانونی دیجیتال
Digital forensics, Computer forensics
علم بازرسی جرایم کامپیوتری
استخراج، محافظت و تحلیل مدارک دیجیتال به دست آمده از وسایل الکترونیکی
شامل فایل های روی دیسک سخت، ایمیل ها، ترافیک شبکه، کپی حافظه و غیره
قابل ارائه به مرجع قانونی

جرم یابی قانونی دیجیتال
اهداف:
تحلیل چگونگی رخداد حمله، اشخاص درگیر، مدت سوءاستفاده و متدولوژی به کار گرفته شده در حمله
هدف نهایی: فراهم کردن مدارک کافی برای تعقیب قانونی مرتکبین حمله
پی آمدها
نیاز به صرف زمان، انرژی و هزینه بیشتر
محتاط تر شدن مجرمان دیجیتال برای جلوگیری از تعقیب قانونی
کاهش جرم های دیجیتال و بهبود امنیت

جرم یابی قانونی دیجیتال
جرم یابی قانونی دیسک
جرم یابی قانونی شبکه
جرم یابی قانونی حافظه

جرم یابی قانونی دیسک
علم استخراج اطلاعات جرم یابی قانونی از کپی گرفته شده از دیسک سخت
بازیابی فایل ها از کپی دیسک سخت
بازیابی فایل های حذف شده از کپی دیسک سخت با تکنیک های حکاکی
ابزار foremost، scalpel، pyflag و …
کسب اطلاعات درباره ی برخی مقادیر رجیستری، فایل های ثبت و فایل های پنهان شده

جرم یابی قانونی شبکه
علم دریافت، ثبت و تحلیل ترافیک شبکه برای تشخیص نفوذ و ردیابی آن
تحلیل فایل ترافیک ضبط شده شبکه (pcap)
استخراج بسته های مختلف از آن
دوباره یکپارچه کردن بسته های TCP داخل جریان ها (streamها)
بسته های دو بار ارسال شده، بسته های خارج از ترتیب دریافت شده و غیره
تشریح کردن جریان های به دست آمده با پروتکل های لایه بالا مانند http، ftp، smtp، pop3 و غیره
استخراج اطلاعات سطح بالا از آن مانند صفحات وب ملاقات شده
ابزار Wireshark، Pyflag و …

جرم یابی قانونی حافظه
جمع آوری اطلاعات درباره ی حالت سیستم در حال اجرا
جمع آوری اطلاعات فرار از حافظه شامل
پردازه ها و فایل های در دسترس سیستم، اتصالات شبکه ی سیستم و پردازه های مسئول این اتصالات
تحلیل پس از واقعه
تحلیل اطلاعات جمع آوری شده با ابزارهای مختلف بخصوص تحلیل محتوای حافظه فیزیکی

مرتبه ی فراریت
برخی از انواع اطلاعات فرار روی یک سیستم زنده از بقیه عمر کوتاه تری دارند.
زمان سیستم بسیار سریع تغییر می کند.
محتوای کلیپ بورد تا خاموش شدن سیستم ثابت باقی می ماند.
اتصالات شبکه در صورت استفاده نشدن، در عرض چند دقیقه منقضی می شوند.
برخی پردازه ها مانند سرویس ها برای مدت طولانی اجرا می شوند.
برخی دیگر از پردازه ها ممکن است عمر بسیار کوتاهی داشته باشند.

اطلاعات فرار
زمان سیستم
محتوای حافظه ی فیزیکی
جزئیات سیستم
کاربر(های) وارد شده
اطلاعات و اتصالات شبکه
اطلاعات پردازه
نگاشت پردازه به پورت
اطلاعات سرویس/درایور
فایل های باز شده
تاریخچه ی دستور
فایل های به اشتراک گذارده شده
کارهای زمان بندی شده
محتوای کلیپ بورد

زمان سیستم
ابزارهای date و time
مقایسه با یک منبع زمانی موثق
شناسایی هر اختلاف زمانی بین یکی از محصولات یافته شده در سیستم با این زمان
هنگام بررسی بیشتر از یک سیستم، آگاهی از اختلاف زمانی بین آنها

جزئیات سیستم
شناسه های سیستم
نام میزبان: hostname
کاربر جاری: whoami
آدرس IP و اطلاعات شبکه: ipconfig/all
اطلاعاتی درباره ی کارت های واسط شبکه شامل وضعیت کارت واسط شبکه، فعال یا غیرفعال بودن DHCP، آدرس IP کارت واسط شبکه، آدرس فیزیکی و غیره

جزئیات سیستم
محیط سیستم:
اطلاعات محیط سیستم شامل نسخه ی سیستم عامل، سرویس پک و سخت افزار
ابزار 1psinfo
System information for SOLTANI-PC:
Uptime: 0 days 1 hour 7 minutes 24 seconds
Kernel version: Windows 7 Ultimate, Multiprocessor Free
Product type: Professional
Product version: 6.1
Service pack: 1
Kernel build number: 7601
Registered organization:
Registered owner: soltani
IE version: 9.0000
System root: D:Windows
Processors: 2
Processor speed: 2.4 GHz
Processor type: Intel(R) Core(TM)2 Duo CPU T9300 @
Physical memory: 3070 MB
Video driver: NVIDIA GeForce 8400M GS

جزئیات سیستم
مدت اجرای سیستم:
آگاهی از طول مدت اجرای سیستم در مقایسه با میزان زمان اجرای پردازه ی مشکوک، می تواند زمان انجام سوء استفاده را تا حدودی مشخص کند.
ابزار uptime1 و در ویندوز 7 در Task manager

کاربران وارد شده
ابزار Psloggedon1
نام کاربران محلی وارد شده به سیستم و کاربران وارد شده از راه دور

کاربران وارد شده
دستور net sessions
دستور بومی ویندوز
مشاهده ی نام کاربری افراد وارد شده از راه دور به سیستم و آدرس IP آنها

اتصالات شبکه
اطلاعاتی درباره ی اتصالات شبکه به / از سیستم قربانی
برنامه netstat
ابزار بومی خط فرمان ویندوز
سوئیچ های -ano: نمایش اتصالات TCP و UDP، پورت های گوش کننده و شناسه ی پردازه های مرتبط به این اتصالات

اتصالات NetBIOS
کسب اطلاعات درباره ی کامپیوترهای متصل به سیستم جاری از طریق پروتکل NetBIOS
NetBIOS سرویس های مختلفی مانند اشتراک فایل و پرینتر ارائه می دهد
هر کامپیوتر پیکربندی شده با NetBIOS، دارای نامی یکتا برای ارتباط با دیگران می باشد.
name cache NetBIOS روی یک سیستم، بخشی از حافظه ی سیستم است که شامل نگاشت نام های NetBIOS و آدرس های IP سایر کامپیوترهایی است که با سیستم جاری ارتباط NetBIOS داشته اند.
Nbtstat -c، محتوای name cache NetBIOS را نشان می دهد.

پرس وجوهای DNS
بسیاری از بدافزارها برای یافتن سوء استفاده های بیشتر، پیوستن به یک ساختار دستور و کنترل، یا دریافت دستور از مهاجم، دارای قابلیت اتصال شبکه می باشند.
اغلب اوقات، کد بدافزار شامل دستورات اتصال به نام های دامنه ی خاصی می باشد، که برنامه به پرس وجو برای یافتن آدرس IP متناظر می پردازد.
برای جمع آوری پرس وجوهای DNS ساخته شده توسط سیستم میزبان می توان از دستور ipconfig/displaydns استفاده نمود.

اطلاعات پردازه
نام و شناسه ی پردازه
مسیر کامل به کپی اجرایی (فایل .exe)
خط فرمان استفاده شده برای فراخوانی پردازه (در صورت وجود)
میزان زمان در حال اجرای پردازه
ماژول های بار شده توسط پردازه
دستگیره های مرتبط به پردازه
محتوای حافظه ی پردازه

ابزارهای مرتبط با پردازه
tlist 1
tasklist
2pslist
Listdlls3

1 (http://www.microsoft.com/whdc/devtools/debugging/default.mspx)
2 (http://technet.microsoft.com/en-us/sysinternals/bb896682.aspx)
3 (http://technet.microsoft.com/en-us/sysinternals/bb896655.aspx)

ابزارهای مرتبط با پردازه
ابزار tlist
جزئی از مجموعه ابزارهای اشکال زدایی مایکروسافت
سوئیچ –v: اطلاعاتی شامل شناسه ی نشست، شناسه ی پردازه، نام پردازه، سرویس های مرتبط و خط فرمان استفاده شده برای فراخوانی پردازه

$ tlist -v
0 344 svchost.exe Svcs: LmHosts,SSDPSRV,WebClient
Command Line: C:WINDOWSSystem32svchost.exe -k LocalService

ابزارهای مرتبط با پردازه
ابزار tlist
سوئیچ –t: هر پردازه را زیر پردازه ی والدش فهرست می کند
$ tlist –t
system (4)
smss.exe (628)
csrss.exe (772)
winlogon.exe (1056)
services.exe (1100)
svchost.exe (1296)
svchost.exe (1344)

ابزارهای مرتبط با پردازه
ابزار tasklist
برنامه ی بومی سیستم عامل ویندوز
سوئیچ –v: اطلاعاتی شامل نام کپی، شناسه ی پردازه، نام و شماره ی نشست برای پردازه، میزان حافظه، وضعیت پردازه، نام کاربری اجرا کننده، زمان CPU و عنوان پنجره در صورت وجود رابط گرافیکی
$tasklist -v
Image Name PID Session Name Session# Mem Usage Status User Name CPU Time Window
============= ==== =========== ======= ========= ====== ========== ======= ========
WINWORD.EXE 5468 Console 1 65,224 K Running soltani-PCsoltani 0:00:45 APA report- Windows Memory Forensics [Compatibility Mode] – Microsoft Wo

ابزارهای مرتبط با پردازه
ابزار pslist
نمایش اطلاعاتی شامل نام، شناسه ی پردازه، اولویت، تعداد نخ ها، تعداد دستگیره ها، مقدار زمان اجرای پردازه و غیره
$ pslist
Name Pid Pri Thd Hnd Priv CPU Time Elapsed Time
System 4 8 101 862 48 0:03:03.067 4:55:23.875
smss 252 11 3 31 288 0:00:00.046 4:55:23.766
csrss 340 13 9 1019 2500 0:00:04.789 4:55:18.555
wininit 384 13 3 84 1192 0:00:00.343 4:55:16.527
csrss 400 13 11 433 13884 0:00:20.482 4:55:16.527
services 448 9 8 286 5480 0:00:06.801 4:55:16.356
lsass 464 9 8 963 4452 0:00:14.289 4:55:16.309
lsm 472 8 12 214 1856 0:00:00.156 4:55:16.309
svchost 588 8 11 378 3128 0:01:37.937 4:55:15.810
nvvsvc 648 8 3 39 648 0:00:00.015 4:55:15.591
svchost 684 8 11 416 3900 0:00:02.168 4:55:15.576
svchost 744 8 23 641 17368 0:00:08.689 4:55:15.545
svchost 776 8 36 846 84844 0:02:08.326 4:55:15.513
svchost 816 8 54 1596 29600 0:00:37.190 4:55:15.467
winlogon 912 13 5 122 1904 0:00:00.546 4:55:14.921

ابزارهای مرتبط با پردازه
ابزار listdlls
نمایش ماژول ها یا DLL های مورد استفاده پردازه ها
شناسایی و درک DLLهای فراخوانی شده توسط یک پردازه ی مشکوک، می تواند تا حدودی ماهیت و هدف پردازه را مشخص کند.
firefox.exe pid: 5104
Command line: "D:Program FilesMozilla Firefoxfirefox.exe"

Base Size Path
0x00f20000 0xe1000 D:Program FilesMozilla Firefoxfirefox.exe
0x772a0000 0x13c000 D:WindowsSYSTEM32ntdll.dll
0x758a0000 0xd4000 D:Windowssystem32kernel32.dll
0x754b0000 0x4a000 D:Windowssystem32KERNELBASE.dll
0x757c0000 0xc9000 D:Windowssystem32USER32.dll
0x771f0000 0x4e000 D:Windowssystem32GDI32.dll
0x77410000 0xa000 D:Windowssystem32LPK.dll

اطلاعات سرویس/درایور
سرویس ها و درایورها هنگام آغاز به کار سیستم، به طور خودکار بر اساس ورودی های رجیستری راه اندازی می شوند و نیازی به تعامل کاربر ندارند.
برخی بدافزارها خودشان را به عنوان یک سرویس یا حتی یک درایور روی سیستم نصب می کنند.
ابزار 1psservice
اطلاعاتی شامل نام سرویس، نام نمایش، شرح مختصری درباره ی سرویس، گروه، نوع و وضعیت سرویس
SERVICE_NAME: Audiosrv
DISPLAY_NAME: Windows Audio
Manages audio for Windows-based programs. If this service is stopped, audio devices and effects will not function properly. If this service is disabled, any services that explicitly depend on it will fail to start
GROUP : AudioGroup
TYPE : 20 WIN32_SHARE_PROCESS
STATE : 4 RUNNING
(STOPPABLE,NOT_PAUSABLE,IGNORES_SHUTDOWN)

اطلاعات سرویس/درایور
ابزار sc
tasklist –svc
سربرگ services در task manager در ویندوز ویستا و ویندوز 7
ابزار driverquery –v
اطلاعاتی درباره ی درایورهای نصب شده شامل نام ماژول، نام نمایش، شرح مختصر، نوع درایور، حالت شروع، وضعیت، مسیر و غیره

فایل های باز
نمایش فایل های باز شده به صورت محلی یا از راه دور
ابزار openfiles
ابزار net file
ابزار 1psfiles

تاریخچه ی دستور
ضربه کلیدهای تایپ شده توسط مهاجم داخل پنجره ی command promptای که باز مانده است
ابزار doskey/history
اطلاعات ارزشمندی شامل نام فایل ها و دایرکتوری های مورد دستیابی، دستورات داده شده، برنامه های راه اندازی شده، نام های رشته ای خاص و شناسه های شبکه مانند نام های دامنه، آدرس های IP، اشتراکات و منابع

اشتراکات
منابعی که سیستم در دسترس سایرین قرار داده است
HKEY_LOCAL_MACHINESystemCurrentControlSetServiceslanmanserverShares
ابزار net share

محتوای کلیپ بورد
فراهم کردن مدارک معتبر درباره ی ماهیت حمله، به خصوص اگر مهاجم یک شخص داخلی بوده و مقادیری متن کپی کرده باشد.
اطلاعاتی مانند نام های دامنه، آدرس های IP، آدرس های ایمیل، نام های کاربری و کلمات عبور، نام های میزبان، بخش های از محتوای ایمیل یا گفتگو، دستورات حمله و …
تا ویندوز XP، ابزار گرافیکی بومی clipbrd.exe
ابزار pclip1

کارهای زمان بندی شده
برخی کدهای بدخواه event-driven هستند.
تا تاریخ مشخص یا رخداد یک واقعه، بدافزار به صورت خوابیده (dormant) قرار دارد.
نیاز به بررسی برنامه های زمان بندی شده ی سیستم، برای شناسایی احتمالی برنامه ی بدخواه منتظر اجرا می باشد.
ابزار schtasks

متدولوژی های پاسخ گویی زنده
محلی
دور
ترکیبی

متدولوژی پاسخ گویی محلی
دسترسی فیزیکی سریع به سیستم
در دسترس بودن ابزارهای لازم در CD جرم یابی قانونی دیجیتال
اجرای خودکار دستورات
استفاده از یک فایل دسته ای یا اسکریپت
tlist.exe –c > %1tlist-c.log
tlist.exe –t > %1tlist-t.log
tlist.exe –s > %1tlist-s.log
tcpvcon.exe –can > %1tcpvcon-can.log
netstat.exe –ano > %1netstat-ano.log
فایل را با نام local.bat ذخیره کرده و به همراه یک کپی از ابزارهای مربوطه در CD جرم یابی قانونی قرار می دهیم
$local.bat F:

متدولوژی پاسخ گویی دور
اجرای دستورات از طریق شبکه روی یک سیستم
ابزار Psexec1
psexec.exe 192.168.1.102 -u administrator -p pass -c tlist.exe –t
استفاده از یک فایل دسته ای برای خودکار سازی
psexec.exe %1 –u %2 –p %3 -c tlist.exe –c >%4tlist-c.log
psexec.exe %1 –u %2 –p %3 -c tlist.exe –t >%4tlist-t.log
psexec.exe %1 –u %2 –p %3 -c tlist.exe –s >%4tlist-s.log
psexec.exe %1 –u %2 –p %3 netstat.exe –ano >%4netstat-ano.log
فایل را با نام remote.bat ذخیره می کنیم
$remote.bat 192.168.1.102 administrator pass F:
در موقعیت هایی با تعداد زیاد سیستم

متدولوژی پاسخ گویی ترکیبی
بازرس نمی تواند از راه دور وارد سیستم ها شود، اما می خواهد اطلاعات همه ی سیستم ها را در یک مکان مرکزی ذخیره کند.
بازرس روی هر سیستم به طور محلی ابزارها را اجرا می کند.
هر ابزار، خروجی خود را از طریق شبکه به یک سرویس دهنده ی جرم یابی قانونی مرکزی ارسال می کند.
یک راه برای ارسال خروجی ابزارها به یک سرویس دهنده ی مرکزی، استفاده از ابزار netcat است

متدولوژی پاسخ گویی ترکیبی
یک گوش کننده روی سرویس دهنده راه اندازی کنیم :
nc -L -p 8012 > case1.txt
تغییر فایل دسته ای به گونه ای که به جای نوشتن خروجی دستورات روی فایل، آن ها را از طریق netcat به گوش کننده روی سرویس دهنده ی جرم یابی قانونی ارسال کند :
tlist.exe –c | nc %1 %2 –w 5
tlist.exe –t | nc %1 %2 –w 5
tlist.exe –s | nc %1 %2 –w 5
netstat.exe –ano | nc %1 %2 –w 5
فایل را با نام hybrid.bat ذخیره می کنیم
hybrid.bat 192.168.1.100 8012

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

ابزارهای نرم افزاری
وسایل سخت افزاری
رونوشت های شکست
مجازی سازی
فایل hibernation
تکنیکهای رونوشت گرفتن از حافظه ی فیزیکی

رونوشت گیری حافظه: ابزارهای نرم افزاری
DD
Nigilant32
KnTDD
MDD
Win32dd
Memoryze
FTK Imager

رونوشت گیری حافظه: ابزارهای نرم افزاری
MDD
$ mdd.exe -o F:memory.img
ایجاد یک MD5 checksum برای فایل رونوشت نتیجه
took 108 seconds to write
MD5 is: 6fe975ee3ab878211d3be3279e948649
ذخیره این اطلاعات برای بررسی صحت فایل رونوشت حافظه در آینده

ویژگی های ابزارهای نرم افزاری رونوشت گیری حافظه
معایب
نیاز به بار شدن برنامه به حافظه  باعث خارج شدن بخشی از برنامه(های) قبلی از حافظه
کد یا کتابخانه هایی که برنامه بر آن ها متکی است، ممکن است توسط مهاجم خراب شده باشد
حالت سیستم را ثابت نگه نمی دارند
مزایا
محدودیتی برای مکان ایجاد فایل خروجی ندارند
ابزارهای رایگان مختلفی برای تحلیل فایل های رونوشت حاصل موجود است
در بیشتر موارد، ابزارهای نرم افزاری برای رونوشت گرفتن از محتوای حافظه بهترین گزینه هستند

رونوشت گیری حافظه: وسایل سخت افزاری
FireWire یا IEEE1394
امروزه در بیشتر سیستم های کامپیوتری موجودند
با استفاده از تکنولوژی DMA به حافظه ی کامپیوتر دسترسی مستقیم سریع دارند
می توان از این قابلیت برای به دست آوردن کپی حافظه برای تحلیل جرم نگاری قانونی استفاده کرد
هنوز به طور گسترده استفاده نمی شود
Tribble
B. Carrier و J. Grand در سال 2004

ویژگی های وسایل سخت افزاری رونوشت گیری حافظه
مزایا
عدم تزریق کد جدید به سیستم و از بین رفتن داده های قبلی
عدم اتکا بر کد و کتابخانه های غیر مطمئن
معایب
نصب وسیله قبل از وقوع حادثه روی سیستم

رونوشت گیری حافظه: رونوشت های شکست
هنگام شکست سیستم ایجاد می شوند
صفحه ی آبی مرگ Blue Screen of Death (BSoD)
شاید تنها راه به دست آوردن محتوای حافظه به صورت دست نخورده و بدون تغییر
حالت سیستم ثابت نگه داشته می شود
محتوای RAM (به همراه حدود 4 کیلو بایت از اطلاعات سرآیند) روی دیسک نوشته می شوند
مایکروسافت ابزارهایی برای تحلیل رونوشت های شکست ارائه کرده است

رونوشت گیری حافظه: رونوشت های شکست
محدودیت ها
همه ی سیستم ها به طور پیش فرض رونوشت شکست کامل ایجاد نمی کنند.
به طور پیش فرض، سیستم ویندوز رونوشت شکست را بر اساس دستور کاربر ایجاد نمی کند.

رونوشت گیری حافظه: رونوشت های شکست
ایجاد رونوشت شکست کامل:
Control Panel  System  Advanced system setting  Startup and Recovery  Settings  Write debugging information
سه نوع رونوشت شکست مختلف که سیستم می تواند ایجاد کند:
small، kernel و complete

رونوشت گیری حافظه: رونوشت های شکست
ایجاد رونوشت شکست بر اساس دستور کاربر:
پایین نگه داشتن کلید CTRL سمت راست و دو بار فشردن کلید Scroll Lock
صفحه کلید PS/2 در
HKEY_LOCAL_MACHINESystemCurrentControlSetServicesi8042prtParameters
یک DWORD با نام CrashOnCtrlScroll ایجاد کرده و مقدار آن را برابر 1 قرار دهید.
صفحه کلید USB، در
HKEY_LOCAL_MACHINESystemCurrentControlSetServiceskbdhidParameters
یک DWORD با نام CrashOnCtrlScroll ایجاد کرده و مقدار آن را برابر 1 قرار دهید.

رونوشت گیری حافظه: رونوشت های شکست
معایب
تنظیم سیستم برای پذیرفتن توالی ضربه کلید برای ایجاد رونوشت شکست، نیاز به یک راه اندازی مجدد دارد و باید از قبل روی سیستم تنظیم شده باشد.
فایل صفحه از قبل باید به گونه ای تنظیم شده باشد که حداقل برابر سایز RAM به اضافه ی 1MB باشد.
مزایا
ثابت ماندن حالت سیستم

رونوشت گیری حافظه: مجازی سازی
می توان پس از pause/suspend/stop کردن ماشین مجازی، محتویات حافظه ی آن را با دسترسی به فایل مربوطه به دست آورد.
هنگام اجرای یک نشست vmware، می توان نشست را معلق نگه داشته و آن را به طور موقت فریز کرد.
محتوای حافظه در یک فایل با پسوند .vmem ذخیره می شود.
فرمت این فایل بسیار مشابه فرمت خام به سبک dd است.
می تواند با ابزارهای تحلیلی تجزیه و تحلیل گردد.

رونوشت گیری حافظه : فایل Hibernation
هنگام خاموش شدن کامپیوتر، حالت سیستم بر دیسک ذخیره می شود.
هنگام روشن شدن مجدد کامپیوتر، حالت سیستم بازیابی می شود.
محتوای حافظه ی فیزیکی به طور فشرده در فایلی به نام hiberfil.sys در دایرکتوری ریشه ذخیره می شود.
تحلیل محتوای فایل hibernation می تواند سرنخی از آن چه در بازه ای زمانی در گذشته روی سیستم اتفاق افتاده بدهد.
برخی از ابزارهای تحلیل مانند Volatility، می توانند با فایل hibernation نیز کار کنند.

تحلیل رونوشت حافظه
تا قبل از سال 2005، تنها اعمالی که روی رونوشت حافظه انجام می شد، شامل strings.exe و grep (برای یافتن آدرس های ایمیل، آدرس های IP و غیره) بود.
عیب این روش این بود که امکان ربط دادن اطلاعات یافته شده به پردازه ای معین سخت بود.
کارگاه تحقیقات جرم نگاری قانونی دیجیتال 2005 چالشی برای تحلیل حافظه ی سیستم ویندوزی ارائه کرد که توجه بیشتری را به این سمت جذب کرد؛
ابزارهایی برای تحلیل رونوشت های RAM و بازیابی اطلاعاتی درباره ی پروسه ها، اتصالات شبکه و سایر ساختارها ارائه گردیدند.

Volatility Framework
مجموعه ابزار کد منبع باز پیاده سازی شده با python
AAron Walters
استخراج اطلاعات از رونوشت حافظه شامل
تاریخ و زمان کپی
پردازه های در حال اجرا
سوکت ها و اتصالات باز شبکه
Dllها
فایل ها و دستگیره های رجیستری باز شده برای پردازه
ماژول های کرنل و غیره
قابل اعمال به فرمت های مختلف رونوشت از جمله فرمت خام، رونوشت شکست، فایل .vmem و فایل hibernation

Volatility Framework
استخراج اطلاعات مربوط به بدافزار
پردازه ی اجرایی بدافزار
ماژول های بار شده توسط پردازه ی بدافزار
اتصالات شبکه ی برقرار شده توسط پردازه ی بدافزار
محتوای حافظه ی پردازه ی بدافزار
فایل باینری پردازه ی بدافزار

دستورات Volatility: imageinfo
شناسایی کپی
هنگام کار روی کپی حافظه ی یک سیستم، نسخه ی سیستم عامل باید دقیق مشخص شود
ساختارهای مورد استفاده برای تعیین پردازه ها و نخ ها در حافظه بین نسخه های سیستم عامل ویندوز متفاوت است
حتی نسخه های یکسان با سرویس پک های متفاوت دارای ساختارهای متفاوتی می باشند.

دستورات Volatility: imageinfo
$ python vol.py -f win7.dmp imageinfo Volatile Systems Volatility Framework 2.0 Determining profile based on KDBG search…              Suggested Profile : Win7SP1x86, Win7SP0x86                      AS Layer1 : JKIA32PagedMemory (Kernel AS)                      AS Layer2 : FileAddressSpace (/Users/M/Desktop/win7.dmp)                       PAE type : No PAE                            DTB : 0x185000                           KDBG : 0x8296cbe8                           KPCR : 0x8296dc00            KUSER_SHARED_DATA : 0xffdf0000            Image date and time : 2010-07-06 22:40:28      Image local date and time : 2010-07-06 22:40:28           Number of Processors : 2                     Image Type :

دستورات Volatility: pslist
یافتن پردازه های فعال
$ python vol.py –profile=WinXPSP3x86 -f winXP.dmp pslist
Offset(V) Name PID PPID Thds Hnds Start
0x823c8830 System 4 0 59 403
0x820df020 smss.exe 376 4 3 19 2010-10-29 17:08:53
0x821a2da0 csrss.exe 600 376 11 395 2010-10-29 17:08:54
0x81da5650 winlogon.exe 624 376 19 570 2010-10-29 17:08:54
0x82073020 services.exe 668 624 21 431 2010-10-29 17:08:54
0x81e70020 lsass.exe 680 624 19 342 2010-10-29 17:08:54
0x81db8da0 svchost.exe 856 668 17 193 2010-10-29 17:08:55
0x81e61da0 svchost.exe 940 668 13 312 2010-10-29 17:08:55
0x822843e8 svchost.exe 1032 668 61 1169 2010-10-29 17:08:55
0x81e18b28 svchost.exe 1080 668 5 80 2010-10-29 17:08:55
0x81ff7020 svchost.exe 1200 668 14 197 2010-10-29 17:08:55
0x81fee8b0 spoolsv.exe 1412 668 10 118 2010-10-29 17:08:56

ساختار پردازه
هر پردازه به صورت یک پردازه ی اجرایی یا یک بلوک EProcess نمایش داده می شود.
بلوک EProcess، یک ساختار داده است که در آن صفات مختلفی از پردازه به اضافه ی اشاره گرهایی به صفات دیگر و ساختارهای داده ی دیگر (نخ ها، بلوک محیط پردازه) مربوط به پردازه نگه داری می شوند.

بلوک EProcess
مشاهده ی ساختارEProcess با استفاده از WinDbg
0: kd> dt -a -b -v _EProcess
nt!_EPROCESS
struct _EPROCESS, 137 elements, 0x2c0 bytes
+0x000 Pcb : struct _KPROCESS, 34 elements, 0x98 bytes
+0x000 Header : struct _DISPATCHER_HEADER, 30 elements, 0x10 bytes
+0x000 Type : UChar
+0x001 TimerControlFlags : UChar
+0x001 Absolute : Bitfield Pos 0, 1 Bit
+0x001 Coalescable : Bitfield Pos 1, 1 Bit
+0x001 KeepShifting : Bitfield Pos 2, 1 Bit
+0x001 EncodedTolerableDelay : Bitfield Pos 3, 5 Bits
+0x001 Abandoned : UChar
+0x001 Signalling : UChar
+0x002 ThreadControlFlags : Uchar
+0x003 DpcActive : UChar
+0x000 Lock : Int4B
+0x004 SignalState : Int4B
+0x008 WaitListHead : struct _LIST_ENTRY, 2 elements, 0x8 bytes
+0x000 Flink : Ptr32 to
+0x004 Blink : Ptr32 to

+0x0b8 ActiveProcessLinks : struct _LIST_ENTRY, 2 elements, 0x8 bytes
+0x000 Flink : Ptr32 to
+0x004 Blink : Ptr32 to

زیر ساختار ActiveProcessLinks

دستورات Volatility: pslist
یافتن پردازه ی نامعتبر که خود را با نام یک پردازه ی معتبر معرفی می کند:

$ vol.py -f “stuxnet.vmem" –profile=WinXPSP3x86 pslist
Offset(V) Name PID PPID Thds Hnds Start
0x823c8830 System 4 0 59 403
0x820df020 smss.exe 376 4 3 19 2010-10-29 17:08:53
0x821a2da0 csrss.exe 600 376 11 395 2010-10-29 17:08:54
0x81da5650 winlogon.exe 624 376 19 570 2010-10-29 17:08:54
0x82073020 services.exe 668 624 21 431 2010-10-29 17:08:54
0x81e70020 lsass.exe 680 624 19 342 2010-10-29 17:08:54
0x81db8da0 svchost.exe 856 668 17 193 2010-10-29 17:08:55
0x81e61da0 svchost.exe 940 668 13 312 2010-10-29 17:08:55
0x822843e8 svchost.exe 1032 668 61 1169 2010-10-29 17:08:55
0x81e18b28 svchost.exe 1080 668 5 80 2010-10-29 17:08:55
0x81ff7020 svchost.exe 1200 668 14 197 2010-10-29 17:08:55
0x81fee8b0 spoolsv.exe 1412 668 10 118 2010-10-29 17:08:56
0x820ec7e8 explorer.exe 1196 1728 16 582 2010-10-29 17:11:49
0x81fc5da0 VMwareTray.exe 1912 1196 1 50 2010-10-29 17:11:50
0x81e6b660 VMwareUser.exe 1356 1196 9 251 2010-10-29 17:11:50
0x81c498c8 lsass.exe 868 668 2 23 2011-06-03 04:26:55
0x81c47c00 lsass.exe 1928 668 4 65 2011-06-03 04:26:55

DKOM (Direct Kernel Object Manipulation)

دستورات Volatility: psscan
بازیابی پردازه های خاتمه یافته و پردازه های جدا شده از لیست توسط روت کیت ها
پویش حافظه
یافتن ویژگی های خاصی از پردازه ها در حافظه
شناسایی بلوک های Eprocess
مقدار برخی عناصر زیرساختار DISPATCHER_HEADER مانند Type و Size در همه ی پردازه ها روی سیستم ثابت است.
اختلاف بین دو دستور pslist و psscan  پردازه های خاتمه یافته و پردازه های جدا شده از لیست توسط روت کیت ها

یافتن پردازه مخفی شده توسط روت کیت
$ python volatility.py pslist -f prolaco.vmem
Name Pid PPid Thds Hnds
System 4 0 56 253
smss.exe 544 4 3 21
csrss.exe 608 544 11 349
winlogon.exe 632 544 19 565
services.exe 676 632 16 269
lsass.exe 688 632 19 341
svchost.exe 856 676 16 198
svchost.exe 936 676 9 256
svchost.exe 1028 676 63 1334
svchost.exe 1088 676 4 75
svchost.exe 1148 676 14 207
spoolsv.exe 1432 676 13 135
explorer.exe 1724 1708 11 294
$ python volatility.py psscan –f prolaco.vmem
PID PPID Time exited Remarks
0 0 Idle
1260 1724 2010-08-11 16:50:42 rundll32.exe
1028 676 svchost.exe
1336 1136 1_doc_RCData_61
856 676 svchost.exe
4 0 System
1724 1708 explorer.exe
544 4 smss.exe
688 632 lsass.exe
632 services.exe
1088 676 svchost.exe
936 676 svchost.exe
1144 420 2010-08-11 16:50:08 msiexec.exe
1148 676 svchost.exe
632 544 winlogon.exe
608 544 csrss.exe
1432 676 spoolsv.exe

دستورات Volatility: psxview
دستور psxview، ساختارهای EPROCESS یافته شده توسط مقادیر زیر را با یکدیگر مقایسه می کند:
لیست پیوندی PsActiveProcessHead (دستور pslist)
پویش حافظه برای یافتن EPROCESSها (دستور psscan)
پویش حافظه برای یافتن ETHREADها (دستور thrdscan)
PspCidTable
جدول دستگیره های Csrss.exe

$ vol.py psxview –f prolaco.vmem
Offset(P) Name PID pslist psscan thrdproc pspcdid csrss
———- ——————– —— —— —— ——– ——- —–
0x06499b80 svchost.exe 1148 True True True True True
0x04b5a980 VMwareUser.exe 452 True True True True True
0x0655fc88 VMUpgradeHelper 1788 True True True True True
0x0211ab28 TPAutoConnSvc.e 1968 True True True True True
0x04c2b310 wscntfy.exe 888 True True True True True
0x061ef558 svchost.exe 1088 True True True True True
0x06945da0 spoolsv.exe 1432 True True True True True
0x05471020 smss.exe 544 True True True True False
0x04a544b0 ImmunityDebugge 1136 True True True True True
0x069d5b28 vmtoolsd.exe 1668 True True True True True
0x06384230 vmacthlp.exe 844 True True True True True
0x010f7588 wuauclt.exe 468 True True True True True
0x066f0da0 csrss.exe 608 True True True True False
0x05f027e0 alg.exe 216 True True True True True
0x06015020 services.exe 676 True True True True True
0x04a065d0 explorer.exe 1724 True True True True True
0x049c15f8 TPAutoConnect.e 1084 True True True True True
0x0115b8d8 svchost.exe 856 True True True True True
0x01214660 System 4 True True True True False
0x01122910 svchost.exe 1028 True True True True True
0x04be97e8 VMwareTray.exe 432 True True True True True
0x05f47020 lsass.exe 688 True True True True True
0x063c5560 svchost.exe 936 True True True True True
0x066f0978 winlogon.exe 632 True True True True True
0x0640ac10 msiexec.exe 1144 False True False False False
0x005f23a0 rundll32.exe 1260 False True False False False
0x0113f648 1_doc_RCData_61 1336 False True True True True

دستورات Volatility: dlllist
نمایش DLLهای بار شده توسط پردازه ها
0: kd> dt _EPROCESS

+0x1a8 Peb : Ptr32 _PEB

0: kd> dt _PEB

+0x00c Ldr : Ptr32 _PEB_LDR_DATA

0: kd> dt _PEB_LDR_DATA

+0x00c InLoadOrderModuleList : _LIST_ENTRY
+0x014 InMemoryOrderModuleList : _LIST_ENTRY
+0x01c InInitializationOrderModuleList : _LIST_ENTRY

0: kd> dt _LDR_DATA_TABLE_ENTRY
+0x000 InLoadOrderLinks : _LIST_ENTRY
+0x008 InMemoryOrderLinks : _LIST_ENTRY
+0x010 InInitializationOrderLinks : _LIST_ENTRY
+0x018 DllBase : Ptr32 Void
+0x01c EntryPoint : Ptr32 Void
+0x020 SizeOfImage : Uint4B
+0x024 FullDllName : _UNICODE_STRING
+0x02c BaseDllName : _UNICODE_STRING

دستورات Volatility: dlllist

دستورات Volatility: dlllist
$ python vol.py –profile=Win7SP0x86 -f win7.dmp dlllist […] services.exe pid:    492 Command line : C:Windowssystem32services.exe Base         Size         Path 0x00a50000   0x041000     C:Windowssystem32services.exe 0x778a0000   0x13c000     C:WindowsSYSTEM32ntdll.dll 0x779f0000   0x0d4000     C:Windowssystem32kernel32.dll 0x75ca0000   0x04a000     C:Windowssystem32KERNELBASE.dll 0x75940000   0x00c000     C:Windowssystem32CRYPTBASE.dll 0x758c0000   0x00f000     C:Windowssystem32scext.dll 0x764a0000   0x0c9000     C:Windowssystem32USER32.dll 0x765b0000   0x04e000     C:Windowssystem32GDI32.dll 0x76330000   0x00a000     C:Windowssystem32LPK.dll
[…]

دستورات Volatility: dlllist
نمایش DLLهای یک پردازه ی خاص
$ python vol.py –profile=Win7SP0x86 -f win7.dmp dlllist
–pid=492
برای نمایش DLLهای پردازه ای که توسط یک روت کیت، مخفی یا غیرمتصل شده، ابتدا باید با استفاده از دستور psscan، آفست فیزیکی EProcess آن را به دست آورد و سپس از سوئیچ –offset استفاده کرد.
$ python vol.py –profile=Win7SP0x86 -f win7.dmp dlllist
–offset=0x04a291a8

ماژول های بار شده توسط پردازه می توانند تا حدودی کارکرد آن پردازه را مشخص کنند
برخی از DLLها اجازه ی دسترسی به منابع محافظت شده می دهند یا امنیت سیستم را تغییر می دهند. ماژول sfc_os.dll مکانیزم حفاظت فایل ویندوز را غیرفعال میکند و ماژول pstorec.dll اعتبارنامه ها را از ناحیه ی حافظه ی محافظت شده ی ویندوز استخراج میکند.
برخی از DLLهای معتبر که در جای مناسب استفاده نمی شوند. به عنوان مثال ماژول های ws2_32.dll، winsock32.dll، wininet.dll و urlmon.dll قابلیت های شبکه ای فراهم می آورند که قطعا بخودی خود بدخواه نمی باشند. اما اگر مشاهده شود که این DLLها در پردازه ای مانند notepad.exe که معمولا دسترسی به اینترنت ندارد، بار شده اند، می تواند نشان دهنده ی حضور بدافزاری باشد که به پردازه های روی سیستم کدی (با وابستگی های شبکه ای) تزریق کرده است.

یافتن DLLهای جدا شده از لیست توسط بدافزار

یافتن DLLهای جدا شده از لیست توسط بدافزار
بدافزار سعی می کند، برخی از ماژول های بار شده اش را مخفی کند
پردازه ی بدخواه با دسترسی به ساختار PEB خود، DLLهای بار شده اش را از یکی یا بیشتر از سه لیست پیوندی ماژول ها حذف می کند
این لیست ها از مود کاربر قابل دسترس اند و نیازی به سطح دسترسی کرنل نمی باشد

هنگام بار شدن ماژول در پردازه، LoadLibrary قطعه ای (section) را در حافظه ی مجازی مربوط به پردازه ایجاد کرده و محتویات فایل dll را در آن کپی می کند.
کرنل اطلاعات لازم برای لینک کردن قطعه ی جدیدا ایجاد شده با فایل مرتبط (DLL) را در ساختار VAD ذخیره می کند.
می توان هر ناحیه ی حافظه ی اختصاص یافته در پردازه را چک کرد که آیا شامل یک فایل نگاشت یافته است و در صورت مثبت بودن، نام فایل را به دست آورد.
با این روش می توان DLLهایی که در پردازه بار شده اند، اما برای آن ها موجودیتی در لیست های PEB پردازه وجود ندارد را شناسایی کرد.

یافتن DLLهای جدا شده از لیست توسط بدافزار

VAD (Virtual Address Descriptor)
اطلاعات مربوط به ناحیه های مختلف حافظه ی پردازه در ساختاری به نام VAD ذخیره می شود
به ازای هر ناحیه حافظه ی اختصاص یافته، گره ای در درخت VAD ایجاد می شود.
هر گره شامل آدرس ابتدا و انتهای ناحیه حافظه ی اختصاص یافته می باشد
هم چنین با استفاده از ساختارهای تودرتوی VAD می توان در صورت نگاشت یک فایل به یک ناحیه حافظه، آن را پیدا کرد.

دستورات Volatility: ldrmodules
یافتن ماژول های بار شده توسط پردازه با بررسی ساختار VAD پردازه و مقایسه آن ها با سه لیست ماژول PEB
$ python vol.py -f laqma.vmem ldrmodules Volatile Systems Volatility Framework 2.0 Pid       Process               Base     InLoad   InInit   InMem     Path 632 winlogon.exe 0x01000000 True False True WINDOWSsystem32winlogon.exe
632 winlogon.exe 0x77dd0000 True True True WINDOWSsystem32advapi32.dll
632 winlogon.exe 0x77d40000 True True True WINDOWSsystem32user32.dll
676 services.exe 0x01000000 True False True WINDOWSsystem32services.exe
676 services.exe 0x758e0000 True True True WINDOWSsystem32scesrv.dll
688 lsass.exe 0x01000000 True False True WINDOWSsystem32lsass.exe 1340 IEXPLORE.EXE 0x77c10000 True True True WINDOWSsystem32msvcrt.dll
1340 IEXPLORE.EXE 0x025f0000 False False False WINDOWSsystem32stdole2.tlb
1340 IEXPLORE.EXE 0x77260000 True True True WINDOWSsystem32urlmon.dll
1340 IEXPLORE.EXE 0x76eb0000 True True True WINDOWSsystem32tapi32.dll
1340 IEXPLORE.EXE 0x77c70000 True True True WINDOWSsystem32msv1_0.dll
1340 IEXPLORE.EXE 0x76e80000 True True True WINDOWSsystem32rtutils.dll
1340 IEXPLORE.EXE 0x5d090000 True True True WINDOWSsystem32comctl32.dll
1340 IEXPLORE.EXE 0x77050000 True True True WINDOWSsystem32comres.dll
1340 IEXPLORE.EXE 0x71aa0000 True True True WINDOWSsystem32ws2help.dll
1340 IEXPLORE.EXE 0x746c0000 True True True WINDOWSsystem32msls31.dll
1340 IEXPLORE.EXE 0x76ee0000 True True True WINDOWSsystem32rasapi32.dll
1340 IEXPLORE.EXE 0x03a50000 False False False WINDOWSsystem32msxml3r.dll

تزریق کد
بدافزار با استفاده از تکنیک های تزریق کد، پردازه ی دیگری را مجبور به انجام دادن کارهای مورد نظر خود می کند.
به عنوان مثال، یک پردازه ی معتبر را وادار به دانلود تروجان یا سرقت اطلاعات از سیستم می کند.

دستورات Volatility: malfind
رونوشت گرفتن از ناحیه هایی از حافظه که مارک executable دارند اما فایلی به آن ها نگاشت نشده است
باعث شناسایی dllهای تزریق شده به پردازه توسط یک پردازه بدخواه می شود
نمایش hex dump ناحیه های مشکوک حافظه

دستورات Volatility: malfind
$ python volatility.py malfind -f zeus.vmem –dump-dir=outdir

Process: svchost.exe Pid: 936 Address: 0x8d0000
Vad Tag: VadS Protection: PAGE_EXECUTE_READWRITE
Flags: CommitCharge: 38, MemCommit: 1, PrivateMemory: 1, Protection: 6

0x008d0000 4d 5a 90 00 03 00 00 00 04 00 00 00 ff ff 00 00 MZ…………..
0x008d0010 b8 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00 ……..@…….
0x008d0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
0x008d0030 00 00 00 00 00 00 00 00 00 00 00 00 d0 00 00 00 …………….

Process: svchost.exe Pid: 936 Address: 0x990000
Vad Tag: VadS Protection: PAGE_EXECUTE_READWRITE
Flags: CommitCharge: 1, MemCommit: 1, PrivateMemory: 1, Protection: 6

0x00990000 b8 35 00 00 00 e9 cd d7 f7 7b b8 91 00 00 00 e9 .5…….{……
0x00990010 4f df f7 7b 8b ff 55 8b ec e9 ef 17 88 76 8b ff O..{..U……v..
0x00990020 55 8b ec e9 95 76 83 76 8b ff 55 8b ec e9 be 53 U….v.v..U….S
0x00990030 84 76 8b ff 55 8b ec e9 d6 18 88 76 8b ff 55 8b .v..U……v..U.

دستورات Volatility: yarascan
در کد هر بدافزار اطلاعاتی مانند آدرس های IP یا نام های میزبان، توالی دستورات، رشته های متنی، عبارات باقاعده، نام های بانک ها و غیره یافت می شود.
از این اطلاعات می توان به عنوان امضای بدافزار برای تشخیص آن استفاده کرد.
در صورت یافتن این اطلاعات در یک پردازه ی در حال اجرا روی سیستم یا در یک پردازه ی موجود در کپی حافظه، آن پردازه مشکوک معرفی می گردد.
ابزاری به نام Yara برای ایجاد امضای بدافزارهای مختلف وجود دارد.
با استفاده از Yara می توان قوانینی برای تشخیص یک خانواده از بدافزارها ایجاد کرد.

rule silent_banker : banker
{
strings:
$a = {6A 40 68 00 30 00 00 6A 14 8D 91}
$b = {8D 4D B0 2B C1 83 C0 27 99 6A 4E 59 F7 F9}
$c = "UVODFRYSIHLNWPEJXQZAKCBGMT"
 
condition:
$a or $b or $c
}
 
rule zbot : banker
{
strings:
$a = "__SYSTEM__" wide
$b = "*tanentry*"
$c = "*<option"
$d = "*<select"
$e = "*<input"
 
condition:
($a and $b) or ($c and $d and $e)
}

دستورات Volatility: yarascan
$ vol.py -f zeus.vmem yarascan –yara-file=MalwareRule –dump-dir=outdir
[…]
Rule: zbot
Owner: Process System Pid 4
0x001a1658 5f 00 5f 00 53 00 59 00 53 00 54 00 45 00 4d 00 _._.S.Y.S.T.E.M.
0x001a1668 5f 00 5f 00 36 00 34 00 41 00 44 00 30 00 36 00 _._.6.4.A.D.0.6.
0x001a1678 32 00 35 00 5f 00 5f 00 00 00 00 00 2a 2f 2a 00 2.5._._…..*/*.
0x001a1688 00 00 00 00 2f 00 00 00 4d 6f 7a 69 6c 6c 61 2f …./…Mozilla/

Rule: zbot
Owner: Process System Pid 4
0x001a3014 2a 3c 73 65 6c 65 63 74 20 00 00 00 2a 3c 6f 70 *<select….*<op
0x001a3024 74 69 6f 6e 20 20 73 65 6c 65 63 74 65 64 00 00 tion..selected..
0x001a3034 2a 3c 69 6e 70 75 74 20 2a 76 61 6c 75 65 3d 22 *<input.*value="
0x001a3044 00 00 00 00 42 00 4f 00 46 00 41 00 20 00 61 00 ….B.O.F.A…a.
[…]

دستورات Volatility: connections
$ python vol.py -f Win2003SP2x64.vmem –profile=Win2003SP2x64 connections Offset(V)           Local Address             Remote Address               Pid —————— ————————- ————————- —— 0xfffffadfe6f2e2f0 172.16.237.150:1408       72.246.25.25:80             2136 0xfffffadfe72e8080 172.16.237.150:1369       64.4.11.30:80               2136 0xfffffadfe622d010 172.16.237.150:1403       74.125.229.188:80           2136 0xfffffadfe62e09e0 172.16.237.150:1352       64.4.11.20:80               2136                        

دستورات Volatility: connscan
$ python vol.py -f Win2003SP2x64.vmem –profile=Win2003SP2x64 connscan Offset(P)           Local Address             Remote Address               Pid —————— ————————- ————————- —— 0x0ea7a610 172.16.237.150:1408       72.246.25.25:80             2136 0x0eaa3c90 172.16.237.150:1369       64.4.11.30:80               2136 0x0eaa4480 172.16.237.150:1403       74.125.229.188:80           2136 0x0ead8560 172.16.237.150:1352       64.4.11.20:80               2136 0x179099e0 172.16.237.150:1115       66.150.117.33:80             2856 0x2cdb1bf0 172.16.237.150:139         172.16.237.1:63369             4 0x339c2c00 172.16.237.150:1138       23.45.66.43:80               1332                        

ساخت مجدد باینری ها
یکی از پرکاربردترین جنبه های volatility، قابلیت رونوشت گرفتن و ساخت مجدد فایل های PE (فایل های اجرایی، DLLها و درایورهای کرنل) می باشد.
به دلیل تغییراتی که حین اجرای یک برنامه رخ می دهد، نمی توان یک کپی دقیق از باینری اصلی به دست آورد.
حتی به احتمال زیاد کپی به دست آمده روی ماشین دیگر اجرا نخواهد شد.
اما به هرحال، کپی حاصل به اندازه ی کافی مشابه نسخه ی اصلی است تا بتوان بدافزار را دی اسمبل کرده، الگوریتم هایش را به دست آورد و قابلیت هایش را تعیین کرد.

ساخت مجدد باینری ها
بازسازی فایل کپی اجرایی پردازه برای تحلیل بدافزارها بسیار سودمند است.
چرا که اغلب بدافزارها روی دیسک به صورت مبهم شده (رمز شده، فشرده شده یا هر دو) قرار می گیرند و تحلیل ایستا را با مشکل مواجه می سازند.هم چنین برخی بدافزارها فقط به صورت مقیم حافظه هستند و هرگز بر روی دیسک سخت نوشته نمی شوند؛
استخراج کپی اجرایی از رونوشت حافظه ممکن است تنها راه دسترسی به یک کپی از فایل برای تحلیل باشد.

ساخت مجدد باینری ها
دستورهای procexedump و procmemdump برای استخراج فایل PE از حافظه استفاده می شوند.
$ vol.py -f laqma.vmem procexedump -p 432,1180 –dump-dir=outdir
Process(V) ImageBase Name Result
———- ———- ——————– ——
0xff3667e8 0x00400000 VMwareTray.exe OK: executable.432.exe
0xff3825f8 0x00400000 lanmanwrk.exe OK: executable.1180.exe
بین قابلیت بازسازی جدول آدرس ورودی یا IAT این دو پردازه تفاوت آشکاری وجود دارد.
این تفاوت اغلب توسط فشرده سازها یا لم های ضد تحلیل یا فقط به دلیل موجود نبودن قطعه های حافظه ی مورد نیاز در زمان کپی گرفتن ایجاد می شود.

ساخت مجدد باینری ها
بازسازی کامل جدول IAT مربوط به پردازه ی معتبر

ساخت مجدد باینری ها
بازسازی ناکامل جدول IAT مربوط به پردازه ی بدخواه

ساخت مجدد باینری ها
کامل نبودن اطلاعات IAT باعث محدودیت تحلیل در IDA Pro می گردد

ساخت مجدد باینری ها
دستور impscan برای رفع مشکل جدول آدرس ورودی ناکامل طراحی شده است.

$ vol.py -f laqma.vmem impscan -p 1180
IAT Call Module Function
———- ———- ——————– ——–
0x00406000 0x77deb635 ADVAPI32.dll ControlService
0x00406004 0x77ddede5 ADVAPI32.dll RegDeleteValueA
0x00406008 0x77dd6bf0 ADVAPI32.dll RegCloseKey
[…]
0x0040602c 0x7c80b357 kernel32.dll GetModuleFileNameA
0x00406030 0x7c802442 kernel32.dll Sleep
0x00406034 0x7c81082f kernel32.dll CreateThread
[…]
0x004060bc 0x77d4df6b USER32.dll DefWindowProcA
0x004060c0 0x77d4e2ae USER32.dll SendMessageA
0x004060c4 0x77d6f3c6 USER32.dll FindWindowA
[…]

ساخت مجدد باینری ها
دستور impscan بخش باینری پردازه را برای یافتن دستورات call یا jmp پویش می کند.
اگر مقصد یکی از دستورات call یا jmp منجر به یک API شود، impscan آدرس دستور و تابع API متناظر را ثبت می کند.
impscan بدون بررسی IAT فایل PE، فراخوانی های انجام شده به APIها را شناسایی می کند.
بنابراین حتی اگر بدافزار کل سرآیند PE را هم حذف کرده باشد، این دستور کار می کند.

ساخت مجدد باینری ها
می توان جمله های MakeName را بر اساس خروجی دستور impscan تولید کرده و آن ها را به IDA Pro انتقال داد.

ساخت مجدد باینری ها
مشخص بودن توابع API و آرگومان ها باعث تحلیل بدافزار می گردد.

پایان
از توجه شما متشکرم


تعداد صفحات : 97 | فرمت فایل : .ppt

بلافاصله بعد از پرداخت لینک دانلود فعال می شود