לפני מספר ימים פרסם האקטיביסט th3j35t3r פוסט בבלוג שלו, המתאר כלים לאיסוף מידע בהם הוא משתמש. בין הכלים המוכרים פרסם גם את הכלי שכתב בעצמו. החלטתי להוריד אותו ולבדוק על מה מדובר.
על מה מדובר?
בפוסט תיאר Jester את הכלי בעזרת מילים ומושגים מפוצצים, כגון חשאי
, מודולרי
, מונע התרעות שקר
והזכיר שהכלי בודק למעלה מ- 6500 פגיעויות בלי לגעת בשרת הקרבן, אך החסיר לומר פרטים טכניים.
הורדתי את הכלי במכונה וירטואלית והתחלתי לחקור קודם כל את קוד המקור. מדובר על קובץ zip המכיל בתוכו שלושה קבצים – סקריפט PHP, קובץ SQL ו- readme. היה ברור מראש שמדובר על סקריפט שמחפש מידע על היעד במקורות חיצוניים, הרי אחרת אי אפשר לטעון כי הוא לא ניתן לאיתור. אבל בעצם מדובר על משהו יותר פשוט, אך לא פחות יעיל – הכלי מהווה אוסף של Google dorks ושאילתות חיפוש רגילות שנועדו לאתר קבצים, גרסאות וסוג המערכות בנתיבי האתר שיכולים להצביע על חולשה. לאחר הרצת השאילתה נבדק האם גוגל החזיר תוצאות חיפוש. במידה וכן, זה נרשם בדו"ח. לא נעשה שימוש בשום שירות אחר מלבד גוגל והכלי אכן אינו פונה אף פעם ישירות לאתר הנבדק.
איך זה נראה מבפנים?
בסיס הנתונים מהווה טבלה אחת עם 6540 רשומות, כל אחת מהן היא שאילתת חיפוש והסבר קצר. המודולריות אכן קיימת בכך שניתן בצורה קלה להוסיף רשומות לטבלה עם החיפוש הנדרש והכלי יבצע חיפוש זה באחת האיטרציות.
הסקריפט עצמו גם דיי פשוט – לולאה העוברת על כל רשומה שנשלפה מהטבלה ומריצה את השאילתה מול גוגל עם הוספת דגל site
, כך שהשאילתה הסופית נראית כך, לדוגמה:
intext:"vbulletin" inurl:admincp site:www.saltedhash.co.il
בנוסף, אם התוצאה חיובית, הסקריפט מעדכן את שדה "השכיחות" בטבלה עבור הרשומה הרלוונטית. כלומר, אם נשתמש באותו בסיס הנתונים לאורך זמן, נוכל לבנות סטטיסטיקה אילו סוגי פגיעויות נפוצות יותר.
איך זה עובד?
כדי להתחיל צריך קודם כל לייבא את התוכן של בסיס הנתונים ולעדכן את פרטי התחברות ל- MySQL בתוך הסקריפט. לאחר מכן ניתן להריצו בעזרת הפקודה php foxone target
. הכלי בוחר את כל הרשומות מהטבלה ממוינות בצורה אקראית ומריץ את השאילתות מול גוגל. לפי תוצאות החיפוש הכלי מחליט האם התשובה חיובית או לא. קיימת גם בדיקה האם גוגל זיהה את הבקשות כנשלחות ע"י בוט וממתין במידה וכך. בסופו של דבר, הבקשה הנשלחת נראית בסגנון הבא:
החלטתי להריץ את הכלי מול גיבוב ממולח. רציתי לוודא שהכלי אכן אינו ניתן לאיתור. צריך להבין, שלא מדובר רק על הלוגים של האתר! מכיוון שנעשה שימוש כבד בחיפוש של גוגל, חשוב גם שלא יופיעו שאילתות חשודות ב- Google Webmaster Tools. מזגתי בירה, הפעלתי Wireshark, שמתי tail -f
על קובץ הלוג באתר והרצתי את הסקריפט.
לאחר יותר משלוש שעות ריצה… לא קיבלתי כלום. כנראה שוורדפרס בגרסתו הנוכחית המותקן באתר לא תואם אף חיפוש בטבלה. חשבתי כבר להקים אתר חדש עם DVWA או משהו בסגנון, אבל לא ראיתי בכך עניין – בסופו של דבר, הכלי רק מחפש תוצאות בגוגל.
רק כדי לוודא שהכול עובד תקין, הוספתי שורה inurl:saltedhash.co.il
לטבלת החיפוש, מחקתי את כל השאר כדי לא להמתין הרבה זמן והרצתי שוב את הסקריפט. הפעם הכלי התריע על תוצאה חיובית.
אחרי הרצה ביצעתי את הצעדים הבאים:
- בדיקת הלוגים באתר – לא הייתה התחברות;
- חקירת תעבורה שהוקלטה – אין אף פניה ישירה לאתר;
- בדיקת שאילתות חיפוש ב- Google Webmaster Tools – לא נמצאו שאילתות חשודות. זה הגיוני מכיוון שהסקריפט לא ניגש לקישורים בתוצאות החיפוש, מה שברור משני הסעיפים הקודמים.
הערה: תרם הצלחתי להריץ את הכלי בצורה תקינה, היה צורך לבצע קצת שינוים בקוד. כנראה שיש בעיה עם עברית או עם אורך המחרוזת בקידוד UTF-8. והיו עוד כמה תיקונים נוספים.
לסיכום
צעצוע מעניין. ללא ספק שימושי ביותר לביצוע גשוש מקדים לחקירה מעמיקה. גם אוסף שאילתות החיפוש מכובד ביותר וזה לפי דעתי הערך האמתי שבכלי (למרות שהוא קצת מיושן). מצד שני, אני דיי בטוח שיש כאלה שכתבו משהו דומה לצרכים אישיים – בסופו של דבר, זה הוא רק אוסף שאילתות חיפוש. Jester הזכיר גם בבלוג שאולי ישכתב את הכלי ב- Perl עם הוספת threads. אכן לא היה מזיק להפחית קצת את זמן החיפוש.
בנימה זו הייתי רוצה לומר שעקרון ה- KISS עובד באבטחת מידע באותה מידה כמו בתכנות. לא צריך להמציא את הגלגל מחדש. המידע נמצא אי שם, צריך רק למצוא אותו.