תיעוד לוגים: להתמודד עם האויב שבפנים

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

 

אילוסטרציה: Bigstock

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

טכנולוגיות הגנתיות התקדמו בקצב מדהים בשנים האחרונות. פתרונות מבוססי בינה מלאכותית ולמידת מכונה (A.I\ML) מאפשרות לנתח דפוסי שימוש חריגים ולזהות איומים חדשים ולא מוכרים (Zero Days). פתרונות הזדהות עושים שימוש ביותר מפקטור אחד (MFA) ומקשים על גניבת זהויות והתחזות. גם שיטות ההגנה המסורתיות השתכללו ויודעות לתת מענה מסוים לדברים "שאנחנו לא יודעים שאנחנו לא יודעים".

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

המטרה: ערוץ תקשורת מסווה

במאמר זה אתמקד בחולשה רעיונית שאינה מקבלת מענה מספק מפתרונות אבטחת המידע הקיימים בשוק, ורלוונטית לשלב שבו התוקף כבר בתוך רשת הארגון (Post-Infiltration). בשלב זה התוקף השיג גישה לתחנה/שרת ומעוניין לשמר אפשרות גישה עתידית אליהם - מה שמכונה גם C2 או C&C (קיצור של Command & Control). הנחת העבודה היא שבכל ארגון, תרחיש כזה הוא שאלה של זמן, לא התכנות. חלק מפתרונות הסייבר המוטמעים בארגונים מתוכננים להתמודד עם תרחיש כזה וגזרותיו.

טכניקה נפוצה לשמר את האפשרות לגישה העתידית היא להתקין תוכנה זדונית מוסתרת בתחנה שנפרצה (APT או Advanced persistent threat). זו מאפשרת לתוקף, באמצעות השליטה בהתקן הקורבן, להשיג מידע נוסף על נכסים בארגון כגון מסדי נתונים ,להתפשט לתחנות אחרות ("תנועה רוחבית"), להשיג הרשאות חזקות שיאפשרו חילוץ מידע מאותם נכסים (Privilege escalation) ולבצע עוד סוגי התקפות רבות ומגוונות שיתוזמנו באופן המיטבי לתוקף.

אחת השיטות לשמר גישה לתחנה הפרוצה באמצעות הAPT היא יצירת ערוץ תקשורת מסווה עם התוקף. ישנן שיטות שונות לבצע זאת – על ידי שימוש בערוצי תקשורת לגיטימיים כגון דוא"ל או DNS, יצירת תעלה מאובטחת מתוך התחנה החוצה (REVERSE SHELL) במגוון פרוטוקולים ועוד שיטות רבות אחרות. הטכניקות ליצירת ערוצים כאלה השתכללו מאוד וחלק ממימושי ה-C2 עושים שימוש בכימוס (אנקפסולציה) להעברת המידע של התוקף (PAYLOAD). אחת הדוגמאות היא המרת מידע לתמונה ושימוש בתמונה בחתימה בסוף הודעת הדוא"ל.

כיצד מתמודדים היום ארגונים עם הבעיה? בדרך כלל האמצעי הראשון יהיה מנגנון פרו-אקטיבי אחד או יותר כגון FIREWALL, מערכות DLP ושיטות וכלים אחרים. אלו יודעים לנטר ולחסום ניסיונות לייצר ערוץ תקשורת לא מורשה על גבי ערוץ תקשורת לגיטימי (אנקפסולציה) באמצעות ניתוח נפח וסוג התעבורה, הצפת חריגות ועוד. מנגנון הגנה נוסף הוא ניטור ותיעוד ניסיונות גישה/יציאה חשודים, גם אם נחסמו באופן פרו-אקטיבי וניתוח שלהם במערכת איסוף לוגים מרכזית (SYSLOG\SIEM) שמאפשר לקבל תמונת מצב רחבה יותר על סוג האיום ובמקרים רבים, לחסום אותו באופן רוחבי.

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

תיעוד כחרב פיפיות

קיימים פתרונות ושיטות נוספים מעבר למה שציינתי. עם זאת, ארצה להתמקד בשיטות המייצרות תיעוד היות והן חרב הפיפיות שמאפשרת את מימוש טכניקת ה-C2 שאתאר בהמשך. את המימוש הרעיוני ניתן לבצע עבור כל מערכת מידע שמתקיימות עבורה הנחות היסוד הבאות: הארגון כבר הותקף (אנחנו בשלב ה-Post-Infiltration) והושגה גישה לתחנה/מערכת. הושגו הרשאות משתמש המאפשרות הטמעת קוד זדוני (APT) מסווה בתחנה. קיימים מנגנונים פרו-אקטיביים (FIREWALL ושות') שלא מאפשרים גישה לא מורשית לתחנה החוצה/פנימה. כל ניסיון גישה לא מורשה מבחוץ מתועד – המידע המינימלי שמתועד בלוג הוא כתובת ה-IP שניסתה לגשת לתחנה וחותמת הזמן שבו נעשה הניסיון (רוב המערכות מתעדות הרבה מעבר לכך). הושגו הרשאות לגישה וקריאה של הלוג שבו מתועדים ניסיונות הגישה (Relatively Low privilege escalation).

המטרה של התוקף היא לייצר ערוץ תקשורת C2 מסווה שיאפשר העברת מידע לתחנה מבחוץ למרות קיום ה-FIREWALL שחוסם ומתעד כל ניסיון תקשורת לא מורשה. הטכניקה אותה אני מכנה Indirect Bypass מסתמכת על כך שכל ניסיון גישה - בין אם מורשה ובין אם לא - מכיל רכיבי מידע שעבור חלקם ניתן לבצע מניפולציה ושינויים (data tempering) והם מתועדים בקובץ הלוג שאליו יש לנו גישה. ההוכחה בוצעה מעשית בתנאי מעבדה על Firewall של חברה ידועה מאד.

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

קצת הסבר לגבי קידוד המידע. כל מידע שעובר באופן דיגיטלי ניתן לייצוג בדרכים רבות, קיימים מספר פורמטים סטנדרטיים לייצוג מידע שמכונים בעולם המחשבים גם "בסיסים". למשל בסיס עשרוני ישתמש בטווח הספרות 0-9 לייצוג, בסיס הקסדצימלי יהיה מורכב מהתווים 0-9 והאותיות A-F ובסיס בינארי מ-0-1. מעבר לבסיסים המוכרים, אפשר לקודד כל מידע בכל אופן שנרצה גם לבסיסים פחות קונבנציונאליים. תחשבו על רצף הגנום האנושי שמורכב מארבע אותיות בלבד או כתובת IP. כתובת IPv4 מורכבת מארבע אוקטטות שכל אחת מורכבת ממספרים בין 0-255 המהווים 32bit של מידע.

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

בשביל לפשט מעט את ההסבר, נצא מנקודת הנחה שכל כתובת IP ניתנת לשימוש. מדובר במרחב של 32bit לכל ניסיון התקשרות שיתועד בלוג ויכול לשמש אותנו להעברת מידע. ניקח את כל המידע שאנחנו רוצים להעביר, למשל קוד זדוני שתופס נפח של 1KB נחלק אותו למקטעים של 32BIT ונקודד את המקטעים האלו למערך כתובות IP מזויפות. בסוף התהליך נקבל מערך של 256 כתובות IPv4 (החישוב: 1KB\32bit) שעבור כל אחת מהן ניתן לייצר ניסיון התקשרות עצמאי שיחסם ויתועד בלוג - למשל ביצוע PING וכו'.

ה-APT שהושתל במערכת יקרא מהלוג את כל הפניות שהFIREWALL תיעד וחסם ואז נבצע עבורם את התהליך ההפוך ונקבל את PAYLOAD המקורי שרצינו להעביר. זה לא כל כך משנה איזו מערכת קצה, סוג פניה שבוצעה והאם היא הצליחה או לא, כל עוד היא תתועד בלוג. אחד הדברים היפים בשיטה הזו שאלגוריתם הקידוד, זה שהופך את המידע לכתובת IP, יכול להיות דינמי ולהקשות מאוד גם על כלי הגנה מתוחכמים ומבוססי A.I לזהות תבניות חריגות. בסופו של תהליך מדובר בשחלוף בין כמות המידע שנרצה להעביר ביחידת זמן ביחס לאמינות ורמת הקושי שנרצה להערים על מוצרי ההגנה. תוקף יכול להחליט שרק האוקטטה השלישית בכתובת ה-IP תשמש לקידוד מידע ושכל ניסיון התקשרות יבוצע בהבדלים של דקות/שעות/ימים.

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

***

דור עמית הוא שותף-מייסד בחברת סייברארט המתמחה בפתרונות אבטחת מידע וסייבר

כתובת מייל:  [email protected]

 

אולי יעניין אותך גם