!JIT Spraying the Word

 BlackHat Logo
מי שעבר על (או היה ב-) הרצאות של BlackHat DC 2010 בטח הבחין בהרצאה אחת מעניינת במיוחד (כל
ההרצאות בכנס מעניינות במיוחד...), אבל בפוסט הזה אני מדבר על ההרצאה של Dionysus Blazakis על 
Interpreter Exploitation: Pointer Inference and JIT Spraying.

במהלך הרצאה זו, הציג Dionysus שני טכניקות מעניינות, אחת היא לבצע עקיפה של ה-ASLR והשניה היא 
לבצע עקיפה של ה-DEP שהוכנסו למערכות ההפעלה האחרונות של Microsofot.

איפשהו, בתחילת שנת 2004, SkyLined  פרסם אקספלויט (Client-Side) אשר ניצל את MS04-040
בדפדפן Internet Explorer והציג חידושים מעניינים לשיטה שהתחילה להתפתח עוד ב-2001 בשם
"Heap Sprayng" המבוססת על טכניקה בשם "NOP Slide" (או כמו שהרבה מכנים אותה [בהומור]
כיום- "Heap Feng-shui") בכדי לבצע Arbitrary Code Execution במקרים כאשר מדובר בחשיפת
Heap overflow.

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

למה אני מספר לכם את זה? שאלה טובה.
כמו שאמרתי, במהלך הכנס BlackHat DC 2010 הציג Dionysus מספר טכניקות שבינהם הייתה אחת
שדיברה על JIT Spraying. הטכניקה הנ"ל נועדה לעקוף את מנגנון ה-DEP בעזרת שימוש ברכיבים
המיישמים טכניקה הנקראת "Dynamic Translation" (הרעיון הוא להדר קלט/קוד בזמן הריצה של
התוכנית [כמו למשל במנוע של JVM, פרשני PDF וכו'] בכדי להשיג, בין היתר, גמישות לתוכנית בזמן
הריצה). וכך, בעצם, הוא החיה מחדש את טכניקת ה-Spraying! :)

כאן, ברשותכם אני אצטט מהמאמר המדובר:
"Most modern interpreters implement a Just-In-Time (JIT) compiler to transform the parsed input or bytecode into
machine code for faster execution. JIT spraying is the process of coercing the JIT engine to write many executable
pages with embedded shellcode. This shellcode will entered through the middle of a normal JIT instruction. For
example, a Javascript statement such as “var x = 0x41414141 + 0x42424242;” might be compiled to contain two 4
byte constants in the executable image (for example, “mov eax, 0x41414141; mov ecx, 0x42424242; add eax, ecx”).
By starting execution in the middle of these constants, a completely different instruction stream is revealed."



אחלה, אז למה אני מספר לכם את זה? כי בדיוק בסוף השבוע האחרון (ליתר דיוק, ב-5 לחודש),
בחור בשם Alexey Sintsov, מ-Digitаl Security Research Group פרסם מאמר בשם:
"Writing JIT-Spray Shellcode for fun and profit" והשלים את ההרצאה ע"י הצגת ה-PoC
הראשון שמנצל את החשיפה אפילו בדפדפני ה-Internet Explorer 8!
 
את ה-PoC שמבצע JIT-Spray ב-IE8 אפשר להוריד מהאתר שלהם (מנצל חולשה שהם יצרו
במיוחד בשביל ההדגמה).
 
בנוסף, PoC שני פורסם ע"י אותו בחור המנצל חשיפה באחד מה-Active-X של ה-SAP GUI,
אפשר להוריד אותו ב-exploit-db.com.



אז... מי בא איתי ל-BlackHat 2011? :)



תגובות על '!JIT Spraying the Word':



#1 

Zerith:
נחמד מאוד, אהבתי את היצירתיות.
10.03.2010 13:58:27

#2 

m1ch43l1014 (אורח):
מאוד מעניין !! תודה על הכתבה !!
אגב מתי הכנס ואיפה??
10.03.2010 21:03:08

#3 

l3D:
תודה רבה על ההסבר. באמת לא הבנתי איך XOR בין מלא מספרים יכול להועיל, ובמיוחד שזה כתוב ב-ActionScript.
שיטות מתות ושיטות נוצרות :)
10.03.2010 23:22:06

#4 

cp77fk4r:
כן, זה בהחלט חזק ויצירתי :)
ומיכאל, אם באמת מעניין אותך, כנס ה-Blackhat הקרוב הוא Black Hat Europe 2010, הוא יתקיים בברצלונה באמצע אפריל, להרשמה:
https://blackhat.reg.techweb.com/barcelona/2010/registrations 
11.03.2010 08:02:40

#5 

m1ch43l1014 (אורח):
חח האמת אני לא ממש בכיוון כי אני אולי טס למקום אחר
11.03.2010 17:12:29

#6 

איתמר (אורח):
יש לכם מתחרים
http://tinyurl.com/yf9fxay

14.03.2010 20:34:47

#7 

cp77fk4r:
אין לנו מתחרים, יש לנו מטרה משותפת :)
15.03.2010 09:12:42

#8 

איתמר (אורח):
:P
15.03.2010 17:25:37



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