סיווג התקפות מסוג SQL INJECTION

19
סססס סססס:236349 סססססס: סססססססס ססססס[email protected] סססססס סססס[email protected] ססססס: ססססס ססססס ססססס סססס:09/2013

description

סיווג התקפות מסוג SQL INJECTION. מספר קורס: 236349 מגישים : מיכאלביץ לירון [email protected] רויטמן יוסף [email protected] מנחים : עמיחי שולמן תאריך הגשה: 09/2013. הקדמה. מטרת הפרויקט : סיווג התקפות מסוג SQL Injection ולמידה של טכניקות סיווג. - PowerPoint PPT Presentation

Transcript of סיווג התקפות מסוג SQL INJECTION

Page 1: סיווג התקפות מסוג  SQL INJECTION

236349מספר קורס:   

מגישים:

[email protected] מיכאלביץ לירון[email protected]רויטמן יוסף

מנחים:

עמיחי שולמן

09/2013תאריך הגשה:

Page 2: סיווג התקפות מסוג  SQL INJECTION

: מטרת הפרויקט

ולמידה SQL Injectionסיווג התקפות מסוג של טכניקות סיווג.

Eclipse Windows 7/XPסביבת פיתוח: Pythonשפת תכנות:

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

Page 3: סיווג התקפות מסוג  SQL INJECTION

 את הקלטים מצאנו באמצעות שלושה מקורות:

.Imperva. בעזרתו של עמיחי שולמן ו-1.SQLIקיבלנו מהם גישה למסדי נתונים המכילים בין היתר התקפות מסוג

 . מצאנו קלטים באינטרנט. 2

. /http://www.textfiles.com/storiesאת החוקיים לקחנו מן האתר -  . sqlmap שתקפנו אותו באמצעות תוכנה חופשית הנקראת SQLI. הקמנו אתר רגיש ל-3

 

Page 4: סיווג התקפות מסוג  SQL INJECTION

.1 ל-0המסווג מקבל שאילתה ומחזיר מספר בין .SQLI התקפה מסוג 1 מציין קלט חוקי ו-0

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

המרה, סימנים מיוחדים \ מתמטיים וכדומה.

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

הגדרת פו' הסיווג: שלב ג – להיות:F בחרנו את פו' הסיווג G1,G2,…,Gn קבוצות nבהינתן

F)W1,W2,…,Wn) = 1 1| || |

n n

i jWij Gi Gj

Page 5: סיווג התקפות מסוג  SQL INJECTION

כמו כן לשיפור המסווג ביצענו:

התעלמות מהערות בניתוח השאילתה כשניתן.1.

הרצה של פו' הסיווג פעמיים:2.ולקיחה של הערך הגבוהה יותר מביניהן תוך 'query ועל 'queryעל

צמצום הטקסט שבין כל זוג ' עוקבים.

Page 6: סיווג התקפות מסוג  SQL INJECTION

שעבורם W1,W2,…,Wnאנו החלטנו למצוא את המשקולות פו' השגיאה הריבועית היא מינימלית.

ישנו אלגוריתם יעיל המוצא את המשקולות כאשר השגיאה היא .(Least Squares(במינימום ריבועים

ולכן המטרה הייתה למצוא את הקבוצות שנותנות את התוצאה הטובה ביותר לפו' השגיאה. מציאת הקבוצות בוצעה ע"י

ניסיון וטעיה.

2 2( ( ) 0) ( ( ) 1)query good query bad

E f query f query

Page 7: סיווג התקפות מסוג  SQL INJECTION

כמו כן הוחלט לתת יחס שונה לשגיאות על הקלטים הטובים לעומת הרעים ולכן חושבה:

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

2 2( ( ) 0) (1 ) ( ( ) 1)query good query bad

E w f query w f query

Page 8: סיווג התקפות מסוג  SQL INJECTION

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

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

תאריכים, אותיות לא אנגליות, וכולה. שורות של אוסף נרחב של 1200קלט התקפי א - קלט בעל

התקפות. מצאנו חלק באינטרנט וחלק קיבלנו ממערכת Imperva.

שורות של התקפות שנוצרו 12000קלט התקפי ב - קלט בעל . הרבה מהשורות דומים מעוד.Sqlmapע"י

שורות של התקפות לא 130קלט התקפי ג - קלט בעל סטנדרטיות.

Page 9: סיווג התקפות מסוג  SQL INJECTION

קלט תקין ב, קלט התקפי בלמידה:קלט תקין ב, קלט התקפי בניסוי:

, נקבל1.0אם נשתמש בסף False positive / False negative = 0.1%, 3%

Page 10: סיווג התקפות מסוג  SQL INJECTION

אין חשיבות מיוחדת 5חשיבות פי

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

false negatives.

Page 11: סיווג התקפות מסוג  SQL INJECTION

2גודל מקסימלי 3גודל מקסימלי

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

גדולים, זה אכן ישפר את התוצאות.

Page 12: סיווג התקפות מסוג  SQL INJECTION

קלט תקין א, קלט התקפי אלמידה:קלט תקין א, קלט התקפי אניסוי:

, נקבל1.0אם נשתמש בסף False positive / False negative = 0.1%, 8%

Page 13: סיווג התקפות מסוג  SQL INJECTION

קלט תקין ב, קלט התקפי אלמידה:קלט תקין ב, קלט התקפי אניסוי:

, נקבל1.0אם נשתמש בסף False positive / False negative = 0.1%, 10%

Page 14: סיווג התקפות מסוג  SQL INJECTION

קלט תקין ב, קלט התקפי א, שורות זוגיותלמידה:קלט תקין ב, קלט התקפי א, שורות אי-זוגיותניסוי:

, נקבל1.0אם נשתמש בסף False positive / False negative = 0.1%, 9%

Page 15: סיווג התקפות מסוג  SQL INJECTION

קלט תקין א, קלט התקפי אלמידה:קלט תקין ב, קלט התקפי בניסוי:

, נקבל1.0אם נשתמש בסף False positive / False negative = 0.1%, 1%

Page 16: סיווג התקפות מסוג  SQL INJECTION

קלט תקין ב, קלט התקפי אלמידה:קלט תקין א, קלט התקפי בניסוי:

, נקבל1.0אם נשתמש בסף False positive / False negative = 0.1%, 2%

Page 17: סיווג התקפות מסוג  SQL INJECTION

קלט תקין ג, קלט התקפי גלמידה:קלט תקין ג, קלט התקפי גניסוי:

התוצאות גרועות מפני שזה אוסף קטן של קלטים לא סטנדרטים, וההתקפות מכילים שורות כמו “5.0 ,id=4.2”כרגע המערכת לא בודק עבור קלטים כאלו .

Page 18: סיווג התקפות מסוג  SQL INJECTION

קלט תקין א, קלט התקפי אלמידה:קלט תקין ג, קלט התקפי גניסוי:

Page 19: סיווג התקפות מסוג  SQL INJECTION

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

פחות טובה. אלו הם ההתקפות הקצרות והטקסטים המאוד ארוכים המכילים תווים

מיוחדים, בעיקר '. בעתיד אפשר לשפר את המערכת ע"י משחק

עם הקבוצות, הוספת פו' חדשות, או שינוי שיטת פו' הסיווג