Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
macos_xprotect — استكشاف تعليمي معمّق في الحماية المدمجة من البرمجيات الخبيثة في أنظمة Apple: قواعد بيانات التوقيعات، قواعد YARA، تكامل Gatekeeper، ثنائيات المعالجة (الإصلاح)، وسير عمل الكشف في macOS. | Kitploit
أدوات/GitHubGitHub/yo-yo-yo-jbo/macos_xprotect
أدوات دفاعيةتحليل البرمجيات الخبيثةتحليل الملفات الثنائيةالتعلم والتعليم
GitHubyo-yo-yo-jbo/macos_xprotect

macos_xprotect

استكشاف تعليمي معمّق في الحماية المدمجة من البرمجيات الخبيثة في أنظمة Apple: قواعد بيانات التوقيعات، قواعد YARA، تكامل Gatekeeper، ثنائيات المعالجة (الإصلاح)، وسير عمل الكشف في macOS.

عرض المستودع
31منذ شهر واحدلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

مقدمة إلى macOS - XProtect

استكمالًا لسلسلة مقالات مدونتي حول مقدمة إلى macOS، قررت تخصيص مقالة قصيرة لـ XProtect.

ما هو XProtect؟

XProtect هو نظام مكافحة الفيروسات وتوقيعات البرامج الضارة المدمج في macOS من Apple.
يعمل كجزء من XProtectService، الذي يفحص التطبيقات والمحتوى القابل للتنفيذ الآخر بحثًا عن توقيعات برامج ضارة معروفة.
يعمل XProtect في الخلفية ويتم تحديثه بصمت بواسطة Apple عبر آلية XProtectRemediator (المزيد حول ذلك لاحقًا).
لديه 3 وظائف رئيسية:

  • الكشف القائم على التوقيعات – يفحص الملفات مقابل قاعدة بيانات لتوقيعات البرامج الضارة المعروفة.
  • الكشف السلوكي (XProtect Remediator) – تم تقديمه في macOS Monterey، ويتيح لـ XProtect الفحص الاستباقي وإزالة البرامج الضارة بناءً على السلوكيات المشبوهة بدلاً من التوقيعات الثابتة فقط.
  • الحظر في الوقت الفعلي – يمنع XProtect تنفيذ البرامج الضارة المعروفة قبل أن تتمكن من التشغيل.

XProtect التقليدي

الدليل /Library/Apple/System/Library/CoreServices/XProtect.bundle هو الحزمة الرئيسية التي تحتوي على تكوين XProtect وتعريفات التوقيعات.
هذا دليل نظام للقراءة فقط ويتم تحديثه بصمت بواسطة Apple عبر تحديثات XProtect.
تحت هذا الدليل، يمكننا العثور على بعض الملفات ذات الأهمية، وكلها تُحدَّث دوريًا بواسطة Apple ومحمية بواسطة حماية سلامة النظام (SIP).

XProtect.plist

الملف /Library/Apple/System/Library/CoreServices/XProtect.bundle/Contents/Resources/XProtect.plist يخزن توقيعات البرامج الضارة التي يستخدمها XProtect للكشف عن التهديدات المعروفة.
يحتوي على إدخالات تربط عائلات البرامج الضارة بقواعد كشف محددة، بما في ذلك التجزئات (hashes) وأنماط أسماء الملفات.
إليك مثال على عائلة برامج ضارة واحدة - Bundalore:

root@kitploit:~
<dict>
        <key>Description</key>
        <string>OSX.Bundlore.D</string>
        <key>LaunchServices</key>
        <dict>
                <key>LSItemContentType</key>
                <string>com.apple.application-bundle</string>
        </dict>
        <key>Matches</key>
        <array>
                <dict>
                        <key>MatchFile</key>
                        <dict>
                                <key>NSURLTypeIdentifierKey</key>
                                <string>com.apple.applescript.script</string>
                        </dict>
                        <key>MatchType</key>
                        <string>Match</string>
                        <key>Pattern</key>
                        <string>46617364654153</string>
                </dict>
                <dict>
                        <key>MatchFile</key>
                        <dict>
                                <key>NSURLTypeIdentifierKey</key>
                                <string>com.apple.applescript.script</string>
                        </dict>
                        <key>MatchType</key>
                        <string>Match</string>
                        <key>Pattern</key>
                        <string>20006500630068006F002000</string>
                </dict>
                <dict>
                        <key>MatchFile</key>
                        <dict>
                                <key>NSURLTypeIdentifierKey</key>
                                <string>com.apple.applescript.script</string>
                        </dict>
                        <key>MatchType</key>
                        <string>Match</string>
                        <key>Pattern</key>
                        <string>20007C0020006F00700065006E00730073006C00200065006E00630020002D006100650073002D003200350036002D0063006600620020002D007000610073007300200070006100730073003A</string>
                </dict>
                <dict>
                        <key>MatchFile</key>
                        <dict>
                                <key>NSURLTypeIdentifierKey</key>
                                <string>com.apple.applescript.script</string>
                        </dict>
                        <key>MatchType</key>
                        <string>Match</string>
                        <key>Pattern</key>
                        <string>002D00730061006C00740020002D00410020002D00610020002D00640020007C002000620061007300680020002D0073</string>
                </dict>
        </array>
</dict>

هذا النص قابل للقراءة إلى حد كبير، والجزء الجدير بالملاحظة الوحيد هو أن وسيط string في كل تطابق هو تمثيل سداسي عشري، على سبيل المثال 002D00730061006C00740020002D00410020002D00610020002D00640020007C002000620061007300680020002D0073 يقابل -salt -A -a -d | bash -s.
هذا، بالطبع، منجم ذهب لمؤلفي البرامج الضارة، الذين يعرفون بالضبط الأنماط التي يجب تجنبها.

XProtect.meta.plist

الملف /Library/Apple/System/Library/CoreServices/XProtect.bundle/XProtect.meta.plist هو ملف بيانات وصفية يحدد قواعد إضافية لـ XProtect، بما في ذلك سياسات الإنفاذ ومعلومات الإصدارات.
يحدد إصدارات macOS التي تفرض قواعد XProtect معينة والإجراءات المتخذة عند الكشف، بالإضافة إلى قوائم الحظر للإضافات (plugins).
إليك مثال:

root@kitploit:~
<key>JavaWebComponentVersionMinimum</key>
<string>1.6.0_45-b06-451</string>
<key>PlugInBlacklist</key>
<dict>
        <key>10</key>
        <dict>
                <key>com.apple.java.JavaAppletPlugin</key>
                <dict>
                        <key>MinimumPlugInBundleVersion</key>
                        <string>14.8.0</string>
                        <key>PlugInUpdateAvailable</key>
                        <true/>
                </dict>
                <key>com.apple.java.JavaPlugin2_NPAPI</key>
                <dict>
                        <key>MinimumPlugInBundleVersion</key>
                        <string>14.8.0</string>
                        <key>PlugInUpdateAvailable</key>
                        <true/>
                </dict>
                <key>com.macromedia.Flash Player ESR.plugin</key>
                <dict>
                        <key>MinimumPlugInBundleVersion</key>
                        <string>18.0.0.382</string>
                        <key>PlugInUpdateAvailable</key>
                        <true/>
                </dict>
                <key>com.macromedia.Flash Player.plugin</key>
                <dict>
                        <key>MinimumPlugInBundleVersion</key>
                        <string>32.0.0.101</string>
                        <key>PlugInUpdateAvailable</key>
                        <true/>
                </dict>
                <key>com.microsoft.SilverlightPlugin</key>
                <dict>
                        <key>MinimumPlugInBundleVersion</key>
                        <string>5.1.41212.0</string>
                        <key>PlugInUpdateAvailable</key>
                        <true/>
                </dict>
                <key>com.oracle.java.JavaAppletPlugin</key>
                <dict>
                        <key>MinimumPlugInBundleVersion</key>
                        <string>1.8.51.16</string>
                        <key>PlugInUpdateAvailable</key>
                        <true/>
                </dict>
        </dict>
</dict>

كما ترى، تحتوي هذه على معلومات إصدار للإضافات "المحظورة"، على سبيل المثال.

XProtect.yara

في الإصدارات الحديثة، يبدو أن XProtect بدأ في دعم YARA.
الملف /Library/Apple/System/Library/CoreServices/XProtect.bundle/Contents/Resources/XProtect.yara يحتوي على عدة قواعد YARA بصيغة نصية، إليك مثال قصير منه:

root@kitploit:~
rule XProtect_MACOS_SLEEPYSTEGOSAURUS_SYM {
    meta:
        description = "MACOS.SLEEPYSTEGOSAURUS.SYM"
        uuid = "BB4F7D16-C939-4047-A9AF-E74E7B51FAC1"
    strings:
        $a1 = { 45 78 65 63 43 6D 64 }
        $a2 = { 47 65 74 48 6F 73 74 49 6E 66 6F }
        $a3 = { 52 75 6E 53 63 72 69 70 74 }
        $a4 = { 52 75 6E 53 63 72 69 70 74 55 72 6C }
        $a5 = { 4C 61 75 6E 63 68 50 6C 69 73 74 }
        $a6 = { 43 68 65 63 6B 50 72 6F 63 65 73 73 }
        $a7 = { 43 68 65 63 6B 49 6E }
        $a8 = { 52 75 6E 43 6D 64 46 69 6C 65 }
        $a9 = { 53 68 6F 77 48 74 6D 6C }
        $a10 = { 50 6C 69 73 74 48 65 6C 70 65 72 }
        $a11 = { 4C 61 75 6E 63 68 64 48 65 6C 70 65 72 }
        $a12 = { 43 6F 6D 6D 61 6E 64 46 69 6C 65 }
        $a13 = { 57 72 69 74 65 50 6C 69 73 74 }
        $a14 = { 4A 53 4F 4E 46 69 6C 65 50 72 6F 63 65 73 73 6F 72 }
        $a15 = { 43 68 72 6F 6D 65 48 65 6C 70 65 72 }
        $a16 = { 53 61 6E 64 62 6F 78 65 72 }
    condition:
        Macho and filesize < 2MB and all of them
}

هذه ليست مقالة حول قواعد YARA، ولكن كما في السابق - هذا منجم ذهب لمؤلفي البرامج الضارة (على سبيل المثال 43 68 65 63 6B 50 72 6F 63 65 73 73 هي CheckProcess).

gk.db

هنا يمكنك رؤية كيف صممت Apple دمج XProtect مع Gatekeeper - على الرغم من أن هذا الملف يُستخدم غالبًا بواسطة syspolicyd.
الملف /Library/Apple/System/Library/CoreServices/XProtect.bundle/Contents/Resources/gk.db هو قاعدة بيانات SQLite تحتوي على "قائمة حظر" لتجزئات الملفات ومعرفات الفرق (team IDs) التي يجب حظرها.
يمكنك عرضه باستخدام أداة sqlite3:

root@kitploit:~
jbo@McJbo ~ $ sqlite3 "/Library/Apple/System/Library/CoreServices/XProtect.bundle/Contents/Resources/gk.db" .schema
CREATE TABLE settings (name TEXT, value TEXT, PRIMARY KEY (name));
CREATE TABLE blocked_hashes (hash BLOB, hash_type INTEGER, flags INTEGER, PRIMARY KEY (hash, hash_type));
CREATE TABLE blocked_teams (team_id TEXT, flags INTEGER, PRIMARY KEY (team_id));
jbo@McJbo ~ $ sqlite3 "/Library/Apple/System/Library/CoreServices/XProtect.bundle/Contents/Resources/gk.db" "SELECT * FROM blocked_teams LIMIT 5;"
F9X83Q5222|1
Q6XAB4776L|0
DK5C9Y86C8|0
8VK2WEPW22|0
5LWMEF3EX3|0
jbo@McJbo ~ $

هذه مرة أخرى معلومات مثيرة للاهتمام لمؤلفي البرامج الضارة، على سبيل المثال - لمعرفة متى يكون معرف الفريق (Team ID) الذي استخدموه لتوقيع برامجهم الضارة على رادار Apple.

ملفات المعالجة الثنائية

بينما يعيش الملف الثنائي XProtect تحت /Library/Apple/System/Library/CoreServices/XProtect.app/Contents/MacOS/، ستجد ملفات ثنائية إضافية هناك.
تلك هي ملفات معالجة لعائلات محددة:

root@kitploit:~
jbo@McJbo ~ $ ls -l /Library/Apple/System/Library/CoreServices/XProtect.app/Contents/MacOS/
total 47256
-rwxr-xr-x  1 root  wheel   513696 Feb 27 16:54 XProtect
-rwxr-xr-x  1 root  wheel  2498784 Feb 27 16:54 XProtectRemediatorAdload
-rwxr-xr-x  1 root  wheel  2367952 Feb 27 16:54 XProtectRemediatorBadGacha
-rwxr-xr-x  1 root  wheel  2053968 Feb 27 16:54 XProtectRemediatorBlueTop
-rwxr-xr-x  1 root  wheel  2332752 Feb 27 16:54 XProtectRemediatorBundlore
-rwxr-xr-x  1 root  wheel  2299648 Feb 27 16:54 XProtectRemediatorCardboardCutout
-rwxr-xr-x  1 root  wheel  2333248 Feb 27 16:54 XProtectRemediatorColdSnap
-rwxr-xr-x  1 root  wheel  2052736 Feb 27 16:54 XProtectRemediatorCrapyrator
-rwxr-xr-x  1 root  wheel  2859040 Feb 27 16:54 XProtectRemediatorDolittle
-rwxr-xr-x  1 root  wheel  2205520 Feb 27 16:54 XProtectRemediatorDubRobber
-rwxr-xr-x  1 root  wheel  2334752 Feb 27 16:54 XProtectRemediatorEicar
-rwxr-xr-x  1 root  wheel  2053120 Feb 27 16:54 XProtectRemediatorFloppyFlipper
-rwxr-xr-x  1 root  wheel  2053616 Feb 27 16:54 XProtectRemediatorGenieo
-rwxr-xr-x  1 root  wheel  2053504 Feb 27 16:54 XProtectRemediatorGreenAcre
-rwxr-xr-x  1 root  wheel  2332800 Feb 27 16:54 XProtectRemediatorKeySteal
-rwxr-xr-x  1 root  wheel  4659088 Feb 27 16:54 XProtectRemediatorMRTv3
-rwxr-xr-x  1 root  wheel  2382448 Feb 27 16:54 XProtectRemediatorPirrit
-rwxr-xr-x  1 root  wheel  2333024 Feb 27 16:54 XProtectRemediatorRankStank
-rwxr-xr-x  1 root  wheel  2299728 Feb 27 16:54 XProtectRemediatorRoachFlight
-rwxr-xr-x  1 root  wheel  2384416 Feb 27 16:54 XProtectRemediatorSheepSwap
-rwxr-xr-x  1 root  wheel  2053232 Feb 27 16:54 XProtectRemediatorSnowBeagle
-rwxr-xr-x  1 root  wheel  2350624 Feb 27 16:54 XProtectRemediatorSnowDrift
-rwxr-xr-x  1 root  wheel  2019712 Feb 27 16:54 XProtectRemediatorToyDrop
-rwxr-xr-x  1 root  wheel  2105696 Feb 27 16:54 XProtectRemediatorTrovi
-rwxr-xr-x  1 root  wheel  2332768 Feb 27 16:54 XProtectRemediatorWaterNet
jbo@McJbo ~ $

XProtect Remediator

تطبيق نظام XProtect جديد مخزن في /Library/Apple/System/Library/CoreServices/XProtect.app تم تقديمه في macOS Monterey، وهو مسؤول عن تشغيل XProtect Remediator.
على عكس XProtect التقليدي (الذي استخدم في المقام الأول الكشف القائم على التوقيعات)، يقوم XProtect Remediator بفحص وإزالة البرامج الضارة من الأنظمة المصابة بشكل نشط.
يعمل كعملية خلفية ويمكنه إزالة التهديدات المكتشفة تلقائيًا دون تدخل المستخدم.
الدليل /Library/Apple/System/Library/CoreServices/XProtect.app/Contents/Resources يحتوي على نصوص المعالجة (remediation scripts) ومنطق كشف إضافي للفحص النشط.

com.apple.XProtect.agent.scan.plist

الملف /Library/Apple/System/Library/CoreServices/XProtect.app/Contents/Resources/com.apple.XProtect.agent.scan.plist يحتوي على إعدادات حول موعد إجراء عمليات الفحص الدورية.
على سبيل المثال:

root@kitploit:~
<key>com.apple.XProtect.PluginService.agent.slow.scan</key>
<dict>
        <key>Repeating</key>
        <true/>
        <key>PowerNap</key>
        <true/>
        <key>CPUIntensive</key>
        <true/>
        <key>DiskIntensive</key>
        <true/>
        <key>AllowBattery</key>
        <false/>
        <key>Priority</key>
        <string>Utility</string>
        <key>Interval</key>
        <integer>604800</integer>
</dict>

يوضح هذا شروط أداء معينة وحتى فترة الفحص (604800 ثانية = مرة كل 7 أيام).

MRT

ربما سمع بعضكم عن MRT (Malware Removal Tool).
المخزن في /Library/Apple/System/Library/CoreServices/MRT.app، MRT هو مكوّن أمان آخر في macOS يعمل جنبًا إلى جنب مع XProtect.
وهو مسؤول عن إزالة البرامج الضارة التي اكتشفها XProtect ويعمل بصمت في الخلفية.
MRT أكثر حزمًا من XProtect في استئصال التهديدات المكتشفة ويمكنه إزالة الملفات الضارة حتى إذا كانت قيد التشغيل حاليًا.
لاحظ أنه على عكس XProtect، لا يحتفظ MRT بملفات تكوين - كل شيء مدمج في الملف الثنائي.
حتى النظر إلى السلاسل النصية للملف الثنائي الرئيسي (/Library/Apple/System/Library/CoreServices/MRT.app/Contents/MacOS/MRT) يكشف عن سلاسل مثيرة للاهتمام، على سبيل المثال:

root@kitploit:~
import sys,base64;exec(base64.b64decode('
import sys,base64,warnings;warnings.filterwarnings('ignore');exec(base64.b64decode('
import sys;import re, subprocess;cmd = "ps -ef | grep Little\ Snitch | grep -v grep"

كيف يعمل كل شيء معًا

عند تنزيل ملف عبر متصفح أو تطبيق (مثل Safari أو Mail أو Messages)، يتم تمييزه بعلامة حجر صحي (com.apple.quarantine) - لقد ذكرت هذه العلامة بالفعل في مقالة مدونتي السابقة حول Gatekeeper.
يتحقق Gatekeeper مما إذا كان الملف موقّعًا وموثّقًا (notarized). إذا لم يكن كذلك، يتلقى المستخدم تحذيرًا قبل التنفيذ.
إذا كان التنفيذ مسموحًا، يفحص XProtect الملف مقابل توقيعات البرامج الضارة المعروفة لديه (من XProtect.plist وXProtect.yara وما إلى ذلك).
إذا تم اكتشاف برامج ضارة، يمنع النظام التنفيذ. إذا كانت البرامج الضارة معروفة ويمكن معالجتها، فقد يقوم XProtect Remediator أو MRT بحذفها أو تحييدها.
تقوم Apple بتحديث XProtect وMRT وXProtect Remediator بصمت في الخلفية عبر عملية XProtectService.

ذكر مشرف - Banshee

في وقت سابق من هذا العام، نشرت CheckPoint مقالة حول عينة برامج ضارة أطلق عليها اسم Banshee.
حظيت باهتمام كبير لأنها استخدمت نفس خوارزمية التشفير التي تستخدمها ملفات XProtect Remediator الثنائية "لإخفاء قواعد YARA الخاصة بها".
الخوارزمية نفسها بسيطة:

root@kitploit:~
def macos_xprotect_string_decryption(encrypted: bytes, encr_key: int) -> str:
    """
    Author: @Check Point Research
    Decrypts MacOS Xprotect binaries & Banshee Stealer encrypted strings.
    """
    decrypted = "".join(
        chr(
            (encr_key >> ((i * 8) & 0x38) & 0xFF) ^ encrypted[i]
        )
        for i in range(len(encrypted))
    )
    return decrypted.partition("\\x00")[0]

من الواضح أن مؤلفي البرامج الضارة اعتقدوا أنه لا يمكن اكتشاف هذه الخوارزمية عبر توقيع ثابت (لأنها مضمونة لتوليد نتائج إيجابية خاطئة).
وجدت كودًا مشابهًا في معظم ملفات المعالجة الثنائية، على سبيل المثال:

root@kitploit:~
10000592a      if (data_1000ffe7e != 0)
10000592c          void* rax_1 = &data_1000fb0a0
100005933          int64_t i = 0
100005951          do
100005940              *rax_1 = *rax_1 ^ (0x363a34363a303900 u>> (i.b & 0x38)).b
100005943              i = i + 8
100005947              rax_1 = rax_1 + 1
100005951          while (i != 0x26ef0)
100005953          data_1000ffe7e = 0

باحث الأمن الذي اكتشف ذلك في البداية (ald3ns) أصدر أداة تسمى XPR-dump يبدو أنها ما تزال تعمل على أحدث إصدار من XProtect. يجب عليك بالتأكيد إلقاء نظرة عليها!

الخلاصة

أهم خلاصة من هذه المقالة هي أن XProtect يلعب لعبة القط والفأر مع المهاجمين (تمامًا مثل أي برنامج مكافحة فيروسات) - القوائم السوداء، وتشغيل YARA أو التوقيعات الثابتة البسيطة كلها ضمن النطاق.
حقيقة أن هذه الملفات تُنشر على جميع نقاط النهاية وسهلة التحليل تجعل من السهل جدًا لمؤلفي البرامج الضارة إيجاد طرق تجاوز سهلة للكثير من هذه الفحوصات.

ترقبوا المزيد!

Jonathan Bar Or (https://jonathanbaror.com)

تنزيل الأداة