BinaryVision

הקדמה לרשתות GSM

מאת בתאריך 26/02/09, תחת כללי

GSM – Global System for Mobile Communications – הבסיס

תקן עולמי לתקשורת סלולרית לאלה שלא כל כך מבינים אנגלית. כמויות מטורפות של רשתות ומשתמשים מסביב לעולם בתקן הנהדר הזה,
בכלליות רעיון גדול, כלומר, מי חשב שנוכל יום אחד לדלג בין ספקיות סלולר? לעבור מדינה עם אותו כרטיס SIM? לקבל שירות  מבלי להחליף שום חלק בפלאפון או אפילו "לקנפג" מחדש את המידע הקיים. אז אין ספק שהרעיון גדול… לגבי היישום? את זה אני אשאיר לכם להחליט..
הכתבה הזאת נכתבה במיוחד עבור בלוג BinaryVision ובאה להסביר קצת על בסיס מבנה רשת הGSM ואולי לזרוק כמה רעיונות לאוויר.

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

המרכזיה (MSC – Mobile Switching Center)

כמו בכל רשת סטנדרטית, צריך להיות איזשהו רכיב שממתג את השיחות, בגדול, זהו תפקידה העיקרי של המרכזיה, המרכזיה בנוסף למיתוג שיחות, מחזיקה בתוכה כמה רכיבים קטנים עליהם אפרט:
HLR (Home Location Registry) – המרכזיה הביתית, המחזיקה את כל האינפורמציה של המשתמשים "הביתיים" של הרשת, לדוגמא, אם אתה לקוח של אורנג', המרכזיה הביתית של אורנג' מחזיקה את כל האינפורמציה שלך, כשאני אומר כל האינפורמציה אני מתכוון החל מכל הנתונים הטכניים של המכשיר שלך עד למס' כרטיס האשראי  שלך, הכל.
VLR (Visitor Location Registry) – המרכזיה המארחת. נסעת פעם לכיוון אילת וקיבלת הודעה שנכנסת לרשת הירדנית? זה אומר שנרשמת במרכזיה המארחת הירדנית. תפקידה של המרכזיה המארחת היא לתקשר עם הרשת הביתית שלך (דרך סיבים כלשהם), לשמור את האינפורמציה שלך ואת זמני השימוש שלך (בשביל לחייב אותך בהמשך דרך הרשת הביתית שלך..). או בעצם, לשמור את כל המידע הלא קבוע ברשת.
OMC (Operation and Maintaince Center) – בגדול, מרכז תחזוקה ותפעול של הרשת, כל בעיה ברשת נרשמת בלוגים ואף לרוב מטופלת בצורה אוטומטית ע"י הרכיב הזה.
AUC (Authentication Center) – מרכז אימות הנתונים של הרשת, שם מתבצע תהליך האימות של משתמש מול הרשת המארחת שלו. עליו תשמעו עוד בהמשך :>.

הרכיב הבא הוא הבקר, התקשורת בינו לבין המרכזיה מתבצעת דרך פרוטוקול שנקרא A ועובר בשיטת ריבוב E1*.

הבקר (BSC – Base Station Controller)

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

הרכיב הבא הוא התא, התקשורת בינו לבין הבקר מתבצעת דרך פרוטוקול שנקרא ABIS וגם כן עובר בשיטת ריבוב E1*.

התא (BTS – Base Transceiver Station)

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

הרכיב הבא והאחרון בשרשרת הלוקלית של רשת GSM הוא בעצם משתמש הקצה, נקרא לו MS  (Mobile Station) ונפרט עליו מיד, אבל לפני אגיד שהMS מתקשר עם התא בפרוטוקול שנקרא P, ברשת GSM מתוקנת זהו הפרוטוקול היחיד שעובר באוויר.
תדר בפרוטוקול P  מחולק ל8 Time Slots, ההמוספרים מ0 עד 7, שתמיד בTS0 עובר לו תדר הביקון עליו דיברנו בקצרה.

משתמש הקצה MS (Mobile Station)

הגענו עד למשתמש הביתי ברשת הGSM, אותו אפשר לחלק בצורה די ברורה לשני חלקים:
ME – Mobile Equipment –  מכשיר הפלאפון + אנטנות, המכשיר מחזיק עליו זהות חשובה שנקראת IMEI, זהות שאמורה להיות יחידה בעולם (כמובן אם לא היו צורבים). 5 הספרות הראשונות בזהות הזאת אמורות להצביע על מודל המכשיר שבידך. את ה IMEI אפשר להשיג ע"י לחיצת *#06* או לפתוח את המכשיר באיזור הבטריה ולקרוא את המס' הסידורי שלו (הIMEI).
SIM – Subscriber Identification Module – או בעצם הזהות שלנו מול הרשת.. מחזיק את כל הזהויות שלנו בתור משתמשי רשת, IMSI (המספר שאנחנו לא רואים אבל מזהה אותנו כמשתמשים מול הרשת), Ki (הקוד זיהוי הראשי שלנו מול הרשת, או בעצם הדרך של הרשת לאמת את זהותנו).

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

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

אבטחה ברשת GSM

ברכיבי הAUC+HLR של המרכזיה נשמרים טבלאות של צימודים של IMSI (אמרנו שזהו המזהה שלנו מול הרשת או בעצם המס' שלנו) + Ki (המספר אימות שלנו שידוע לאף אחד חוץ מאיתנו ומהרשת) ועוד כל מיני אינפורמציה שאינן רלוונטיות ללמסמך זה כרגע.
תהליך הזיהוי מתבצע בצורה הבאה (זהו פירוט לא טכני וללא הודעות ספציפיות, אלא ההליך מוסבר בעברית כפי שהוא קורה):
1. המשתמש אומר לרשת "הלו? אני צריך להזדהות, אני מוציא שיחה/שולח SMS/מתחבר לאנשהו. יאללה בואי נתחיל את תהליך הזיהוי.."
2. המרכזיה הביתית אומרת למשתמש "אין בעיה סחבק, אנחנו מתחילים", בשלב זה המרכזיה יוצרת מס' רנדומלי באורך 128 ביטים, שולחת אותו למשתמש (כמובן שהמס' גם על הדרך עובר בפרוטוקול P שעובר באוויר כמו שאמרנו).
3. המשתמש מקבל את המספר הרנדומלי, לוקח את זהות ה Ki שלו + את הIMSI שלו + את המספר הרנדומלי שהרשת יצרה ומכניס את כל המשתנים האלה לאלגוריתם אינקריפציה חד כיוונית (סגנון HASH) שנקרא A5. משם מתקבלים שני מספרים, הראשון הוא SRES שנוצר למטרה היחידה של להצפין את הגל האלקטרומגנטי שעובר באוויר + מספר הזיהוי הסופי שלנו. האינפורמציה נשלחת למרכזיה הביתית.
4. המרכזיה בגדול עשתה את אותו התהליך שהמשתמש עשה, עכשיו היא קיבלה את האינפורמציה מהמשתמש ויכולה להשוות, ולראות אם המשתמש הוא באמת מי שהוא טוען שהוא.. אפשר לשים לב למודעות הקטנה לאבטחה, הKi לא עובר באוויר בשום שלב. אבל הנה הקטע ההזוי..
5. בהנחה שהרשת זיהתה את המשתמש היא שולחת לו הודעת Authentication Success וממשיכים בפעולה שהמשתמש רצה לעשות, ואם הזיהוי נכשל היא שולחת Authentication Failed ומנסים עוד פעם..
הזוי לא?! כלומר הרשת מוגנת מפני פריצות, כפי שבטח שמתם לב היא השולטת הגדולה בהליך האימות, סלולר זה לא אינטרנט, זה קצת מסובך פשוט לחסום את מי שמנסה לעשות לך BRUTEFORCE. אבל מה איתי? משתמש הקצה? אני לא צריך איזשהו אימות לגבי זה שאני מדבר עם הרשת שלי באמת? או שאני פשוט אמור לזרום עם מה שמביאים לי..
בגדול ברשתות המבוססות על תקן UMTS (דור שלישי) כל העיניין הזה תוקן, כלומר, גם הרשת צריכה להזדהות מול המשתמש כנותנת השירות. אבל בGSM העיניין לא מתבצע ככה, מה שהופך את כל העיניין לפריץ, יש לכם רעיונות פריצה? תכתבו לנו בתגובות.. אם לא אני פשוט אתן לכם קצת חומר למחשבה במאמר הבא שיעלה לקראת הסופ"ש (או במהלכו)..

  • E1 – שיטת ריבוב לנתוני טלפוניה המעבירה 2.048 מביט לשנייה ומחולק ל32 ערוצי זמן (PCM). כל PCM מחולק ל8 TS. כל TS מסוגל להעביר 8 קילובי\ט לשנייה. PCM0 וPCM16 הם ערוצי סינכרון ואיתותים בהתאמה ואינם משמשים להעברת נתוני שיחה.
    • ראוי לציין שלא אני כתבתי את המאמר, אלא אדם חביב שאינו מעוניין בפרסום שמו 🙂 תודה
:, , , , ,
8 תגובות:
  1. spdr

    לדעתי אחלה הסבר, מחכה לראות מה יכתב בנוגע למתקפות ברשתות GSM … אני מכיר מספר גדול מהם, אקטיבים ופאסיבים, אבל אני בטוח שתוכל לחדש לי משהו 🙂

    אם יש לך מידע בנוגע להתקנות OTA אשמח לשמוע על זה במיוחד

    מידע על פירוק מערכות לניסוי GSM והפיכתם לתחנות שידור יתקבל בברכה 🙂

  2. TAsn

    אני ממש מחכה לכתבת המשך!
    כתבה מעולה, תודה רבה!

    הפכנו לבלוג GSM. 🙂

  3. יפתחיה

    מה קורה כאשר מכשיר חדש עולה לאוויר?
    אין בטבלאות עדיין צימוד של IMSI + KI (אני מניחה שזה משהו שדומה לarp table).
    המרכזיה שולחת מספר רנדומלי, המכשיר מחרבש את הרנדומלי יחד עם ה IMSI+KI שלו ועם התוצאה מצפין את המידע שלו. יופי. עכשיו למרכזיה יש את נתוני המכשיר.
    נניח והצלחת להציץ על סוללה של מכשיר חדש מהאריזה, עכשיו אתה יכול להמציא לו KI ולהתחיל לדבר מול המרכזיה… ?
    (אה, גם דיברת על נתונים נוספים "שלא נזכיר עכשיו")

  4. TAsn

    יפתחיה,
    IMSI+KI זה מידע שנצא על ה SIM, החברה יודעת מראש ורושמת אותך אצלהם כשאת קונה SIM חדש, זה לא קשור למכשיר.

  5. spdr

    יפתחיה
    ה IMSI וה Ki נמצאים על הסים..שמגיע מהספקית הסלולארית..שכבר רשמה הכל

    אי אפשר להמציא Ki כי הוא נמצא בסים והוא לא רשום, מה שרשום ליד הסוללה הוא IMEI שהוא ניתן גם לשינוי

    יכול להיות, שמה שרשום על ה-סים- הוא ה IMSI בתוספת משהו, כבר לא זוכר בדיוק…

    בכל אופן Ki הוא מפתח הזדהות משותף למכשיר\סים ול HLR,
    מה שנשלח למכשיר הוא ערך RAND שהוא בעצם עובר את הפונקציה, ואחרי השימוש בפונקציה יחד עם ה IMSI והמפתח הזדהות המשותף, המכשיר שולח חזרה לרשת SRES שהוא תוצאה של כל זה, וככה הרשת יודעת שהמשתמש הוא אכן המשתמש – כי הוא היחיד שיכול לחשב את התוצאה הזאת.

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

  6. d0x

    אם אני מציף את המכשיר בAuthentication Failed?

  7. אלכס

    יש לי מכשיר קורא סימים וסימ ריק שאפשר להקליט עליו (ואחר כך להחליף / למחוק) עד 12 סימים. מדובר בפתרון ישן וגאוני (באדיבות הסינים). אבל מה – זה עובד רק על סימים שלפני UMTS. השאלה היא איך למצוא את ה-KI אם אני לא יכול לראות אותו באמצעות הקורא שלי?…
    זה בעצם יאפשר לצרוב סימים (מספרי טלפון) במקום אחד – פתרון מעולה וחינמי בשביל מי שמחזיק דיבורית ספיריט ורוצה שכל בני המשפחה יוכלו להשתמש מבלי להוציא ולהכניס סימים כל הזמן…
    אם יש הצעות איך להוציא את המידע בסימים החדשים – תפרסמו כאן או למייל: studmin@gmail.com

  8. Ahmad Jmahni

    הזיהוי נכשל, יש להתחבר דרך הרשת הסלולרית

השאר תגובה

מחפש משהו?

תשתמש בטופס למטה כדי לחפש באתר: