
البحث السريع والتقصي عبر الأدلة الجنائية لنظام ويندوز
توفر Chainsaw قدرة قوية على "الاستجابة الأولى" لتحديد التهديدات بسرعة داخل الأدلة الجنائية لنظام ويندوز مثل سجلات الأحداث وملف MFT. تقدم Chainsaw طريقة عامة وسريعة للبحث في سجلات الأحداث عن الكلمات المفتاحية، ومن خلال تحديد التهديدات باستخدام الدعم المدمج لقواعد كشف Sigma، وعبر قواعد كشف Chainsaw المخصصة.
يمكن العثور على معلومات موسعة في Wiki الخاص بهذه الأداة: https://github.com/WithSecureLabs/chainsaw/wiki
في WithSecure Countercept، نستوعب مجموعة واسعة من مصادر القياس عن بُعد من نقاط النهاية عبر وكيل EDR الخاص بنا لتقديم خدمة الكشف والاستجابة المُدارة. ومع ذلك، هناك ظروف نحتاج فيها إلى تحليل الأدلة الجنائية بسرعة والتي لم يلتقطها EDR الخاص بنا، ومن الأمثلة الشائعة التحقيقات في الاستجابة للحوادث على نظام لم يكن فيه EDR الخاص بنا مثبتًا وقت الاختراق. تم إنشاء Chainsaw لتزويد صائدي التهديدات ومستشاري الاستجابة للحوادث لدينا بأداة لإجراء فرز سريع للأدلة الجنائية في هذه الظروف.
توفر سجلات أحداث ويندوز مصدرًا غنيًا بالمعلومات الجنائية للتنقيب عن التهديدات وتحقيقات الاستجابة للحوادث. لسوء الحظ، يمكن أن تكون معالجة سجلات الأحداث والبحث فيها عملية بطيئة ومستهلكة للوقت، وفي معظم الحالات تتطلب عبء البنية التحتية المحيطة – مثل حزمة ELK أو نسخة Splunk – للتنقيب بكفاءة في بيانات السجل وتطبيق منطق الكشف. غالبًا ما يعني هذا العبء أن الفرق الزرقاء غير قادرة على الفرز السريع لسجلات أحداث ويندوز لتوفير التوجيه والاستنتاجات المطلوبة لدفع تحقيقاتهم قدمًا. تحل Chainsaw هذه المشكلة لأنها تتيح البحث والتنقيب السريع في سجلات أحداث ويندوز.
في وقت كتابة هذا النص، هناك عدد قليل جدًا من الأدوات مفتوحة المصدر والمستقلة التي توفر طريقة بسيطة وسريعة لفرز سجلات أحداث ويندوز، وتحديد العناصر المثيرة للاهتمام داخل السجلات، وتطبيق صيغة قاعدة منطق الكشف (مثل Sigma) لكشف علامات النشاط الخبيث. في اختباراتنا، واجهت الأدوات الموجودة صعوبة في تطبيق منطق الكشف بكفاءة على كميات كبيرة من سجلات الأحداث مما يجعلها غير مناسبة للسيناريوهات التي تتطلب فرزًا سريعًا.
باستخدام المعاملين --sigma و--mapping يمكنك تحديد دليل يحتوي على مجموعة فرعية من قواعد كشف SIGMA (أو مستودع SIGMA git بالكامل فقط) وستقوم chainsaw تلقائيًا بتحميل هذه القواعد وتحويلها وتشغيلها مقابل سجلات الأحداث المقدمة. يخبر ملف التعيين chainsaw بالحقول التي يجب استخدامها في سجلات الأحداث لمطابقة القواعد. بشكل افتراضي، تدعم Chainsaw مجموعة واسعة من أنواع سجلات الأحداث، بما في ذلك على سبيل المثال لا الحصر:
راجع ملف التعيين للحصول على القائمة الكاملة للحقول المستخدمة لكشف القواعد، ولا تتردد في توسيعها حسب احتياجاتك.
بالإضافة إلى دعم قواعد sigma، تدعم Chainsaw أيضًا صيغة قواعد مخصصة. في المستودع ستجد دليل rules الذي يحتوي على قواعد Chainsaw متنوعة تتيح للمستخدمين:
مع إصدار Chainsaw v2، قررنا عدم تضمين مستودعي Sigma Rules وEVTX-Attack-Samples كوحدات فرعية لـ 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 أصدرنا الإصدار 2 من 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 إلى مجلد النتائج
./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" │
└─────────────────────┴────────────────────────────────┴───────┴────────────────────────────────┴──────────┴───────────┴──────────────────────────┴──────────────────────────────────┘
COMMAND:
analyse shimcache Create an execution timeline from the shimcache with optional amcache enrichments
USAGE:
chainsaw analyse shimcache [OPTIONS] <SHIMCACHE>
ARGUMENTS:
<SHIMCACHE> The path to the shimcache artefact (SYSTEM registry file)
OPTIONS:
-e, --regex <pattern> A string or regular expression for detecting shimcache entries whose timestamp matches their insertion time
-r, --regexfile <REGEX_FILE> The path to a newline delimited file containing regex patterns for detecting shimcache entries whose timestamp matches their insertion time
-o, --output <OUTPUT> The path to output the result csv file
-a, --amcache <AMCACHE> The path to the amcache artefact (Amcache.hve) for timeline enrichment
-p, --tspair Enable near timestamp pair detection between shimcache and amcache for finding additional insertion timestamps for shimcache entries
-h, --help Print 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).
الفجوات الزمنية: النوافذ الهادئة الطويلة بشكل غير متوقع بين الأحداث المتتالية على قناة عادةً ما تكون مزدحمة بالأحداث قد تشير إلى أن السجلات داخل تلك النافذة قد أُزيلت. العتبة قابلة للتكوين؛ ويُترك وضع خط أساس لكل مضيف للمحلل.
COMMAND: analyse gaps Detect chronological or RecordID gaps in evtx files (possible selective record deletion)
USAGE: chainsaw analyse gaps [OPTIONS] [PATH]...
ARGUMENTS: [PATH]... The path(s) to evtx files or directories containing them
OPTIONS: --min-time-gap-minutes Minimum time gap (in minutes) between consecutive events to flag as suspicious [default: 30] --no-record-id-gaps Skip RecordID gap detection (only flag time gaps) --no-time-gaps Skip time gap detection (only flag RecordID gaps) -j, --json Print the output in json format -o, --output Save the output to a file -q Suppress informational output --skip-errors Continue when an error is encountered -h, --help Print help
فحص دليل من ملفات evtx بحثاً عن فجوات RecordID والفجوات الزمنية مع العتبة الافتراضية البالغة 30 دقيقة:
./chainsaw analyse gaps ./Logs/
البحث فقط عن السجلات المحذوفة انتقائياً (ثغرات RecordID)، وإخراج JSON قابل للقراءة آلياً:
./chainsaw analyse gaps ./Logs/ --no-time-gaps --json -o ./gaps.json
يختلف محلل قاعدة بيانات SRUM المُنفَّذ في Chainsaw عن المحللات الأخرى لأنه لا يعتمد على قيم مُضمَّنة بشكل ثابت حول الجداول. تُستخرج المعلومات مباشرةً من خلية SOFTWARE، وهي معامل إلزامي. الهدف هو تجنب الأخطاء المتعلقة بالجداول غير المعروفة.
COMMAND:
analyse srum Analyse the SRUM database
USAGE:
chainsaw analyse srum [OPTIONS] --software <SOFTWARE_HIVE_PATH> <SRUM_PATH>
ARGUMENTS:
<SRUM_PATH> The path to the SRUM database
OPTIONS:
-s, --software <SOFTWARE_HIVE_PATH> The path to the SOFTWARE hive
--stats-only Only output details about the SRUM database
-q Suppress informational output
-o, --output <OUTPUT> Save the output to a file
-h, --help Print help
تحليل قاعدة بيانات SRUM (خلية SOFTWARE إلزامية)
./chainsaw analyse srum --software ./SOFTWARE ./SRUDB.dat --output ./output.json
$ ./chainsaw analyse srum --software ./SOFTWARE ./SRUDB.dat -o ./output.json
██████╗██╗ ██╗ █████╗ ██╗███╗ ██╗███████╗ █████╗ ██╗ ██╗
██╔════╝██║ ██║██╔══██╗██║████╗ ██║██╔════╝██╔══██╗██║ ██║
██║ ███████║███████║██║██╔██╗ ██║███████╗███████║██║ █╗ ██║
██║ ██╔══██║██╔══██║██║██║╚██╗██║╚════██║██╔══██║██║███╗██║
╚██████╗██║ ██║██║ ██║██║██║ ╚████║███████║██║ ██║╚███╔███╔╝
╚═════╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝╚═╝ ╚═══╝╚══════╝╚═╝ ╚═╝ ╚══╝╚══╝
By WithSecure Countercept (@FranticTyping, @AlexKornitzer)[+] تم تحميل ملف قاعدة بيانات ESE من "/home/user/Documents/SRUDB.dat"
[+] جارٍ تحليل قاعدة بيانات ESE...
[+] تم تحميل خلية SOFTWARE من "/home/user/Documents/SOFTWARE"
[+] جارٍ تحليل خلية سجل SOFTWARE...
[+] جارٍ تحليل قاعدة بيانات SRUM...
[+] تفاصيل حول الجداول المتعلقة بملحقات SRUM:
+------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
| 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 بنجاح
[+] جارٍ حفظ المخرجات في "/home/user/Documents/output.json"
[+] تم حفظ المخرجات في "/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 |