מילון מושגים:
EDR - פתרון אבטחה שמנטר תחנות קצה, מזהה פעילות חשודה ומאפשר תגובה לאיומים.
IDS - מערכת לזיהוי חדירות שמנטרת תעבורת רשת או מערכת ומתריעה על פעילות חשודה.
SQL Injection - חולשה שבה קלט זדוני מוחדר לשאילתת SQL, ומאפשר לתוקף לקרוא או לשנות נתונים במסד.
פישינג - ניסיון הונאה שבו תוקף מתחזה לגורם מהימן כדי לגרום לקורבן למסור פרטים רגישים כמו סיסמאות.
עדכון אבטחה - עדכון תוכנה ממוקד שמתקן תקלה או סוגר חולשת אבטחה בגרסה קיימת.
FTP - פרוטוקול להעברת קבצים בין מחשבים ברשת, בין לקוח לשרת.
בינה מלאכותית - תחום במדעי המחשב שעוסק בבניית מערכות המסוגלות לבצע משימות הדורשות בדרך כלל אינטליגנציה אנושית.
למידת מכונה - ענף של בינה מלאכותית שבו מערכות לומדות דפוסים מתוך נתונים ומשתפרות בלי שתוכנתו במפורש לכל מקרה.
שלבי צייד - Threat Hunting
בשיעור זה לומדים את תהליך ציד האיומים מקצה לקצה, מההכנות וההשערות ועד תכנון הציד, איסוף המידע, הניתוח, העצירה והמסקנות, ומבינים למה התהליך חייב להיות ניתן לבדיקה ולשיפור מתמיד.
נושאי הסיכום המוצגים בשיעור:
1. שלב ההכנות: דבר ראשון מתכוננים, מזהים את המטרות שאולי יתקפו אצלנו, למשל דאטאבייס עם נתוני לקוחות, וצריך הבנה עמוקה של העסק ושל האיומים על הנכסים האינטלקטואליים שלנו.
2. הפעלת לוגים וכלים: בשלב ההכנות מפעילים את כל הלוגים שנצטרך לציד, כי הלוגים אינם מאופשרים כברירת מחדל, למשל תיעוד גישות לקבצים רגישים בשרת ה-web, ומפעילים כלים כמו SIM שמרכז את כל הלוגים מכל השרתים למערכת מרכזית אחת, מערכות EDR שהן כמו תוספת לאנטי וירוס בתחנות העבודה, ומערכות IDS לזיהוי פולשנות בתחנות ובפיירוולים.
3. מעקב אחרי האיומים בשוק: צריך לעקוב אחרי כל האיומים שקורים בשוק, לקרוא מחקר מקיף על האיומים האחרונים שיצאו ולחשוב איך מתמודדים איתם, ולזהות את הנכסים הקריטיים שיש את הסיכוי הגדול ביותר שהתוקף ינסה להגיע אליהם, כמו שרתי SQL וקבצים רגישים.
4. תיעוד בכל הרשת: מפעילים מנגנון logging בין כל השרתים, הסוויצ'ים, הראוטרים ונקודות הקצה, מתקינים את כל התוכנות שיעזרו להתמודד, מגדירים הכל ומפעילים אלרטים להתרעה כשמשהו קורה, והכל כדי להיות מעודכנים מה מקובל היום.
5. ניסוח השערה: השלב השני הוא ניסוח השערה מה התוקף יתקוף ובאיזו דרך ילך, וזה נקרא educated prediction, השערה מושכלת, למשל שאם יש חולשה באתר התוקף אחרי פריצתו ינסה ללכת לכיוון שרת ה-SQL.
6. השערה חייבת להיות ניתנת לבדיקה: כל ההשערות חייבות להיות testable, אנחנו לא עושים השערה כללית אלא השערה מדויקת מאוד שאפשר לבדוק האם מצליחים להגיב לאירוע הדמיוני, כמו השערה שתוקף שביצע SQL injection ינסה אחר כך להגיע לטבלת הלקוחות ולקבצים הרגישים, ואז בודקים אם מצליחים לתפוס ולעצור את האירוע הזה, ואפשר גם לעשות סימולציה עצמית כדי להיות מתורגלים לפני שבזמן אמת הכל נופל.
7. מקורות להשערות: ההשערות נוסחות על סמך דוחות מהתקפות בארגונים אחרים או על סמך התראות שהיו אצלנו במערכת, למשל מלא ניסיונות להיכנס תחת השם שלנו עם סיסמאות שגויות, וההשערה חייבת להיות ספציפית, מוגדרת היטב וניתנת לבדיקה.
8. תכנון הציד: אחרי ההשערה עוברים לשלב designing the hunt, אסטרטגיית הציד, והמטרה לחפש אינדיקציות לחדירה, indicators of compromise, IOC, כלומר להגדיר איך מזהים את האיום הספציפי, למשל קובץ שהמלוור משאיר בתיקייה מסוימת או מפתח ברג'יסטרי שהתוקף משאיר.
9. הגדרת אינדיקציות ייחודיות לארגון: בתכנון מגדירים מה מחפשים בהתאם לארגון, למשל לחפש מי ניגש לקבצים רגישים שלא דרך הנתיב התקין שהלקוח עובר, או אתר שמנסה להריץ שאילתה ישירה לטבלה בדאטאבייס בלי לעבור דרך הפרוצדורות שהמתכנת הכין, כי הפורץ לא יודע שכל האתר בנוי לעבוד דרך פקודות פנימיות, ושאילתה ישירה היא אינדיקציה לחדירה.
10. אוטומציה של התהליך: את התהליך צריך לאוטומט, למשל סקריפט או תוכנה שיודעת לנתח את הלוגים של ה-SQL ולמצוא את השאילתות הישירות שמחפשים, וכך נוצרת תוכנית של מה מחפשים ואיך מחפשים את זה.
11. תוכנית לכל השערה: אפשר ורצוי להכין כמה השערות, התקפת אתר, אימייל פישינג שהמזכירה פתחה והתוקף שולט במחשבה, או SQL injection שהצליח לשלוח פקודות לדאטאבייס, ולכל השערה בונים תוכנית תגובה משלה, למשל להגדיר שמזכירה כלל לא אמורה לגשת ישירות לדאטאבייס או לקבצים הרגישים.
12. איסוף מידע: אחרי שהוגדרו האינדיקציות מתחילים איסוף מידע, data gathering, ובוחנים אותו, צריך לדעת מאיפה להביא את הלוג של ה-SQL, של סיסקו ושל שרת ה-web, איפה כל הלוגים נמצאים ואיך מחפשים בתוכם, למשל בעזרת regular expressions, צורת כתיבה של חוקים לטקסט, כמו חיפוש נושא מסוים באימיילים בלוגים.
13. גילוי אינדיקציות חדשות תוך כדי: תוך כדי החיפוש אפשר לגלות עוד אינדיקציות לחדירה ומידע חדש, כמו דפוס התנהגות חשוד בלוגים של שרת ה-web, ובעצם מחפשים אנומליות בהתנהגות, התנהגות לא נורמלית שמעידה על פריצה, לצד ניתוח לוגים וניתוח חבילות תקשורת שנתפסות על הכבל.
14. הרצת מלוור בסנדבוקס: אפשר לקחת את המלוור שמתכוננים נגדו, בין אם התקיפה כבר קרתה ובין אם לא, ולהריץ אותו בתוך sandbox, מכונה וירטואלית מבודדת, כדי לגלות איך הוא מתנהג ואילו קבצים הוא משאיר בדיסק, וכך אוספים עליו מידע ומגלים אינדיקציות נוספות שלא עלו מהלוגים הרגילים.
15. בחינת המידע שנאסף: אחרי האיסוף בודקים את עצמנו האם המידע באמת עונה לדרישות או שמשהו חסר, למשל שמתגלה שה-SQL לא מתעד דברים יותר משבוע אחורה כשרוצים חודש אחורה, או שמערכת מסוימת לא מתעדת מה קורה בתחנת עבודה, ומבצעים אינטרפרטציה, פירוש לכל מה שאספנו, ויכולים לאשש את הטענה או לסתור אותה.
16. חשיפת החורים בתהליך: זה נשמע טריוויאלי אבל אינו כזה, כי בארגון יש מלא מערכות והמון אנשים שצריכים לשתף פעולה, ורק עד שעושים את הבדיקה הזו לא מגלים את כל החורים שקיימים בתהליך, ושלב הניתוח הוא קריטי לצעדים הבאים כי לפיו יודעים איך לנצח את התוקף.
17. אישור ההשערה בניתוח: בניתוח אפשר לגלות סדרה של לוגינים לא מוצלחים מכתובת IP מסוימת, מה שמאשר את ההשערה שמישהו מנסה brute force attack, תקיפה בכוח שבה עוברים על כל הסיסמאות האפשריות, כמו מיליוני ניסיונות עד שעולים על סיסמת האדמיניסטרטור, ואפשר להוכיח זאת גם בתרגיל יבש שמוכיח שיודעים לזהות ניסיונות לוגין כושלים.
18. הערכת השפעה וסקופ: כשמזהים תקיפה מנסים להבין מה ההשפעה שלה על הארגון, כי לפעמים תקיפה כלל לא משפיעה, ומגלים את הסקופ של הפריצה, לאילו רשתות ושרתים הצליחו לפרוץ, למשל שפרצו רק לשרת web אחד מתוך שלושה והם תקועים בו ולא מצליחים להתקדם ברשת, וזה הסקופ של הפריצה.
19. פעולות עצירה ושיקום: אחרי שהבינו מה קורה מתחילים לחשוב על remediation actions, פעולות עצירה וחזרה לשגרה, כמו בידוד תת רשת, התקנת פאץ' לתוכנה שדרכה פורצים, למשל פאץ' לשרת FTP ישן שנוצל בחור אבטחה, ומחיקת המלוור מהדיסק.
20. נטרול שרת השליטה: אם מזהים שרת C2, שרת שליטה שממנו שולחים פקודות לכל הקורבנים, command and control server, אפשר לנטרל את ה-IP שלו בפיירוול או לנתק את התקשורת בין התחנות שלנו אליו, ואז התחנות הנגועות לא יעשו נזק כי יחכו לפקודה שלעולם לא תגיע, ובנוסף מתקינים הגנות וכלים חדשים שפותרים את הבעיה הספציפית, עושים עדכונים והגדרות רשת חזקות יותר.
21. תיעוד ומסקנות: אחרי שמנצחים את המלוור צריך להסיק מסקנות ולתעד הכל, כי יבואו עובדים חדשים ונרצה ללמד אותם מה היה ואיך פעלנו, מתוך הכתיבה סוקרים מסקנות כי כתיבה מסדרת את המחשבה, וכך משפרים את חוקי ה-detection ואת ה-playbook, רשימת הפעולות שעושים כשקורה משהו, ולומדים את הדור החדש את המתודולוגיות שהשתמשנו בהן.
22. שיפור מתמיד: התקיפות לא נגמרות, כל יום בוטים ותוכנות אוטומטיות עוברות על כל כתובות ה-IP באינטרנט ומנסות לפרוץ אותן, ולכן חייבים continuous improvement, להשתפר כל הזמן, להניח יותר ויותר הנחות יסוד ותסריטי תקיפה, ולבדוק את היעילות שלנו, למשל אם חיפשנו שעות בלוג של שרת ה-web בלי כלי ניתוח, הפעם נכין או נבקש מהמתכנת תוכנה קטנה שמחפשת בדיוק את מה שצריך.
23. שדרוג ההשערות לפי המציאות: אחרי תקיפה אפשר לשדרג את ההנחות, למשל אם גילינו שאחרי השתלטות על שרת ה-web התוקף מנסה להריץ קובץ הרצה או פקודת whoami כדי לגלות תחת איזה משתמש הוא רץ, מוסיפים את זה להשערה וכך משתפרים בלחימה מולם, ואפשר לשלב AI ו-machine learning ולקיים training sessions לאימון הצוות, כולל תרגילים כמו עובד שפתח קובץ וראה על המסך שנפרץ, ומסבירים לעובדים מה לעשות ומעדכנים צוותים וחברות בת.
24. השערה שאי אפשר לבדוק: בשאלת הסיכום בדקנו אם בסדר לנסח השערה שלא ניתן לבדוק, והתשובה היא שזה לא בסדר, למשל המחשבים התחילו לעבוד לאט היא השערה גרועה כי לא ברור באיזו תוכנה ובאיזה תנאים, ולעומת זאת השערה שהגישה לשרת הקבצים לוקחת יותר משתי שניות היא משהו מדיד וניתן לבדיקה, ועושים השערות ספציפיות שמבוססות על דוחות מהתקפות בארגונים אחרים.
סיכום:
בשיעור זה למדנו את תהליך ציד האיומים המלא, החל מההכנות של הפעלת לוגים וכלים וזיהוי הנכסים הקריטיים, דרך ניסוח השערות מדויקות וניתנות לבדיקה, תכנון אסטרטגיית הציד עם אינדיקציות לחדירה, איסוף ובחינת המידע כולל סנדבוקס למלוור, הניתוח שמאשר או סותר את ההשערה ומגלה את הסקופ וההשפעה, פעולות העצירה והשיקום עד נטרול שרת השליטה, וסיימנו בתיעוד, הפקת מסקנות ושיפור מתמיד של ההשערות, החוקים והתהליכים, כי זה שילוב של מדע ואמנות שמתחדש בכל יום.
SR13770HE