أوامر التسلسل الزمني لـ DFIR¶
معالج المسح¶
يحتوي الأمران csv-timeline و json-timeline الآن على معالج مسح مُفعَّل افتراضيًا.
الغرض من ذلك هو مساعدة المستخدمين على الاختيار بسهولة لقواعد الكشف التي يرغبون في تفعيلها وفقًا لاحتياجاتهم وتفضيلاتهم.
تستند مجموعات قواعد الكشف التي يتم تحميلها إلى القوائم الرسمية في مشروع Sigma.
التفاصيل موضَّحة في هذه التدوينة.
يمكنك بسهولة إيقاف المعالج واستخدام Hayabusa بطريقته التقليدية عن طريق إضافة الخيار -w, --no-wizard.
قواعد Core¶
تُفعِّل مجموعة قواعد core القواعد التي لها حالة test أو stable ومستوى high أو critical.
هذه قواعد عالية الجودة وذات ثقة وأهمية عالية ولا ينبغي أن تنتج العديد من النتائج الإيجابية الخاطئة.
حالة القاعدة هي test أو stable مما يعني أنه لم يتم الإبلاغ عن أي نتائج إيجابية خاطئة لأكثر من 6 أشهر.
ستتطابق القواعد مع تقنيات المهاجمين، أو النشاط المشبوه العام، أو السلوك الخبيث.
وهذا مماثل لاستخدام الخيارات --exclude-status deprecated,unsupported,experimental --min-level high.
قواعد Core+¶
تُفعِّل مجموعة قواعد core+ القواعد التي لها حالة test أو stable ومستوى medium أو أعلى.
غالبًا ما تحتاج قواعد medium إلى ضبط إضافي حيث قد تتطابق مع تطبيقات معينة، أو سلوك مستخدم مشروع، أو نصوص برمجية خاصة بمؤسسة ما.
وهذا مماثل لاستخدام الخيارات --exclude-status deprecated,unsupported,experimental --min-level medium.
قواعد Core++¶
تُفعِّل مجموعة قواعد core++ القواعد التي لها حالة experimental أو test أو stable ومستوى medium أو أعلى.
هذه القواعد متطورة للغاية.
يتم التحقق منها مقابل ملفات evtx الأساسية المتاحة في مشروع SigmaHQ ومراجعتها من قبل عدة مهندسي كشف.
بخلاف ذلك فهي غير مختبرة إلى حد كبير في البداية.
استخدم هذه القواعد إذا كنت ترغب في القدرة على اكتشاف التهديدات في أقرب وقت ممكن مقابل التعامل مع عتبة أعلى من النتائج الإيجابية الخاطئة.
وهذا مماثل لاستخدام الخيارات --exclude-status deprecated,unsupported --min-level medium.
قواعد إضافية للتهديدات الناشئة (ET)¶
تُفعِّل مجموعة قواعد Emerging Threats (ET) القواعد التي لها وسم detection.emerging_threats.
تستهدف هذه القواعد تهديدات محددة وهي مفيدة بشكل خاص للتهديدات الحالية التي لا تتوفر عنها معلومات كثيرة بعد.
لا ينبغي أن تحتوي هذه القواعد على العديد من النتائج الإيجابية الخاطئة ولكن ستقل أهميتها بمرور الوقت.
عندما لا تكون هذه القواعد مُفعَّلة، فإن ذلك مماثل لاستخدام الخيار --exclude-tag detection.emerging_threats.
عند تشغيل Hayabusa بالطريقة التقليدية بدون المعالج، ستُضمَّن هذه القواعد افتراضيًا.
قواعد إضافية لصيد التهديدات (TH)¶
تُفعِّل مجموعة قواعد Threat Hunting (TH) القواعد التي لها وسم detection.threat_hunting.
قد تكتشف هذه القواعد نشاطًا خبيثًا غير معروف، ومع ذلك، سيكون لديها عادةً المزيد من النتائج الإيجابية الخاطئة.
عندما لا تكون هذه القواعد مُفعَّلة، فإن ذلك مماثل لاستخدام الخيار --exclude-tag detection.threat_hunting.
عند تشغيل Hayabusa بالطريقة التقليدية بدون المعالج، ستُضمَّن هذه القواعد افتراضيًا.
تصفية سجلات الأحداث والقواعد المبنية على القناة¶
اعتبارًا من Hayabusa v2.16.0، نقوم بتفعيل تصفية مبنية على القناة عند تحميل ملفات .evtx وقواعد .yml.
الغرض هو جعل المسح فعالًا قدر الإمكان عن طريق تحميل ما هو ضروري فقط.
بينما من الممكن وجود عدة مزودين في سجل أحداث واحد، فمن غير الشائع وجود قنوات متعددة داخل ملف evtx واحد.
(المرة الوحيدة التي رأينا فيها ذلك هي عندما قام شخص ما بدمج ملفي evtx مختلفين بشكل مصطنع لمشروع sample-evtx.)
يمكننا استخدام ذلك لصالحنا عن طريق التحقق أولًا من حقل Channel في السجل الأول لكل ملف .evtx محدد للمسح.
كما نتحقق من القنوات التي تستخدمها قواعد .yml المحددة في حقل Channel للقاعدة.
باستخدام هاتين القائمتين، نقوم فقط بتحميل القواعد التي تستخدم قنوات موجودة فعليًا داخل ملفات .evtx.
فعلى سبيل المثال، إذا أراد المستخدم مسح Security.evtx، فلن تُستخدم سوى القواعد التي تحدد Channel: Security.
لا فائدة من تحميل قواعد كشف أخرى، على سبيل المثال القواعد التي تبحث فقط عن أحداث في سجل Application، وما إلى ذلك...
لاحظ أن حقول القناة (مثال: Channel: Security) ليست معرَّفة صراحةً داخل قواعد Sigma الأصلية.
بالنسبة لقواعد Sigma، يتم تعريف حقول القناة ومعرفات الأحداث ضمنيًا باستخدام حقلي service و category تحت logsource. (مثال: service: security)
عند تنسيق قواعد Sigma في مستودع hayabusa-rules، نقوم بإزالة تجريد حقل logsource وتعريف حقول القناة ومعرف الحدث صراحةً.
نشرح كيف ولماذا نقوم بذلك بالتفصيل هنا.
حاليًا، هناك قاعدتا كشف فقط لا تحتويان على Channel معرَّف ومخصصتان لمسح جميع ملفات .evtx وهما التاليتان:
إذا كنت ترغب في استخدام هاتين القاعدتين ومسح جميع القواعد مقابل ملفات .evtx المحمَّلة فستحتاج إلى إضافة الخيار -A, --enable-all-rules في الأمرين csv-timeline و json-timeline.
في اختباراتنا المرجعية، تعطي تصفية القواعد عادةً تحسينًا في السرعة بنسبة 20% إلى 10 أضعاف اعتمادًا على الملفات التي يتم مسحها وبالطبع تستخدم ذاكرة أقل.
تُستخدم تصفية القناة أيضًا عند تحميل ملفات .evtx.
على سبيل المثال، إذا حددت قاعدة تبحث عن أحداث بقناة Security، فلا فائدة من تحميل ملفات .evtx التي ليست من سجل Security.
في اختباراتنا المرجعية، يعطي هذا فائدة في السرعة بحوالي 10% مع عمليات المسح العادية وزيادة في الأداء تصل إلى أكثر من 60%+ عند المسح بقاعدة واحدة.
إذا كنت متأكدًا من استخدام قنوات متعددة داخل ملف .evtx واحد، على سبيل المثال استخدم شخص ما أداة لدمج عدة ملفات .evtx معًا، فيمكنك تعطيل هذه التصفية باستخدام الخيار -a, --scan-all-evtx-files في الأمرين csv-timeline و json-timeline.
ملاحظة: تعمل تصفية القناة فقط مع ملفات
.evtxوستتلقى خطأ إذا حاولت تحميل سجلات الأحداث من ملف JSON باستخدام-J, --json-inputوحددت أيضًا-Aأو-a.
الأمر csv-timeline¶
سينشئ الأمر csv-timeline تسلسلًا زمنيًا جنائيًا للأحداث بتنسيق CSV.
Usage: csv-timeline <INPUT> [OPTIONS]
Input:
-d, --directory <DIR> Directory of multiple .evtx files
-f, --file <FILE> File path to one .evtx file
-l, --live-analysis Analyze the local C:\Windows\System32\winevt\Logs folder
General Options:
-C, --clobber Overwrite files when saving
-h, --help Show the help menu
-J, --JSON-input Scan JSON formatted logs instead of .evtx (.json or .jsonl)
-w, --no-wizard Do not ask questions. Scan for all events and alerts
-Q, --quiet-errors Quiet errors mode: do not save error logs
-x, --recover-records Carve evtx records from slack space (default: disabled)
-r, --rules <DIR/FILE> Specify a custom rule directory or file (default: ./rules)
-c, --rules-config <DIR> Specify custom rule config directory (default: ./rules/config)
-s, --sort Sort events before saving the file. (warning: this uses much more memory!)
-t, --threads <NUMBER> Number of threads (default: optimal number for performance)
--target-file-ext <FILE-EXT...> Specify additional evtx file extensions (ex: evtx_data)
Filtering:
-E, --EID-filter Scan only common EIDs for faster speed (./rules/config/target_event_IDs.txt)
-A, --enable-all-rules Enable all rules regardless of loaded evtx files (disable channel filter for rules)
-D, --enable-deprecated-rules Enable rules with a status of deprecated
-n, --enable-noisy-rules Enable rules set to noisy (./rules/config/noisy_rules.txt)
-u, --enable-unsupported-rules Enable rules with a status of unsupported
-e, --exact-level <LEVEL> Only load rules with a specific level (informational, low, medium, high, critical)
--exclude-category <CATEGORY...> Do not load rules with specified logsource categories (ex: process_creation,pipe_created)
--exclude-computer <COMPUTER...> Do not scan specified computer names (ex: ComputerA) (ex: ComputerA,ComputerB)
--exclude-eid <EID...> Do not scan specific EIDs for faster speed (ex: 1) (ex: 1,4688)
--exclude-status <STATUS...> Do not load rules according to status (ex: experimental) (ex: stable,test)
--exclude-tag <TAG...> Do not load rules with specific tags (ex: sysmon)
--include-category <CATEGORY...> Only load rules with specified logsource categories (ex: process_creation,pipe_created)
--include-computer <COMPUTER...> Scan only specified computer names (ex: ComputerA) (ex: ComputerA,ComputerB)
--include-eid <EID...> Scan only specified EIDs for faster speed (ex: 1) (ex: 1,4688)
--include-status <STATUS...> Only load rules with specific status (ex: experimental) (ex: stable,test)
--include-tag <TAG...> Only load rules with specific tags (ex: attack.execution,attack.discovery)
-m, --min-level <LEVEL> Minimum level for rules to load (default: informational)
-P, --proven-rules Scan with only proven rules for faster speed (./rules/config/proven_rules.txt)
-a, --scan-all-evtx-files Scan all evtx files regardless of loaded rules (disable channel filter for evtx files)
--time-offset <OFFSET> Scan recent events based on an offset (ex: 1y, 3M, 30d, 24h, 30m)
--timeline-end <DATE> End time of the event logs to load (ex: "2022-02-22 23:59:59 +09:00")
--timeline-start <DATE> Start time of the event logs to load (ex: "2020-02-22 00:00:00 +09:00")
Output:
-b, --disable-abbreviations Disable abbreviations
-G, --GeoIP <MAXMIND-DB-DIR> Add GeoIP (ASN, city, country) info to IP addresses
-H, --HTML-report <FILE> Save Results Summary details to an HTML report (ex: results.html)
-M, --multiline Output event field information in multiple rows
-F, --no-field-data-mapping Disable field data mapping
--no-pwsh-field-extraction Disable field extraction of PowerShell classic logs
-o, --output <FILE> Save the timeline in CSV format (ex: results.csv)
-p, --profile <PROFILE> Specify output profile
-R, --remove-duplicate-data Duplicate field data will be replaced with "DUP"
-X, --remove-duplicate-detections Remove duplicate detections (default: disabled)
-S, --tab-separator Separate event field information by tabs
Display Settings:
-K, --no-color Disable color output
-N, --no-summary Do not display Results Summary for faster speed
-q, --quiet Quiet mode: do not display the launch banner
-v, --verbose Output verbose information
-T, --visualize-timeline Output event frequency timeline (terminal needs to support unicode)
Time Format:
--European-time Output timestamp in European time format (ex: 22-02-2022 22:00:00.123 +02:00)
-O, --ISO-8601 Output timestamp in original ISO-8601 format (ex: 2022-02-22T10:10:10.1234567Z) (Always UTC)
--RFC-2822 Output timestamp in RFC 2822 format (ex: Fri, 22 Feb 2022 22:00:00 -0600)
--RFC-3339 Output timestamp in RFC 3339 format (ex: 2022-02-22 22:00:00.123456-06:00)
--US-military-time Output timestamp in US military time format (ex: 02-22-2022 22:00:00.123 -06:00)
--US-time Output timestamp in US time format (ex: 02-22-2022 10:00:00.123 PM -06:00)
-U, --UTC Output time in UTC format (default: local time)
أمثلة على الأمر csv-timeline¶
- تشغيل hayabusa على ملف سجل أحداث Windows واحد باستخدام الملف الشخصي
standardالافتراضي:
- تشغيل hayabusa على دليل sample-evtx الذي يحتوي على عدة ملفات سجلات أحداث Windows باستخدام الملف الشخصي verbose:
- التصدير إلى ملف CSV واحد لمزيد من التحليل باستخدام LibreOffice أو Timeline Explorer أو Elastic Stack وما إلى ذلك... وتضمين جميع معلومات الحقول (تحذير: سيصبح حجم ملف الإخراج أكبر بكثير مع الملف الشخصي
super-verbose!):
- تفعيل تصفية EID (معرف الحدث):
ملاحظة: سيؤدي تفعيل تصفية EID إلى تسريع التحليل بنحو 10-15% في اختباراتنا ولكن هناك احتمال لتفويت بعض التنبيهات.
- تشغيل قواعد hayabusa فقط (الافتراضي هو تشغيل جميع القواعد في
-r .\rules):
- تشغيل قواعد hayabusa فقط للسجلات المُفعَّلة افتراضيًا على Windows:
- تشغيل قواعد hayabusa فقط لسجلات sysmon:
- تشغيل قواعد sigma فقط:
- تفعيل القواعد المهملة (تلك التي لها
statusمعلَّمة بـdeprecated) والقواعد المزعجة (تلك التي يكون معرف القاعدة فيها مدرجًا في.\rules\config\noisy_rules.txt):
ملاحظة: مؤخرًا، أصبحت القواعد المهملة موجودة في دليل منفصل في مستودع sigma لذا لم تعد مُضمَّنة افتراضيًا في Hayabusa. لذلك، من المحتمل أنه ليس لديك حاجة لتفعيل القواعد المهملة.
hayabusa.exe csv-timeline -d .\hayabusa-sample-evtx --enable-noisy-rules --enable-deprecated-rules -o results.csv -w
- تشغيل القواعد فقط لتحليل عمليات تسجيل الدخول والإخراج بالمنطقة الزمنية UTC:
hayabusa.exe csv-timeline -d .\hayabusa-sample-evtx -r .\rules\hayabusa\builtin\Security\LogonLogoff\Logon -U -o results.csv -w
- التشغيل على جهاز Windows مباشر (يتطلب صلاحيات المسؤول) واكتشاف التنبيهات فقط (السلوك الخبيث المحتمل):
- طباعة المعلومات المُفصَّلة (مفيد لتحديد الملفات التي تستغرق وقتًا طويلًا للمعالجة، وأخطاء التحليل، وما إلى ذلك...):
- مثال على الإخراج المُفصَّل:
تحميل القواعد:
Loaded rule: rules/sigma/builtin/deprecated/proc_creation_win_susp_run_folder.yml
Loaded rule: rules/sigma/builtin/deprecated/proc_creation_win_execution_mssql_xp_cmdshell_stored_procedure.yml
Loaded rule: rules/sigma/builtin/deprecated/proc_creation_win_susp_squirrel_lolbin.yml
Loaded rule: rules/sigma/builtin/win_alert_mimikatz_keywords.yml
الأخطاء أثناء المسح:
[ERROR] Failed to parse event file.
EventFile: ../logs/Microsoft-Rdms-UI%4Operational.evtx
Error: Failed to parse record number 58471
[ERROR] Failed to parse event file.
EventFile: ../logs/Microsoft-Rdms-UI%4Operational.evtx
Error: Failed to parse record number 58470
[ERROR] Failed to parse event file.
EventFile: ../logs/Microsoft-Windows-AppxPackaging%4Operational.evtx
Error: An error occurred while trying to serialize binary xml to output.
- الإخراج بتنسيق CSV متوافق للاستيراد إلى Timesketch:
hayabusa.exe csv-timeline -d ../hayabusa-sample-evtx --RFC-3339 -o timesketch-import.csv -p timesketch -U
- وضع كتم الأخطاء:
افتراضيًا، سيحفظ hayabusa رسائل الخطأ في ملفات سجل الأخطاء.
إذا كنت لا تريد حفظ رسائل الخطأ، فيرجى إضافة
-Q.
متقدم - إثراء السجلات بـ GeoIP¶
يمكنك إضافة معلومات GeoIP (منظمة ASN والمدينة والبلد) إلى حقول SrcIP (عنوان IP المصدر) وحقول TgtIP (عنوان IP الهدف) باستخدام بيانات تحديد الموقع الجغرافي المجانية GeoLite2.
الخطوات:
- أولًا قم بالتسجيل للحصول على حساب MaxMind هنا.
- قم بتنزيل ملفات
.mmdbالثلاثة من صفحة التنزيل واحفظها في دليل. يجب أن تكون أسماء الملفاتGeoLite2-ASN.mmdbوGeoLite2-City.mmdbوGeoLite2-Country.mmdb. -
عند تشغيل الأمرين
csv-timelineأوjson-timeline، أضف الخيار-Gمتبوعًا بالدليل الذي يحتوي على قواعد بيانات MaxMind. -
عند استخدام
csv-timeline، سيتم إخراج الأعمدة الستة التالية بشكل إضافي:SrcASNوSrcCityوSrcCountryوTgtASNوTgtCityوTgtCountry. -
عند استخدام
json-timeline، ستتم إضافة نفس الحقولSrcASNوSrcCityوSrcCountryوTgtASNوTgtCityوTgtCountryإلى كائنDetails، ولكن فقط إذا كانت تحتوي على معلومات. -
عندما يكون
SrcIPأوTgtIPهو localhost (127.0.0.1،::1، وما إلى ذلك...)، سيتم إخراجSrcASNأوTgtASNكـLocal. - عندما يكون
SrcIPأوTgtIPعنوان IP خاصًا (10.0.0.0/8،fe80::/10، وما إلى ذلك...)، سيتم إخراجSrcASNأوTgtASNكـPrivate.
ملف تكوين GeoIP¶
أسماء الحقول التي تحتوي على عناوين IP المصدر والهدف التي يتم البحث عنها في قواعد بيانات GeoIP معرَّفة في rules/config/geoip_field_mapping.yaml.
يمكنك الإضافة إلى هذه القائمة إذا لزم الأمر.
يوجد أيضًا قسم تصفية في هذا الملف يحدد الأحداث التي يتم استخراج معلومات عنوان IP منها.
التحديثات التلقائية لقواعد بيانات GeoIP¶
يتم تحديث قواعد بيانات MaxMind GeoIP كل أسبوعين.
يمكنك تثبيت أداة geoipupdate من MaxMind هنا من أجل تحديث قواعد البيانات هذه تلقائيًا.
الخطوات على macOS:
brew install geoipupdate- عدِّل
/usr/local/etc/GeoIP.confأو/opt/homebrew/etc/GeoIP.conf: أدخلAccountIDوLicenseKeyاللذين تنشئهما بعد تسجيل الدخول إلى موقع MaxMind. تأكد من أن سطرEditionIDsيقولEditionIDs GeoLite2-ASN GeoLite2-City GeoLite2-Country. - شغِّل
geoipupdate. - أضف
-G /usr/local/var/GeoIPأو-G /opt/homebrew/var/GeoIPعندما تريد إضافة معلومات GeoIP.
الخطوات على Windows:
- قم بتنزيل أحدث ملف Windows الثنائي (مثال:
geoipupdate_4.10.0_windows_amd64.zip) من صفحة الإصدارات. - عدِّل
\ProgramData\MaxMind/GeoIPUpdate\GeoIP.conf: أدخلAccountIDوLicenseKeyاللذين تنشئهما بعد تسجيل الدخول إلى موقع MaxMind. تأكد من أن سطرEditionIDsيقولEditionIDs GeoLite2-ASN GeoLite2-City GeoLite2-Country. - شغِّل الملف التنفيذي
geoipupdate.
ملفات تكوين الأمر csv-timeline¶
./rules/config/channel_abbreviations.txt: تعيينات أسماء القنوات واختصاراتها.
./rules/config/default_details.txt: ملف التكوين لمعلومات الحقل الافتراضية (حقل %Details%) التي يجب إخراجها إذا لم يتم تحديد سطر details: في القاعدة.
يستند هذا إلى اسم المزود ومعرفات الأحداث.
./rules/config/eventkey_alias.txt: يحتوي هذا الملف على تعيينات الأسماء المستعارة المختصرة للحقول وأسماء الحقول الأصلية الأطول الخاصة بها.
مثال:
InstanceID,Event.UserData.UMDFHostDeviceArrivalBegin.InstanceId
IntegrityLevel,Event.EventData.IntegrityLevel
IpAddress,Event.EventData.IpAddress
إذا لم يكن الحقل معرَّفًا هنا، فسيتحقق Hayabusa تلقائيًا من الحقل تحت Event.EventData.
./rules/config/exclude_rules.txt: يحتوي هذا الملف على قائمة بمعرفات القواعد التي سيتم استبعادها من الاستخدام.
عادةً ما يكون هذا بسبب أن قاعدة قد حلَّت محل أخرى أو أن القاعدة لا يمكن استخدامها في المقام الأول.
مثل جدران الحماية وأنظمة كشف التسلل، ستتطلب أي أداة مبنية على التواقيع بعض الضبط لتناسب بيئتك لذا قد تحتاج إلى استبعاد قواعد معينة بشكل دائم أو مؤقت.
يمكنك إضافة معرف قاعدة (مثال: 4fe151c2-ecf9-4fae-95ae-b88ec9c2fca6) إلى ./rules/config/exclude_rules.txt من أجل تجاهل أي قاعدة لا تحتاجها أو لا يمكن استخدامها.
./rules/config/noisy_rules.txt: يحتوي هذا الملف على قائمة بمعرفات القواعد المُعطَّلة افتراضيًا ولكن يمكن تفعيلها عن طريق تفعيل القواعد المزعجة بالخيار -n, --enable-noisy-rules.
عادةً ما تكون هذه القواعد مزعجة بطبيعتها أو بسبب النتائج الإيجابية الخاطئة.
./rules/config/target_event_IDs.txt: سيتم مسح معرفات الأحداث المحددة في هذا الملف فقط إذا كانت تصفية EID مُفعَّلة.
افتراضيًا، سيمسح Hayabusa جميع الأحداث، ولكن إذا كنت تريد تحسين الأداء، فيرجى استخدام الخيار -E, --EID-filter.
عادةً ما يؤدي هذا إلى تحسين السرعة بنسبة 10~25%.
الأمر json-timeline¶
سينشئ الأمر json-timeline تسلسلًا زمنيًا جنائيًا للأحداث بتنسيق JSON أو JSONL.
سيكون الإخراج إلى JSONL أسرع وبحجم ملف أصغر من JSON لذا فهو جيد إذا كنت ستستورد النتائج فقط إلى أداة أخرى مثل Elastic Stack.
يكون JSON أفضل إذا كنت ستحلل النتائج يدويًا باستخدام محرر نصوص.
يكون إخراج CSV جيدًا لاستيراد التسلسلات الزمنية الأصغر (عادةً أقل من 2 جيجابايت) إلى أدوات مثل LibreOffice أو Timeline Explorer.
يكون JSON أفضل للتحليل الأكثر تفصيلًا للبيانات (بما في ذلك ملفات النتائج الكبيرة) باستخدام أدوات مثل jq حيث تكون حقول Details منفصلة لتسهيل التحليل.
(في إخراج CSV، تكون جميع حقول سجل الأحداث في عمود Details واحد كبير مما يجعل فرز البيانات وما إلى ذلك... أكثر صعوبة.)
Usage: json-timeline <INPUT> [OPTIONS]
Input:
-d, --directory <DIR> Directory of multiple .evtx files
-f, --file <FILE> File path to one .evtx file
-l, --live-analysis Analyze the local C:\Windows\System32\winevt\Logs folder
General Options:
-C, --clobber Overwrite files when saving
-h, --help Show the help menu
-J, --JSON-input Scan JSON formatted logs instead of .evtx (.json or .jsonl)
-w, --no-wizard Do not ask questions. Scan for all events and alerts
-Q, --quiet-errors Quiet errors mode: do not save error logs
-x, --recover-records Carve evtx records from slack space (default: disabled)
-r, --rules <DIR/FILE> Specify a custom rule directory or file (default: ./rules)
-c, --rules-config <DIR> Specify custom rule config directory (default: ./rules/config)
-s, --sort Sort events before saving the file. (warning: this uses much more memory!)
-t, --threads <NUMBER> Number of threads (default: optimal number for performance)
--target-file-ext <FILE-EXT...> Specify additional evtx file extensions (ex: evtx_data)
Filtering:
-E, --EID-filter Scan only common EIDs for faster speed (./rules/config/target_event_IDs.txt)
-A, --enable-all-rules Enable all rules regardless of loaded evtx files (disable channel filter for rules)
-D, --enable-deprecated-rules Enable rules with a status of deprecated
-n, --enable-noisy-rules Enable rules set to noisy (./rules/config/noisy_rules.txt)
-u, --enable-unsupported-rules Enable rules with a status of unsupported
-e, --exact-level <LEVEL> Only load rules with a specific level (informational, low, medium, high, critical)
--exclude-category <CATEGORY...> Do not load rules with specified logsource categories (ex: process_creation,pipe_created)
--exclude-computer <COMPUTER...> Do not scan specified computer names (ex: ComputerA) (ex: ComputerA,ComputerB)
--exclude-eid <EID...> Do not scan specific EIDs for faster speed (ex: 1) (ex: 1,4688)
--exclude-status <STATUS...> Do not load rules according to status (ex: experimental) (ex: stable,test)
--exclude-tag <TAG...> Do not load rules with specific tags (ex: sysmon)
--include-category <CATEGORY...> Only load rules with specified logsource categories (ex: process_creation,pipe_created)
--include-computer <COMPUTER...> Scan only specified computer names (ex: ComputerA) (ex: ComputerA,ComputerB)
--include-eid <EID...> Scan only specified EIDs for faster speed (ex: 1) (ex: 1,4688)
--include-status <STATUS...> Only load rules with specific status (ex: experimental) (ex: stable,test)
--include-tag <TAG...> Only load rules with specific tags (ex: attack.execution,attack.discovery)
-m, --min-level <LEVEL> Minimum level for rules to load (default: informational)
-P, --proven-rules Scan with only proven rules for faster speed (./rules/config/proven_rules.txt)
-a, --scan-all-evtx-files Scan all evtx files regardless of loaded rules (disable channel filter for evtx files)
--time-offset <OFFSET> Scan recent events based on an offset (ex: 1y, 3M, 30d, 24h, 30m)
--timeline-end <DATE> End time of the event logs to load (ex: "2022-02-22 23:59:59 +09:00")
--timeline-start <DATE> Start time of the event logs to load (ex: "2020-02-22 00:00:00 +09:00")
Output:
-b, --disable-abbreviations Disable abbreviations
-G, --GeoIP <MAXMIND-DB-DIR> Add GeoIP (ASN, city, country) info to IP addresses
-H, --HTML-report <FILE> Save Results Summary details to an HTML report (ex: results.html)
-L, --JSONL-output Save the timeline in JSONL format (ex: -L -o results.jsonl)
-F, --no-field-data-mapping Disable field data mapping
--no-pwsh-field-extraction Disable field extraction of PowerShell classic logs
-o, --output <FILE> Save the timeline in JSON format (ex: results.json)
-p, --profile <PROFILE> Specify output profile
-R, --remove-duplicate-data Duplicate field data will be replaced with "DUP"
-X, --remove-duplicate-detections Remove duplicate detections (default: disabled)
Display Settings:
-K, --no-color Disable color output
-N, --no-summary Do not display Results Summary for faster speed
-q, --quiet Quiet mode: do not display the launch banner
-v, --verbose Output verbose information
-T, --visualize-timeline Output event frequency timeline (terminal needs to support unicode)
Time Format:
--European-time Output timestamp in European time format (ex: 22-02-2022 22:00:00.123 +02:00)
-O, --ISO-8601 Output timestamp in original ISO-8601 format (ex: 2022-02-22T10:10:10.1234567Z) (Always UTC)
--RFC-2822 Output timestamp in RFC 2822 format (ex: Fri, 22 Feb 2022 22:00:00 -0600)
--RFC-3339 Output timestamp in RFC 3339 format (ex: 2022-02-22 22:00:00.123456-06:00)
--US-military-time Output timestamp in US military time format (ex: 02-22-2022 22:00:00.123 -06:00)
--US-time Output timestamp in US time format (ex: 02-22-2022 10:00:00.123 PM -06:00)
-U, --UTC Output time in UTC format (default: local time)
أمثلة وملفات تكوين الأمر json-timeline¶
الخيارات وملفات التكوين الخاصة بـ json-timeline هي نفسها الخاصة بـ csv-timeline ولكن مع خيار إضافي واحد -L, --JSONL-output للإخراج بتنسيق JSONL.
الأمر level-tuning¶
سيتيح لك الأمر level-tuning ضبط مستويات التنبيه للقواعد، إما برفع مستوى المخاطر أو خفضه كما ترغب.
يستخدم هذا الأمر ملف تكوين للكتابة فوق مستويات المخاطر (حقل level) للقواعد في مجلد rules.
تحذير: في كل مرة تشغِّل فيها الأمر
update-rules، سيعود مستوى المخاطر إلى القيمة الأصلية لذا ستحتاج إلى تشغيل الأمرlevel-tuningمرة أخرى بعد ذلك.
Usage: level-tuning [OPTIONS]
Display Settings:
-K, --no-color Disable color output
-q, --quiet Quiet mode: do not display the launch banner
General Options:
-f, --file <FILE> Tune alert levels (default: ./rules/config/level_tuning.txt)
-h, --help Show the help menu
أمثلة على الأمر level-tuning¶
- الاستخدام العادي:
hayabusa.exe level-tuning - ضبط مستويات تنبيه القواعد بناءً على ملف التكوين المخصص الخاص بك:
hayabusa.exe level-tuning -f ./config/level_tuning.txt
ملف تكوين level-tuning¶
سيقدِّر مؤلفو قواعد Hayabusa و Sigma مستوى المخاطر المناسب للتنبيه عند كتابة قواعدهم.
ومع ذلك، تكون مستويات المخاطر أحيانًا غير متسقة وقد يختلف مستوى المخاطر الفعلي أيضًا وفقًا لبيئتك.
توفر Yamato Security وتصون ملف تكوين في ./rules/config/level_tuning.txt يمكنك استخدامه لضبط قواعدك أيضًا.
عينة من ./rules/config/level_tuning.txt:
id,new_level
570ae5ec-33dc-427c-b815-db86228ad43e,informational # 'Application Uninstalled' - Originally low.
b6ce0b2f-593b-5e1c-e137-d30b2974e30e,high # 'Suspicious Double Extension File Execution' - Sysmon 1 - Originally critical
452b2159-5e6e-c494-63b9-b385d6195f58,high # 'Suspicious Double Extension File Execution' - Security 4688 - Originally critical
51ba8477-86a4-6ff0-35fa-7b7f1b1e3f83,high # 'CobaltStrike Service Installations - System' - System 7045 - Originally critical
daad2203-665f-294c-6d2f-f9272c3214f2,critical # 'Mimikatz DC Sync' - Security 4662 - Originally high
8b061ac2-31c7-659d-aa1b-36ceed1b03f1,high # 'HackTool - Rubeus Execution' - Sysmon 1 - Originally critical
be670d5c-31eb-7391-4d2e-d122c89cd5bb,high # 'HackTool - Rubeus Execution' - Security 4688 - Originally critical
في هذه الحالة، سيتم إعادة كتابة level للقاعدة التي لها id يساوي 570ae5ec-33dc-427c-b815-db86228ad43e في دليل القواعد إلى informational.
المستويات المحتملة للتعيين هي critical و high و medium و low و informational.
تحذير: سيتم أيضًا تحديث ملف التكوين
./rules/config/level_tuning.txtإلى أحدث إصدار في مستودع hayabusa-rules في كل مرة تشغِّل فيهاupdate-rules. لذلك، إذا أجريت تغييرات على هذا الملف، فستفقد تلك التغييرات! إذا كنت تريد الاحتفاظ بملف تكوين لنفسك، فأنشئ ملف تكوين في./config/level_tuning.txtوشغِّلhayabusa.exe level-tuning -f ./config/level_tuning.txt. يمكنك أيضًا أولًا إجراء ضبط المستوى باستخدام ملف التكوين المقدَّم من Yamato Security ثم إجراء مزيد من الضبط باستخدام ملف التكوين الخاص بك.
الأمر list-profiles¶
Usage: list-profiles [OPTIONS]
Display Settings:
-K, --no-color Disable color output
-q, --quiet Quiet mode: do not display the launch banner
General Options:
-h, --help Show the help menu
الأمر set-default-profile¶
Usage: set-default-profile [OPTIONS]
Display Settings:
-K, --no-color Disable color output
-q, --quiet Quiet mode: do not display the launch banner
General Options:
-h, --help Show the help menu
-p, --profile <PROFILE> Specify output profile
أمثلة على الأمر set-default-profile¶
- تعيين الملف الشخصي الافتراضي إلى
minimal:hayabusa.exe set-default-profile minimal - تعيين الملف الشخصي الافتراضي إلى
super-verbose:hayabusa.exe set-default-profile super-verbose
الأمر update-rules¶
سيقوم الأمر update-rules بمزامنة مجلد rules مع مستودع github لقواعد Hayabusa، وتحديث القواعد وملفات التكوين.
Usage: update-rules [OPTIONS]
Display Settings:
-K, --no-color Disable color output
-q, --quiet Quiet mode: do not display the launch banner
General Options:
-h, --help Show the help menu
-r, --rules <DIR/FILE> Specify a custom rule directory or file (default: ./rules)
مثال على الأمر update-rules¶
ستنفِّذ هذا عادةً ببساطة: hayabusa.exe update-rules