در طول سالها، تیم FortiGuard Labs آموخته است که برای بدافزار MacOS بسیار رایج است تا یک فرایند جدید برای اجرای فعالیت بدخواهانه خود راه اندازی کند. بنابراین برای به کارگیری و به طور خودکار رفتارهای بدخواهی از نرم افزارهای مخرب که با macOS برنامه ریزی شده را تجزیه و تحلیل می کنند، لازم است که یک ابزار برای نظارت بر اجرای فرایند ایجاد شود. MACF در MacOS انتخاب خوبی برای اجرای این ابزار است. چارچوب کنترل دسترسی اجباری - که اغلب به عنوان MACF نامیده می شود - زیربندی است که در آن تمام اوراق بهادار اپل، هر دو MacOS و iOS، اجرا می شوند. در این وبلاگ، من اجرای اجرای نظارت نظارت، از جمله استدلال های خط فرمان را از طریق MACF، دقیق خواهم کرد.

زمینه

اگر شما علاقه مند به تحقیق در مورد نرم افزارهای مخرب و آسیب پذیری در macOS هستید، وبلاگ هایی که از object-see.com هستند، منابع مطالعه عالی هستند. مجموعه وبلاگ "ایجاد فرایند نظارت از طریق هسته" توضیح می دهد که چگونه برای ایجاد نظارت بر ایجاد پروسه از طریق هسته با استفاده از MACF و KAuth (مجوز هسته). با این حال، نشان داد که چگونه اجرای فرآیند نظارت را با استدلال های خط فرمان اجرا می کند. در طول تجزیه و تحلیل نرم افزارهای مخرب در MacOS، نرم افزارهای مخرب معمولا فرایندهای جدید را برای انجام فعالیت های مخرب خاص در پس زمینه اجرا می کنند. این فرآیندهای جدید اغلب با استدلال های خط فرمان اجرا می شوند. بنابراین برای تجزیه و تحلیل آنها، لازم است نظارت بر اجرای فرآیند با تمام استدلال های خط فرمان نظارت شود.

ایجاد یک ابزار برای نظارت بر فرآیند اجرایی

اول، شما باید سیاست MAC خود را ثبت کنید، همانطور که در شکل 1 نشان داده شده است.

در عمل شروع KEXT، شما می توانید عملکرد mac_policy_register را برای انجام ثبت نام فراخوانی کنید.


اعلام عملکرد mac_policy_register در فایل هدر bsd / security / mac_policy.h تعریف شده است.

پارامتر 5، mpc_ops، اشاره گر به ساختار mac_policy_ops است که عملیات ماژول خطمشی را تعریف می کند. ساختار mac_policy_ops شامل بیش از 300 عملیات ماژول سیاست است. شما فقط باید عملیات هایی را که نگرانی دارید، آغاز کنید. در اینجا ما تنها در مورد عملیات مربوط به اجرای فرآیند که در زیر ذکر شده تمرکز می کنیم.

کد زیر نشان می دهد که مقداردهی اولیه ساختار mac_policy_ops را نشان می دهد.


ما از عملیات mpo_cred_label_update_execve_t برای نظارت بر اجرای فرآیند با تمام استدلال های خط فرمان استفاده می کنیم، به جای mpo_vnode_check_exec_t. شرح زیر همراه با تمام پارامترهای نظر mpo_cred_label_update_execve_t است.