
التحليل التفاضلي للبرمجيات الخبيثة في الذاكرة
أداة تحليل ذاكرة مفتوحة المصدر مبنية على فولتاليتي (Volatility). صُممت لتكون ساحة تجارب لتقنيات جديدة ومثيرة للاهتمام لإتاحتها للمجتمع. تشكّل هذه التقنيات محاولة لتسريع عملية التحقيق من خلال تقليل حجم البيانات وتقنين بعض المعرفة الخبيرة.
NOTE: Most DAMM output looks better piped through 'less -S' (upper 'S') as in:
python damm.py -h usage: damm.py [-h] [-d DIR] [-p PLUGIN [PLUGIN ...]] [-f FILE] [-k KDBG] [--db DB] [--profile PROFILE] [--debug] [--info] [--tsv] [--grepable] [--filter FILTER] [--filtertype FILTERTYPE] [--diff BASELINE] [-u FIELD [FIELD ...]] [--warnings] [-q]
DAMM v1.0 Beta
optional arguments: -h, --help show this help message and exit -d DIR Path to additional plugin directory -p PLUGIN [PLUGIN ...] Plugin(s) to run. For a list of options use --info -f FILE Memory image file to run plugin on -k KDBG KDBG address for the images (in hex) --db DB SQLite db file, for efficient input/output --profile PROFILE Volatility profile for the images (e.g. WinXPSP2x86) --debug Print debugging statements --info Print available volatility profiles, plugins --tsv Print screen formatted output. --grepable Print in grepable text format --filter FILTER Filter results on name:value pair, e.g., pid:42 --filtertype FILTERTYPE Filter match type; either "exact" or "partial", defaults to partial --diff BASELINE Diff the imageFile|db with this db file as a baseline -u FIELD [FIELD ...] Use the specified fields to determine uniqueness of memobjs when diffing --warnings Look for suspicious objects. -q Query the supplied db (via --db).
### الإضافات المدعومة <a name="plugins"/>
انظر #python damm.py --info
apihooks callbacks connections devicetree dlls evtlogs handles idt injections messagehooks mftentries modules mutants privileges processes services sids timers
### مثال <a name="example"/>
وفّر ملف تعريف كما في Volatility، وصورة ذاكرة، وقائمة من الإضافات لتشغيلها (أو 'all') للحصول على مخرجات الطرفية:```
python damm.py --profile WinXPSP2x86 -f memory.dmp -p processes | less -S
(or python damm.py --profile WinXPSP2x86 -f memory.dmp -p processes dlls modules)
(or python damm.py --profile WinXPSP2x86 -f memory.dmp -p all)
processes
offset name pid ppid prio image_path_name create_time exit_time threads session_id handles is_wow64 pslist psscan thrdproc pspcid csrss session deskthrd command_line
0x25c8830 System 4 0 8 59 403 False True True True True False False False
0x225ada0 alg.exe 188 668 8 C:\WINDOWS\System32\alg.exe 2010-10-29 17:09:09 UTC+0000 6 0 107 False True True True True True True True C:\WINDOWS\System32\alg.exe
0x2114938 ipconfig.exe 304 968 8 2011-06-03 04:31:35 UTC+0000 2011-06-03 04:31:36 UTC+0000 0 0 False True True False True False False False
0x2086978 TSVNCache.exe 324 1196 8 C:\Program Files\TortoiseSVN\bin\TSVNCache.exe 2010-10-29 17:11:49 UTC+0000 7 0 54 False True True True True True True True "C:\Program Files\TortoiseSVN\bin\TSVNCache.exe"
0x22df020 smss.exe 376 4 11 \SystemRoot\System32\smss.exe 2010-10-29 17:08:53 UTC+0000 3 19 False True True True True False False False \SystemRoot\System32\smss.exe
...
لجعل هذه النتائج دائمة في قاعدة بيانات SQLite، قم فقط بتوفير اسم ملف لقاعدة البيانات:``` python damm.py --profile WinXPSP2x86 -f memory.dmp -p processes --db my_results.db
سيؤدي هذا إلى طباعة النتائج في الطرفية وكذلك تخزينها في 'my_results.db'
لرؤية النتائج مرة أخرى:```
python damm.py -p processes --db my_results.db
(لاحظ أنك لم تعد بحاجة إلى صورة الذاكرة أو إلى تحديد ملف تعريف، وستظهر القائمة بشكل شبه فوري بغض النظر عن المدة التي استغرقتها المعالجة الأصلية.)
إذا كنت ترغب لاحقًا في رؤية العمليات والإضافات الأخرى:``` python damm.py --profile WinXPSP2x86 -p processes dlls modules --db my_results.db
سوف:
1. الاطلاع على قاعدة البيانات للحصول على مخرجات 'processes'
2. تشغيل إضافتي 'dlls' و 'modules'
3. عرض النتائج
4. تخزين النتائج الجديدة في قاعدة البيانات
بمجرد تخزين بعض البيانات في قاعدة بيانات، يمكنك الاستعلام عنها باستخدام الخيار -q```
python damm.py -q --db my_results.db
profile: WinXPSP2x86
memimg: WinXPSP2x86/stuxnet.vmem
COMPUTERNAME: JAN-DF663B3DBF1
plugins: processes dlls modules
الإضافات لها سمات يمكن أن تكون لها أنواع للتصفية، على سبيل المثال للعمليات: (استخدم --info لرؤية جميع سمات الإضافات)``` offset name : string pid : pid ppid : pid image_path_name : string command_line : string create_time exit_time threads session_id handles is_wow64 pslist psscan thrdproc pspcid csrss session deskthrd
يمكن الاستفادة من هذه السمات والأنواع من خلال وظائف المقارنة والتصفية في DAMM
### المقارنة <a name="differencing"/>
لاستخدام محرك المقارنة، أنشئ قاعدتي بيانات من صورتين مختلفتين للذاكرة، مثل صورة ملتقطة قبل تنفيذ برنامج ضار وأخرى بعده```
python damm.py --profile WinXPSP2x86-f before.dmp -p processes --db before.db
python damm.py --profile WinXPSP2x86 -f after.dmp -p processes --db after.db
ثم استخدم خيار --diff لقاعدة البيانات الأساسية (هنا، قاعدة البيانات من صورة الذاكرة غير المصابة).```
python damm.py -p processes --db after.db --diff before.db