תנו לי נקודת משען ואניף את העולם. / ארכימדס

 

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

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

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

 

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

  1. Ransomware
    1. לפי מחקרים שנעשו(1), חלק מתוכנות הכופרה (Ransomware) כגון CryptoLocker ,Critroni ,CTB Locker ואחרות מבצעות כחלק מפעולתן (בחלק מהן עם תחילת פעולתן טרם ההצפנה ובחלק אחר לאחר ההצפנה) פניות לשרת/י C&C לצורך עדכון או קבלת מפתח הצפנה לצורך הצפנת התחנה. פניות אלו בגרסאות ראשונות בוצעו ב-HTTP (בחלק מהן עם הצפנת ה-Body באלגוריתמים כמו RC4  או AES ובחלק ללא הצפנה) ובגרסאות מתקדמות יותר מבוצע שימוש בהצפנה של התווך באמצעות HTTPS או TOR.
    2. לפי מחקר שעשתה חברת Elastic בנושא(2) פוגעני WannaCry מבצעים, עם הפעלתם, פניות רבות לתחנות באותה רשת (Subnet) ולכתובות ציבוריות אקראיות, פניות אלו הן לפורט 445 (בפרוטוקול tcp) לצורך איתור תחנות ושרתים ברשת המקומית ובעולם אשר מאפשרות אליהן גישה בפרוטוקול SMB. בנוסף, WannaCry, על פי אותו מחקר, מבצעת הפעלה של תהליכים ייחודיים אשר בדרך כלל לא מבוצעים בתחנות קצה כגון "attrib +h" (בעזרת tasksche.exe) או "cmd.exe /c vssadmin delete shadows". בנוסף, WannaCry, על פי אותו מחקר, מבצעת פניות לדומיינים (כלומר מנסה לאחזר כתובת IP עבורם ולאחר מכן מבצעת פניית HTTP אליהם) בשמות כאלו "www.iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea.com" או "www.ifferfsodp9ifjaposdfjhgosurijfaewrwergwea.com". בהקשר הזה כדאי לציין שגם הפוגענים Petya, Not-Petya ורבים אחרים, מתפשטים באמצעות פניות SMB בפורט 445 (כפי שמופיע במאמר(7) של Iain Thompson באתר The Register)
    3. לפי מחקר(4) שעשתה חברת MalwareBytes לגבי תוכנת הכופרה Locky הפוגען בד"כ מגיע באמצעות קובץ MS Office (לדוגמה קובץ doc) במסגרת קמפיין פישינג במייל אשר מוריד קובץ exe. מיד עם הפעלתו הוא מורץ כקובץ בשם svchost.exe מתוך תיקיית %TEMP%. בנוסף, Locky מתקשר עם מספר כתובות IP בעולם המוגדרות בקוד התוכנה (Hardcoded) בחלק מן הגרסאות מדובר ב-3 כתובות IP ובנוסף, הוא משתמש גם ב-DGA על מנת לייצר באופן דינאמי כתובות דומיין שאליהן יש לפנות.
  2. Phishing
    1. ממחקר(3) שעשתה חברת TrendMicro עולה כי אפליקציות לסביבת Android מזוהות באמצעות שם במבנה הדומה לשם דומיין, למשל השם שמזהה את אפליקציית פייסבוק הוא "com.facebook.katana", ניתן לראות זאת בכתובת ה-URL המשמשת להורדת האפליקציה מה-Google Play Store. להלן הכתובת המלאה: https://play.google.com/store/apps/details?id=com.facebook.katana. מאותו מחקר מתברר כי השם הזה אינו נדרש להיות ייחודי באופן אוניברסלי אלא רק ייחודי באותו מכשיר. לדוגמה, חברת אדובי הפסיקה את פיתוח אפליקציית ה-Flash שלה לאנדרואיד (שהיתה זמינה תחת השם "com.adobe.flashplayer") ב-2012 ומאז האפליקציה שלהם כבר לא קיימת ב-Google Play Store ולכן, תוקפים ייצרו אפליקציות זדוניות תחת שמות דומים, למשל: "con.adobe.flash.player", "com.adobe.flash.player", ואחרים דומים.
  3. כלי תקיפה נפוצים
    1. WMImplant – לפי המאמר(5) של חברת FireEye כמו גם לפי המאמר(6) של SecurityWeek שנכתב על ידי Ionut Arghire כלי זה, הכתוב ב-PowerShell, מאפשר גישה מרחוק (RAT) על ידי שימוש בשירות ה-WMI הקיים בכל הגרסאות החדשות של Windows. הכלי מאפשר השתלטות למעשה מלאה על התחנה, להפעיל קוד, לכבות את התחנה וכדו'. מכיוון שכך, הוא פופולארי מאד גם בין האקרים המעוניינים להשיג שליטה על תחנות Windows או לכתוב פוגענים המשתמשים בו כדי להתפשט בין תחנות (Lateral movement). בעת השימוש בכלי זה פקודות המופעלות על ידו עוברות תהליך Obfuscation (למשל כך: 'Inv`oke-Ex`pression') המקשה על איתורן בלוג המערכת.
    2. Remote Code Exec via Services.msc – לפי מאמר (8) באתר CyberWarDog אחת הדרכים הנפוצות להפעלת תהליכים על מחשבים מרוחקים היא באמצעות הוספה, הפעלה, כיבוי והסרה של Services ממחשבי Windows באמצעות האפשרות לעשות זאת מרחוק. כלים כגון PsExec מנצלים התנהגות זו לטובת פעולתם התקינה. לפי המאמרים (8) ו-(9) נראה כי כלים שפועלים באופן זה יבצעו חיבורים לשיתוף החבוי $ADMIN ומעדכנים את רשימת ה-Services המאוחסנת ברישום המערכת.
    3. Mimikatz – כלי זה (9) מאפשר לבצע בדיקות שונות לאבטחת מידע של מערכות Windows כגון חילוץ סיסמאות, קודי PIN, ו-Kerberos Tickets מזיכרון המערכת, ביצוע מתקפות מסוג Pass-The-Hash ועוד. כלי זה ניתן להרצה ישירות מזכרון המערכת ללא שמירה בדיסק כמו גם להרצה באמצעות הפעלת קובץ השמור בדיסק.

 

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

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

בשונה ממערכות המתבססות על זיהוי חתימות (Signatures) של איומים מוכרים (למשל Hash של קבצים של פוגענים ידועים או כתובות IP המקושרות לפוגענים ידועים) ובשונה גם ממערכות המתבססות על זיהוי חתימות של התנהגויות של פוגענים ידועים (הורדת קובץ + פנייה לכתובת X + יצירת קובץ Y + ביצוע פעולה Z = פוגען מסוג A) ההצעה שלי היא לזהות את ההתנהגות הנורמלית על בסיס רחב ככל הניתן של מדדים רלוונטיים ולהגדיר את הבעיה כאוסף של חריגות במספר מדדים ממנה. חשוב להבהיר, עם זאת, שמערכת מסוג זה לא תספק התראות משויימות (כלומר – בעלות שם) למשל "זוהתה מתקפת WannaCry" אלא התראה על הפעילות החריגה שארעה. משהו בנוסח "זוהתה חריגה בהיקף הקשרים בין מחשבים ב-SMB, ובנוסף, זוהתה גם חריגה בהיקף הפניות לאינטרנט ב-SMB וגם זוהה חשד לשימוש בדומיינים מבוססי DGA וכל זה תוך פחות מחצי שעה", אחריות המשתמש במערכת תהיה להגדיר או לסווג את המתקפה כ-WannaCry. עם זאת, לקראת סופו של מאמר זה אציע דרך ביניים שאולי תאפשר גם את ביצוען של משימות מסוג זה. בשורות הבאות אנסה להדגים כיצד לדוגמה, ניתן לזהות את המתקפות ואת פעילות הכלים הנ"ל ברשת על בסיס זיהוי מידעים חריגים באמצעות כלי BigData מתאימים.

איסוף:

Sysmon – כלי ה-Sysmon הוא חלק מהכלים מאתר ה-Sysinternals שהוקם על ידי המפתחים מארק רוסינוביץ' וברוס קוגוול (12). כלי זה מאפשר רישום אירועים ל-EventLog לפי כל מיני קריטריונים. נשתמש בכלי זה על מנת לאסוף מידע על אופן התנהגותן של מערכות Windows.

Winlogbeat – כלי (13) של חברת Elastic המאפשר את שליפתם והעברתם של אירועים שנרשמו ב-Windows Event Log אל מערכת Elasticsearch לצורך ניתוח וחיפוש.

NXLog – כלי (14) איסוף המאפשר לשלוף לוגים מקבצים או מ-Windows Event Log או ממקורות נוספים, לבצע עליהם עיבודים פשוטים ולהעבירם לאחר מכן למגוון מערכות

Logstash – כלי (15) מבית Elastic המאפשר קליטת לוגים או מידעים במגוון דרכים, לבצע עליהם מגוון עיבודים ולהעביר אותם הלאה לכלים רבים וביניהם גם Elasticsearch.

בעזרת Sysmon ניתן לגרום ל-Windows לרשום אירועים בעלי עניין עבורינו משרתים ותחנות הקצה אל ה-EventLog של כל שרת/תחנה. בעזרת Winlogbeat ניתן להעביר את האירועים שנרשמו ב-EventLog אל מערכת ה-Elasticsearch. אפשרות נוספת תהיה להשתמש ב-NXLOG שיותקן על שרתי ה-Windows (במקום Winlogbeat) ויעביר את האירועים ב-TCP או UDP במבנה רצוי אל שירות Logstash אשר יעביר את החומר אל Elasticsearch.

חשוב להבין, בנוסף, שככל שהמידע שינותב לאלסטיק יהיה מפורט יותר ומגוון יותר (מבחינת מערכות המקור המייצאות אותו) כך הסיכויים לאתר יותר מתקפות ואיומים עולים בהתאם. המשמעות היא שאם, בנוסף (או במקום אם אין ברירה) ללוגים המגיעים מהתחנות/שרתים באמצעות Winlogbeat+syslog או ע"י Logstash+Nxlog+Sysmon, יהיו ברשותינו גם לוגים אפליקטיביים של פיירוולים וציודי אבטחה שונים – כן ייטב.

 

ניתוח:

  1. Ransomware:
    1. לפי הנתונים שציינתי לעיל, ואשר נמצאו על ידי חוקרים שונים כפי שהוזכר לעיל, מתקפות Ransomware רבות משתמשות ב-Tor כפלטפורמה לתקשורת עם שרת ה-C&C. באופן עקרוני, Tor דואג לא רק להצפנת התעבורה אלא גם מסתיר את התעבורה שלו כ-HTTPS רגיל כדי להקשות על איתורו. עם זאת, כפי שמופיע במאמר המצ"ב (16) קיימת דרך על בסיס אלגוריתם סטטיסטי לזהות את התקשורות הללו. כפי שניתן לראות גם במאמר של חברת Fortinet, גם מוצר ה-Firewall של החברה מסוגל לזהות ולחסום תעבורת Tor (גם אם בארגונכם ציוד דומה משמש לחסימתן של כתובות אלו, עדיין, על בסיס הלוגים של התחנות ו/או של הפיירוול יהיה ניתן לאתר את נסיונות הגישה של רכיבים המתקשרים על בסיס ה-Tor Network וכך לאתר תחנות ו/או שרתים שנפגעו. בנוסף, קיימים אתרים כמו זה המופיע מטה (18) המכילים רשימת כתובות IP של שרתי Tor relay אשר ניתן לבדוק אותם אל מול החומר שנאגר באלסטיק. זו אמנם סוג של גישה המבוססת על חתימות אבל עדיין אילו חתימות כלליות לתקשורת Tor ולא חתימות לתקשורת של פוגען ספציפי כזה או אחר.
    2. כפי שהוזכר לעיל, פוענים רבים דוגמת WannaCry ו-NotPetya מנסים להתפשט באמצעות החולשה שפורסמה ב-SMB ולכן, כמות תעבורת ה-SMB בין תחנות ושרתים בארגון ככל הנראה תגדל באופן משמעותי ובנוסף, גם כמות הנסיונות של התחנות והשרתים שנפגעו לצאת החוצה מהארגון בפורט הזה (445) תגדל משמעותית. לכן, מדידה של מדד זה באופן קבוע ואיתור אנומליות בהתנהגותו תסייע לאתר מתקפות מסוג זה.
    3. כפי שהוזכר לעיל, מתקפות מסוג זה, מפעילות במחשבים שנפגעו קבצים במקומות לא שגרתיים כגון "cmd.exe /c vssadmin delete shadows" ואחרים. לכן, איסוף מידע זה של התהליכים הרצים בכל שרת/תחנה הינו קריטי לצורך איתור מתקפות מסוג זה על ידי איתור קבצים או שורות פקודה נדירות במיוחד.
    4. כפי שהוזכר לעיל, מתקפות מסוג זה משתמשות פעמים רבות בכתובות דומיין המיוצרות דינאמית על ידי מנגנון DGA כגון זו למשל: "www.iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea.com". כתובות כאלו יהיו, על פי רוב, ארוכות יותר מכתובות "רגילות" ויכילו צירופי אותיות שהינם נדירים יחסית בכתובות דומיין "רגילות". לכן, לדעתי, ניתן לאתר גישה לכתובות אלו על ידי מדידת שכיחותן של אותיות עיקריות ומדידת אורכי הכתובות ואיתור כתובות שהן או ארוכות בהרבה מהרגיל או מכילות צירופי אותיות נדירים במיוחד.
  2. Phishing:
    1. כפי שהוזכר לעיל, בשל העובדה שאפליקציות מזוהות על ידי שם, תוקפים מציבים לא פעם אפליקציות בעלי שם מזהה דומה (למשל "com.adobe.flash.player" כאשרר השם האמיתי הוא "com.adobe.flashplayer") בחנות האפליקציות על מנת לפתות משתמשים להוריד אותן. לכן, שימוש ב-fuzzy query של Elasticsearch יכול בהחלט לאתר שמות של אפליקציות שדומות מאד לשמות של אפליקציות אחרות. במידה ויש בידינו תיעוד לגבי האפליקציות שהורידו משתמשים, או בהרחבה – פניות לאתרים (למשל מלוגים של DNS), ניתן לבצע שאילתות fuzzy query לפי הערכים הנפוצים ביותר על הערכים הנדירים יותר. למשל – אם משתמשים רבים יחסית פונים לדומיין ששמו artifex.co.il מנגנון כזה יבדוק ברשימת הערכים הנדירים יחסית האם ישנם ערכים שדומים (fuzzy) לו למשל artifix.co.il. לדעתי, שימוש בכיוון כזה יאפשר זיהוי של מתקפות Phishing רבות.
  3. כלי תקיפה נפוצים:
    1. WMImplant
      1. כפי שהוזכר לעיל, כלים מסוג זה מפעילים במחשב הפגוע תהליכים לא שגרתיים כגון 'Inv`oke-Ex`pression' (בגלל ה-Obfuscation) לכן, איסוף מידע על התהליכים הרצים בכל שרת/תחנה הינו קריטי לצורך איתור מתקפות מסוג זה על ידי איתור קבצים או שורות פקודה נדירות במיוחד.
    2. Remote Code Exec via Services.msc
      1. כפי שהוסבר, כלים שינסו להוסיף Services למערכת לצורך הפעלת תהליכים מרחוק (או השגת Persistence) יצטרכו לבצע חיבורים לשיתוף החבוי $ADMIN ולעדכן את רשימת ה-Services המאוחסנת ברישום המערכת. במידה ויש לנו לוגים שיכולים לתאר את פעילות ה-SMB בארגון, נוכל לאתר חיבורים לשיתוף הנ"ל ובמידה ויש לנו לוגים של Windows System Event Log נוכל לאתר אירועים עם EventID מספר 4697 שכותרתו "A service was installed in the system" ולהתריע על כך.
    3. Mimikatz
      1. במידה והפעלנו את Sysmon באופן מתאים, נוכל לקבל דיווח ל-Windows Application Event Log כאירוע עם EventID מספר 10 אשר מציין שתהליך (Process) ניגש לזיכרון של תהליך אחר. אירועים מסוג זה עשויים להצביע על העובדה שתהליך מנסה להשיג הרשאות של תהליך אחר – בדיוק אופן הפעולה של Mimikatz.

 

ייתכן ובשלב הזה, את/ה תוהה כמה False positives אסטרטגיה כזו עשויה לייצר. האמת? ייתכן בהחלט שאתה צודק וכמות ה-False positives תהיה גדולה ותקשה על איתור והתראה אפקטיביים. לאחר שקראתי (אם כי עדיין טרם ניסיתי) את ספרו ("על האינטליגנציה") וחלק גדול ממאמריו וצפיתי בהרצאותיו של ג'ף הוקינס(19, 20) הגעתי למסקנה שייתכן בהחלט שהאלגוריתם אותו פיתחה החברה בראשותו, יהיה מסוגל לתרום תרומה משמעותית לזיהוי באמצעים הללו ולסינון "המוץ מן התבן". אם תרצו (ותשאירו לי עדכון בתגובות) אוכל לפרט יותר במאמר הבא…

 

מקורות:

  1. https://www.bromium.com/sites/default/files/bromium-report-ransomware.pdf
  2. https://www.elastic.co/blog/malware-analysis-wannacry-elastic-stack
  3. https://www.elastic.co/blog/elasticsearch-as-android-malware-research-platform
  4. https://blog.malwarebytes.com/threat-analysis/2016/03/look-into-locky/
  5. https://www.fireeye.com/blog/threat-research/2017/03/wmimplant_a_wmi_ba.html
  6. http://www.securityweek.com/researcher-builds-wmi-based-hacking-tool-powershell
  7. https://www.theregister.co.uk/2017/06/28/petya_notpetya_ransomware/
  8. https://cyberwardog.blogspot.co.il/2017/04/chronicles-of-threat-hunter-hunting-for_11.html
  9. https://www.toshellandback.com/2017/02/11/psexec/
  10. https://sourceforge.net/projects/mimikatz.mirror/
  11. https://cyberwardog.blogspot.co.il/2017/03/chronicles-of-threat-hunter-hunting-for.html
  12. https://en.wikipedia.org/wiki/Sysinternals
  13. https://www.elastic.co/downloads/beats/winlogbeat
  14. https://nxlog.co/
  15. https://www.elastic.co/products/logstash
  16. http://www.netresec.com/?page=Blog&month=2013-04&post=Detecting-TOR-Communication-in-Network-Traffic
  17. http://cookbook.fortinet.com/blocking-monitoring-tor-traffic/
  18. https://www.dan.me.uk/torlist/?exit
  19. https://www.youtube.com/watch?v=f1tYXv6ST_U
  20. https://www.youtube.com/watch?v=XMB0ri4qgwc

השאר תגובה