
macnoise v0.2.0
مولّد تليمتري نظام MacOS قابل للتوسيع.
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، إشارات beaconing، مستمعون، قذائف عكسية، استخراج بيانات | net_connect, net_listen, net_beacon, net_revshell, net_dns, net_exfil |
process | إطلاق عمليات، توصيل إشارات، حقن dylib، استكشاف، تجاوز Gatekeeper، osascript | proc_spawn, proc_signal, proc_inject, proc_discovery, proc_gatekeeper, proc_osascript |
file | إنشاء ملفات، تعديلها، قراءات بيانات اعتماد المتصفح، أرشفة، إخفاء | file_create, file_modify, file_browser_creds, file_archive, file_hide |
tcc | فحوصات أذونات TCC (FDA، جهات الاتصال، سلسلة المفاتيح) | tcc_fda, tcc_contacts, tcc_keychain |
endpoint_security | مشغلات أحداث إطار عمل ES | es_file, es_process |
service | استمرارية LaunchAgent/Daemon، cron، ملف تعريف الصدفة | svc_launch_agent, svc_launch_daemon, svc_cron, svc_shell_profile |
plist | إنشاء وتعديل plist | plist_create, plist_modify |
xpc | تعداد خدمات XPC | xpc_connect |
الأوامر
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 طباعة الإصدار
العلامات العامة
| العلامة | الافتراضي | الوصف |
|---|---|---|
--format | human | صيغة الإخراج: human أو jsonl |
--output | (لا شيء) | كتابة الإخراج إلى ملف (بالإضافة إلى stdout) |
--verbose | false | إخراج مفصّل بما في ذلك أخطاء التنظيف |
--dry-run | false | معاينة الإجراءات بدون تنفيذ |
--timeout | 30 | مهلة كل وحدة بالثواني |
--audit-log | (لا شيء) | كتابة سجلات تدقيق OCSF 1.7.0 إلى ملف JSONL |
--config | (لا شيء) | تحميل الافتراضيات من ملف إعدادات YAML |
تسجيل التدقيق
يكتب 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
يُفتح سجل التدقيق في وضع الإلحاق، لذلك تتراكم السجلات من عمليات تشغيل متعددة في ملف واحد لتحليل الدُفعات. إذا كنت تضيف وحدة وتريد معرفة كيف يُصنَّف نوع حدث جديد في OCSF، فانظر CONTRIBUTING.md.
مرجع الوحدات
توثيق الوحدات موجود بجانب كل فئة:
| الفئة | README |
|---|---|
network | modules/network/README.md |
process | modules/process/README.md |
file | modules/file/README.md |
tcc | modules/tcc/README.md |
endpoint_security | modules/endpoint_security/README.md |
service | modules/service/README.md |
plist | modules/plist/README.md |
xpc | modules/xpc/README.md |
السيناريوهات
تربط السيناريوهات الوحدات في تسلسلات مرتبة - ملف YAML واحد يعيد تشغيل نمط اختراق متعدد المراحل ضد كشفك.
| الملف | الوصف |
|---|---|
network_only.yaml | جميع وحدات الشبكة |
edr_validation.yaml | تغطية شاملة لكشف EDR |
full_sweep.yaml | جميع الفئات |
lazarus_group.yaml | مجموعة Lazarus: حقن dylib، اكتشاف الخدمات، قذيفة عكسية، استمرارية plist |
amos_atomic_stealer.yaml | AMOS / 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، وهندسة الكشف على الأنظمة التي تملكها أو لديك إذن كتابي صريح لاختبارها. لا يتحمل المؤلفون أي مسؤولية عن سوء الاستخدام.
سياسة كود الذكاء الاصطناعي
المساهمات بكود الذكاء الاصطناعي مرحّب بها، ولكن يرجى تذكّر أن مراجعة الكود حاليًا ستكون عملية يقودها البشر، مما يعني أن هناك حدودًا لما يمكننا مراجعته من كود. يرجى قصر طلبات السحب على إصلاح محدد أو وحدة تليمتري جديدة. طلبات السحب ذات التغييرات الواسعة النطاق سيُرجَّح إغلاقها.