המוסד 2018 חלק 3 - ITSAFE הכשרות סייבר ואבטחת מידע מתקדמות
החלק השלישי:
![תחילת אתגר 3 של המוסד] האתגר מתחיל בקובץ לא ידוע שיורד כאשר לוחצים על הlink.
אם נפתח את הקובץ נקבל את התוכנה busybox, תוכנה ידועה שמכילה בתוכה ערכת כלי linux שימושיים בדרך כלל נפוץ בקרב מערכות embedded.
נריץ את הקובץ ונראה שכתוב שיש לנו hint בתיקיית tmp, ניתן לראות שמדובר בגרסה ערוכה של busybox.
![מסך busybox]
אם אנחנו נריץ Busybox אמיתי מהספריות של לינוקס נראה שאין את השורה הזאת כברירת מחדל:
![רשימת פקודות של ה-busybox]
כך שכנראה יש משהו מיוחד בגרסת הbusybox שהורדנו, לאחר הרצת כל הפקודות נראה שערכו את הפקודה ps:
כך שהמטרה ברורה, עלינו להגיע לקובץ של התהליך 1337 כדי לנתח אותו על מנת שנקבל את הרמז הבא שלנו באתגר.
כך שעלינו להגיע לתהליך באמצעות השימוש בbusybox שהורדנו, ננסה להשתמש בls ולהציג את כל הקבצים בתיקייה tmp:
![הפקודה ls מקודדת שמות תיקיות]
ניתן לראות שערכו את פקודת הls והיא מוסיפה 1 לכל תו לפי האינדקס שלו במילה כך שלתו הראשון מתווסף 1 ולתו השני מתווסף 2 וכו..
נבנה תוכנת עזר שתעזור לנו להשתמש בפקודה ls בצורה נוחה.
![קוד פייתון אשר מבצע את אותו קידוד בדיוק]
אם נשתמש בפקודה הls עם המילה skm נראה שאנו מצליחים לצפות בתוכן הקבצים בתיקייה tmp שלנו ואף מצאנו את הרמז.
אם כך אנו אמורים להצליח לקרוא את תוכן הרמז באמצעות הפקודה cat והנתיב:
`` /skm/.l^Y[cZ`
שקיבלנו מהסקריפט העזר שכתבנו:
התוצאה תראה כך:
נראה שכדי להגיע לתו e יש להשתמש בתו ^ ותווים מיוחדים לא מושפעים מהלוגיקה של תו + אינדקס התו.
כך שכנראה שיש לנו טעות בקוד, לכן ניסנו להבין את הלוגיקה בצורה הבאה:
ניתן לראות שיש חזרה על תווים בגבולות הa-z בלולאה, נבדוק את הטענה על ידי פניה לתו z ונראה האם נקבל a:
כך אחרי שנעדכן את הקוד שלנו נקבל:
על סמך הרמז הסקנו שכנראה התוכנה שהתהליך שלה 1337 שולחת הודעות כלשהם או מבצעות פעולת רשת כלשהי, כך שעלינו לבחון את התיקייה /proc/1337/ כך:
נראה שמי שערך את הקובץ busybox ממש השקיע באתגר הזה, כעת נמשוך את הקובץ exe וננסה לחקור אותו בעצמנו כך:
`` ./busybox cat /oply/1337/tlr > aaa`
אם נבחן את הקובץ מקרוב:
נראה שהקובץ מקבל 2 פרמטרים שהם:
- -u שם המשתמש
- -d שימוש בסיסמא ברירת המחדל שהיא Uw1lLN3v3rG3tM3
אם נסתכל בפקודה busybox ps נראה ששם המשתמש הינו admin:
כך שיש לפנות לכתובת הבאה כדי לקבל את הקובץ:
`` http://35.205.32.11/iso?user=admin&pass=Uw1lLN3v3rG3tM3`
![הורדה של קובץ מצד שרת]
התוכן של הקובץ הינו:
`` iso.iso`
נפתח את קובץ הiso שלנו ונראה שיש בפנים תמונות ממוספרות מ 1 ועד 7
![6 קבצי תמונה ו-thumbs.db שמכיל את כל התמונות בתיקייה ב-cache]
אם תסתכלו מקרוב תראו שחסרה התמונה 3 ויש לנו עוד 2 קבצים thumbs.db ו-vault.
בנוסף נריץ binwalk על הקובץ כדי לקבל עוד נתונים על הiso והקבצים שבו:
![בחינת הקובץ עם binwalk]
נראה שבתיקייה יש גם קבצי html וקובץ מסד נתונים שלsqlite
נמשוך את התיקייה לwindows כדי שיהיה קל יותר לעבוד עם הsqlite
ונפתח את הקובץ vault עם התוכנה SQLiteStudio:
![בחינת הקובץ ב-SQLite]
ניתן לראות שיש לנו 3 קבצים מוצפנים בתוך מסד הנתונים וקובץ html אחד.
תוכן קובץ הhtml נראה כך:
``
אם נסתכל שוב בסיכום הקבצים שיש בתיקייה שביצע binwalk ניתן לראות שחסרים כמה קבצי תמונה, לכן נסתכל על הthumb.db שזה בסה"כ קובץ שבצע cache לthumb של התמונות בתיקייה.
כדי להסתכל על תוכן הקובץ thumb.db נשתמש בתוכנה Thumbs Viewer:
![שחזור תמונה מספר 3]
ניתן לראות שהתוכנה מראה שהיו 7 קבצי תמונה בתיקייה, ותמונה השלישית נראה שיש לנו סיסמא לקבצים המוצפנים.
כעת נחפש בגוגל אתר שיודע לפענח את ההצפה blowfish cbc, כך הגענו לאתר:
`` http://sladex.org/blowfish.js/`
נשתמש באתגר כדי לפענח את שלושת הקבצים ונריץ את קובץ הhtml, התוצאה תראה כך:
כמו כן קובץ script.js מקודד וכדי לקרוא אותו נבצע לו unpack:
`` http://matthewfl.com/unPacker.html`
ניתן לראות שיש פנייה לקובץ key.js לשרת מקומי על פורט 1337 אפשר להשתמש בpython ולהגדיר שרת על הפורט הזה כך:
python -m SimpleHTTPServer 1337` או אפשר פשוט לבצע פנייה עצמאית לקובץ בקובץ html כך:
העדפנו לערוך את הקובץ ופשוט להפעיל אותו ללא
כדי פתור את האתגר השתמשנו בchrome developer tool בצורה הבאה:
- נשים breakpoint בעת טעינת הקוד של האתגר
ונעבור על כל הפונקציות עד אשר נגיע לפונקציה שמציגה את האתגר האמיתי:
פונקציה זו טוענת את האתגר שמקודד בפורמט jsFuck, שזה פורמט קידוד לjavascript ב6 תווים בלבד, .
פשוט תריצו את הקוד של האתגר על ידי לחיצה על F8 עד אשר תראו את האתגר נטען:
כעת לחצו על pause ואז על cancel או ok ואז תראו את הקוד של הjsfuck:
ניתן לראות שיש בדיקה האם הסיסמא שהכניסו לאחר הפעולה btoa שווה לקטע בbase64, כך שכל שעליכם לעשות או לפענח את הbase64 ולהזין את הסיסמא:
נזין את הסיסמא וסיימנו את האתגר.