
ابحث وطارد بسرعة عبر الأدلة الجنائية لنظام ويندوز
توفر Chainsaw قدرة «الاستجابة الأولية» (first-response) قوية لتحديد التهديدات بسرعة داخل الأدلة الجنائية لنظام ويندوز مثل سجلات الأحداث وملف MFT. كما توفر Chainsaw طريقة عامة وسريعة للبحث في سجلات الأحداث عن الكلمات المفتاحية، وتحديد التهديدات من خلال دعم مدمج لقواعد كشف Sigma، أو عبر قواعد كشف Chainsaw المخصصة.
يمكن العثور على معلومات موسعة في الويكي الخاص بهذه الأداة: https://github.com/WithSecureLabs/chainsaw/wiki
في WithSecure Countercept، نجمع مجموعة واسعة من مصادر القياس عن بُعد (telemetry) من نقاط النهاية عبر وكيل EDR الخاص بنا لتقديم خدمة الكشف والاستجابة المُدارة. ومع ذلك، هناك ظروف نحتاج فيها إلى التحليل السريع للأدلة الجنائية التي لم يلتقطها EDR الخاص بنا، ومن الأمثلة الشائعة على ذلك تحقيقات الاستجابة للحوادث في بيئة لم يكن فيها EDR مثبتًا وقت الاختراق. أُنشئت Chainsaw لتزويد مُصطادي التهديدات واستشاري الاستجابة للحوادث بأداة لإجراء فرز سريع للأدلة الجنائية في هذه الظروف.
توفر سجلات أحداث ويندوز مصدرًا غنيًا بالمعلومات الجنائية لاصطياد التهديدات وتحقيقات الاستجابة للحوادث. لسوء الحظ، قد تكون معالجة سجلات الأحداث والبحث فيها عملية بطيئة وتستغرق وقتًا طويلاً، وتتطلب في معظم الحالات عبئًا إضافيًا يتمثل في البنية التحتية المحيطة – مثل مكدس ELK أو مثيل Splunk – للاصطياد بكفاءة عبر بيانات السجلات وتطبيق منطق الكشف. غالبًا ما تعني هذه التكلفة الإضافية أن فرق الدفاع (blue teams) غير قادرة على فرز سجلات أحداث ويندوز بسرعة لتوفير التوجيه والاستنتاجات اللازمة لتقدم تحقيقاتها. تحل Chainsaw هذه المشكلة لأنها تتيح البحث والاصطياد السريع عبر سجلات أحداث ويندوز.
في وقت كتابة هذا الدليل، هناك عدد قليل جدًا من الأدوات مفتوحة المصدر المستقلة التي توفر طريقة بسيطة وسريعة لفرز سجلات أحداث ويندوز، وتحديد العناصر المثيرة للاهتمام داخل السجلات، وتطبيق صيغة قواعد منطق الكشف (مثل Sigma) لكشف علامات النشاط الضار. في اختباراتنا، واجهت الأدوات الموجودة صعوبة في تطبيق منطق الكشف بكفاءة على كميات كبيرة من سجلات الأحداث، مما جعلها غير مناسبة للسيناريوهات التي تتطلب فرزًا سريعًا.
باستخدام المعاملين --sigma و--mapping يمكنك تحديد مجلد يحتوي على مجموعة فرعية من قواعد كشف SIGMA (أو حتى مستودع SIGMA git بأكمله) وستقوم Chainsaw تلقائيًا بتحميل هذه القواعد وتحويلها وتشغيلها على سجلات الأحداث المقدمة. يخبر ملف mapping أداة Chainsaw بالحقول الموجودة في سجلات الأحداث التي يجب استخدامها لمطابقة القواعد. بشكل افتراضي، تدعم Chainsaw مجموعة واسعة من أنواع سجلات الأحداث، بما في ذلك على سبيل المثال لا الحصر:
راجع ملف mapping للحصول على القائمة الكاملة للحقول المستخدمة في كشف القواعد، ولا تتردد في توسيعه وفقًا لاحتياجاتك.
بالإضافة إلى دعم قواعد sigma، تدعم Chainsaw أيضًا صيغة قواعد مخصصة. ستجد في المستودع مجلد rules يحتوي على قواعد Chainsaw متنوعة تتيح للمستخدمين:
مع إصدار Chainsaw v2، قررنا عدم تضمين مستودعي Sigma Rules وEVTX-Attack-Samples كوحدات فرعية (submodules) في Chainsaw بعد الآن. نوصي باستنساخ هذه المستودعات بشكل منفصل لضمان حصولك على أحدث الإصدارات.
إذا كنت لا تزال بحاجة إلى حزمة شاملة تحتوي على ثنائي Chainsaw وقواعد Sigma وسجلات أحداث نموذجية، يمكنك تنزيلها من قسم الإصدارات في مستودع GitHub هذا. ستجد أيضًا في قسم الإصدارات هذا نسخًا مجمّعة مسبقًا تحتوي على الثنائي فقط من Chainsaw لمنصات ومعماريات متنوعة.
إذا كنت تريد تجميع Chainsaw بنفسك، يمكنك استنساخ مستودع Chainsaw:
git clone https://github.com/WithSecureLabs/chainsaw.git
وتجميع الكود بنفسك عن طريق تشغيل: cargo build --release. بمجرد انتهاء البناء، ستجد نسخة من الثنائي المُجمَّع في مجلد target/release.
تأكد من البناء باستخدام علم --release لأن ذلك سيضمن وقت تنفيذ أسرع بشكل ملحوظ.
إذا كنت تريد أن ترى بسرعة شكل Chainsaw عند تشغيلها، يمكنك استنساخ مستودعي Sigma Rules وEVTX-Attack-Samples:``` git clone https://github.com/SigmaHQ/sigma git clone https://github.com/sbousseaden/EVTX-ATTACK-SAMPLES.git
ثم قم بتشغيل Chainsaw باستخدام المعلمات أدناه:```
./chainsaw hunt EVTX-ATTACK-SAMPLES/ -s sigma/ --mapping mappings/sigma-event-logs-all.yml
├───devShells │ └───x86_64-linux │ └───default: development environment 'nix-shell' ├───formatter │ └───x86_64-linux: package 'alejandra-3.1.0' └───packages └───x86_64-linux ├───chainsaw: package 'chainsaw-2.10.1' └───default: package 'chainsaw-2.10.1'
Chainsaw، كحزمة، متاح عبر [nixpkgs](https://search.nixos.org/packages?query=chainsaw).
إذا كنت تستخدم NixOS، فقط أضف `chainsaw` إلى ملف إعدادات النظام لديك.
ومع ذلك، إذا كنت لا تستخدم NixOS، فلا يزال بإمكانك تثبيت Chainsaw عبر Nix. الطريقة الموصى بها هي عبر `nix-shell`، والتي ستعمل مؤقتًا على تعديل متغير البيئة $PATH لديك.
للقيام بذلك، يرجى تشغيل ما يلي:```
nix-shell -p chainsaw
يمكنك أيضًا الاستفادة من حقيقة أن هذا المستودع هو flake، ويمكنك تشغيل ما يلي:``` nix profile install github:WithSecureLabs/chainsaw
ومع ذلك، إذا كنت تريد بناء chainsaw بنفسك، باستخدام Nix، يمكنك مرة أخرى استخدام `flake.nix`، المتوفر مع هذا المستودع.
لإنشاء الملف الثنائي، يرجى تشغيل الأمر التالي، في الدليل الجذر للمستودع المستنسخ```
nix build .#
سيؤدي هذا إلى إنشاء دليل ./result، حيث يقع ثنائي chainsaw في ./result/bin/chainsaw.
عند تنزيل chainsaw وتشغيله، قد تجد أن محرك EDR / مضاد الفيروسات المحلي لديك يكتشف Chainsaw على أنه ضار. يمكنك الاطلاع على أمثلة على ذلك في مشكلات GitHub التالية: مثال1، مثال2.
ترجع هذه التحذيرات عادةً إلى سجلات الأحداث النموذجية و/أو قواعد Sigma التي تحتوي على إشارات إلى سلاسل ضارة (مثل "mimikatz"). لاحظنا أيضًا حالات تم فيها اكتشاف ثنائي Chainsaw بواسطة مجموعة صغيرة من محركات مكافحة الفيروسات، وذلك غالبًا بسبب شكل من أشكال الكشف الاستدلالي.
في يوليو 2022، أصدرنا الإصدار الثاني من Chainsaw، وهو إصلاح شامل لطريقة عمل Chainsaw. يحتوي Chainsaw v2 على عدة تحسينات مهمة، بما في ذلك قائمة أبرز النقاط التالية:
إذا كنت لا تزال ترغب في استخدام الإصدار 1 من Chainsaw، يمكنك العثور على ثنائيات مجمّعة في قسم الإصدارات، أو يمكنك الوصول إلى الكود المصدري في فرع v1.x.x. يُرجى ملاحظة أن Chainsaw v1 لم يعد مدعومًا، ويجب على جميع المستخدمين الانتقال إلى Chainsaw v2.
شكرًا كبيرًا لـ @AlexKornitzer الذي تمكن من تحويل قاعدة شفرة "Christmas Project" الخاصة بـ Chainsaw v1 إلى منتج مصقول في v2.
USAGE:
chainsaw search [FLAGS] [OPTIONS] <pattern> [--] [path]...
FLAGS:
-h, --help Prints help information
-i, --ignore-case Ignore the case when searching patterns
--json Print the output in json format
--load-unknown Allow chainsaw to try and load files it cannot identify
--local Output the timestamp using the local machine's timestamp
-q Suppress informational output
--skip-errors Continue to search when an error is encountered
-V, --version Prints version information
OPTIONS:
--extension <extension>... Only search through files with the provided extension
--from <from> The timestamp to search from. Drops any documents older than the value provided
-o, --output <output> The path to output results to
-e, --regex <pattern>... A string or regular expression pattern to search for
-t, --tau <tau>... Tau expressions to search with. e.g. 'Event.System.EventID: =4104'
--timestamp <timestamp> The field that contains the timestamp
--timezone <timezone> Output the timestamp using the timezone provided
--to <to> The timestamp to search up to. Drops any documents newer than the value provided
ARGS:
<pattern> A string or regular expression pattern to search for. Not used when -e or -t is specified
<path>... The paths containing event logs to load and hunt through
ابحث في جميع ملفات .evtx عن السلسلة النصية "mimikatz" مع تجاهل حالة الأحرف
./chainsaw search mimikatz -i evtx_attack_samples/
*ابحث في جميع ملفات .evtx عن أحداث كتلة البرنامج النصي لـ PowerShell (معرف الحدث 4014)
./chainsaw search -t 'Event.System.EventID: =4104' evtx_attack_samples/
ابحث في سجل evtx محدد عن أحداث تسجيل الدخول، باستخدام نمط regex مطابق، مع الإخراج بتنسيق JSON
./chainsaw search -e "DC[0-9].insecurebank.local" evtx_attack_samples --json
USAGE:
chainsaw hunt [FLAGS] [OPTIONS] [--] [path]...
FLAGS:
--csv Print the output in csv format
--full Print the full values for the tabular output
-h, --help Prints help information
--json Print the output in json format
--load-unknown Allow chainsaw to try and load files it cannot identify
--local Output the timestamp using the local machine's timestamp
--log Print the output in log like format
--metadata Display additional metadata in the tablar output
-q Suppress informational output
--skip-errors Continue to hunt when an error is encountered
-V, --version Prints version information
OPTIONS:
--column-width <column-width> Set the column width for the tabular output
--extension <extension>... Only hunt through files with the provided extension
--from <from> The timestamp to hunt from. Drops any documents older than the value provided
--kind <kind>... Restrict loaded rules to specified kinds
--level <level>... Restrict loaded rules to specified levels
-m, --mapping <mapping>... A mapping file to tell Chainsaw how to use third-party rules
-o, --output <output> A path to output results to
-r, --rule <rule>... A path containing additional rules to hunt with
-s, --sigma <sigma>... A path containing Sigma rules to hunt with
--status <status>... Restrict loaded rules to specified statuses
--timezone <timezone> Output the timestamp using the timezone provided
--to <to> The timestamp to hunt up to. Drops any documents newer than the value provided
ARGS:
<rules> The path to a collection of rules to use for hunting
<path>... The paths containing event logs to load and hunt through
قم بالصيد عبر جميع ملفات evtx باستخدام قواعد Sigma لمنطق الكشف
./chainsaw hunt evtx_attack_samples/ -s sigma/ --mapping mappings/sigma-event-logs-all.yml
قم بالصيد عبر جميع ملفات evtx باستخدام قواعد Sigma وقواعد Chainsaw لمنطق الكشف، مع إخراج النتائج بتنسيق CSV إلى مجلد results
./chainsaw hunt evtx_attack_samples/ -s sigma/ --mapping mappings/sigma-event-logs-all.yml -r rules/ --csv --output results
قم بالصيد عبر جميع ملفات evtx باستخدام قواعد Sigma لمنطق الكشف، مع البحث فقط بين طوابع زمنية محددة، وإخراج النتائج بتنسيق JSON
./chainsaw hunt evtx_attack_samples/ -s sigma/ --mapping mappings/sigma-event-logs-all.yml --from "2019-03-17T19:09:39" --to "2019-03-17T19:09:50" --json
$ ./chainsaw hunt -r rules/ evtx_attack_samples -s sigma/rules --mapping mappings/sigma-event-logs-all.yml --level critical
██████╗██╗ ██╗ █████╗ ██╗███╗ ██╗███████╗ █████╗ ██╗ ██╗
██╔════╝██║ ██║██╔══██╗██║████╗ ██║██╔════╝██╔══██╗██║ ██║
██║ ███████║███████║██║██╔██╗ ██║███████╗███████║██║ █╗ ██║
██║ ██╔══██║██╔══██║██║██║╚██╗██║╚════██║██╔══██║██║███╗██║
╚██████╗██║ ██║██║ ██║██║██║ ╚████║███████║██║ ██║╚███╔███╔╝
╚═════╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝╚═╝ ╚═══╝╚══════╝╚═╝ ╚═╝ ╚══╝╚══╝
By WithSecure Countercept (@FranticTyping, @AlexKornitzer)
[+] Loading detection rules from: ../../rules/, /tmp/sigma/rules
[+] Loaded 129 detection rules (198 not loaded)
[+] Loading event logs from: ../../evtx_attack_samples (extensions: .evtx)
[+] Loaded 268 EVTX files (37.5 MB)
[+] Hunting: [========================================] 268/268
[+] Group: Antivirus
┌─────────────────────┬────────────────────┬──────────┬───────────┬─────────────┬────────────────────────────────┬──────────────────────────────────┬────────────────────┐
│ timestamp │ detections │ Event ID │ Record ID │ Computer │ Threat Name │ Threat Path │ User │
├─────────────────────┼────────────────────┼──────────┼───────────┼─────────────┼────────────────────────────────┼──────────────────────────────────┼────────────────────┤
│ 2019-07-18 20:40:00 │ ‣ Windows Defender │ 1116 │ 37 │ MSEDGEWIN10 │ Trojan:PowerShell/Powersploit. │ file:_C:\AtomicRedTeam\atomic- │ MSEDGEWIN10\IEUser │
│ │ │ │ │ │ M │ red-team-master\atomics\T1056\ │ │
│ │ │ │ │ │ │ Get-Keystrokes.ps1 │ │
├─────────────────────┼────────────────────┼──────────┼───────────┼─────────────┼────────────────────────────────┼──────────────────────────────────┼────────────────────┤
│ 2019-07-18 20:53:31 │ ‣ Windows Defender │ 1117 │ 106 │ MSEDGEWIN10 │ Trojan:XML/Exeselrun.gen!A │ file:_C:\AtomicRedTeam\atomic- │ MSEDGEWIN10\IEUser │
│ │ │ │ │ │ │ red-team-master\atomics\T1086\ │ │
│ │ │ │ │ │ │ payloads\test.xsl │ │
└─────────────────────┴────────────────────┴──────────┴───────────┴─────────────┴────────────────────────────────┴──────────────────────────────────┴────────────────────┘
[+] Group: Log Tampering
┌─────────────────────┬───────────────────────────────┬──────────┬───────────┬────────────────────────────────┬───────────────┐
│ timestamp │ detections │ Event ID │ Record ID │ Computer │ User │
├─────────────────────┼───────────────────────────────┼──────────┼───────────┼────────────────────────────────┼───────────────┤
│ 2019-01-20 07:00:50 │ ‣ Security Audit Logs Cleared │ 1102 │ 32853 │ WIN-77LTAPHIQ1R.example.corp │ Administrator │
└─────────────────────┴───────────────────────────────┴──────────┴───────────┴────────────────────────────────┴───────────────┘[+] Group: Sigma
┌─────────────────────┬────────────────────────────────┬───────┬────────────────────────────────┬──────────┬───────────┬──────────────────────────┬──────────────────────────────────┐
│ timestamp │ detections │ count │ Event.System.Provider │ Event ID │ Record ID │ Computer │ Event Data │
├─────────────────────┼────────────────────────────────┼───────┼────────────────────────────────┼──────────┼───────────┼──────────────────────────┼──────────────────────────────────┤
│ 2019-04-29 20:59:14 │ ‣ Malicious Named Pipe │ 1 │ Microsoft-Windows-Sysmon │ 18 │ 8046 │ IEWIN7 │ --- │
│ │ │ │ │ │ │ │ Image: System │
│ │ │ │ │ │ │ │ PipeName: "\\46a676ab7f179e511 │
│ │ │ │ │ │ │ │ e30dd2dc41bd388" │
│ │ │ │ │ │ │ │ ProcessGuid: 365ABB72-D9C4-5CC │
│ │ │ │ │ │ │ │ 7-0000-0010EA030000 │
│ │ │ │ │ │ │ │ ProcessId: 4 │
│ │ │ │ │ │ │ │ RuleName: "" │
│ │ │ │ │ │ │ │ UtcTime: "2019-04-29 20:59:14. │
│ │ │ │ │ │ │ │ 430" │
├─────────────────────┼────────────────────────────────┼───────┼────────────────────────────────┼──────────┼───────────┼──────────────────────────┼──────────────────────────────────┤
│ 2019-04-30 20:26:51 │ ‣ CobaltStrike Service │ 1 │ Microsoft-Windows-Sysmon │ 13 │ 9806 │ IEWIN7 │ --- │
│ │ Installations in Registry │ │ │ │ │ │ Details: "%%COMSPEC%% /b /c st │
│ │ │ │ │ │ │ │ art /b /min powershell.exe -no │
│ │ │ │ │ │ │ │ p -w hidden -noni -c \"if([Int │
│ │ │ │ │ │ │ │ Ptr]::Size -eq 4){$b='powershe │
│ │ │ │ │ │ │ │ ll.exe'}else{$b=$env:windir+'\ │
│ │ │ │ │ │ │ │ \syswow64\\WindowsPowerShell\\ │
│ │ │ │ │ │ │ │ v1.0\\powershell.exe'};$s=New- │
│ │ │ │ │ │ │ │ Object System.Diagnostics.Proc │
│ │ │ │ │ │ │ │ essStartInfo;$s.FileName=$b;$s │
│ │ │ │ │ │ │ │ .Arguments='-noni -nop -w hidd │
│ │ │ │ │ │ │ │ en -c &([scriptblock]::create( │
│ │ │ │ │ │ │ │ (New-Object IO.StreamReader(Ne │
│ │ │ │ │ │ │ │ w-Object IO.Compression.GzipSt │
│ │ │ │ │ │ │ │ ream((New-Object IO.MemoryStre │
│ │ │ │ │ │ │ │ am(,[Convert]::FromBase64Strin │
│ │ │ │ │ │ │ │ g(''H4sIAIuvyFwCA7VW+2/aSBD+OZ │
│ │ │ │ │ │ │ │ H6P1... │
│ │ │ │ │ │ │ │ (use --full to show all content) │
│ │ │ │ │ │ │ │ EventType: SetValue │
│ │ │ │ │ │ │ │ Image: "C:\\Windows\\system32\ │
│ │ │ │ │ │ │ │ \services.exe" │
│ │ │ │ │ │ │ │ ProcessGuid: 365ABB72-2586-5CC │
│ │ │ │ │ │ │ │ 9-0000-0010DC530000 │
│ │ │ │ │ │ │ │ ProcessId: 460 │
│ │ │ │ │ │ │ │ RuleName: "" │
│ │ │ │ │ │ │ │ TargetObject: "HKLM\\System\\C │
│ │ │ │ │ │ │ │ urrentControlSet\\services\\he │
│ │ │ │ │ │ │ │ llo\\ImagePath" │
│ │ │ │ │ │ │ │ UtcTime: "2019-04-30 20:26:51. │
│ │ │ │ │ │ │ │ 934" │
├─────────────────────┼────────────────────────────────┼───────┼────────────────────────────────┼──────────┼───────────┼──────────────────────────┼──────────────────────────────────┤
│ 2019-05-12 12:52:43 │ ‣ Meterpreter or Cobalt │ 1 │ Service Control Manager │ 7045 │ 10446 │ IEWIN7 │ --- │
│ │ Strike Getsystem Service │ │ │ │ │ │ AccountName: LocalSystem │
│ │ Installation │ │ │ │ │ │ ImagePath: "%COMSPEC% /c ping │
│ │ │ │ │ │ │ │ -n 1 127.0.0.1 >nul && echo 'W │
│ │ │ │ │ │ │ │ inPwnage' > \\\\.\\pipe\\WinPw │
│ │ │ │ │ │ │ │ nagePipe" │
│ │ │ │ │ │ │ │ ServiceName: WinPwnage │
│ │ │ │ │ │ │ │ ServiceType: user mode service │
│ │ │ │ │ │ │ │ StartType: demand start │
├─────────────────────┼────────────────────────────────┼───────┼────────────────────────────────┼──────────┼───────────┼──────────────────────────┼──────────────────────────────────┤
│ 2019-06-21 07:35:37 │ ‣ Dumpert Process Dumper │ 1 │ Microsoft-Windows-Sysmon │ 11 │ 238375 │ alice.insecurebank.local │ --- │
│ │ │ │ │ │ │ │ CreationUtcTime: "2019-06-21 0 │
│ │ │ │ │ │ │ │ 6:53:03.227" │
│ │ │ │ │ │ │ │ Image: "C:\\Users\\administrat │
│ │ │ │ │ │ │ │ or\\Desktop\\x64\\Outflank-Dum │
│ │ │ │ │ │ │ │ pert.exe" │
│ │ │ │ │ │ │ │ ProcessGuid: ECAD0485-88C9-5D0 │
│ │ │ │ │ │ │ │ C-0000-0010348C1D00 │
│ │ │ │ │ │ │ │ ProcessId: 3572 │
│ │ │ │ │ │ │ │ RuleName: "" │
│ │ │ │ │ │ │ │ TargetFilename: "C:\\Windows\\ │
│ │ │ │ │ │ │ │ Temp\\dumpert.dmp" │
│ │ │ │ │ │ │ │ UtcTime: "2019-06-21 07:35:37. │
│ │ │ │ │ │ │ │ 324" │
└─────────────────────┴────────────────────────────────┴───────┴────────────────────────────────┴──────────┴───────────┴──────────────────────────┴──────────────────────────────────┘
الأمر:
analyse shimcache إنشاء خط زمني للتنفيذ من shimcache مع إثراءات amcache اختيارية
الاستخدام:
chainsaw analyse shimcache [OPTIONS] <SHIMCACHE>
الوسائط:
<SHIMCACHE> المسار إلى أثر shimcache (ملف سجل SYSTEM)
الخيارات:
-e, --regex <pattern> سلسلة نصية أو تعبير نمطي لاكتشاف إدخالات shimcache التي يتطابق طابعها الزمني مع وقت إدراجها
-r, --regexfile <REGEX_FILE> المسار إلى ملف مفصول بأسطر جديدة يحتوي على أنماط regex لاكتشاف إدخالات shimcache التي يتطابق طابعها الزمني مع وقت إدراجها
-o, --output <OUTPUT> المسار لإخراج ملف csv الناتج
-a, --amcache <AMCACHE> المسار إلى أثر amcache (Amcache.hve) لإثراء الخط الزمني
-p, --tspair تفعيل كشف أزواج الطوابع الزمنية المتقاربة بين shimcache وamcache للعثور على طوابع زمنية إضافية لإدراج إدخالات shimcache
-h, --help طباعة المساعدة
--regexfile مضمّن في analysis/shimcache_patterns.txt.تحليل أثر shimcache باستخدام أنماط regex المقدَّمة، مع تفعيل إثراء amcache وكشف أزواج الطوابع الزمنية المتقاربة. الإخراج إلى ملف csv.
./chainsaw analyse shimcache ./SYSTEM --regexfile ./analysis/shimcache_patterns.txt --amcache ./Amcache.hve --tspair --output ./output.csv
تحليل أثر shimcache باستخدام أنماط regex المقدَّمة (بدون إثراء amcache). الإخراج إلى الطرفية.
./chainsaw analyse shimcache ./SYSTEM --regexfile ./analysis/shimcache_patterns.txt
يكشف مؤشرين للعبث الانتقائي بسجلات الأحداث داخل ملف .evtx واحد أو أكثر:
فجوات RecordID: قيم EventRecordID لكل قناة تكون عادةً متزايدة تزايدًا رتيبًا دون ثغرات. وجود ثغرة داخل ملف evtx واحد (أي ليست حد دوران السجل) أمر غير معتاد، وهي البصمة التي تتركها الأدوات التي تحذف السجلات الفردية بدقة (مثل تقنيات نمط Eventlogedit) دون إطلاق حدث "تم مسح السجل" المزعج (EID 1102).
فجوات الوقت: فترات السكون الطويلة بشكل غير متوقع بين الأحداث المتتالية على قناة نشطة عادةً قد تشير إلى أن السجلات داخل تلك الفترة أُزيلت. الحد الأدنى قابل للتهيئة؛ ويُترك وضع خط الأساس لكل مضيف للمحلل.
الأمر: analyse gaps كشف الفجوات الزمنية أو فجوات RecordID في ملفات evtx (احتمال حذف انتقائي للسجلات)
الاستخدام: chainsaw analyse gaps [OPTIONS] [PATH]...
الوسائط: [PATH]... المسار (المسارات) إلى ملفات evtx أو الدلائل التي تحتويها
الخيارات: --min-time-gap-minutes الحد الأدنى للفجوة الزمنية (بالدقائق) بين الأحداث المتتالية لتصنيفها كمشبوهة [الافتراضي: 30] --no-record-id-gaps تخطي كشف فجوات RecordID (تصنيف فجوات الوقت فقط) --no-time-gaps تخطي كشف فجوات الوقت (تصنيف فجوات RecordID فقط) -j, --json طباعة الإخراج بصيغة json -o, --output حفظ الإخراج في ملف -q كتم الإخراج المعلوماتي --skip-errors المتابعة عند مواجهة خطأ -h, --help طباعة المساعدة
فحص دليل ملفات evtx بحثًا عن فجوات RecordID وفجوات الوقت مع الحد الافتراضي 30 دقيقة:
./chainsaw analyse gaps ./Logs/
البحث فقط عن السجلات المحذوفة انتقائيًا (ثغرات RecordID)، وإخراج JSON قابل للقراءة آليًا:
./chainsaw analyse gaps ./Logs/ --no-time-gaps --json -o ./gaps.json
يختلف محلل قاعدة بيانات SRUM المطبَّق في Chainsaw عن غيره من المحللات لأنه لا يعتمد على قيم ثابتة مسبقًا حول الجداول. تُستخرَج المعلومات مباشرة من خلية SOFTWARE، وهي وسيطة إلزامية. الهدف هو تجنّب الأخطاء المتعلقة بالجداول غير المعروفة.
الأمر:
analyse srum تحليل قاعدة بيانات SRUM
الاستخدام:
chainsaw analyse srum [OPTIONS] --software <SOFTWARE_HIVE_PATH> <SRUM_PATH>
الوسائط:
<SRUM_PATH> المسار إلى قاعدة بيانات SRUM
الخيارات:
-s, --software <SOFTWARE_HIVE_PATH> المسار إلى خلية SOFTWARE
--stats-only إخراج تفاصيل قاعدة بيانات SRUM فقط
-q كتم الإخراج المعلوماتي
-o, --output <OUTPUT> حفظ الإخراج في ملف
-h, --help طباعة المساعدة
تحليل قاعدة بيانات SRUM (خلية SOFTWARE إلزامية)
./chainsaw analyse srum --software ./SOFTWARE ./SRUDB.dat --output ./output.json
$ ./chainsaw analyse srum --software ./SOFTWARE ./SRUDB.dat -o ./output.json
██████╗██╗ ██╗ █████╗ ██╗███╗ ██╗███████╗ █████╗ ██╗ ██╗
██╔════╝██║ ██║██╔══██╗██║████╗ ██║██╔════╝██╔══██╗██║ ██║
██║ ███████║███████║██║██╔██╗ ██║███████╗███████║██║ █╗ ██║
██║ ██╔══██║██╔══██║██║██║╚██╗██║╚════██║██╔══██║██║███╗██║
╚██████╗██║ ██║██║ ██║██║██║ ╚████║███████║██║ ██║╚███╔███╔╝
╚═════╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝╚═╝ ╚═══╝╚══════╝╚═╝ ╚═╝ ╚══╝╚══╝
بواسطة WithSecure Countercept (@FranticTyping, @AlexKornitzer)[+] ESE database file loaded from "/home/user/Documents/SRUDB.dat"
[+] Parsing the ESE database...
[+] SOFTWARE hive loaded from "/home/user/Documents/SOFTWARE"
[+] Parsing the SOFTWARE registry hive...
[+] Analysing the SRUM database...
[+] Details about the tables related to the SRUM extensions:
+------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
| Table GUID | Table Name | DLL Path | Timeframe of the data | Expected Retention Time |
+------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
| {5C8CF1C7-7257-4F13-B223-970EF5939312} | App Timeline Provider | %SystemRoot%\System32\eeprov.dll | 2022-03-10 16:34:59 UTC | 7 days |
| | | | 2022-03-10 21:10:00 UTC | |
+------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
| {B6D82AF1-F780-4E17-8077-6CB9AD8A6FC4} | Tagged Energy Provider | %SystemRoot%\System32\eeprov.dll | No records | 3 days |
+------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
| {D10CA2FE-6FCF-4F6D-848E-B2E99266FA86} | WPN SRUM Provider | %SystemRoot%\System32\wpnsruprov.dll | 2022-03-10 20:09:00 UTC | 60 days |
| | | | 2022-03-10 21:09:00 UTC | |
+------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
| {D10CA2FE-6FCF-4F6D-848E-B2E99266FA89} | Application Resource Usage Provider | %SystemRoot%\System32\appsruprov.dll | 2022-03-10 16:34:59 UTC | 60 days |
| | | | 2022-03-10 21:10:00 UTC | |
+------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
| {FEE4E14F-02A9-4550-B5CE-5FA2DA202E37} | Energy Usage Provider | %SystemRoot%\System32\energyprov.dll | No records | 60 days |
+------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
| {FEE4E14F-02A9-4550-B5CE-5FA2DA202E37}LT | Energy Usage Provider (Long Term) | %SystemRoot%\System32\energyprov.dll | No records | 1820 days |
+------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
| {973F5D5C-1D90-4944-BE8E-24B94231A174} | Windows Network Data Usage Monitor | %SystemRoot%\System32\nduprov.dll | 2022-03-10 16:34:59 UTC | 60 days |
| | | | 2022-03-10 21:10:00 UTC | |
+------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
| {7ACBBAA3-D029-4BE4-9A7A-0885927F1D8F} | vfuprov | %SystemRoot%\System32\vfuprov.dll | 2022-03-10 20:09:00 UTC | 60 days |
| | | | 2022-03-10 21:10:00 UTC | |
+------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
| {DA73FB89-2BEA-4DDC-86B8-6E048C6DA477} | Energy Estimation Provider | %SystemRoot%\System32\eeprov.dll | No records | 7 days |
+------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
| {DD6636C4-8929-4683-974E-22C046A43763} | Windows Network Connectivity Usage Monitor | %SystemRoot%\System32\ncuprov.dll | 2022-03-10 16:34:59 UTC | 60 days |
| | | | 2022-03-10 21:10:00 UTC | |
+------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
[+] SRUM database parsed successfully
[+] Saving output to "/home/user/Documents/output.json"
[+] Saved output to "/home/user/Documents/output.json"
يمكن العثور على معلومات حول الرؤى الجنائية الجديدة المتعلقة بهذا الأثر في الويكي: https://github.com/WithSecureLabs/chainsaw/wiki/SRUM-Analysis.
USAGE:
chainsaw dump [OPTIONS] <PATH>
ARGUMENTS:
<PATH> The path to an artefact to dump
OPTIONS:
-j, --json Dump in json format
--jsonl Print the output in jsonl format
--load-unknown Allow chainsaw to try and load files it cannot identify
-o, --output <OUTPUT> A path to output results to
-q Suppress informational output
--skip-errors Continue to hunt when an error is encountered
-h, --help Print help
قم بتفريغ خلية SOFTWARE
./chainsaw dump ./SOFTWARE.hve --json --output ./output.json
| نوع الحدث | معرف الحدث |
|---|
| إنشاء عملية (Sysmon) | 1 |
| اتصالات الشبكة (Sysmon) | 3 |
| تحميلات الصور (Sysmon) | 7 |
| إنشاء ملفات (Sysmon) | 11 |
| أحداث التسجيل (Sysmon) | 13 |
| كتل سكربتات Powershell | 4104 |
| إنشاء عملية | 4688 |
| إنشاء مهمة مجدولة | 4698 |
| إنشاء خدمة | 7045 |