האקרים מחפשים תמיד את אפשרות הקלה ביותר להיכנס לתוך מערכת או אתר, ואם הגישה למידע באמצעות שם המשתמש והסיסמה היא האופציה הקלה ביותר, אז זו תהיה הדרך ממנה יתחיל ההאקר את ניסיון הפריצה. ניתן להשוות את הבחירה בדרך זו לפריצה לדירה: האם הפורץ ינסה לפרוץ לדירה עם דלת פלדלת חדשה ומצלמה במעגל סגור, או לדירה השכנה שלה דלת עץ פשוטה, עם מנעול חלוד וישן?
המפתח למתקפה – Broken Authentication
האקרים משתמשים במאגרים גדולים המכילים שמות משתמשים וסיסמאות גנובות, והם מנצלים את הפרטים אלה למתקפה על אתרים פגיעים.
תהליך זה נקרא Broken Authentication, ובעברית נקרא “הזדהות שבורה”.
הזדהות שבורה נובעת מכמה גורמים בעיקר בגלל הגדרה לא נכונה במערכת, כמו למשל:
- שימוש בסיסמאות ברירת מחדל, סיסמאות חלשות או סיסמאות ידועות מראש כגון Password1 או admin/admin.
- שימוש בנתוני הזדהות חלשים או בלתי-אפקטיביים לצורכי תהליכי שחזור סיסמאות, כגון “תשובות ממאגר נתונים”, אשר בהגדרה לא ניתן להגן עליהם.
- אחסון סיסמאות בצורה גלויה, או שימוש ב- Hash* חלש.
- חוסר שימוש במנגנון Multi Factor Authentication**, או שימוש במנגנונים שאינם אפקטיביים ובטוחים מספיק.
לקריאה נוספת על הנושא, אפשר לגשת לאתר OWASP >>
מהלך התקיפה
תוקפים עשויים לגלות מצב של הזדהות שבורה בצורה ידנית ולנצל מצב זה בעזרת כלים ממוכנים בשילוב רשימת סיסמאות ומתקפות אשר מבוססות על המאגרים שיש להם.
אחת המתקפות שניתן לבצע היא התקפת brute force. בכתבה זו אציג לכם דוגמא למתקפה על אתר לא מוגן, ומתקפה זהה על אתר מוגן ואת התוצאות שלהן.
דוגמא לניסיון פריצה לאתר, כאשר ידוע שם המשתמש, אבל את הסיסמה צריך לנחש עם מגוון רחב של סיסמאות במאגר זמין. ניתן לנסות לפרוץ גם אם לא ידוע שם משתמש, ולהריץ במקביל לסיסמאות גם שמות משתמשים שונים.
פריצה לאתר לא מוגן
בתמונה אנחנו רואים מספר אקראי של סיסמאות שה-Brute Force מנסה ומספר הניסיונות שבוצעו.
לכל בקשה יש תגובה:
התגובה מהאתר היא : 303 See Other. זהו סוג של הפנייה, שמחזיר לדף ה-login, דף ההתחברות הראשוני.
באחד הניסיונות, התקבל משך תגובה שונה מכל שאר התשובות: כאשר כל בקשה לקחה 493 יחידות זמן , הניסיון האחרון לקח 508 יחידות זמן.
בתמונה האחרונה, התקבלה אותה התשובה מהאתר (303). אבל הפעם יש משהו שונה. שימו לב !
במקרה זה, תשובת השרת הייתה הפנייה אל תוך האתר, לעמוד dashboard/main/index.
המשמעות של ההפניה לעמוד זה היא שבעצם הצלחנו להיכנס לאתר, וגילינו את הסיסמה הנכונה לשם המשתמש אתו הרצנו את פעולת ה-Brute Force.
פריצה לאתר מוגן
בדוגמא הבאה, נראה התקפה על אתר אשר נועל את המשתמש להתחברות אחרי מספר פעמים של ניסיונות להתחבר עם סיסמא שגויה.
קיבלנו מהאתר את ההודעה “שם המשתמש או הסיסמה אינם נכונים”. עד פה, הכל נראה בסדר. אך שימו לב למשך התגובה, שפתאום השתנתה מ-6806 ל-7324. נכנס לשורה הבאה ונראה מה השתנה.
מה שהשתנה זו תשובת השרת, המודיע כי המשתמש נחסם: “לא ניתן להיכנס למערכת. המשתמש נעול. אנא פנה למנהלת.”
אם כך, מה אפשר לעשות על מנת להתגונן מפני התקפה מסוג זה?
- כאשר ניתן, יישם הזדהות מבוססת **Multi Factor Authentication. הזדהות זו תסייע במניעת גניבה ממוכנת של נתוני הזדהות, מתקפות Brute Force ושימוש חוזר בנתוני הזדהות גנובים.
- יישם בדיקות סיסמאות חלשות, כגון בדיקת סיסמאות חדשות למול רשימת סיסמאות top 10000 worst passwords .
- יישור קו עם אורך סיסמא, מורכבות ומדיניות החלפת סיסמאות למול NIST 800 63 B’ s guidelines in section 5.1.1 for Memorized Secrets או מדיניות סיסמאות מודרנית אחרת.
- צמצום או האטה של ניסיונות הזדהות כושלים. שימו דגש על תיעוד כלל ניסיונות ההזדהות הכושלים ויידוע של מנהלי המערכת בעת גילוי מתקפות מסוג Credential Stuffing, מתקפות Brute Force או גילוי כל מתקפה אחרת .
- השתמשו במגנון Captcha***, המומלץ הוא של גוגל הנקרא reCaptcha.
Hash – פונקציה המשמשת להצפנת טקסטים.
Multi Factor Authentication – הזדהות המתבצעת בעזרת לפחות שני פרמטרים שונים.
Captcha – סוג של מבחן שעוברים משתמשים במהלך הזדהות, האמור לאמת שהם אנושיים.
מאת: חיים מיטרני, רכז אבטחת מידע, תחום חינוך ב-Experis Israel