170 likes | 273 Views
Project in Computer Security. Expanding Web Application Firewall Testing Framework Supervisor : Amichai Shulman Students : Gil Ovadia & Shooki Matzliah. Introduction.
E N D
Project in Computer Security Expanding Web Application Firewall Testing Framework Supervisor: Amichai Shulman Students: Gil Ovadia & ShookiMatzliah
Introduction Web Application Firewall (WAF) הן טכנולוגיית אבטחת המידע היעילה ביותר להגנה על יישומי אינטרנט מפני התקפות. שכן הם מסוגלים להפעיל זיהוי בזמן הרצה וחסימה של התקפות מסוגים שונים. WAF הופכים להיות נפוצים יותר מאי פעם. עם זאת, כלי הבדיקה הקיימים מודדים את כמות התעבורה הזדונית שלא זוהתה על ידי WAF ואינה עוסקת במדידת כמות התעבורה הלגיטימית שהתגלתה בטעות כזדונית. (WAF Testing Framework, A.K.A WTF)קיימת תוכנת בדיקות ל-WAF שלוקחת בחשבון את שני ההיבטים של הגנה - לאפשר תנועה לגיטימית ולגלות תנועה זדונית.המסגרת מורכבת מכלי וקבוצה של קבצי תצורה שמייצגים גם את ההתקפות של תעבורה לגיטימית. הכלי מספק תעבורת רשת לשרת יישומים, באמצעות WAF, לפי הוראות מקבצי התצורה. הכלי לאחר מכן מודד את התוצאה של כל בקשה בנפרד ומשווה לתוצאות הצפויות (לחסום או לאפשר). לבסוף, הכלי מסוגל לייצר דוחות מפורטים המראים כיצד מתנהג ה-WAF נגד תצורת הבדיקה. סוגי התקיפות עליהם התבססנו: RFI, SQLi, XSS.
Evasion Virtual Patching: תהליך שבו ה-WAF משמש כתיקון לפרצות אבטחה שקיימות באפליקציה מבלי הצורך בעריכת קוד האפליקציה. תהליך זה מתבצע בשני שלבים: Activation: השלב בו ה-WAF מזהה שרצף המידע מיועד לנקודה רגישה באפליקציה ועליו לנתח את המידע ולזרוק נסיונות תקיפה. זוהי נקודת חולשה של ה-WAF משום שאם ה-WAF לא מזהה שעליו לפעול עבור בקשה מסוימת (למשל כי שדה ה-Path לא מתאים לחוקים שהוגדרו עבורו), נוכל "להלביש" על בקשה זו התקפות כרצוננו. Verification: זהו השלב שלאחר ה-Activation, בו ה-WAF קיבל החלטה שעליו לפעול ולנתח את הבקשה שנשלחה על מנת לגלות דפוסי תקיפה. כאן ניתן לנצל מקומות בהם התנהגות ה-WAF לא תואמת בדיוק את התנהגות התוכנית (Impedance Mismatch), ניתן לעיתים לזהם במקצת את תוכן הבקשה שנשלחה, על מנת להתחמק מכללי ה-WAF, מבלי לפגוע בתוכן ההתקפה אותו אנו מנסים להעביר.
Goals and Objectives 1 2 3
Tools מערכת הבדיקות כתובה בשפת Java, השתמשנו בסביבת IntelliJ IDEA אפליקציית WebGoat - זוהי אפליקציית דמה בלתי מוגנת עליה ביצענו את כל ההתקפות. כל התקפה על אפליקציה זו נחשבת כמוצלחת, ומכאן ניתן היה לבודד את התנהגות WAF מסוים אשר רץ מעל אפליקציה זו. Imperva WTF- הכלי לבדיקת WAF שפותח בחב' Imperva,אותו אנו מרחיבים. Snort - זהו WAF אשר הקמנו בין הלקוח לבין שרת האפליקציה ואשר שימש אותנו כ-WAF שעליו הרצנו את מערכת הבדיקות.
Tools Mod Security - זהו WAF נוסף אשר הקמנו בין הלקוח לבין שרת האפליקציה, בעל קוד פתוח. XML - צורת העברת הנתונים לצורך קונפיגורציה של מערכת הבדיקות. זהו האופן בו מתוכנתות התקיפות והתרחישים אותם מריץ ה-WTF על האפליקציה. מימשנו את טכניקות ההתחמקות באמצעות קבצי קונפיגורציה מסוג זה. Charles Proxy - זהו כלי המאפשר תפיסת בקשות ותגובותHTTP שעוברות ברשת. באמצעותו ניתן לשנות בקשות בעת שליחתן ולהקליט תעבורת רשת. השתמשנו בו על מנת לשחזר נסיונות התקפה ולהקליט תעבורת רשת.
Working Process הרצת תקיפות סטנדרטיות (ללא Evasion) בנוכחות ModSecurity:
Working Process הרצת תקיפות סטנדרטיות (ללא Evasion) בנוכחות Snort ללא הפעלת כלל Paranoid:
Working Process הרצת תקיפות סטנדרטיות (ללא Evasion) בנוכחות Snort כאשר כלל Paranoid מופעל:
Working Process הרצת תקיפות RFI על Snort:
Working Process הרצת תקיפות SQLi על Snort:
Working Process הרצת תקיפות SQLi על ModSecurity:
Working Process הרצת תקיפות XSS על Snort:
Working Process הרצת תקיפות XSS על ModSecurity:
Conclusions גם ללא טכניקות Evasion, לא נוכל למנוע תקיפות ובו-זמנית ליצור 0% False-Positive. יש Trade-offמסוים בין רמת ההגנה לכמות התעבורה הלגיטימית שתחסם. מרבית הטכניקות שיישמנו הצליחו לעבור את ה-Firewalls עליהם בדקנו – ניתן ליישם את הטכניקות הנ"ל ולתקוף כל אפליקציה מוגנת כיום באחוזי הצלחה גבוהים. עבור תקיפות המבצעות שימוש בפרמטרים – כגון SQLi אשר משתמשת בשדות קלט, קשה יותר לבצע Evasion בשלב ה-Verification. בכל הנוגע ל-WAF Testing, בדיקה אשר אינה כוללת בתוכה טכניקות Evasion לא תהיה מספקת.