כך תיצרו מוצר שמשלב בין Security ל-CCA

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

 South_agency/ Getty Images Israel

צלם/תמונה: South_agency/ Getty Images Israel

מאת אמיר שור, Security Engineer ב-TD Bank Innovation Center

בנקים, חברות אשראי ושאר נותני שירותים פיננסיים הם יעד פופולרי במיוחד לתקיפה של האקרים; חברה פיננסית ממוצעת בארה”ב תותקף כ-30 פעמים בשנייה – פי 300 מאשר עסקים אחרים. מלבד הסכנה לפרטי הלקוחות הרגישים, עודף אירועי האבטחה והמחסור בכוח אדם איכותי מאלץ את צוותי האבטחה של ארגונים אלה לפעול באופן תגובתי. כך, במקום לבחון את מערך ההגנה לרוחבו על מנת למנוע אירועים עתידיים, הצוותים נאלצים לעסוק בעיקר בתיקונים מקומיים כתגובה לתקריות אבטחה.

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

הדרישות מהמוצר

הדרישה העיקרית של החברה מהמוצר היא לאפשר לבודק להריץ מגוון רחב של טקטיקות, טכניקות ופרוצדורות (TTPs) על עמדות קצה בלחיצת כפתור. למשל, Local Account Discovery או New Service לצורך Persistence. כל טכניקה, אותה אנו מכנים מתקפה (Attack), מפותחת מראש באופן גנרי ורצה על מכונה וירטואלית שמדמה מחשב בארגון. כל הטכניקות שעוברות הטמעה צריכות לעמוד בדרישות הבאות:
– לרוץ באופן מהיר ואמין על מחשב מרוחק
– לתמוך במגוון מערכות ההפעלה והמכונות שיש בארגון
– להתאים את הסביבה לסוג המתקפה ולוודא את תוצאותיה באופן אוטומטי לחלוטין

אם כן, יש צורך בטכנולוגיה שתאפשר לנו להריץ מתקפות מורכבות מרחוק, על כמה מחשבים מסוגים שונים במקביל. בנוסף, כדי לתמוך ב-TTPs מסוימים וכדי לדמות את הארגון שלנו, יש צורך בתשתיות מותאמות שניתן להגדיר בצורה אוטומטית (למשל, Domain ב-Windows Server או שרת של מוצר פנימי אחר).

הפתרון

על מנת לענות על צרכים אלה החלטנו להטמיע במוצר שלנו CCA Tool בשם Salt (פירוט בהמשך), כל המתקפות שאנו מפתחים מבוססות על מודולים שלו ובאמצעותו אנו מריצים אותן. בנוסף, בחרנו להשתמש גם ב-Ansible, מוצר מתחרה של Salt, בשביל לספק לעצמנו בקלות את התשתית שתאפשר לנו לבדוק ולהריץ את המתקפות האלו.

שני המוצרים האלה מגיעים מתחום שנקרא Configuration Management – תהליך מעולם הנדסת המערכות, שעוסק בכינון ושימור העקביות בין המאפיינים בפועל של מוצר לבין הדרישות והתכנון שלו. בעולם הנדסת התוכנה התפתח תהליך דומה בשם Software Configuration Management – SCM שמאפשר למהנדסים לעקוב ולשלוט על שינויים בתוכנה וכן לנהל את הגרסאות שלה. כיום, בעידן האוטומציה, התחום מזוהה גם עם עולם ה-DevOps תחת השם Continuous Configuration Automation – CCA, שעוסק בכלים ובפרקטיקות שמאפשרים אוטומציה של יצירה, תפעול והגדרה של תשתיות או תוכנה.

אז מה זה Salt? מדובר בכלי CCA, וככזה הוא מיישם גישה בשם Infrastructure as Code – IaC, ניהול תשתית מבוסס קוד. במקום לנהל תשתית דרך UI או Shell, הקוד שאנחנו כותבים מגדיר את הסביבה. המתקפות שפיתחנו ב-Salt רצות באופן מהיר ואמין יותר מאשר אם היינו מריצים אותן בצורה ידנית, משום שהוא מאפשר שימוש במגוון רחב של מודולים שנכתבו מראש ב-Python. את המודולים האלה אנחנו יכולים להריץ באופן מרוחק על Agents שנקראים Minions, והמכונה שמנהלת את כל התהליך נקראת Master. כל מחשב, לרבות כזה שמדמה מחשב בארגון שלנו, יכול להריץ Salt.

כדי לפתח ולהריץ את המתקפות, אנחנו משתמשים בעיקר ב-2 סוגים של מודולים – Execution ו-State. אלו מאפשרים לנו להריץ קוד מותאם אישית על ה-Minion, לשנות בו הגדרות, להתאים אותו לצורך משימה מסוימת ולתת לנו חיווי על ההצלחה של צעדים אלה. לכן, ניתן להתייחס ל-Salt גם כמנוע להרצה מרחוק.

אנחנו בונים את המתקפות שלנו ב-State files, קבצים שנכתבים ב-YAML שבהם אנו מורים ל-Master אילו פונקציות מהמודולים להריץ על ה-Minions המבוקשים. ה-Master יספק לנו את החיווי על הצלחת הצעדים או הפקודות שהגדרנו ב-State file. ניתן להריץ State file על כמה Minions בו זמנית, כך שגם ניתן להריץ מתקפה על כמה מחשבים בו זמנית.

Security Testing באמצעות Salt

להזכירכם, Salt הוא רק חלק מהמוצר. אנחנו יכולים להפעיל את ה-Master על שרת האפליקציה שלנו ולאפשר לבודק להריץ מתקפה על מכונה לבחירתו דרך ה-UI שלנו. מאחורי הקלעים תישלח פקודה ל-Master להריץ אסופה של State files על אחד או על כמה מה-Minions שכפופים אליו. תוצאות המתקפה, שצלחה או לא, יחזרו מה-Master וישוקפו לבודק דרך ה-UI.

אך ה-Flow הזה אינו העיקר, אלא האופן שבו אנו כותבים מתקפה ב-YAML. בחרתי במימוש של Reverse Shell Connection על Windows, אותו אציג בצורה מתודית על גבי YAML ב-Salt. ראשית, כדי שנוכל לבדוק או להריץ מתקפה כזו נצטרך 3 מכונות – Master אחד שינהל את התהליך; שני Minions – מכונת Windows שמדמה מחשב בארגון ומהווה את ה-Target; ומכונת Linux שמהווה את ה-Attacker. על כל Minion ירוצו הפקודות הספציפיות שמתאימות לתפקיד שלו.

כעת נעבור לשלב הקונפיגורציה הוא ה-State file הראשון, שתפקידו להחיל את התנאים המקדימים למתקפה. במתקפה זו אנו מניחים שיש אחיזה ראשונית ביעד ואת הימצאותו של Utility מתאים. כבר יש לנו “אחיזה” ב-Target מתוקף היותו Minion, ונשאר רק להוריד לתוכו Netcat, שמאפשר קריאה וכתיבה דרך TCP:

ב-State file הבא נריץ את המתקפה עצמה. ב-Attacker נאזין לחיבור מה-Target, וב-Target נתחבר ל-Attacker:

בהנחה שה-Return Code של כל צעד שהגדרנו יהיה 0, Salt יחשיב את ה-State file כהצלחה. ב-State files הבאים אנחנו יכולים לוודא את הצלחת התהליך באופן מדוקדק יותר באמצעות ה-log שנכתב ל-/tmp/nclog. נוכל גם להחזיר את ה-Minions למצבם ההתחלתי.

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

הכתבה בחסות TD Bank

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

כתב אורח

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

הגב

הגב ראשון!

avatar
Photo and Image Files
 
 
 
Audio and Video Files
 
 
 
Other File Types
 
 
 

* היי, אנחנו אוהבים תגובות!
תיקונים, תגובות קוטלות וכמובן תגובות מפרגנות - בכיף.
חופש הביטוי הוא ערך עליון, אבל לא נוכל להשלים עם תגובות שכוללות הסתה, הוצאת דיבה, תגובות שכוללות מידע המפר את תנאי השימוש של Geektime, תגובות שחורגות מהטעם הטוב ותגובות שהן בניגוד לדין. תגובות כאלו יימחקו מייד.

wpDiscuz

תגיות לכתבה: