הבנת אבטחת מידע בנוגע ל SIP

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

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

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

נתחיל מהסוף. SIP הוא פרוטוקול Voice Over IP אשר אומר כי הוא מעביר מידע אודות השיחה וההתנהלות שלה מצד אחד לצד שני, אבל הוא לא אחראי למה שקורה בשיחה, אלא רק למידע שמנסה ליצור את השיחה ומה מתרחש בשיחה. כלומר הוא מעביר אותות שונים אודות השיחה בלבד (משהו בסגנון של צליל חיוג, תפוס, לא זמין וכו' לאנשים הפחות טכניים שקוראים את הפוסט).

הבעיה היא ש SIP חשוף לגמרי בעולם, כלומר המבנה שלו הוא clear text אשר גלוי לכל מאזין ומקשיב.  המתחכמים יגידו עכשיו שאם הוא היה בינארי אז הכל היה תקין, אבל התשובה היא "אז זהו שלא". הבעיה היא שהוא חשוף בעולם ולא בזה שהוא גלוי. כלומר גם מידע בינארי אפשר להשתמש ולשנות, הרי יש לפחות עוד צד אחד שצריך לפרש את המידע, ולכן המידע הבינארי עדיין צריך להיות בר פירוש, ואז עדיין אפשר לגנוב שיחות באותה מידה.

אז איך כן אפשר להגן על SIP ?

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

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

מAsterisk גרסה 1.8, אפשר להשתמש במנהרת SSL להצפנה, אבל זה תלוי גם בתמיכה של הטלפוני SIP בצד השני, ואם הם תומכים בגישה הזו. אבל זה לא פותר את בעיית הגניבה, אלא רק את בעיית "אדם באמצע" (Man In the middle), אשר לא יוכל להאזין למה שקורה, אבל כן לנסות ליצור שיחות בעצמו ולהתחבר בעצמו.

עוד דרך היא לעבוד עם VPN מאובטח. הבעיה היא ש iPhone ללא פריצה אינו מסוגל לעשות דבר כזה למעט SSL VPN של חברת fortigate (אשמח לגלות שאפל מאשרים ליותר vpn מאובטחים לעבוד על הצעצוע שלהם), וAndroid דורש גישת root להתקנה של מרבית ה VPN כדוגמת openvpn, כך שצריך אנשים טכניים בשביל לגרום לדברים לעבוד, ומשתמש "פשוט" שלא רוצה להבין טכנולוגיה ולא רוצה לשנות את דרכיו ורק רוצה שהכל יעבוד בשבילו לא יכול לקבל כלום.

עוד דרך, אשר לא תמנע Man In the Middle אבל תגן על המרכזייה שלכם מגניבת שיחות היא שימוש בכתובת IP קבועה. אז מה עושים אנשים עם כתובת מ DHCP או מבית קפה ? ובכן תמצאו מקום טוב יותר להיות בו, או שתעבדו עם VPN, כל כך "פשוט".

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

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

5 מחשבות על “הבנת אבטחת מידע בנוגע ל SIP

  1. a

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

    1. ik_5 מאת

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

  2. Tzafrir Cohen

    הערה קטנה: פרוטוקול SIP אמנם לא מוצפן, אולם ההזדהות שבו אינה סתם שליחה של סיסמה לא מוצפנת. ההזדהות היא מסוג של אתגר ותגובה (Challange – Response). כלומר: שני הצדדים אמורים לדעת סוד משותף (הסיסמה). השרת מגריל מספר אקראי (קוראים לו שם nonce). הלקוח השני שולח לו גיבוב (עם MD5) של רצף שכולל גם את הסיסמה וגם את הרצף האקראי הזה. מי שמאזין לקו לא יכול לפענח מכאן את הסיסמה. ליתר דיוק, מה שיותר חשוב מזה: לא יכול מכאן להצליח להזדהות עם רצף אקראי אחר שהשרת ישלח.

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

    אבל לפני שמשקיעים בזה, כדאי לבדוק את הדברים הבסיסיים (לדוגמה: לוודא שאין שרותים מיותרים שחשופים לרשת. אתם באמת צריכים ש־MySQL יאזין על כל הפורטים? אז מה אם אין אף משתמש לא מקומי? למה לא להקשיב רק על localhost?

  3. David Abutbul

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

    1. ik_5 מאת

      הבעיה הראשונה היא, אם השרת נמצא חשוף. וחשוף הכוונה היא סיפ גלוי לעולם. הוא חווה סריקות אין סופיות של brute force בשביל להצליח לגלות שלוחה "פתוחה" ולהוציא ממנה שיחה.

      הלקוח פחות מעניין אותי, היות ויש דרכים גרום לו לא להיות חשוף, כמו עבודה מול VPN והריץ את התוכנה רק אחרי שהיא מחוברת, ומקשיבה רק למה שנמצא בצד השני של ה vpn.

כתיבת תגובה

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

הלוגו של WordPress.com

אתה מגיב באמצעות חשבון WordPress.com שלך. לצאת מהמערכת / לשנות )

תמונת Twitter

אתה מגיב באמצעות חשבון Twitter שלך. לצאת מהמערכת / לשנות )

תמונת Facebook

אתה מגיב באמצעות חשבון Facebook שלך. לצאת מהמערכת / לשנות )

תמונת גוגל פלוס

אתה מגיב באמצעות חשבון Google+ שלך. לצאת מהמערכת / לשנות )

מתחבר ל-%s