- PCMagazine - http://www.pcmagazine.co.il -
Session Hijacking ופאקטים בעולם אבטחת המידע
נכתב ע''י אדיר רצון בתאריך 16 בנובמבר 2010 @ 3:26 בקטגוריה אבטחת מידע | 2 Comments
אבטחת מידע זהו עולם קסום בו מתנהלים הדברים מאחרי הקלעים. במדריך זה אסביר כיצד נוצרת ומתנהלת שיחה באינטרנט. מה הם פאקטים (Packets) וכיצד ניתן להשתמש בהם לשיבוש שיחה מתוקשרת בין שני שרתים.
פאקטים או פאקטות, הם חבילות מידע הנשלחות ממחשב למחשב בתקשורת TCP\IP. התקשורת באינטרנט מתנהלת על ידי שליחה של חבילות מידע קטנות, שלבסוף חבילות אלה מיצרות שיחה שלמה אל היעד. לדוגמא, במידה ונכנס לאתר מסויים, נקליד את כתובת אתר ונאשר- האתר פשוט מאוד יופיע. אך בפועל, מאחורי הקלעים נשלחות מאות חבילות מידע על מנת להציג דף אתר בודד. חבילות אלה הן Packets.
גודלה של החבילה (הפאקט) הוא קבוע ועומד על 1500 bytes. ישנם התקנים מסויימים המאפשרים שליחת פאקט גדולה מהרגיל, גודל המידע נקרא גם MTU.
ישנם מספר סוגי פאקטים: פאקטות TCP, UDP, ICMP ועוד. לכל פאקט שימוש משלו- פאקט TCP, הוא פאקט ליצירת אינטרקציה, הוא מנהל שיחה בין שני צדדים ומעביר נתונים לשניהם. פאקט UDP הוא פאקט המנהל שיחה של צד אחד בלבד, לכן במידה ונשלח פאקט בתצורת UDP, הוא יגיע אל היעד ולא יחזיר לנו תשובה. בפאקט זה משתמשים האקרים זדוניים בעיקר להקרסת מערכות, כגון מתקפות:murfAttack – Syn Flood ועוד.
אל פאקט ניתן להתייחס כאל מעטפה, על מעטפה יש מען, נמען ובול. ובתוך המעטפה קיים המידע אותו אנו שולחים. על מנת להבין כיצד פאקט IP בנוי הביטו בתמונה שלפניכם:
מבנה פאקט TCP/IP
מבנה פאקט IP
כאשר אנו יוצרים חיבור עם אתר או שרת מסויים, המחשב שלנו מייצר עבורנו את הפאקט המתאים ובו בזמן ממלא את כל נתוני הפאקט. הדבר היפה בפאקט שהוא דינאמי וניתן לשינוי, לכן אפשר לנצל זאת להמון מתקפות.
בעולם אבטחת המידע, מתקפה זו לא פופולרית במיוחד ומסובכת בו זמנית. היא מצריכה ידע בתכנות ובהכרת הגורמים הפועלים. "חטיפת שיחה" היא בעצם השתלטות על שני צדדים ברשת המנהלים שיחה. בעת יצירת שיחה בין שני הצדדים, נוצר ה- Session .Session היא בעצם שיחה סגורה בה חתומים שני הצדדים על העברת המידע. בכל פאקט שנשלח משרת לשרת או מלקוח לשרת בזמן Session, הפאקט חייב לכלול בתוכו שני שדות אישור.
שני שדות האישור הללו מורכבים ממספרים. כאשר צד אחד בשיחה שולח פאקט לצד האחר, הפאקט יכלול את ה Checksum- שזהו מספר הנקבע מתחילת יצירת הקשר, ואת ה- Identification- שזהו מספר האישור לצד השני. זוהי האבטחה של השיחה (ה- Session).
השלב הראשון ליצירת שיחה היא בקשה פשוטה. בשלב זה אנו מדגימים בקשה לשיחה עם שרת SSH הפועל בלינוקס. ברגע שארצה להתחבר לשרת SSH (Terminal של לינוקס), תוכנת ההתחברות לשרת SSH הנקראת Putty, תיצור Packet המתאים לפתיחת השיחה. הפאקט יכלול Header בו השם SSH ודגל SYN המבקש להתקשר אל השרת המרוחק. ברגע שליחת הפאקט, השרת המרוחק מעבד את הפאקט ושולח אלינו תשובה. התשובה היא פאקט הבנוי מדגלי SYN, ו ACK (ACK = אישור או באנגלית Acknowledge).
כעת אתבקש להזין שם משתמש וסיסמא בממשק ההתחברות. ושוב פעולה זו של שליחת הפאקטים תחזור על עצמה בשני השלבים. בשלב הזנת הסיסמא במידה והסיסמא נכונה, תיפתח השיחה ביני לבין השרת. הליך זה נקרא גם "Hand Shake".
מרגע היווצרות "Hand Shake", נוצר מספר ה- "Identification". מרגע זה ואליך שני הצדדים מחוברים אחד עם השני ומוכנים לתקשר ולעבד פעולות. הליך זה של "Hand Shake" קיים בכל שיחת שרת צד לקוח ושרת צד שרת.
במידה וטעינו בסיסמא מספר פעמים, השרת לא יחזיר דגלי SYN ו- ACK כמו בשלבים הקודמים, אלא דגל RST שיכבה את התקשורת בין שני הצדדים. ישנם שרתים שלא מנתקים את השיחה לאחר מספר טעויות, אך רוב שרתי ה- SSH מוגדרים לעשות כן.
ראו התחברות לשרת SSH:
03:56:46.415839 IP 10.0.0.10.3143 > 10.0.0.2.ssh: S 3284066417:3284066417(0) win 16384
03:56:46.415884 IP 10.0.0.2.ssh > 10.0.0.10.3143: S 1086591368:1086591368(0) ack 3284066418 win 5840
בדוגמא זו אנו יכולים לראות את הלקוח 10.0.0.10 מתחבר לשרת ה- SHH בכתובת 10.0.0.1
השלב הראשון בחיבור הוא שליחת דגל SYN עם HEAD SSH. כעת הלקוח מתבקש להזין שם משתמש וסיסמא, במידה ויזין שם משתמש נכון, הוא יקבל את תוצאה דומה, רק שהפאקט יכלול את שדות ה "Identification" וה- "Checksum". ראו:
03:57:36.044458 IP 10.0.0.10.3143 > 10.0.0.2.ssh: P 1257:1325(68) ack 2516 win 17468
03:57:36.082986 IP 10.0.0.2.ssh > 10.0.0.10.3143: . ack 1325 win 7504
בדוגמה זו, מספר ה- Identification הוא: 1257 ומספר ה- Checksum הוא: 1325. מספר ה- Identification גדל במספר הבייטים בפאקט. מספר הבייטים בפאקט הוא (68) כפי שאפשר לראות בסוגריים. למעשה, מספר ה- Identification גדל בכל שליחת פאקט, כגודל המידע בפאקט.
מספר ה- Checksum גדל באחד בכל פאקט Session שנשלח. לדוגמא: במידה והשרת שולח מספר Checksum- 4000 אז הלקוח מחזיר לשרת את מספר ה Checksum- 4001. פעולה זו נקראת גם INT \ אינטגרל.
התאוריה של Session Hijacking גורסת, שכאשר הצד התוקף מיצר פאקט המתאים לשיחה בין השניים, השיחה נחטפת ע"י התוקף. מרגע חטיפת השיחה ואילך השיחה מתנהלת בין התוקף לשרת, בעוד הצד שדיבר עם השרת עד כה, יאבד את חיבור ה- Session עם השרת. החכמה היא, לייצר התקפת Session Hijacking עבור שרת מסויים ולפתח תוכנה אשר תצור שיחה אינטרקטיבית עם השרת ותמשיך אותה. על מנת להמשיך שיחה בין השרת, על התוקף לעשות בדיקות מקיפות על אופן השיחה ועל המידע בפאקטים הנשלחים במצב שיחה רגיל. לחקות את השיחה ע"י פאקטים זדוניים ובכך להמשיך להחזיק בה. ברגע החזקת השיחה, הצד התוקף יכול לבקש לבצע פעולות מהשרת- כגון, הצגת טבלאות ה- SQL (בשרת SQL), האזנה למידע העובר בשרת ועוד. בעצם כמעט ואין גבול לנזק העלול להגרם ממתקפה מוצלחת שכזו.
הגנות מהתקפה זו קיימות ב Firewalls מתקדמים, אך עדיין הגנות אלו אינן מונעות את ההתקפה לגמרי, אלא מזהות Session מזייף בזמני התגובה ומנתקות אותו. עם זאת, בידי הגופים הבטחוניים של מדינתנו הצנועה, אלפי כלים מסוג זה אשר מאפשרים מתקפה איכותית על שרתי יעד.
הכתבה הודפסה מאתר PCMagazine: http://www.pcmagazine.co.il
קישור לכתבה: http://www.pcmagazine.co.il/security/pid=6454&name=session-hijacking
לחץ כאן להדפסה.
Copyright © PCMagazine. All rights reserved