
أداة Python تقوم بتحليل $MFT الخاص بنظام NTFS لنسخ الملفات المقفلة أثناء الاستجابة للحوادث، متجاوزة أقفال نظام التشغيل عبر قراءة مواقع القرص الخام. تدعم النسخ العودي، باستخدام أحرف البدل، ونسخ الملفات المتعددة مع التخزين المؤقت لتحسين الأداء.

آخر تحديث 2022-03-31
من المتطلبات أثناء التعامل مع حادث أمني (Incident Response - IR) القدرة على تحليل الملفات الموجودة في نظام الملفات. أحيانًا تكون هذه الملفات مقفلة من قبل نظام التشغيل (OS) لأنها قيد الاستخدام، وهذا مزعج بشكل خاص مع سجلات الأحداث وخلايا التسجيل. تتيح TScopy للمستخدم الذي يعمل بصلاحيات مسؤول الوصول إلى الملفات المقفلة عن طريق تحليل موقعها الخام في نظام الملفات ونسخها دون الاستعانة بنظام التشغيل.
توجد أدوات أخرى تؤدي وظائف مماثلة، مثل RawCopy، التي استخدمناها وهي الأساس لهذه الأداة. ومع ذلك، هناك بعض العيوب في RawCopy التي دفعنا لتطوير TScopy، بما في ذلك الأداء والحجم وإمكانية دمجها في أدوات أخرى.
تهدف هذه المدونة إلى تقديم TScopy ولكن أيضًا لطلب المساعدة. كما هو الحال في جميع تطويرات البرمجيات، كلما زاد استخدام الأداة، زادت حالات الحافة التي يمكن اكتشافها. نطلب من الأشخاص تجربة الأداة والإبلاغ عن أي أخطاء.
TScopy هي سكريبت بلغة Python يُستخدم لتحليل ملف $MFT الخاص بـ NTFS لتحديد موقع ونسخ ملفات محددة. من خلال تحليل Master File Table (MFT)، يتجاوز السكريبت أقفال نظام التشغيل على الملفات. يعتمد السكريبت أصلاً على عمل RawCopy. RawCopy مكتوب بلغة AutoIT ويصعب تعديله لأغراضنا. تم اتخاذ قرار نقل RawCopy إلى Python بسبب الحاجة إلى دمج هذه الوظيفة بشكل أصلي في مجموعة أدواتنا.
صُممت TScopy لتعمل كبرنامج مستقل أو كمكوّن إضافي (module) في Python. يستخدم تطبيق Python أدوات python-ntfs الموجودة على https://github.com/williballenthin/python-ntfs. بُنيت TScopy على الوظائف الأساسية لـ python-ntfs لعزل موقع كل ملف من القرص الخام.
TScopy مكتوبة بلغة Python ومنظمة في كلاسات (classes) لتكون أكثر قابلية للصيانة والقراءة من AutoIT. قد يتم تمييز AutoIT كبرنامج ضار من قبل برامج مكافحة الفيروسات أو الكشف لأن بعض البرامج الضارة استخدمت إمكانياته.
الفرق الرئيسي بين TScopy و RawCopy هو القدرة على نسخ عدة ملفات في كل تشغيل وتخزين هيكل الملفات مؤقتًا (caching). كما هو موضح في الصورة أدناه، توفر TScopy خيارات لتنزيل ملف واحد، أو عدة ملفات مفصولة بفواصل، أو محتويات مجلد، أو مسارات تحتوي على أحرف بدل (Wildcards) (لملفات أو مجلدات فردية)، ومجلدات متكررة (recursive).
تقوم TScopy بتخزين موقع كل مجلد وملف مؤقتًا أثناء معالجة المسار الكامل للملف الهدف. ثم تستخدم هذا المخبأ لتحسين البحث عن أي ملفات أخرى، مما يضمن تنفيذ عمليات النسخ المستقبلية بشكل أسرع بكثير. هذه ميزة كبيرة مقارنة بـ RawCopy، الذي يمر على المسار بالكامل لكل ملف.
.\TScopy_x64.exe -h
usage:
TScopy_x64.exe -r -o c:\test -f c:\users\tscopy\ntuser.dat
Description: Copies only the ntuser.dat file to the c:\test directory
TScopy_x64.exe -o c:\test -f c:\Windows\system32\config
Description: Copies all files in the config directory but does not copy the directories under it.
TScopy_x64.exe -r -o c:\test -f c:\Windows\system32\config
Description: Copies all files and subdirectories in the config directory.
TScopy_x64.exe -r -o c:\test -f c:\users\*\ntuser*,c:\Windows\system32\config
Description: Uses Wildcards and listings to copy any file beginning with ntuser under users accounts and recursively copies the registry hives.
Copy protected files by parsing the MFT. Must be run with Administrator privileges
optional arguments:
-h, --help show this help message and exit
-f FILE, --file FILE Full path of the file or directory to be copied.
Filenames can be grouped in a comma ',' seperated
list. Wildcard '*' is accepted.
-o OUTPUTDIR, --outputdir OUTPUTDIR
Directory to copy files too. Copy will keep paths
-i, --ignore_saved_ref_nums
Script stores the Reference numbers and path info to
speed up internal run. This option will ignore and not
save the stored MFT reference numbers and path
-r, --recursive Recursively copies directory. Note this only works with
directories.
يوجد خيار مخفي '--debug'، والذي يتيح إخراج معلومات التصحيح.
TScopy_x64.exe -f c:\windows\system32\config\SYSTEM -o e:\outputdir
ينسخ خلية SYSTEM إلى e:\outputdir سيكون الملف الجديد موجودًا في e:\outputdir\windows\system32\config\SYSTEM
TScopy_x64.exe -f c:\windows\system32\config\SYSTEM -o e:\outputdir -i
ينسخ خلية SYSTEM إلى e:\outputdir ولكنه يتجاهل أي ملفات مخبأة سابقة ولا يحفظ المخبأ الحالي على القرص
TScopy_x64.exe -f c:\windows\system32\config\SYSTEM,c:\windows\system32\config\SOFTWARE -o e:\outputdir
ينسخ كل من خليتي SYSTEM و SOFTWARE إلى e:\outputdir
TScopy_x64.exe -f c:\windows\system32\config\ -o e:\outputdir
ينسخ محتويات المجلد config إلى e:\outputdir
TScopy_x64.exe -r -f c:\windows\system32\config\ -o e:\outputdir
ينسخ محتويات المجلد config بشكل متكرر إلى e:\outputdir
TScopy_x64.exe -f c:\users\*\ntuser.dat -o e:\outputdir
ينسخ ملف NTUSER.DAT لكل مستخدم إلى e:\outputdir
TScopy_x64.exe -f c:\users\*\ntuser.dat* -o e:\outputdir
لكل مستخدم، ينسخ جميع الملفات التي تبدأ بـ NTUSER.DAT إلى e:\outputdir
TScopy_x64.exe -f c:\users\*\AppData\Roaming\Microsoft\Windows\Recent,c:\windows\system32\config,c:\users\*\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt -o e:\outputdir
لكل مستخدم، ينسخ جميع القوائم الانتقالية (jumplists) وخلايا التسجيل وأوامر تاريخ PowerShell إلى e:\outputdir
يرجى الإبلاغ عن الأخطاء في قسم المشكلات (issues) في صفحة GitHub.
"\*:\$MFT" سيعثر على $MFT لجميع محركات الأقراص المحلية