FaceBook Chat Manipulation

בבלוג זה אציג את ליקוי האבטחה שמצאתי ב-Facebook Messenger, ליקוי אבטחה זה מאפשר לערוך את הצ'ט ולשנות הודעות שנשלחו.
באמצעות ליקוי אבטחה זה ניתן:

  • למחוק הודעות שנשלחו
  • לערוך את תוכן ההודעה שנשלחה בעבר
  • להוסיף לשנות ולמחוק תמונות/לינקים וכל תוכן אחר

לסרטון הדגמה:


Facebook מהווה חלק חיוני מהפעילות היומיומית ברחבי העולם. משתמשים רבים מסתמכים על Facebook עבור תקשורת אישית ועסקית, מה שהופך ליקוי אבטחה מסוג זה למאוד אטרקטיבי לפושעי סייבר.

משתמשים זדוניים יכלו לתמרן את היסטוריית השיחה ובכך לבצע הונאות, לטעון שהגיעו להסכם מזויף עם הקורבן, או פשוט לשנות את תנאיו.

האקרים יכולים להשתמש בשיטה למתקפות דיוג באמצעות שינוי לינק לגיטימי ללינק זדוני ובכך לפתות את המשתמש ללחוץ על הלינק.

מידע טכני אודות ליקוי האבטחה:
כל הודעה אשר נשלחת ב-Facebook Messenger, הן באתר והן באפליקציה, מזוהה עם מזהה ייחודי הנקרא message_id. על מנת לאתר את ה-message_id של ההודעה שאתם רוצים לשלוח, עליכם לפתוח תוכנת proxy כגון Burp Suit ולתפוס את חבילות המידע.

אם נסתכל על הפנייה send_message.php בכתובת הבאה:

www.facebook.com/ajax/mercury/send_message.php

נראה את כל הפרמטרים שמאפיינים הודעה ב-messenger:
לכל הודעה ששולחים בפייסבוק יש מספר סידורי
בדוגמה ניתן לראות שה-message_id של ההודעה הינו:

6132823528826294501

כך שאם נשנה את תוכן ההודעה ונשלח אותה בשנית עם אותו ה-messege_id נדרוס בעצם את ההודעה שמכילה את אותו ה-message_id.

כך לדוגמה אם נשלח את ההודעה הבאה שמכילה את ה-messege_id הנתון:

6132824131125156137
ונכתוב Hi:
את המספר הסידורי אנו רואים ב-burp suite ויכולים לשלוח הודעה חדשה עם מספר סידורי של הודעה ישנה
נוכל לדרוס את ההודעה שוב אם נשלח משהו אחר עם אותו ה-id:
שליחת הודעה חדשה עם מספר של הודעה ישנה
מבחינת המכשיר שמקבל את ההודעה החדשה לא נוצר push notification והמשתמש לא מקבל שום התראה שההודעה שונתה.

לאחר שהצלחתי לשנות את ההודעה ניסיתי לאתר האם אני יכול להשיג איכשהו message_id של הודעות שנשלחו בעבר.

כדי לעשות זאת פשוט חיפשתי ב-history את הערך של ההודעה הקודמת שהינו:

6132823528826294501
כך בעצם מצאתי את הפנייה לקובץ thread_info:
www.facebook.com/ajax/mercury/thread_info.php
אשר מתבצע בכל פעם שאתם פותחים את הצ'אט. הרי הצ'אט עצמו צריך לדעת אילו הודעות למקם והיכן, נכון?
את כל המספרים הסידוריים אנו רואים בפניה שציינתי קודם לכן
בצורה זו ניתן לאתר הודעות ישנות ולשנות אותן. בנוסף לשינוי ההודעה ניתן לבצע שינוי גם לפרמטרים אחרים כגון has_attachment אשר מציין האם צירפו קובץ/תמונה להודעה.
וכן הלאה.

Share this post