
مستكشف IPC وlaunchd وMach-O وعلاقات الثقة في macOS — أداة تحقيق جنائي أصلية للطرفية بدون أي تبعيات
machscope هو مستكشف macOS أصلي يعمل في الطرفية، يحوّل العمليات، ووظائف launchd، وخدمات Mach، والحزم، والتوقيعات، والتراخيص (entitlements)، وروابط Mach-O إلى رسم بياني واحد قابل للاستجواب.
إنه موجود للإجابة عن سؤال بسيط بشراسة:
بماذا يرتبط هذا العملية أو الخدمة أو الملف الثنائي أو الحزمة فعليًا؟
يربط العمليات، الملفات التنفيذية، وظائف launchd، خدمات Mach، الحزم، خدمات XPC المدمجة، توقيعات الشيفرة، التراخيص (entitlements)، روابط Mach-O، ونتائج الثقة/الشذوذ في عرض واحد.
لو كان لدى Activity Monitor وps وlsof وlaunchctl وcodesign وotool طفلٌ مصاب بجنون الارتياب وودودٌ للمشغّلين، لكان هذا هو.
البنية الداخلية لنظام macOS أنيقة، لكن الحقيقة مشتتة.
لفهم عملية مشبوهة واحدة، غالبًا ما تجد نفسك تتنقل بين:
pslsoflaunchctlcodesignotoolInfo.plistيدمج machscope سير العمل هذا في أداة طرفية واحدة.
صُمم لأجل:
بالنظر إلى PID أو مسار أو تسمية launchd أو اسم خدمة Mach، يمكن لـ machscope الربط بين:
pslsoflaunchctlMachServices المعلنة.xpc المدمجةcodesignotoolإنه لا يدّعي مراقبة كل علاقة XPC حية. بعض العلاقات معلنة وليست مرصودة. هذا الصدق مقصود.
ps العملية، وليس سلسلة الملكيةlaunchctl الوظيفة، وليس السياق الكامل للملف الثنائي/الحزمة/الثقةcodesign الهوية، وليس علاقات وقت التشغيلotool الارتباط، وليس تعرّض خدمات launchd أو Machmachscope كل ذلك في مسح واحد--follow
graph.nodes وgraph.edges لسير عمل TUI أو عارض أو diff مستقبلية./machscope.py inspect <pid|path|launchd-label|mach-service>
./machscope.py inspect <target> --follow
./machscope.py inspect <target> --json
./machscope.py scan --limit 40 --min-score 1
./machscope.py services [filter]
./machscope.py inspect 1
./machscope.py inspect 57382
./machscope.py inspect /System/Applications/Calculator.app --follow
./machscope.py inspect /usr/libexec/remoted
./machscope.py inspect com.apple.WindowServer --follow
./machscope.py inspect ai.openclaw.gateway --follow
./machscope.py inspect com.apple.dnssd.service --follow
./machscope.py scan --limit 40 --min-score 1
./machscope.py scan --limit 10 --min-score 6
./machscope.py services
./machscope.py services mDNS
./machscope.py services com.apple
Target: com.apple.dnssd.service [mach-service follow]
Resolved via: mach-service-launchd
Executable: /usr/sbin/mDNSResponder
Launchd: com.apple.mDNSResponder.reloaded
Plist: /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
Signature: apple-platform team=not set id=com.apple.mDNSResponder
Mach services: com.apple.dnssd.service, com.apple.mDNSResponder.control, com.apple.mDNSResponder.log_utility
Entitlements: 0
Linked dylibs: 25 RPATHs: 0
Trust: score=1 verdict=ordinary
Findings:
- [LOW] T012 Odd launchd label suffix
يُرجع inspect --json كائنًا منظمًا مصممًا للبرمجة النصية وعمل واجهات المستخدم مستقبلًا.
الشكل العلوي المستوى:
targettarget_resolutionprocessbinarybundlelaunchdtrustgraph.nodesgraph.edgesالرسم البياني بسيط عن قصد ليغذّي:
--followعند --follow يبدأ machscope بالشعور وكأنه مستكشف بدل كونه مُفرِّغ بيانات وصفية.
يضيف محاور حل مثل:
launchctl print → PID الحي عند توفرههذا مهم لأن أكثر القطع الأثرية إثارة للاهتمام في macOS غالبًا ليست الشيء الحرفي الذي كتبته، بل ما خلفه.
يتضمن machscope طبقة بسيطة للثقة/الشذوذ.
أمثلة على ما يمكنه إظهاره:
.reloadedهذه ليست محرك إصدار أحكام على البرمجيات الخبيثة. إنها وسيلة لكشف الخيوط، وتقليل النقاط العمياء، وجعل السلاسل المشبوهة أسهل في الاستجواب.
تستخدم النسخة الأولى عن قصد:
الأدوات المغلّفة تشمل:
pslsoflaunchctlcodesignotoolfileهذا يجعل الأداة سهلة الاستنساخ والفحص والتشغيل على نظام شبه افتراضي.
بعض العلاقات معلنة وليست مرصودة.
على سبيل المثال:
يفضّل machscope أن يكون صريحًا على أن يزيّف اليقين.
ps وlsof وlaunchctl وcodesign وotool وfileشغّله كمستخدم عادي أولًا.
غالبًا ما يكون ذلك كافيًا للحصول على إجابات مفيدة.
قد تكون بعض التفاصيل جزئية دون صلاحيات مرتفعة، خاصة فيما يتعلق بـ:
lsoflaunchctlإذا رفعت الصلاحيات، فافعل ذلك عمدًا.
لا يحاول machscope أن يكون:
إنه أداة محلية حادة لجعل البنية الداخلية لنظام macOS مقروءة.
مبكرة، لكنها مفيدة بالفعل.
تم تشكيل المخرجات الحالية ونموذج الرسم البياني عمدًا بحيث يمكن للإصدارات المستقبلية إضافة:
--