על גניבת הרשאות ואותנטיקציות של מיקרוסופט

ארגונים רבים בישראל "מכורים" לפתרונות של מיקרוסופט, ובמקרים רבים, פתרונות של מיקרוסופט מיושמים באותם ארגונים – רק בגלל שזה "מיקרוסופט" והם (מיקרוסופט) בהחלט "מבינים באבטחה".

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

גופים רבים עדיין משתמשים בשיטות כמו 2FA שאמנם ימנעו (בחלק מהמקרים) את  העברת פרטי האותנטיקציה של שם משתמש/סיסמא, אולם הדבר אינו יעזור כשיש לגנב את ה-Session Cookies, כנ"ל במקרים משתמשים ב-Microsoft Authenticator בשיטת ה-Passworldless (שימו לב – Passworldless ו-Passkeys הם דברים שונים לחלוטין) שבהם הגנב עדיין מקבל, שוב, את ה-Session Cookies ויכול להתחזות בהצלחה למשתמש הלגיטימי ולגנוב או לגרום נזקים.

בן, מערוץ Syn/Ack Time הכין קליפ קצר (7 וחצי דקות) שמדגים בעזרת כלי כמו Evilginx על מנת להתחזות לאתר מיקרוסופט והוא מדגים שימוש בשיטות אותנטיקציה שונות, וכיצד הוא מצליח לקבל את פרטי כניסת המשתמש ואת ה-Session Cookies. להלן הקליפ:

אם צפיתם בקליפ, אתם יכולים להבין את הדברים הבאים:

  • שימוש ב-Yubikey (או פתרון חומרתי אחר שתומך ב-FIOD2) עדיין נותן את הפתרון הכי חזק, תוך תמיכה בכל פלטפורמה (Windows, Mac, Linux) ובכל דפדפן, ואם בארגון מחליטים להשתמש ב-Microsoft Authenticator – זהו הפתרון היחיד שהוא מספיק חזק ויכול לתמוך בכל המשתמשים, כולל אלו שאין ברשותם מכשירי טלפון חכמים.
  • תמיכה ב-Passkeys של מיקרוסופט היא בעייתית לארגונים גדולים, הואיל והיא דורשת את גירסת האנדרואיד האחרונה או גירסת IOS האחרונה (גירסה 17, נכון לרגעים אלו), דבר שלא קיים בטלפונים רבים ישנים יותר. Google passkey שבנוי לתוך הדפדפן והטלפונים, דורש אנדרואיד גירסה 9 או IOS גירסה 16, דבר שקיים בד"כ ברוב הטלפונים כיום.

אסכם את הדברים כך: הגיע הזמן להיפתר מ-2FA ולעבור לשימוש ב-passkey (או לפחות במפתחות חומרה כמו Yubikey). בשיטות אלו, טריקים של SMS ו"חטיפת" מכשיר הסלולר לאישור אותנטיקציה לא יעזרו (יש צורך בקירבה פיזית למחשב, passkey משתמש ב-Bluetooth ו-Yubikey מצריך חיבור USB), וגם אם הקורבן הכניס את שם המשתמש והסיסמא שלו, הפורץ לא יוכל "לדוג" אותם, ובמקרים של שימוש ב-passkey, יהיה אפשר לוותר על תוכנת Authenticator (הגירסה של גוגל מסתמכת אותנטיקציה לכניסה לטלפון ואינה מצריכה אותנטיקציה מחודשת על מנת ליצור מספרים חדשים, בניגוד לגירסה של Yubikey לדוגמא).

על פריצות "מבפנים" ועל דרכים להקשות זאת

כמעט אצל כל חברה שיש לה תשתית מחשבים רצינית עם שרתים (או בענן), בדרך כלל קיימות הפרדות בין חיבורי רשת לאינטרנט לבין חיבורי LAN. שרתים ומחשבים מקבלים כתובות IP פנימיות ולא כל מחשב או שרת מקבל גישה לאינטנט. מבחינת כניסה לא מורשית מבחוץ – בדרך כלל יהיה פתרון Firewall ובחברות שמשקיעות – יהיה כנראה גם פתרון IDS/IPS ואולי עוד כלים נוספים, הכל כדי למנוע פריצה של גורמים זדוניים מבחוץ.

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

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

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

בדרך כלל, לפני פריצה כזו, הם יבצעו תחקיר בסיוע כל דבר אפשרי (ריגול דרך האינטרנט ברשתות חברתיות, ריגול "קלאסי" תוך שימוש בסוכנים שנמצאים בארץ) כדי למצוא מי האנשים שאותם הם הולכים לתקוף במובן הסייבר. הם יחפשו אנשי IT ואם אפשר – אנשים שיש להם כמה שפחות ידע/נסיון בתחום ה-IT אך שיש להם גישה פנימית למערכות, אחד כזה שלמחשב שלו בעבודה יש חיבור לאינטרנט ול-LAN הפנימי, והוא לא ממש שם לב לשינוי בין URL כמו secure.iec.co.il ל-secure.iec.co.il.info (דוגמא פיקטיבית, אין לי מושג ירוק בתשתית של חברת חשמל). נניח שהראשון מפנה ל-ADFS או משהו חשוב אחר. ה-URL השני שנתתי הוא מזויף והפורצים הקימו אותו (כולל העתקה של גרפיקה עד לביט האחרון) כך שאותו איש IT לא יחוש בסכנה ויכניס את פרטיו האמיתיים להיכנס למערכת. (אגב, טריק ששמעתי שמשתמשים בו אחרי הכנסת שם משתמש וסיסמא הוא להציג הודעה של שם משתמש/סיסמא שגויים כדי "לשאוב" שמות משתמש וסיסמאות נוספות מאותו איש IT).

לאחר מכן יעשו נסיונות לגרום לאותו איש IT להוריד קובץ כלשהו להפעיל אותו. בד"כ אותם קבצים לא יזוהו ע"י מערכת האנטי וירוסים כקבצים מסוכנים (יש לפורצים ממומנים תקציב מספיק גדול כדי לקנות את כל האנטי וירוסים ולבדוק את הרוגלות/פורצות שלהן על אותן מערכות אנטי וירוס ולוודא שאף אחת מהן לא "תקפוץ"). במידה ואותו איש IT הוריד את הקובץ והפעיל אותו, המערכת כבר תחפש דרך לצאת לאינטרנט ולהקים Tunnel דינמי שיוכל לשלוח צילומי מסך, RAT, Key logger וכו'. במידה והם לא יצליחו, הם יחפשו דרך לבצע זאת פיזית (המוסד מומחה בזה, לפי מקורות זרים).

מהרגע שאותו קובץ פועל, לפורצים יש בעצם גישה. סביר להניח שהם יפתחו איזו מערכת C&C (ר"ת Command & Control) כדי לראות איך לגשת אל המערכת, ומכיוון שמשתמשי IT רבים משתמשים בתוכנות כמו SecureCRT ותוכנות אחרות המאפשרות גישה במקביל לשרתים, יש עכשיו לפורצים דרך להיכנס למערכות האחרות עם ההרשאות של אותו איש IT ומהמחשב שלו, כך שסביר להניח ששום מערכת מניעה לא ממש תזהה פעילות חריגה. תזכרו – בשלבים הראשונים, הפורצים לא משנים קבצים וקונפיגורציות, הם לומדים.

אז … מה ניתן לעשות כדי להקשות?

יהיו כאלו שיציעו להשתמש ב-Smart Card. רעיון לא טוב, מכיוון שבד"כ ה-Smart Card נמצא בתוך המחשב ולא מוציאים אותו ואת ה-PIN אפשר לתפוס עם key logger. אז הפתרון הזה עף החוצה.

פתרונות אחרים שיכולים לעזור, הם פתרונות שבעצם מבוססים על אימות כפול, תוך שימוש בטביעת אצבע עם ציוד בחיבור USB או באמצעות TOTP (ר"ת Time Based One Time Password) שמותקן על הטלפון הסלולרי. אפליקציה פופולרית לכך (שנמצאת ב-Repo של כל הפצת אינטרנט) היא Google Authenticator (האפליקציה לא מצריכה חיבור אינטרנט).

איך מיישמים זאת? בכמה צעדים, תלוי במערכת:

  • מערכות לינוקס רחוקות עם כניסת SSH: אם נחליט על TOTP עם שימוש באפליקציה כמו ה-Google Authenticator (יש אפליקציות אחרות ויש גם את המפתחות RSA המפורסמים, כולם עושים את אותה עבודה), נוכל לעקוב אחר ההוראות כאן כדי להתקין זאת. משהו שצריך לקחת בחשבון – תצטרכו להעיף מפתחות SSH מקובץ ה-authorized_keys על מנת שה-TOTP יפעל. כך שתנסו להיכנס לאפליקציה, המערכת תבקש ממכם קוד וידוא שיופיע לכם באפליקציה בטלפון (או במפתח RSA הפיזי).
  • מערכות לינוקס/Windows מרוחקות עם כרטיס Yubikey (גוגל בקרוב מוציאה מוצר מתחרה שנקרא Google Titan, גם הוא פתרון מבוסס FIDO2) – בדרך זו יש לחבר ל-USB מפתח ובכל פעם להעביר את האצבע כשיש צורך לבצע אותנטיקציה. השיטה הזו יותר מאובטחת משיטות שימוש בקורא טביעות אצבע שמובנה במחשב). גם כאן, תצטרכו לבצע תהליך התקנה, רק שכאן יש גם שימוש ב-OpenPGP. כל הפרטים נמצאים כאן.
  • מערכות Windows (תוך שימוש ב-RDP): פתרון חינמי אין למיטב ידיעתי, יש פתרון מסחרי שתומך גם ב-TOTP וגם ב-FIDO2, יש פתרון של חברת ROHOS כאן.

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