280 likes | 460 Views
פרויקט באבטחת מידע (236349). 03/09/2012. Analyzing hacker activities in honey pots. אלכסיי גורבטובסקי שמעון קמה מנחה: עמיחי שולמן. Honey pots. Honeypot הינו שרת שנועד למשוך תוקפים במטרה ללמוד את טכניקות הפעולה שלהם. רשת TOR ו- Secret.
E N D
פרויקט באבטחת מידע (236349) 03/09/2012 Analyzing hacker activities in honey pots אלכסיי גורבטובסקי שמעון קמה מנחה: עמיחי שולמן
Honey pots • Honeypot הינו שרת שנועד למשוך תוקפיםבמטרה ללמוד את טכניקות הפעולה שלהם.
רשת TORו- Secret • הינה רשת שנועדה לספק אנונימיות ואבטחה באינטרנט. • משתמש מתחבר לשרת Tor כלשהו. שרת זה מתחברבתורו לשרת Tor נוסף באופן רנדומלי, וכן הלאה. • התעבורה מנותבת במסלול אקראי ומוצפן. • מערכת ה-Secret הינה תוכנה היושבת ב-Exit nodeבשרשרת Tor ואוספת בקשות Http העוברות בשרת:כ-60,000 בקשות ביממה.
טרמינולגייתHTTPבסיסית www.example.com /pages/login.php ?user=John12 host url http parameters • HTTP headers • קבוצה של זוגות (name, value). • נשלחים עם כל HTTP request/resonse.
מטרות • למידת דרכי הפעולה של תוקפים • יעדים איכותיים? • התקפות נפוצות? • זיהוי אפקטיבי של תעבורה זדונית • אבחנה בין תעבורה זדונית ללגיטימית • זיהוי מטרת ההתקפה • מכנה משותף • מידת ההצלחה
SQL Injection • מתבצעת על-ידי הכנסת שאילתת SQL לשדה קלט מהמשתמש. • התקפה מוצלחת עשויה: • לחשוף מידע רגיש (למשל ע"י SELECT). • לגרום לשינויים במסד הנתונים (UPDATE, INSERT ו-DELETE).
SQL Injection דוגמא לקוד לא בטוח • הקוד בונה שאילתת SQL באופן דינמי: Query = "SELECT * FROM users WHERE name = '" + username + "';" • המשתמש מכניס ל-username: • a'; DROP TABLE users; SELECT * FROM users WHERE '1'='1 • השאילתא שתתקבל: • SELECT * FROM users WHERE name='a'; DROP TABLE users; SELECT * FROM users WHERE '1'='1';
אתר הולנדי- http://www.vvocm.nl/client/contact. • 10 שאילתות SQL שהוזרקו לשדה ה-User Agentבפרק זמן של 54 שניות (אירוע כל 5.4 שניות).
השאילתא sqlmap/1.0-dev (r4766) (http://www.sqlmap.org)' AND 4585=IF((ORD(MID((SELECT DISTINCT(IFNULL(CAST(schema_name AS CHAR),0x20)) FROM INFORMATION_SCHEMA.SCHEMATA LIMIT 0,1),6,1))>96),SLEEP(11),4585) AND 'Cjeo'='Cjeo • ההבדל מאירוע לאירוע- במספר המסומן (מימין לשמאל):112, 120, 116, 114, 113, 114=!, 64, 96, 112, 104. • מה ניתן ללמוד מהשאילתא?
מדוע הזרקת SQLזו מופיעה ב-User Agentולא כערך שלפרמטר HTTP, כמו ברוב המתקפות מסוג זה? • האתר עשוי לשמור User Agents של משתמשים במסד הנתונים שלו. • שאילתת SQL זדונית שהושתלה במסד הנתונים של האתר עלולה להוציא ממנו מידע רגיש (לקוחות, חשבונות בנק...).
Directory Traversal מתקפה בה גורם זדוני מנצל פרצה במערכת הרשאות הקבצים באתר מסויים: • האתר מצפה לקבל קלט המהווה נתיב לקובץ. • התוקף מזין נתיב לקובץ בשרת, שלמשתמש לא אמורה להיות גישה אליו. • עם קצת מזל- הגישה מתאפשרת.
Directory Traversal דוגמא לקוד לא בטוח קוד שרת: <?php $template='red.php'; if(isset($_COOKIE['TEMPLATE'])) $template=$_COOKIE['TEMPLATE']; include("/home/users/phpguru/templates/".$template); ?> קוד משתמש: GET /vulnerable.php HTTP/1.0Cookie: TEMPLATE=../../../../../../../../../etc/passwd
אתר גרמני- produkte.embedded-projects.net/index.php. • 79 אירועים בפרק זמן של דקה ו-53 שניות • אירוע כל 1.4 שניות.
module • השם הראשון נראה לגיטימי. • השאר- מרמזים על פניה לקובץ הסיסמאות ב-Unix. • מבדיקה שלנו- מוצג עמודשגיאה עבור הקלט הנ"ל. • Eu6EPhgd • /etc/passwd • /etc/passwd%00 • /../etc/passwd • /../etc/passwd%00 • /../../etc/passwd • /../../etc/passwd%00
טכניקת ה-null byte • ברוב המקרים, בעל האתר יעדיף להוסיף סיומת בעצמו: • www.example.com/index.php?p=news • www.example.com/index.php?p=news.php • ניתן לעקוף את המגבלה על-ידי %00, המתפרש ל-\0. • כמו במחרוזת רגילה- כל הקטע אחרי \0נזרק: • /../../etc/passwd%00.php
דרכי התגוננות • שמירת כל הדפים בתיקיה אחת, הרשאות רק אליה. • Parser-ים למחיקת תווים בעייתים מהקלט: /, %00 • לא להשתמש ב-dynamic include: • <?php include($_GET['page']);?> • קוד חלופי: • if ($_GET['page']==“news”) {include(“news.php”);} • else {include (“main.php”);}
1 Eu6EPhgd • 2 /etc/passwd • 3 /etc/passwd%00 • 4 /../etc/passwd • // כפולים מותרים ב-Unix, אך Unix מתעלמת מהם. • /home////user//desktop • /home/user/desktopשקול ל: • / כפול, מכשיל במקרים מסוימים פילטרים לזיהוי המתקפה: • (../)+{word}(/{word})* • …43 ..//etc/passwd • 44 ..//etc/passwd%00 • 45 ../..//etc/passwd • 46 ../..//etc/passwd%00
מסקנות • מחרוזות ארוכות - התוקף לא מצליח במתקפה. • ההתקפה מדגישה את החשיבות של בדיקת קלט מהמשתמש. • לא מסתמכים על שכבת הגנה אחת.str_replace("../", '', ($_GET['page'])) • צמצום שטח ההתקפה- מתן הרשאות מינימאליות. • מנגנון לניטור קצב הגעת חבילות- פתרון?
חיפוש דומיינים • התקפה משולבת באמצעות שלושה אתרים: • Web Archive. • Yahoo Site Explorer. • Google. • מעל 2435 אירועים המתפרשים על פני חודש.
Yahoo Site Explorer • השירות אינו פעיל כמעט שנה. • מדוע לבצע גישות לאתר שאינו פעיל כבר זמן ממושך?
תיאור המתקפה • שלושה סוגי אירועים סמוכים שנקלטו במערכת: • חיפוש בגוגל על הערך site:xn--sklepdziecicy-s0b.pl • גישה ל-Yahoo Site Explorer עם הערך http://xn--sklepdziecicy-s0b.pl כפרמטר. • גישה ל-web.archive.org ל-URL: /web/*/www.xn--sklepdziecicy-s0b.pl. • רוב הדומיינים שזיהינו פנויים ועומדים למכירה.
השערה ראשונה • מניפולציה על מנועי חיפוש: • מנוע החיפוש של גוגל עובד בשיטת PageRank. • נרצה שהאתר שלנו יוצבע ע"י אתר אחר בעל דירוג גבוה. • בעזרת Web Archive נעריך כמה זמן האתר פעיל. • בעזרת Yahoo Site Explorer נקבל הערכה לדירוג שלו. • בעזרת גוגל נדע כמה דפים מהאתר מאונדקסים. • ברגע שנמצא דומיין "אטרקטיבי" נקנה אותו ונפרסם בו לינקים לדומיין שלנו.
השערה שנייה • חיפוש דומיינים ל-Phishing: • התחזות לאתר כדי לגנוב פרטים מהמשתמש. • התהליך: • התוקף קונה דומיין בעל visual similarityלדומיין המקורי. • evample.com דומה ל-example.com. • התוקף מקים אתר בעל ממשק זהה לאתר המקורי. • התוקף מפיץ את האתר שלו, ומתיימר להיות האתר האמיתי.
מסקנות ותוצאות • ההתקפה הנפוצה ביותר היא SQL Injection:
מסקנות ותוצאות • יעד התקיפה הנפוץ ביותר הוא ארה"ב. • בעיקר אתרים חברתיים ואתרי עסקים פרטיים.
מסקנות ותוצאות • המערכת מספקת כלי טוב להתבוננות בתעבורה. • המערכת אפשרה לנו למצוא מספר רב של התקפות אך עדיין חלק גדול מהתעבורה לא נותח. • אוטומאציה של התהליך • הגדרת פילטרים למציאת התקפות נפוצות. • בניית רשימה שחורה של אתרים המהווים חממה לתוקפים. • טוב בתור סינון ראשוני של תעבורה. • יזהה רק בהתקפות מוכרות ותבניתיות.