(RayV Player Update Hijacking (0day

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

במידה והמנגנון אשר אחראי להוריד ולהריץ את הגירסה החדשה לא מבצע בדיקות על הבינארי החדש שירד- סביר שהאפליקציה
חשופה למתקפה הנ"ל, ביצוע המתקפה מאפשר לתוקף שהשיג גישת MITM (כגון לאחר Arp Poisoning ברשת מקומית) להחליף
את הבינארי המקורי בבינארי שלו - ולגרום למנגנון העדכונים להריץ אותו על המחשב במחשבה כי מדובר בעדכון חדש.

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

בכל פעם ש-RayV Player נטען, הוא מבצע בדיקה האם שוחרר עדכון חדש, על ידי שליחת ה-Request הבא עם גירסתו:

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

שרת האפליקציה מקבל את הבקשה- ומבין כי מדובר בבקשה שבוצעה מאפליקציה ישנה (גירסה 2.0.1.49) - ולכן הוא מחזיר את
ה-Response שאומר כי קיימת גירסה חדשה יותר (גירסה 3.0.1.49):

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

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

במידה ואין שום מנגנון אימות על ה-URL שממנו אמורה לרדת האפליקציה (בדיקות כגון: מאיזה HOST מורידים את הבינארי וכו')
האפליקציה תשלח בקשה להורדת הבינארי הזדוני:
 
והשרת (שבבעלותו של התוקף) יחזיר את הבינארי: 

וההורדה של הבינארי הזדוני תתחיל... עכשיו נשאר להחזיק אצבעות במהלך ההורדה:
 
ובמידה ואין שום בדיקה על הבינארי לאחר ההורדה (בדיקה כגון השוואה של MD5 שעובר בערוץ מוצפן וכו') - האפליקציה תריץ את
הבינארי הזדוני (במקרה שלנו- ירד והורץ cmd.exe):
 
ולתוקף תהיה שליטה מלאה על המחשב...


תגובות על '(RayV Player Update Hijacking (0day':



#1 

sdimant:
וואלה מעניין, תודה על העדכון.
21.05.2011 18:09:29

#2 

Dm12 (אורח):
מתאים לוואלה להשתמש באפליקציות מבלי לבדוק אותן לפני כן... תודה על העדכון!
21.05.2011 19:33:48

#3 

Hero (אורח):
טוב לדעת שגם קיימת מתקפה כזו.ממש לא בסדר מצידם שאין מנגון אימות
21.05.2011 23:46:29

#4 

שמיל (אורח):
יפה יפה, הדעה הרווחת היא שכאשר התוקף הצליח להגיע למצב של MITM הוא כבר בתוך המחשב של הקורבן, זה כמובן לא נכון, אבל בעזרת מתקפות כאלה ודומות לה השלב הזה יחסית פשוט :)
תודה על הידיעה וההסבר המעולה! :)
22.05.2011 03:38:38

#5 

שמיל (אורח):
אגב, ההגיון אומר שניתן גם להחליף את הקוד הבינארי של ה-Exe המקורי בתוכן של הסוס הטרויאני שלנו וגם להשיג את אותה המטרה, זה נכון או שיש מנגנונים שבודקים את זה?
22.05.2011 03:40:33

#6 

cp77fk4r:
עקרונית אין שום בעיה להחליף את התוכן הבינארי בתוכן בינארי שונה (וכמובן, לשנות גם את הכותרים הרלוונטים של ה-HTTP, כגון הגודל, את ה-Range וכו׳), אבל זה סתם כאב ראש והתעסקות מיותרת- ברב רובם של המקרים יהיה לך נח יותר לשנות את ההפנייה להורדה מאשר את התוכן שלה.
22.05.2011 04:45:41

#7 

גידי (אורח):
אגב, הניצול של העדכון הזה עדיין דורש את התערבות המשתמש, אני בטוח שאפשר למצוא תוכנות שמעדכנות את עצמן ללא ידיעת המשתמש.

אני לא בטוח שאני יעדכן עכשיו איזה נגן מח**בן כשבדיוק התחברתי ל WIFI השכונתי...

מה גם, שאם הקובץ לא חתום בסרטיפיקט, או סשן HTTPS אני לא רואה שום דרך להבטיח ב 100% אימות של הקובץ - שהרי כל פרמטר אחר ניתן לזיוף בקלות באותה שיטה (למשל אם שולחים את ה CRC בנפרד על קובץ טקסט)

העניין הוא - שבאותה קלות ייכלתי להציג למשתמש דף WEB שדורש ממנו לעדכן את גרסאת ה ^&#%$@#^34 לפני המשך הגלישה באיטנרנט, אני חושב שאחוז המשתמשים שייפגע ממתקפה כזו יהיה יותר גבוהה מאלו שייבחרו לעדכן באותו רגע את הנגן....
22.05.2011 08:07:53

#8 

zEt0s- (אורח):
זה יותר שולט מצנטרול הבאפר!
אהבתי.
22.05.2011 09:11:22

#9 

SV (אורח):
באמת מגניב, השאלה איך עושים את זה בפועל? כי מה שאני מכיר מMiTM זה רק להשתמש בווירשרק ולא נראה לי שעשית את זה ככה..
22.05.2011 10:40:17

#10 

inHaze (אורח):
SV@ - דרך אחת לבצע התקפה כזו:
http://www.securitytube.net/video/423
22.05.2011 11:58:32

#11 

inHaze (אורח):
שכחתי לציין, מגניב ביותר אפיק!
22.05.2011 12:01:49

#12 

sT (אורח):
איזו קלות, באיזו תוכנה השתמשת (ה-Interceptor הזה)?
22.05.2011 14:55:08

#13 

cp77fk4r:
כאן ספציפית השתמשתי ב-Echo Mirage של BindShell, להשתמש ב-WireShark יעזור לך רק אם תרצה לצפות בחבילות המידע, לא לערוך אותן.

וגידי- אתה צודק לגמרי, אם אין מנגנון החתמה (של הקובץ/הפרוטוקול שבו עובר אמצעי האימות) ניתן יהיה לבצע את המתקפה כמעט תמיד.
22.05.2011 16:05:31

#14 

cp77fk4r:
אגב, יש כלי שפיתחו שני חבר׳ה ישראלים (אחד מהם הוא איציק קוטלר, מהפאונדרים של Dc9723) בשם Ippon שיודע לזהות פוטנציאל למתקפות כאלה ולהגיב בצורה אוטומטית. הם הציגו אותו (אם אני זוכר נכון) ב-Defcon17.

לא השתמשתי בו אף פעם, אבל אני סומך על איציק.
22.05.2011 16:59:59

#15 

Dw4rf (אורח):
אחלה מציאה :) אתה מתכוון לדווח?
22.05.2011 21:00:17

#16 

cp77fk4r:
בהחלט, אבל עוד לא יצא לי :)
22.05.2011 21:13:52

#17 

מתן:
אפיק אני אשמח מאוד אם תענה לי באימייל.

מצטער שאני כותב פה, פשוט פה אתה פעיל, תודה רבה אפיק.
22.05.2011 22:32:18

#18 

cp77fk4r:
תעזר בסבלנות :)
23.05.2011 04:31:05

#19 

גיל (אורח):
אחלה חומר. תודה רבה!
23.05.2011 17:05:29

#20 

אלצ'קו (אורח):
מצטער, בדיקת ה-URL או כל מיני רעיונות מוזרים אחרים שהוזכרו פה הם DOUBLE FAIL - גם לא מספקים הגנה, וגם פוגעים בפונקציונאליות הגיונית.

בדיקת URL לא מספקת הגנה, כי התקיפה יכולה להיות לא ברמת הרשת המקומית (ARP POISONING) אלא ברמת האינטרנט (DNS POISONING), ושם ה-URL ייראה פיקס...

הפיתרון הנכון הוא לחתום על הקוד. אפשר להשתמש במנגנוים החתימה של ווינדוס (AUTHENTICODE) ולחתום על הבינארים או על CAB שמכיל את הקבצים, או לממש מנגנון חתימה משלך.
חתימה דיגיטלית היא ה-TEXTBOOK SOLUTION לבעיה של וידוא שתוכן שקיבלת מערוץ תקשורת באמת הגיע ממקור אמין. זו ממש הגדרת הבעיה.
23.05.2011 19:32:09

#21 

cp77fk4r:
צודק. תודה על התיקון. אשנה את ה-CRC ל-MD5. תודה אלצ׳קו :)
26.05.2011 04:01:53

#22 

cp77fk4r:
עדכון: גם הנגן GomPlayer חשוף לאותה החולשה.
27.05.2011 20:14:47

#23 

TheLeader (אורח):
יש כלי מודולרי שמשולב ב-BT בשם EvilGrade, כדאי לכתוב לו מודולים ולהרחיב אותו.
31.05.2011 19:35:26

#24 

An7i (אורח):
מאמר נפלא, מימשתי בעצמי את החשיפה לפני כחודשיים וחצי במהלך בדיקה של לקוח, עבד פיקס, שליטה מלאה על כל התחנות בארגון.
07.06.2011 13:49:08

#25 

cp77fk4r:
נחמד :) איזה אפליקציה הייתה חשופה?
08.06.2011 08:04:47

#26 

Lottie (אורח):
No more s***. All posts of this qluaity from now on
21.06.2011 14:06:19



הוסף את תגובתך:
כינוי:
תגובה:
קוד אבטחה:
העתק לכאן את הקוד:
 
Digital Whisper © 2009 - 2014 - כל הזכויות שמורות ל-אפיק קסטיאל ול-ניר אדר.