
تحليل جزئي لـ cabin
description: تحليل Bluetooth-Worm:SymbOS/Cabir
قبل أن تبدأ القراءة، يجب أن أُصدر هذا الإعلان: رجاءً خذ كل ما تقرأه بحبة ملح، فأنا لست مطوّر SymbianOS أو أي شيء قريب من بيئة SymbianOS.
ولكن لماذا نحلّل شيئًا بهذا القدم أصلًا؟ حسنًا، لأنها أسهل طريقة للدخول إلى الاختراق عن بُعد، لأن هذا النوع من الأشياء هذه الأيام يُنفَّذ بثغرات ndays/0days قيمتها مليون 🤑🤑🤑. ولأنني لا أمتلك الخبرة بعد للقيام بذلك النوع.
رائع، الآن بعد أن تخلّصنا من هذه الهراء، لنبدأ. ما هو Cabir؟ إنها دودة بلوتوث تعمل على هواتف Symbian المحمولة. لمن يتساءل ما هي هواتف Symbian وكل هذا الهراء، فهي ببساطة هواتف تعمل بمعالج ARM، فلا جديد تحت الشمس :) معلومات أكثر تركيزًا (https://en.wikipedia.org/wiki/S60_(software_platform))
الآن، كنا محظوظين بما يكفي لأن الكود المصدري لهذه الدودة كان متاحًا على الإنترنت (بفضل vxug) (SymbianOS.Cabir.7z). الآن سنستخدم ذلك كمرجع، لكن بصراحة تبًا له. أحد الأسباب الأخرى التي تدفعني لفعل هذا هو أنني أريد اللعب مع ARM. لذا سننظر إلى هذا من منظور الكود المصدري/التجميع/المحاكي/التنقيح/التنصت.
رائع، إذن #1 كيف بحق الجحيم نُجمّع الكود المصدري؟
حسنًا، هذا ليس بهذا التعقيد...
أولًا ثبّت Carbide ++(http://www.mediafire.com/file/6z54qrceef73x9s/Carbide_cpp_v2_7_en.exe/file)(من https://gist.github.com/artem78/cb2b9650af186844f7b5654964676284)
بعد ذلك ثبّت أي محرك Perl
بعد ذلك ثبّت Nokia PC Suite(https://www.usitility.com/nokia-pc-suite/)
ثبّت حزمة SDK(http://www.mediafire.com/file/9uc7fjb2ynmxlud/s60v3.1_SDK.zip/file )
ثبّت إضافة C/C++ (https://ia800905.us.archive.org/7/items/nokia_sdks_n_dev_tools/s60_open_c_cpp_plug_in_v1_7_en.zip)
وها نحن حصلنا على البيئة :)
ملاحظة: من الأفضل استخدام Windows 7، لأنه على ما يبدو على Windows 10 تتعطل الأمور ولا تعمل بشكل صحيح
الإصابة في بيئة حية
سيُحدَّد لاحقًا
لهذا الجزء، اعلم أنك تحتاج إلى كسر حماية (نعم سمعت بشكل صحيح، كسر حماية) هاتفك. كيف يحدث هذا؟
تحليل الهندسة العكسية
رائع، إذن كيف بحق الجحيم يجمّع المرء هذه الأشياء؟ سؤال جيد جدًا. ما فعلته هو تشغيل ABLT.BAT أولًا من مجلد caribe\group هكذا
رائع، التالي الآن هو الانتقال إلى مكان تثبيت حزمة SDK، وتحديد مجلد المنصة (S60_3rd_fp1) في حالتي، والعثور على مجلد epoc32 ثم الذهاب إلى مجلد build واختيار مجلد user، ثم مجلد username، ثم مجلدين أو ثلاثة مجلدات أخرى، وينتهي بك المطاف في مجلد يبدو هكذا
هذا هو المسار الحالي الذي يجب أن يكون مشابهًا تقريبًا لما يفترض أن تكون عليه (C:\Symbian\9.2\S60_3rd_FP1\Epoc32\BUILD\Users\pwn\Desktop\CabirSourceCodes\caribe\group)
رائع، التالي الآن نحتاج إلى الدخول إلى مجلد caribe (أو whatever سمّيت الكود المصدري) وستجد مجلدًا بأسماء مختلفة كما ترى هنا
ما هذا الأمر؟ حسنًا، ببساطة عندما نشغّل ablt.bat لأول مرة (حتى يومنا هذا لا أعرف الغرض منه، لكن لا يهم) نحصل على خيارات منصات مختلفة لبناء ملف pkg الخاص بنا والذي سنولّد منه ملف sis. في الحالة المعطاة هنا نرى GCCE وWINSCW. إذا شغّلت الأمر الافتراضي ablt.bat build فسيبنيه لـ WINSCW (وهو الاسم الرمزي المعطى لمنصة المحاكي). لغرض تعلّم كيفية تجميع الكود المصدري، سنستخدم GCCE في الوقت الحالي، لكن العملية نفسها إذا اخترت فعلها مثلًا لمنصة arm حتى تتمكن من رفعه إلى هاتفك. إذن ببساطة ablt build arm_whatever ثم افعل نفس الخطوات تمامًا حتى هنا. رائع، الآن نذهب إلى مجلد GCCE
اذهب إلى مجلد urel ويجب أن يكون هناك ملف اسمه caribe.app. من هناك تريد فتح سطر أوامر وتشغيل
إذن ما الذي يفعله هذا؟ حسنًا، ببساطة شغّلنا makesis الذي يولّد ملف sis حتى نتمكن من تثبيته على هواتفنا، ولماذا نستخدم ملف sis من كود caribe المصدري؟ حسنًا، ببساطة كنا بحاجة إلى تحديد caribe.pkg إلى makesis. رائع، فلماذا كل هذا العناء للوصول إلى مجلد build وما إلى ذلك؟ حسنًا، لأنك تحتاج إلى تحديده إلى المعامل -d حتى يتمكن من توليد ملف .sis
رائع، هذه الطريقة تعمل فقط على حزمة SDK v3 التي تشير إليها هذه الكتابة. على ما يبدو وبينما كنت أُجرّب، أشار أحد المطوّرين من خادم Discord مخصص لـ Symbian إلى أن Cabir مبرمج لحزمة SDK v2، وبالتالي ما قدمته هنا سيكون عديم الفائدة..... هذا سيُحدَّد لاحقًا عندما أتمكن من الوصول إليه... فهو غالبًا غير متصل على Discord هذه الأيام...
رائع، إذن كيف يقوم المرء بالهندسة العكسية لملف .sis؟
ببساطة، ملف .sis هو أرشيف. لذا... نستخدم تطبيق siscontents لفك الضغط ثم نرمي ملف .app في IDA.
منظور التجميع
إذن العملية كلها تبدو هكذا
الآن نذهب إلى ذلك المجلد وفي الخطوة التالية نحصل على ملف app.app
رائع، إذا رميته في IDA.
رائع، إذن ببساطة ملف ARM exe. رائع! التالي من فضلك! نعم من فضلك ~~~
هناك رموز في الملف، نعم!!! حسنًا، نعم، ولأننا لسبب غريب جمّعنا الثنائي مع رموز تنقيح، فقد حالفنا الحظ!
وبما أننا نملك الكود الأساسي وما إلى ذلك، فإن عملية الهندسة العكسية تقريبًا مماثلة لما هو موصوف في فصل تحليل الكود المصدري :)
منظور التنصت
للأسف لا أستطيع فعل هذا، لأن ما خططت لفعله هو استخدام Fts4bt حيث رأيت أنه جيد جدًا (https://www.diva-portal.org/smash/get/diva2:24278/FULLTEXT01.pdf)
لكن على ما يبدو المنتج وصل إلى نهاية الدعم. إذا صادف أنك تستطيع فعل هذا الجزء، رجاءً راسلني وقدّم طلب سحب (pull request) لإنهاء هذا الفصل
منظور المصفّح (Debugger)
إذن ماذا عن هذا القسم !>>~> حسنًا، هذا رأيي في الأمر: بينما سيكون مفيدًا لي ولك (أيها القارئ) كتجربة لتعلم كيفية ربط مصفّح عبر USB وتنقيح الكود مباشرة على هاتف Nokia، إلا أنه سيتطلب مني وقتًا وجهدًا كبيرين في الوقت الحالي (لأنني متعب جدًا بالفعل... آسف ربما مرة أخرى). حجة أخرى لكون هذا عديم الفائدة هي أننا نملك الكود المصدري وبيئة تطوير Symbian مصممة خصيصًا. إذن هذا ما سنفعله. سنستخدم المصفّح من Carbide++ لتنقيح دالة أو دالتين باختصار، ويمكن للقارئ فعل ذلك لأن تدفق الكود تم شرحه في قسم تحليل الكود المصدري، وأيضًا لأنه لا توجد تشفير أو مضادات-أيا-كان لجعل تحليل الكود أصعب. إذن... لنذهب!
بصراحة
تحليل الكود المصدري
رائع، دعنا نستغل حقيقة أننا نملك وصولًا إلى الكود المصدري ونستخدمه لأقصى فائدة.
إذن هيكل مجلداتنا يبدو هكذا، وهو منظم بشكل جميل