العودة إلى التحديثات
New releaseAug 6, 2026

macnoise v0.3.0

مولّد قابل للتوسيع لبيانات القياس عن بُعد لنظام MacOS.

مشاركة
Description of image

CI Release

MacNoise

يولّد MacNoise بيانات تتبع حقيقية لنظام macOS: اتصالات الشبكة، كتابة الملفات، إطلاق العمليات، تعديلات plist، فحوصات TCC، والمزيد. وجّهه إلى جهاز يعمل عليه نظام EDR أو SIEM أو جدار الحماية الخاص بك وشاهد ما يتم رصده فعليًا - وليس ما تدّعي ورقة بيانات البائع أنه سيتم رصده.

للاطلاع على خلفية الدافع والتصميم، راجع منشور المدونة الخاص بالإصدار.

بدء سريع

# البناء (أضف build-amd64 / build-arm64 للترجمة المتقاطعة لنظام Darwin، أو release لكلاهما)
make build

# قائمة الوحدات المتاحة
./macnoise list

# تشغيل وحدة واحدة
./macnoise run net_connect --param target=127.0.0.1 --param port=8080

# معاينة بدون تنفيذ
./macnoise run svc_launch_agent --dry-run

# تشغيل جميع وحدات الشبكة
./macnoise run --category network

# تشغيل سيناريو
./macnoise scenario configs/scenarios/edr_validation.yaml

# إصدار مخرجات JSONL منظمة
./macnoise run --category file --format jsonl --output /tmp/events.jsonl

فئات التتبع

الفئةالوصفالوحدات
networkاتصالات صادرة، DNS، إشارات دورية، مستمعون، قذائف عكسية، سرقة بياناتnet_connect, net_listen, net_beacon, net_revshell, net_dns, net_exfil
processإطلاق العمليات، إرسال الإشارات، حقن dylib، الاستكشاف، تجاوز Gatekeeper، osascriptproc_spawn, proc_signal, proc_inject, proc_discovery, proc_gatekeeper, proc_osascript
fileإنشاء الملفات، تعديلها، قراءة ملفات الاعتمادات وسلسلة المفاتيح، الأرشفة، الإخفاءfile_create, file_modify, file_browser_creds, file_cred_files, file_keychain_copy, file_archive, file_hide
tccفحوصات أذونات TCC (الوصول الكامل للقرص، جهات الاتصال، سلسلة المفاتيح، إمكانية الوصول، تسجيل الشاشة)tcc_fda, tcc_contacts, tcc_keychain, tcc_accessibility, tcc_screen_recording
endpoint_securityمشغلات أحداث إطار عمل ES، بما في ذلك تركيب .dmg وتنفيذ الحمولةes_file, es_process, es_mount
serviceاستمرارية LaunchAgent/Daemon، cron، ملف تعريف الصدفة، عناصر تسجيل الدخولsvc_launch_agent, svc_launch_daemon, svc_cron, svc_shell_profile, svc_login_item
plistإنشاء وتعديل plistplist_create, plist_modify
xpcتعداد خدمات XPCxpc_enumerate

الأوامر

macnoise run <module> [--param key=val ...]   تشغيل وحدة محددة
macnoise run --category <cat>                 تشغيل جميع الوحدات في فئة
macnoise run --all                            تشغيل جميع الوحدات
macnoise list [--category <cat>]              قائمة الوحدات
macnoise info <module>                        عرض تفاصيل الوحدة والمعاملات وMITRE
macnoise scenario <file.yaml>                 تشغيل سيناريو YAML
macnoise categories                           قائمة الفئات مع الأعداد
macnoise version                              طباعة الإصدار

الأعلام العامة

العلمالافتراضيالوصف
--formathumanصيغة الإخراج: human أو jsonl
--output(لا شيء)كتابة الإخراج إلى ملف (بالإضافة إلى stdout)
--verbosefalseإخراج مفصّل بما في ذلك أخطاء التنظيف
--dry-runfalseمعاينة الإجراءات دون تنفيذ
--no-cleanupfalseترك آثار الوحدة في مكانها (انظر أدناه)
--timeout30مهلة زمنية لكل وحدة بالثواني
--audit-log(لا شيء)كتابة سجلات تدقيق OCSF 1.7.0 إلى ملف JSONL
--config(لا شيء)تحميل القيم الافتراضية من ملف إعدادات YAML

ترك الآثار في مكانها

بشكل افتراضي، تعكس كل وحدة نفسها عند الانتهاء. هذا عادةً ما تريده، لكنه يعني أن نظام الكشف لا يرى سوى حدث التثبيت. للتحقق من أن مجموعتك تكتشف الاستمرارية نفسها - LaunchAgent موجود في ~/Library/LaunchAgents، إدخال cron، ملف تعريف صدفة معدّل - يجب أن يظل الأثر موجودًا عند تشغيل الفحص:

./macnoise run svc_launch_agent --no-cleanup

كل وحدة تتخطى التنظيف تطبع سطرًا يسمي نفسها، ويسجل سجل التدقيق cleanup_result: skipped بدلاً من ok، بحيث لا يُخلط أبدًا بين تشغيل ترك استمرارية خلفه وبين تشغيل قام بالتنظيف. استخدم macnoise info <module> لمعرفة ما تنشئه وحدة معينة.

أنت مسؤول عن إزالتها بنفسك. إعادة تشغيل نفس الوحدة دون العلم ستنظف فقط ما أنشأه ذلك التشغيل، وليس ما تركه تشغيل سابق بـ --no-cleanup.

تسجيل التدقيق

يكتب MacNoise تدفقين منفصلين. أحداث التتبع - ما يراه نظام EDR/SIEM الخاص بك فعليًا - تذهب إلى stdout أو --output. تدفق ثانٍ اختياري يسجل ما فعله MacNoise نفسه: أي الوحدات تم تشغيلها، نتائج المتطلبات الأساسية/التنظيف، وخرائط MITRE، بصيغة OCSF 1.7.0 JSONL.

./macnoise scenario configs/scenarios/amos_atomic_stealer.yaml --audit-log /tmp/audit.jsonl

يحمل كل حدث تتبع outcome إلى جانب success (المخطط 1.1). يوضح success ما إذا كان MacNoise قد عمل؛ ويوضح outcome ما حدث للإجراء الذي حاول تنفيذه:

outcomeالمعنىعلامة بشرية
executedتم تنفيذ الإجراء وقام بما تدّعيه الوحدة[+]
deniedتم تنفيذ الإجراء ورفضته البيئة[-]
indeterminateتم تنفيذ الإجراء، لكن لا يمكن استخلاص أي نتيجة[?]
errorفشل MacNoise نفسه في تنفيذ الإجراء[!]

فحص TCC مرفوض أو إشارة دورية إلى C2 ميت هو التتبع الذي وُجدت هذه الأداة لتوليده، لذا تبقى تلك success: true ويتم تمييزها عبر outcome. فقط error يضبط success: false. في سجل التدقيق تظهر نفس القيمة في unmapped.outcome، لأن OCSF status يسجل الإجراء المرفوض والأداة المعطلة بشكل متطابق.

يفتح سجل التدقيق في وضع الإلحاق، لذا تتراكم السجلات من تشغيلات متعددة في ملف واحد للتحليل الدفعي. إذا كنت تضيف وحدة وتريد معرفة كيف يتم تصنيف نوع حدث جديد في OCSF، راجع CONTRIBUTING.md.

مرجع الوحدات

توثيق الوحدات موجود بجانب كل فئة:

السيناريوهات

تربط السيناريوهات الوحدات في تسلسلات مرتبة - ملف YAML واحد يعيد تشغيل نمط اختراق متعدد المراحل ضد أنظمة الكشف الخاصة بك.

الملفالوصف
network_only.yamlجميع وحدات الشبكة
edr_validation.yamlتغطية شاملة لكشف EDR
full_sweep.yamlجميع الفئات
lazarus_group.yamlمجموعة Lazarus: حقن dylib، اكتشاف الخدمات، قذيفة عكسية، استمرارية plist
amos_atomic_stealer.yamlAMOS / Atomic Stealer: سارق معلومات MaaS، تجاوز Gatekeeper، تفريغ سلسلة المفاتيح، سرقة ZIP، استمرارية باب خلفي

يتبع السيناريوهان الخاصان بـ APT تسلسلات اختراق حقيقية موثقة، تقنية بتقنية - يستشهد كل ملف YAML بالاستخبارات التهديدية الفعلية التي بُني منها ويعلّق على كل خطوة بتقنية MITRE التي يمارسها، لذا ابدأ هناك للتفصيل الكامل بدلاً من إعادة سردها هنا.

معاينة أولاً:

./macnoise scenario configs/scenarios/<scenario>.yaml --dry-run

الربط المتبادل مع نظام SIEM/EDR الخاص بك: يسمي تعليق كل خطوة التقنية التي يجب أن تشغّلها. عدم وجود تنبيه مطابق بعد تشغيل حقيقي هو فجوة في تغطيتك.

كتابة سيناريو خاص بك:

name: My Custom Scenario
steps:
  - module: net_connect
    params:
      target: "192.168.1.1"
      port: "443"
  - category: file
    params:
      base_dir: "/tmp/test"

المساهمة

راجع CONTRIBUTING.md لإضافة وحدات جديدة، وأسلوب الكود، وعملية طلب السحب الكاملة.

الإصدارات مؤتمتة - يقوم release-please بإصدار نسخة جديدة مباشرة من عنوان طلب السحب الخاص بك وفق Conventional Commit، لذا فإن feat: add net_tls module أو fix: correct beacon jitter هو عنوان طلب السحب وإدخال سجل التغييرات في آن واحد.

إخلاء المسؤولية

MacNoise مخصص لاختبار الأمان المصرح به، والتحقق من EDR، وهندسة الكشف على الأنظمة التي تملكها أو لديك إذن كتابي صريح لاختبارها. لا يتحمل المؤلفون أي مسؤولية عن سوء الاستخدام.

سياسة كود الذكاء الاصطناعي

مساهمات كود الذكاء الاصطناعي مرحب بها، لكن يرجى مراعاة أن مراجعة الكود ستكون حاليًا عملية يقودها البشر مما يعني أن هناك حدًا لكمية الكود التي يمكننا مراجعتها. يرجى قصر طلبات السحب على إصلاح محدد، أو وحدة تتبع جديدة. من المرجح أن تُغلق طلبات السحب ذات التغييرات الواسعة.

الفئات