अपडेट पर वापस जाएँ
New releaseSep 3, 2026

macnoise v0.5.0

विस्तारणीय MacOS सिस्टम टेलीमेट्री जनरेटर।

साझा करें
Description of image

CI Release

MacNoise

MacNoise वास्तविक macOS टेलीमेट्री उत्पन्न करता है: नेटवर्क कनेक्शन, फ़ाइल लेखन, प्रोसेस स्पॉन, plist म्यूटेशन, TCC प्रोब, और बहुत कुछ। इसे आपके EDR, SIEM, या फ़ायरवॉल स्टैक पर चल रही मशीन पर इंगित करें और देखें कि वास्तव में क्या फायर होता है - न कि वह जो विक्रेता की डेटाशीट दावा करती है कि फायर होगा।

प्रेरणा और डिज़ाइन की पृष्ठभूमि के लिए, रिलीज़ ब्लॉग पोस्ट देखें।

त्वरित आरंभ

# बिल्ड करें (Darwin के लिए क्रॉस-कंपाइल करने हेतु build-amd64 / build-arm64 जोड़ें, या दोनों के लिए 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, बीकनिंग, लिसनर, रिवर्स शेल, TLS, एक्सफ़िल्ट्रेशनnet_connect, net_listen, net_beacon, net_revshell, net_dns, net_dns_exfil, net_tls, net_exfil
processप्रोसेस स्पॉनिंग, सिग्नल डिलीवरी, dylib इंजेक्शन, डिस्कवरी, Gatekeeper बायपास, osascriptproc_spawn, proc_signal, proc_inject, proc_discovery, proc_gatekeeper, proc_osascript
fileफ़ाइल निर्माण, संशोधन, क्रेडेंशियल फ़ाइल और keychain रीड, आर्काइविंग, छिपानाfile_create, file_modify, file_browser_creds, file_cred_files, file_keychain_copy, file_archive, file_hide
tccTCC अनुमति प्रोब (FDA, Contacts, Keychain, Accessibility, Screen Recording)tcc_fda, tcc_contacts, tcc_keychain, tcc_accessibility, tcc_screen_recording
endpoint_securityES फ्रेमवर्क इवेंट ट्रिगर, जिसमें .dmg माउंट और पेलोड निष्पादन शामिल हैes_file, es_process, es_mount
serviceLaunchAgent/Daemon पर्सिस्टेंस, cron, शेल प्रोफ़ाइल, लॉगिन आइटमsvc_launch_agent, svc_launch_daemon, svc_cron, svc_shell_profile, svc_login_item
plistPlist निर्माण और संशोधनplist_create, plist_modify
xpcXPC सेवा गणनाxpc_enumerate
evasionडिफेंस एवेज़न: लॉग क्लियरिंग, टाइमस्टॉम्पिंग, हिस्ट्री हटानाevade_log_clear

कमांड

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 कॉन्फ़िग फ़ाइल से डिफ़ॉल्ट लोड करें

आर्टिफैक्ट को जगह पर छोड़ना

डिफ़ॉल्ट रूप से हर मॉड्यूल समाप्त होने पर स्वयं को पूर्ववत कर देता है। यह आमतौर पर वही है जो आप चाहते हैं, लेकिन इसका मतलब है कि एक डिटेक्शन केवल इंस्टॉल इवेंट को ही देख पाता है। यह सत्यापित करने के लिए कि आपका स्टैक पर्सिस्टेंस को स्वयं डिटेक्ट करता है - ~/Library/LaunchAgents में बैठा एक LaunchAgent, एक cron एंट्री, एक संशोधित शेल प्रोफ़ाइल - आर्टिफैक्ट को स्कैन चलने पर वहाँ मौजूद होना चाहिए:

./macnoise run svc_launch_agent --no-cleanup

प्रत्येक मॉड्यूल जो क्लीनअप छोड़ देता है, स्वयं का नाम बताते हुए एक पंक्ति प्रिंट करता है, और ऑडिट लॉग ok के बजाय cleanup_result: skipped रिकॉर्ड करता है, ताकि पर्सिस्टेंस छोड़ने वाला रन कभी भी उस रन से भ्रमित न हो जो सफाई कर चुका है। यह देखने के लिए macnoise info <module> का उपयोग करें कि कोई दिया गया मॉड्यूल क्या बनाता है।

इन्हें स्वयं हटाना आपकी ज़िम्मेदारी है। फ़्लैग के बिना उसी मॉड्यूल को फिर से चलाने से केवल उस रन द्वारा बनाई गई चीज़ें साफ़ होंगी, न कि पिछले --no-cleanup रन द्वारा छोड़ी गई चीज़ें।

ऑडिट लॉगिंग

MacNoise दो अलग-अलग स्ट्रीम लिखता है। टेलीमेट्री इवेंट - जो आपका EDR/SIEM वास्तव में देखता है - stdout या --output पर जाते हैं। एक दूसरी, वैकल्पिक स्ट्रीम रिकॉर्ड करती है कि MacNoise ने स्वयं क्या किया: कौन से मॉड्यूल चले, prereq/cleanup परिणाम, और MITRE मैपिंग, OCSF 1.7.0 JSONL में।

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

हर टेलीमेट्री इवेंट success (स्कीमा 1.1) के साथ outcome भी रखता है। success बताता है कि MacNoise ने काम किया या नहीं; outcome बताता है कि उसके द्वारा प्रयास की गई क्रिया का क्या हुआ:

outcomeअर्थमानव मार्कर
executedक्रिया चली और मॉड्यूल जो दावा करता है वही किया[+]
deniedक्रिया चली और पर्यावरण ने इसे अस्वीकार कर दिया[-]
indeterminateक्रिया चली, लेकिन कुछ भी निष्कर्ष नहीं निकाला जा सकता[?]
errorMacNoise स्वयं क्रिया को पूरा करने में विफल रहा[!]

एक अस्वीकृत TCC प्रोब या एक मृत C2 को बीकन वह टेलीमेट्री है जिसे उत्पन्न करने के लिए यह टूल मौजूद है, इसलिए वे success: true रहते हैं और outcome द्वारा अलग किए जाते हैं। केवल error success: false सेट करता है। ऑडिट लॉग में वही मान unmapped.outcome पर दिखाई देता है, क्योंकि OCSF status एक अस्वीकृत क्रिया और एक टूटे हुए टूल को समान रूप से रिकॉर्ड करता है।

ऑडिट लॉग append मोड में खुलता है, इसलिए कई रनों के रिकॉर्ड बैच विश्लेषण के लिए एक फ़ाइल में जमा होते हैं। यदि आप एक मॉड्यूल जोड़ रहे हैं और जानना चाहते हैं कि एक नए इवेंट प्रकार को OCSF में कैसे वर्गीकृत किया जाता है, तो CONTRIBUTING.md देखें।

मॉड्यूल संदर्भ

मॉड्यूल दस्तावेज़ीकरण प्रत्येक श्रेणी के साथ रहता है:

परिदृश्य

परिदृश्य मॉड्यूल को क्रमबद्ध अनुक्रमों में जोड़ते हैं - एक एकल YAML फ़ाइल जो आपकी डिटेक्शन के विरुद्ध एक बहु-चरणीय घुसपैठ पैटर्न को फिर से चलाती है।

फ़ाइलविवरण
network_only.yamlसभी नेटवर्क मॉड्यूल
edr_validation.yamlव्यापक EDR डिटेक्शन कवरेज
full_sweep.yamlसभी श्रेणियाँ
lazarus_group.yamlLazarus Group: dylib इंजेक्शन, सेवा डिस्कवरी, रिवर्स शेल, plist पर्सिस्टेंस
amos_atomic_stealer.yamlAMOS / Atomic Stealer: MaaS इन्फोस्टीलर, Gatekeeper बायपास, keychain डंप, ZIP एक्सफ़िल, बैकडोर पर्सिस्टेंस
clickfix.yamlClickFix: Terminal में पेस्ट किया गया अस्पष्ट एक-लाइनर, base64 डिकोड, दूसरे-चरण का फ़ेच, LaunchAgent पर्सिस्टेंस

दोनों 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"

योगदान

नए मॉड्यूल जोड़ने, कोड शैली और पूर्ण PR प्रक्रिया के लिए CONTRIBUTING.md देखें।

रिलीज़ स्वचालित हैं - release-please आपके Conventional Commit PR शीर्षक से सीधे एक नया संस्करण काटता है, इसलिए feat: add net_tls module या fix: correct beacon jitter आपका PR शीर्षक और आपकी चेंजलॉग एंट्री दोनों है।

अस्वीकरण

MacNoise अधिकृत सुरक्षा परीक्षण, EDR सत्यापन, और उन सिस्टमों पर डिटेक्शन इंजीनियरिंग के लिए है जिनके आप मालिक हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट लिखित अनुमति है। लेखक दुरुपयोग के लिए कोई दायित्व नहीं मानते हैं।

AI कोड नीति

AI कोड योगदान ठीक हैं, लेकिन कृपया ध्यान रखें कि कोड समीक्षा वर्तमान में एक मानव-नेतृत्व वाली प्रक्रिया होने जा रही है, जिसका अर्थ है कि हम केवल उतना ही कोड समीक्षा कर सकते हैं। कृपया PR को एक विशिष्ट फिक्स या नए टेलीमेट्री मॉड्यूल तक सीमित रखें। व्यापक परिवर्तनों वाले PR संभवतः बंद कर दिए जाएंगे।

श्रेणियाँ