BLANTERSWIFT101

ماهوا برنامج whozcalling وكيف يعمل شرح مفصل لحقيقت التطبيق

05‏/01‏/2014
السلام عليكم …
لاحظنا جميعاً ظهور العديد من تطبيقات الهواتف الذكية الّتي اثير حولها الكثير من التساؤلات نتيجة الشكوك الكثيرة -و المبررة- في طبيعة عملها، و قد تحدث الكثيرون عن عدة جوانب تخص هذه البرامج المثيرة للشك لكني اردت القيام ببحثي الخاص بحكم الخبرة ووجود الاهتمام منذ مدة في كل ما من شأنة الاستيلاء او سرقة معلومات المستخدم مما يعتبر اختراقا صريحا لخصوصية الاستخدام مهما كانت اتفاقية الاستخدام الّتي تعرض على المستخدم.
من بين هذه البرامج المثيرة للجدل برنامج whozcalling هذا البرنامج هو عبارة عن تطبيق لاجهزة الهواتف الذكيةـ يعمل على عدة بيئات للهواتف الذكية ( Android, Blackberry OS, Apple iOS, Nokia MeeGo OS) . وما يعرفه المستخدم العادي عنه انه بمجرد تركيبه على هاتفه الذكي يقوم باخباره بإسم المتصل حال ورود اي اتصال من رقم غريب (ليس مسجلاً في قائمة العناوين على جهازه)، هذه الميزة بالنسبة للمستخدم العادي تعتبر شيئ لا يقاوم فهو سيقول وداعاً لمكالمات الازعاج و المكالمات مجهولة المصدر ولكن هذه الميزة تحديدا هي ما يدفع الكثيرين و انا منهم الى التشكيك في نزاهه هذا التطبيق و طريقة حصولة على المعلومة وبالتالي شرعية عمله و اهداف من يقف وراءة.
سأحاول جعل هذا التقرير ممتعاً اكثر للتقنيين لذلك سآخذكم في جولة توضح تفصيلياً كيف توصلت للمعلومات المهمه اللتي ستجدونها خلال المقال. وبالنسبة للقراء الغير مهتمين بالتفاصيل التقنية يمكنكم القفز مباشرة الى فقرة النتائج ومابعدها.
في البداية عندما سمعت عن البرنامج حاولت البحث عنه في Google play وهو متجر برامج الاندرويد من قووقل ولكني لم اجده، بحثت عنه في متجر Blackberry , Apple ولم اجده في اي منهما، استغربت جداً فبالرغم من انه يعتبر برنامجاً مشهورا نسبيا الا ان عدم وجوده في متاجر تطبيقات شركات الهاتف الذكية الكبرى يبعث على الشك فأنا اعرف السهولة النسبية للشروط الّتي تفرضها الشركات على اي جهه تريد اضافة برامجها لتلك المتاجر، و عدم انضمام هذا البرنامج تحديداً يعني عدم اجتيازة لاحد الشروط و المرجح حسب ما سترون انها تتعلق بخصوصية المستخدم.
الخطوة القادمة كانت الحصول على البرنامج لتجربته، و اسهل طريقة كانت زيارة موقع البرنامج www.whozcalling.com، عند زيارة الموقع سيلفت نظرك بساطته الشديدة و قلة المعلومات المتوفرة و اهمها الشركة المالكة للبرنامج !! وهذا ايضاً يضيف لعامل الشك المتولد لدي من اللحظة الاولى.
بدون ان اضيع الكثير من الوقت حاولت تنزيل البرنامج على كمبيوتري فرفض الموقع ذلك و اخذني الى صفحة غير مكتملة تخبرني بانه يجب ان استخدم جوالي لتحميل الملف
whozcalling download page

طبعا يسهل على اي شخص تجاوز هذه العقبة بدون الحاجة فعلا الى زيارة الصفحة من الهاتف الجوال. عن طريق احدى اضافات متصفح firefox (تسمح الاضافة بتغيير الـ user agent و تجدها هنا ) تمكنت من ايهام سيرفر الموقع باني ازور الصفحة من جوالي وبالتالي سمح لي بتحميل الملف. طبعا اخترت تحميل النسخه الخاصة بالاندرويد لعلمي ان البرامج المعمولة للاندرويد مبرمجة بلغة الجافا وهي لغة محببة لي بالإضافة الى سهولة تنفيذ الهندسة العكسية لهذه البرامج وهو ما سنراه لاحقاً.
قد يتسائل القارئ لماذا لم احمل البرنامج على جوالي مباشرة و اقوم بتثبيته، الحقيقة اني لم افعل هذا لسببين، الاول هو لشكي في محافظة البرنامج على خصوصيتي و السبب الاهم هو اني اريد متابعه مايفعله البرنامج عند تشغيله وهو مالا استطيع فعله سوى من على جهاز كمبيوتر.
كيف اركب برنامج معمول للجوال على جهاز كمبيوتر ؟ عن طريق الـ Emulator – المشبهه او المحاكي – وهو اختصاراً برنامج يوفر بيئة تشغيل مشابهه للبيئة الحقيقية الموجودة على الهاتف الذكي لتسهيل عملية تطوير و تجربة تطبيقات الهواتف الذكية بدون الحاجة الى تركيبها فعلياً على جهاز حقيقي، و هناك محاكي رائع للاندرويد مرفق مع الـ Android SDK تجدة هنا .
حملت البرنامج على المحاكي و عند تركيبة لاحظت انه يطلب الموافقة للحصول على عدة صلاحيات من بينها :

  • الرسائل النصية و الوسائط.
  • معلومات المستخدم (قرائة و اضافة معلومات جهات الاتصال!).
  • الوصول الكامل للانترنت.
  • المكالمات (تغيير حالة الهاتف، قرائة حالة الهاتف و هويته).
  • تغيير اعدادت الصوت !! ( ربما تشغيل المايكروفون !!) .
  • امكانية الاتصال بشكل مباشر (قد يكون بدون موافقة المستخدم) و ارسال رسائل نصية.
  • تغيير الاعدادات العامة للهاتف.
طبعا كل هذه الكمية من الصلاحيات لم اراها مجتمعه في تطبيق واحد منذ ان دخلت عالم الاندرويد وهذا امر ملفت للنظر للوهلة الاولى!!. يجدر بالذكر ان طلب البرنامج الموافقة على اعطائة الصلاحيات المذكورة ليس من باب الإستئذان و التأدب مع المستخدم ولكنها الطريقة الوحيدة في بيئة الاندرويد للوصول برمجياً الى اجزاء معينه من نظام التشغيل، فالمبرمج مجبر للقيام بهذا، وهذا من حسن حظنا فهو يكشف لنا مدى التحكم الهائل الّذي يحصل عليه البرنامج في حال الموافقة على هذه الصلاحيات حتى قبل ان نبدأ بتحليلة.
بعد ان وافقت على الصلاحيات بدأت بتجربة البرنامج، طبعا البرنامج عملياً يقوم بإخبارك بإسم المتصل الغير مسجل لديك حال اتصالة ولكن كيف اجرب البرنامج وهو يعمل من على محاكي داخل الوندوز وبدون شريحة اتصال SIM ؟ هذا سهل جدا فمن ضمن مزايا المحاكي انه يمكنك تشبيه عملية وصول اتصال خارجي الى الهاتف الذكي عن طريق انشاء اتصال Telnet بالمحاكي على منفذ محدد ثم اصدار اوامر معينه كما تشاهدون هنا :

ممتاز، نجحت التجربة !!

الآن بدأت المرحلة الثانية، وهي محاولة معرفة طبيعة عمل البرنامج و ماذا يفعل بالضبط ؟ و للوصول الى هذه المعلومات هناك طريقتين منطقيتين :
  1. عن طريق مراقبة اتصالات البرنامج من الخارج بأداة مثل Wireshark ومعرفة بماذا يتصل وماذا يرسل وماذا يستقبل من الانترنت.
  2. تحليل الكود البرمجي للبرنامج و الوصول الى هذه المعلومات من الداخل.
طبعاً وكما هو متوقع البرنامج يقوم بتشفير كل اتصالات الـ TCP/IP الصادرة و الواردة عن طريق بروتوكول HTTPS وبالتالي استخدام الطريقة الاولى قد لا يفيد كثيرا اللهم في معرفة عنوان السيرفر اللذي يقوم البرنامج بالاتصال به ولا غير.
و بالتالي اضطررت للتوجه للخيار الثاني. ولكن كيف تحلل كود برنامج عبارة عن ملف bytecode في حالة الـ object code وليس source code (مبرمجي الـ Java … رحلة سعيدة :) ) ؟!
هنا تحديداً تفيدك الخبرة الطويلة مع عدة لغات و منصات برمجة، الجافا تعتبر نظرياً اسهل من غيرها في عملية الـ reverse engineering ومنذ بداية انتشارها ظهرت عدة ادوات تقوم بعملية اعادة البرنامج الى النص البرمجي و تسمى decompilers (لن اخوض في كون الجافا تستخدم interpreter وليس compiler  فهذا نقاش آخر) …
طبعا برامج الاندرويد عبارة عن ملفات apk ولكنها في الحقيقة في داخلها لاتختلف كثيرا عن ملفات الـ jar والّتي تعتبر الطريقة المعتمدة في الجافا لجمع ملفات البرنامج في ملف واحد، ومن السهل جدا باستخدام ادوات مختلفة تحويل ملفات الـ apk الى jar مثل اداة dex2jar او apktool، بعد تحويل الملف الى صيغة jar ياتي دور اعادة هندسة الملفات لتحويلها من object code الى source code وهو ما يمكن تنفيذة باستخدام عدة ادوات تتراوح في عملها و جودة النص المنتج فمن الجدير بالذكر ان عملية اعادة هندسة اي برنامج لا يمكن ان تنتج نفس الكود الاصلي 100% ولكن هي محاولات لانتاج النص الاصلي تتم عن طريق عكس التعليمات اللي قام بها الـ compiler (او الـ interpreter ) و ليس كل هذه التعليمات يمكن معرفتها و عكسها، مثلا هناك مشكلة الـ obfuscation والتي تستخدم لتصعيب عملية اعادة الهندسة و تقوم بتغيير كل اسماء المتغيرات و الـ members او  (functions and methods and inline classes) الى احرف عشوائية اثناء عملية الـ compilation مما يعني انه بعد الهندسة العكسية للبرنامج سينتج لدينا نص برمجي صعب الفهم و يحتاج لشخص متمرس للتفريق بين اسماء الدوال و المتغيرات العشوائية و المتشابهه !! و لتوضيح هذه المشكلة اليكم النص البرمجي بعد الهندسة العكسية :

ستلاحظون اسماء الدوال (Functions) العجيبة و الّتي لا تدل على شيئ بالإضافة الى ان اسماء الكثير من المتغيرات و الكائنات (objects) مشابهه لاسماء الدوال و الفئات (classes) و قد استهلك مني تحليل النص البرمجي لهذا البرنامج المكون من 60 class ما مجموعه حوالي 10 ساعات متفرقة حيث ان الطلبات اللي ترسل للخادم في اغلبها تتكون في عدة كلاسات خلال البرنامج مما يصعب كثيرا محاولة اعادة بناء الطلب وتتبع مراحل تكوينه لمعرفة ما يتم ارسالة من البرنامج للسيرفر.
اهم ما استطعت التوصل اليه لاول وهلة منذ اطلاعي على النص البرمجي هو اسم الشركة المطورة للبرنامج وهي شركة inmobiles، كذلك عنوان السيرفر الحقيقي الّذي يتم ارسال المعلومات اليه وهو ما لايمكن معرفته بدون عمل الهندسة العكسية للبرنامج، وكثير من المعلومات التفصيلية لخّصتها في الفقرة القادمة.
بالنسبة لبرنامج NumberBook فهو مشابه بشكل كبير لبرنامج WhozCalling و قد اتبعت نفس الخطوات السابقة معه لذلك سوف لن اعيدها هنا و انما سآخذكم للنتائج المتعلقة به مباشرة.
النتائج 
اولاً – نتائج التحليل الفني و الامني لبرنامج WhozCalling :
  • يقوم البرنامج عند تشغيله على هاتف المستخدم أولا بتحميل جميع أرقام و أسماء جهات الاتصال لديه إلى سيرفر الشركة (على النطاق secure.inmobiles.net ) و من ثم اعتراض كل الاتصالات (الصوتية و الرسائل النصية) الواردة و إرسال أرقام المتصلين إثناء الاتصال (قبل حتى ان يتم الرد على المكالمة) إلى سيرفر الشركة عبر الانترنت و مقارنه أرقام المتصلين مع قاعدة بياناتها ومن ثم جلب الأسماء المتوافقة مع أرقام المتصلين حال توفرها و عرضها للمستخدم إذا كانت غير مسجله في جهازه كجهات اتصال مسبقا.
  • البرنامج يقوم أيضا بإرسال رقم الهاتف التسلسلي (IMEI) و كذلك رقم تعريف الشريحة (IMSI)  ورقم شبكة الاتصالات (وبالتالي اسمها) التي يستخدمها المستخدم و كذلك رقم الـ IP  وكلها معلومات حساسة لا يحتاجها البرنامج فعليا للقيام بعمله.
  • برنامج whozcalling  لهواتف الاندرويد و الـ iPhone غير موجود في الأسواق الالكترونية للشركات المالكة (ِApple  و Googleو RIM) مما يعني عدم موافقة هاتين الشركتين على البرنامج نظراً لانتهاكه خصوصية المستخدم على ما يبدو.
  • لا يوجد شركة حقيقية باسم whozcalling  (على الأقل على الانترنت) و بالنسبة للموقع whozcalling.net  الذي يتم من خلاله تحميل البرنامج على هواتف المستخدمين فانه لا يمكن معرفة من يملكه بشكل صريح فلا يوجد ما يشير إلى الشركة المالكة في نفس الموقع، سوى ذكر لشركة inmobiles  كجهة اتصال. أما النطاق whozcalling.net  فقد تم تصنيف معلومات مالك النطاق كمعلومات مخفيه من قبل المالك نفسه ولا يمكن الوصول إليها.
  • يوجد نطاق آخر whozcalling.org   تظهر معلومات مالك النطاق انه مملوك لشخص اسمه ( Maurice Frenn  او Maurice  el -Frenn) موجود في بيروت و يمكن الاتصال به على هاتف رقم +96171801285 وبعد البحث عن معلوماته وجد انه ربما يكون في كندا ولكنه أيضا مالك شركة inmobiles و التي يبدو أنها هي فعلياً من يملك البرنامج.
  • يمكن منع عمل البرنامج في السعودية مثلاً عن طريق حجب النطاقين www.inmobiles.net و secure.inmobiles.net  من قبل هيئة الاتصالات وبالتالي منع اتصال البرامج الموجودة على هواتف المستخدمين داخل السعودية من الاتصال بسير فر الشركة.
  • موقع شركة inmobiles  على الانترنت موجود على النطاق www.inmobiles.net  وهو مستضاف على سيرفر يحمل الـ IP  رقم 212.12.167.191 و يتبع لنطاق الـ IP  المسجلة في السعودية و هذا السيرفر يقع تحت إدارة شركة نورالتجارية (نور نت) www.nour.net.sa  لاستضافة المواقع وهي شركة سعودية مقرها الرياض. ولكن هذا يعتبر تظليلا وخداعا ربما لإيهام من يتتبع موقع الشركة أنها شركة سعودية ولكن الحقيقة إن سيرفر الشركة الأصلي على هذا النطاق secure.inmobiles.net  ويحمل الـ IP  92.62.165.139 ويقع في بيروت وهو مستضاف لدى شركة سيبيريا لاستضافة المواقع وهو السيرفر الذي يتم تخزين معلومات المستخدمين عليه. ولا يوجد سبب تقني مقنع لاستضافة موقع الشركة في السعودية و سيرفرها الأصلي في لبنان (عنوان وموقع السير فر الأصلي غير معروف إلا بتفحص النص الأصلي للبرنامج بعد الهندسة العكسية).
ثانياً – نتائج التحليل الفني و الامني لبرنامج NumberBook:
  • بالنسبة لبرنامج NumberBook فهو في الحقيقة من تطوير نفس الشركة inmobiles ويقوم بنفس العمل تقريباً و لكنه هذه المرة لايرسل المعلومات عن طريق استخدام بوتوكول HTTPS و انما يستخدم HTTP الغير مشفر لكنه يشفر المعلومات باستخدام لوغاريثم خاص به و يرسلها مشفرة على سيفر آخر هو api.numberbook.org موجود في المانيا و يحمل رقم الـ IP 85.195.89.178 .
  • في حالة برنامج Numberbook لا يوجد في النص البرمجي ما يشير الى الشركة المطورة للبرنامج ولكني تمكنت من الربط بينه و بين شركة inmobiles عن طريق معلومات الـ who is للنطاق numberbook.org و اللتي تشير الى نفس المالك للنطاق whozcalling.org  وهو ( Maurice Al-Frenn) (الآن تم حجب هذه المعلومات عن طريق تسجيل النطاق باسم شركة خاصة لا تعرض المعلومات الاصلية للمالك الحقيقي الا بخطاب رسمي من الجهات الامنية وهي domainsbyproxy).
  • برنامج NumberBook يزيد على برنامج WhozCalling بأنه يتيح للمستخدم معرفة اسماء صاحب اي رقم هاتف بدون ان يتصل عليك و كذلك عرض ارقام الاشخاص بمجرد معرفة اسمائهم وبالتالي السماح بالبحث في نفس قاعدة البيانات الهائلة بالاتجاهين (الاسم او الرقم).
  • يتفق هذا البرنامج مع سابقة في عدم وجود عائد مادي صريح للشركة من وراء هذا البرنامج ولاننسى التكلفة المادية التي تتكبدها الشركة كاجور للمبرمجين و تشغيل و صيانة السيرفرات و تكلفة خدمة اتصال هذه السيرفرات بالانترنت وكذلك اجار المباني و فواتير الكهرباء و غيرها من التكاليف الباهضة، مما يجعلنا نتسائل مالهدف من ورائه؟
ثالثاً – المعلومات التي تستطيع شركة  inmobiles الحصول عليها :
  • تستطيع الشركة تحديد موقع أي مستخدم بشكل تقريبي عن طريق الإتصال عليه ومن ثم فإن البرنامج سيرسل للشركة رقم المتصل وإسم شبكة الإتصالات للمستقبل (الهدف) ورقم الـ IP الخاص به وقت إستلام المكالمة .
  • تستطيع الشركة معرفة كل الأرقام التي يملكها المستخدم بمجرد إدخال شرائحها في جهازه وإستقبال أي مكالمات أو رسائل.
  • تستطيع الشركة معرفة كل المكالمات والرسائل التي يستقبلها المستخدم .
  • تستطيع الشركة معرفة كل الجهزة اللتي يملكها بمجرد ادخال شرائحه المعروفة مسبقا لديها في اجهزة جوال اخرى تحمل البرنامج.
  • تستطيع الشركة تسجيل كل مكالمات أو رسائل شخص معين إذا إتصل أو أرسل رسائل نصية لأشخاص لديهم نفس البرنامج على أجهزتهم .
  • تستطيع الشركة تكوين شبكة معارف (شبيهه بشبكات التواصل الاجتماعي الالكترونية) تظهر علاقات اي شخص مع بقية الاشخاص المستخدمين للبرنامج. وبالتالي تحديد معارف اي شخص و تحليل علاقاته بهم وربما اكتشاف علاقات جديدة.
الخلاصة
  • الشركة المطورة للبرنامجين قامت بجهود واضحه لإخفاء عمل البرنامجين كما ان طبيعة البرنامجين غير الربحية وعدم وجود مصدر فائدة مادية من البرنامج كالدعايات و غيرها يثير الشك في الهدف من وراء هذا البرنامج.
  • كذلك فإن الشركة قامت بإخفاء معلومات مالك النطاقات Maurice Frenn من خلال تسجيلها بأسماء شركات خاصة متخصصة في اخفاء هذه المعلومات ولكن بعد ان تمكنت من الوصول للمعلومات الأصلية قبل اخفائها.
  • مما رأيت و حسب خبرتي الشخصية فهذه البرامج توفر كمية من المعلومات لاتتوفر جميعها قطعا لدي اي دولة لوحدها مهما كانت مصادرها فهذه البرامج تجمع المعلومات من المستخدمين من مختلف الدول وبالتالي توفر قاعدة بيانات ضخمه عابرة للحدود.
  • من الخطأ اعتقاد محدودية الفائدة وبالتالي محدودية او انعدام الخطر من قاعدة بيانات تسجل اسماء و ارقام الاشخاص فالحقيقة ان الاسماء و الارقام هي جزء بسيط من قاعدة بيانات ضخمة تحوى بالإضافة الى الاسماء و الارقام اسماء شركات الاتصالات المستخدمه و ارقام الـ IP و بالتالي مواقع المستخدمين الجغرافية بالإضافة الى الارقام التسلسلية لاجهزتهم الذكية و شرائحهم (SIM cards)، و بالإضافة الى كل هذه البيانات الصريحة يمكن عن طريق ما يسمى تعدين البيانات Data mining وتحليلها الوصول الى كثير من الحقائق قد يصعب على الاجهزة الامنية في عدد من الدول الوصول اليها في ضل عدم توفر هذه المعلومات.
  • اتمنى ان لا نكتشف لاحقاً ان هذه البرامج ومثيلاتها ماهي الا ادوات واسلحة ضمن ما اصبح يعرف منذ مدة بالحرب الالكترونية فمن السهل ان تكون هذه الشركة مجرد ذراع غير معلنة لدول عدوة مهمتها جمع المعلومات وتحليلها و الاستفادة منها استخباريا و امنياً ضدنا. وبقليل من التحليل المنطقي يمكن ان نتأكد من ذلك حيث ان المعلومات اللتي يجمعها البرنامج يمكن ان تجمعها اي دولة عن مواطنيها عن طريق شركات الاتصالات و مزودي الخدمة على اراضيها لكن لنفكر، من هي الجهات او الدول التي تحتاج لمثل هذا البرنامج نظرا لعدم وجود تعاون امني بينها وبين بقية دول المنطقة؟
  • قد يضن بعض المستخدمين ان هذا البرنامج لا يشكل خطرا عليه فليس لديه من المعلومات ما يخفيه او يخاف من سرقته لكن الحقيقة انه ليست كل المعلومات التي على جهازة هي ملكه فارقام و اسماء الاشخاص في جهازة هي معلومات مؤتمن عليها من قبل هؤلاء الاشخاص و المعارف يجب ان يحافظ عليها.
  • لاتعتقد انك بعدم تحميلك للبرنامج تكون امنت نفسك ضده فالحقيقة انه يكفي ان يكون واحد فقط من معارفك مستخدما للبرنامج بجهل لتكون معلوماتك لدى الشركة و الاهم من هذا انه بمجرد اتصالك او ارسالك للرسائل الى جهازة تكون عرضة للتطفل و  سرقة المعلومات.
  • يجب ادراك حقيقة الخطر القائم من هذه البرامج فهي تشكل اختراق معلوماتي صارخ خصوصاً اذا عرفنا ان تلك البرامج منتشرة بشكل هائل في المنتديات و بين العديد من المستخدمين في المنطقة (شخصياً وجدت اسماء اغلب معارفي مسجلة في البرنامج وهذا مؤشر على مدى انتشاره).
  • يمكن جزئيا ايقاف عمل هذه البرامج عن طريق حجب الاتصال لسيرفراتها (وهو ما يجب عمله في الواقع على اقل تقدير) لكن هذا لا يعني ان المعلومات الخاصة بعدد هائل من المستخدمين ليست مسجلة مسبقاً في سيرفرات الشركة وستبقى هناك!!.
  • يجب على كل من يقرأ هذا التقرير و يعرف خطورة هذه البرامج توعية معارفه بخطورتها و حثهم على التخلص منها.

اخيراً، هذا جهد بسيط من شخص واحد اتمنى ان يكون هذا المقال افاد الكثيرين و شجعهم على المشاركة بتوعية الآخرين وكذلك اثار لديهم فضول المسلم الفطن لعدم اخذ الامور على علاتها و التشجع على تحليل اي برنامج يشكون فيه و مشاركة البقية بالنتائج. كما اتمنى ممن يشك في اي برنامج مشابه محاولة القيام بما يقدر عليه لتحليل عمل البرنامج و/أو الاتصال بي و بمجموعة الـ White Hats و ابلاغنا عنه للقيام بدورنا و المشاركة بما نستطيع.