עוגיות עקשניות למדי

[במקור: http://cyberdatingexpert.com/wp-content/uploads/2009/05/chocolatechipcookies.jpg] 
מה הולך? אני כרגע באיטליה, אז כנראה שזה לא יהיה ארוך מדי. 
חוקר האבטחה ההודי, Samy kamkar (הבחור שהרים את הכפפה של ג'רמאיה בנושא ה-CSS History Knockerהציג לאחרונה
יישום מעניין שנוצר משילוב של מספר טכנולוגיות (בעיקר יכולות של HTML5 ו-JavaScript) ויצר מהן "Javascript API" שמאפשר
ליצור עוגיות (Cookies) "עקשניות למדי", הוא מכנה אותן "Evercookie".

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

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

קמקר, מסביר בדיוק איך מבצע זאת, ומפרט באילו טכניקות הוא משתמש:
  • Standard HTTP Cookies
  • Local Shared Objects (Flash Cookies)
  • Storing cookies in RGB values of auto-generated, force-cached 
  • PNGs using HTML5 Canvas tag to read pixels (cookies) back out
  • Storing cookies in Web History (seriously. see FAQ)
  • HTML5 Session Storage
  • HTML5 Local Storage
  • HTML5 Global Storage
  • HTML5 Database Storage via SQLite

הטכניקות היותר מגניבות לדעתי הן השימוש בשמירת ערכי העוגיות בערכי RGB של קבצי PNG או בעזרת שמירתם בהיסטוריית
הגלישה- לדעתי מדובר באומנות של ממש, והוא מסביר:

שמירת ערכים מבוססי PNG:
        When evercookie sets a cookie, it accesses evercookie.php with a special
HTTP cookie, different than the one used for standard session data. This
special cookie is read by the PHP file, and if found, generates a PNG file
where all the RGB values are set to the equivalent of the session data to
be stored. Additionally, the PNG is sent back to the client browser with
the request to cache the file for 20 years.

When evercookie retrieves this data, it deletes the special HTTP cookie,
then makes the same request to the same file without any user information.
When the PHP script sees it has no information to generate a PNG with, it
returns a forged HTTP response of "304 Not Modified" which forces the web
browser to access its local cache. The browser then produces the cached
image and then applies it to an HTML5 Canvas tag. Once applied, evercookie
reads each pixel of the Canvas tag, extracting the RGB values, and thus
producing the initial cookie data that was stored.

שמירת הערכים מבוססי היסטוריית הגלישה:
        When evercookie sets a cookie, assuming the Web History caching is enabled,
it Base64 encodes the data to be stored. Let's assume this data is "bcde"
in Base64. Evercookie then accesses the following URLs in the background:
                google.com/evercookie/cache/b
                google.com/evercookie/cache/bc
                google.com/evercookie/cache/bcd
                google.com/evercookie/cache/bcde
                google.com/evercookie/cache/bcde-
These URLs are now stored in history.

When checking for a cookie, evercookie loops through all the possible Base64
characters on google.com/evercookie/cache/, starting with "a" and moving up,
but only for a single character. Once it sees a URL that was accessed, it
attempts to brute force the next letter. This is actually extremely fast
because no requests are made to theserver. The history lookups are simply
locally in JavaScript using the CSS History Knocker. Evercookie knows it has
reached the end of the string as soon as it finds a URL that ends in "-".


קרמר מציג PoC מעניין (ומומלץ) בבלוג שלו - ממליץ לשחק עם זה.




תגובות על 'עוגיות עקשניות למדי':



#1 

Oink (אורח):
הבחור גאון. תודה רבה!
23.09.2010 01:05:10

#2 

ים מסיקה (אורח):
חמודדדדד לאללה (:
אהבתי!
23.09.2010 01:11:07

#3 

d3k3l (אורח):
גדול !
תהנה באיטליה
:)
23.09.2010 01:28:46

#4 

sdimant:
איטליה??? תהנה!
וואלה רעיון חזק!!!
23.09.2010 18:54:40

#5 

Sro (אורח):
גדול.
מקווה שגוגל לא שמעו על זה...
24.09.2010 00:35:28

#6 

cooper (אורח):
מעניין לבדוק התנהגות במצב incognito או inprivate
וכו .
24.09.2010 07:37:30

#7 

Dw4rf (אורח):
זה מהדברים שאתה אומר עליהם "איך אני לא חשבתי על זה"... כל כך פשוטים (איתור המשתמש ע"י ה-History Browsing) וכל כך גאוניים...
24.09.2010 11:17:59

#8 

cp77fk4r:
הבחור שיפר את אתמול את המנגנון והוסיף שם שמירת ערכים בתגי ETAG (התגים של מנגנון ה-Caching) וב-userData בדפדפני IE).

בקשר לשאלה שלך קופר:
אם אתה נכנס במצב "Incognito" של Chrome: המנגנון לא עובד.

אם אתה נכנס במצב "InPrivate" של IE: זה די משתגע (מתחיל לטעון את עצמו מחדש כל כמה דקות) - ולא עובד.

אם אתה נכנס במצב "Private Browsing" של FF: המנגנון לא עובד.

ככה שאתה עדיין יכול לגלוש בשקט :)


הדבר היחידי שאני חושב עליו הוא שימוש ב-Flash Cookies בדפדפן כשהמשתמש במצב "גלישה פרטית" ואז שחזור העוגייה משם כאשר הגולש חוזר לאתר בגלישה "רגילה" יכול לעבוד- אבל לא נבדק.
24.09.2010 11:36:43

#9 

Dw4rf (אורח):
לא הבנתי איך חשבת על לעקוף את הגלישה הפרטית...
24.09.2010 12:31:33

#10 

cp77fk4r:
Dw4rf: עד תחילת השנה, Adobe לא יישמו מדיניות "פרטיות" בטכנולוגיית הפלאש שלהם, ככה שגם אם המשתמש היה גולש כ-InPrivate טכנולוגיית הפלאש הייתה עובדת באופן רגיל, כך שאם היית נכנס לאתר מסויים כ-InPrivate והוא היה שומר עליך LSO, כשהיית חוזר אליו לאחר מכן תחת גלישה "רגילה" הוא היה יכול לזהות אותך.

אבל מאז גירסא 10.1, החבר'ה מ-Adobe שאחריים על פלאש יישמו טכנולוגיה שתומכת באפשרות הזאת, תוכל לקרוא על זה כאן:
http://blogs.msdn.com/b/ie/archive/2010/02/11/adobe-flash-now-supports-inprivate-browsing.aspx


שורה תחתונה: מה שהצעתי נבדק, ונמצא שזה לא יעזור לעקוף את המנגנון הזה.
24.09.2010 12:49:14

#11 

Syst3m ShuTd0wn (אורח):
אהבתי!
24.09.2010 14:29:42

#12 

Oink (אורח):
@cP אהבתי את דרך המחשבה שלך, לנצל את החוליה החלשה...
24.09.2010 19:07:20

#13 

cp77fk4r:
Oink: תודה אבל לא מדובר ברעיון שלי.
24.09.2010 20:03:53

#14 

Oink (אורח):
עדיין, חשיבה יפה.
25.09.2010 17:54:27

#15 

שמיל (אורח):
מידע שימושי! תודה רבה.
26.09.2010 00:02:23

#16 

שמיל (אורח):
בגלל שמדובר בקוד פתוח ואפשר להבין בדיוק איך הכל פועל (בייחוד כי מדובר במימוש צד לקוח ולא במימוש צד שרת) ניתן לבנות תוסף ל-FF או לקמבן משהו ב-GearMonkey שיכול למנוע את העוגיות האלה, כמו למשל שימוש ב-PNG חשוד (כמובן שיהיה קשה להמנע מ-False Positive) או למשל לראות שסקריפט מסויים מנסה לתשאל אתר אחר (כמו Google Cache) עם מחרוזות מסויימות וחשודות באופן חוזר ונשנה- כאן יהיה קשה להמנע מסקריפטים של Ajax רלוונטי) וכו'
26.09.2010 16:12:56

#17 

cp77fk4r:
היי שמיל- אתה צודק בהחלט, לא יצא לי לעבוד עדיין עם HTML5 יותר מדי או לחקור את הנושא בצורה מספקת, ככה שאני לא יכול לתת לך דעה שלמה, אבל ההגיון אומר שאתה צודק בהחלט.
26.09.2010 17:10:13

#18 

cp77fk4r:
Killing the Evercookie: http://din.gy/ZScVL

14.10.2010 00:24:55

#19 

שמיל (אורח):
עכשיו רק חסר שמישהו יעשה אוטומציה לכל המתכון הזה ואני נביא ;)
14.10.2010 09:20:58

#20 

cp77fk4r:
כן אה, דווקא היה צפוי שגרוסמן ירים את הכפפה הזאת, או הוא או RSnake, הם מתים על השטויות האלה ;)
14.10.2010 12:50:19

#21 

לא משנה (אורח):
קבלו הוראות איך להיפטר מזה ללא אתחול הדפדפן ישירות מג'רמיה: http://jeremiahgrossman.blogspot.com/2010/10/killing-evercookie-google-chrome-wo.html?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed:+JeremiahGrossman+(Jeremiah+Grossman)
23.11.2010 23:13:23



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