अपडेट पर वापस जाएँ
New releaseJul 31, 2026

macnoise v0.2.0

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

साझा करें
छवि का विवरण

CI Release

MacNoise

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

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

त्वरित आरंभ

# Build (add build-amd64 / build-arm64 to cross-compile for Darwin, or release for both)
make build

# List available modules
./macnoise list

# Run a single module
./macnoise run net_connect --param target=127.0.0.1 --param port=8080

# Preview without executing
./macnoise run svc_launch_agent --dry-run

# Run all network modules
./macnoise run --category network

# Run a scenario
./macnoise scenario configs/scenarios/edr_validation.yaml

# Emit structured JSONL output
./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प्रोसेस स्पॉनिंग, सिग्नल डिलीवरी, डायलिब इंजेक्शन, डिस्कवरी, गेटकीपर बाईपास, 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
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

कमांड्स

macnoise run <module> [--param key=val ...]   Run a specific module
macnoise run --category <cat>                 Run all modules in a category
macnoise run --all                            Run all modules
macnoise list [--category <cat>]              List modules
macnoise info <module>                        Show module details, params, MITRE
macnoise scenario <file.yaml>                 Run a YAML scenario
macnoise categories                           List categories with counts
macnoise version                              Print version

ग्लोबल फ़्लैग्स

फ़्लैगडिफ़ॉल्टविवरण
--formathumanआउटपुट फ़ॉर्मेट: human या jsonl
--output(none)आउटपुट को फ़ाइल में लिखें (stdout के अतिरिक्त)
--verbosefalseवर्बोज़ आउटपुट जिसमें क्लीनअप त्रुटियाँ शामिल हैं
--dry-runfalseनिष्पादित किए बिना क्रियाओं का पूर्वावलोकन करें
--no-cleanupfalseमॉड्यूल आर्टिफैक्ट्स को यथास्थान छोड़ दें (नीचे देखें)
--timeout30प्रति-मॉड्यूल टाइमआउट सेकंड में
--audit-log(none)OCSF 1.7.0 ऑडिट रिकॉर्ड को JSONL फ़ाइल में लिखें
--config(none)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 पर जाते हैं। एक दूसरी, वैकल्पिक स्ट्रीम OCSF 1.7.0 JSONL में रिकॉर्ड करती है कि MacNoise ने स्वयं क्या किया: कौन से मॉड्यूल चले, प्रीरेक/क्लीनअप परिणाम, और MITRE मैपिंग।

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

हर टेलीमेट्री इवेंट success (schema 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.yamlलाज़ारस ग्रुप: डायलिब इंजेक्शन, सेवा डिस्कवरी, रिवर्स शेल, plist पर्सिस्टेंस
amos_atomic_stealer.yamlAMOS / Atomic Stealer: MaaS इन्फोस्टीलर, गेटकीपर बाईपास, कीचेन डंप, 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"

योगदान

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

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

अस्वीकरण

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

AI कोड नीति

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

श्रेणियाँ