The Lost Award
- קטגוריה: Forensics
- 1000 נקודות
- נפתר על ידי קבוצת JCTF
תיאור
פתרון
הקובץ המצורף הכיל Network Capture של תעבורת SMB. החלק העיקרי היה העתקת קובץ בשם BSidesTLV.manipulated_smb.pcapng:
הקובץ הועתק בחלקים, אך ישנו קטע שלא נקלט בלכידת התעבורה ולכן לא ניתן היה להשתמש ב-Wireshark על מנת לחלץ את הקובץ.
שימו לב שהקובץ שהועבר (ונקלט רק באופן חלקי) הוא Network Capture בעצמו. עמוק בפנים היה הקובץ המעניין באמת - רצף ארוך של מחרוזות המקודדות ב-Base64.
ניקח מחרוזת אחת כזו וננסה להבין מה היא מסמלת:
SUVZRUlNQldHTVpUR09KVEdNWlRLTTJGR0lZVEdOSlRHUVpUR01aVkdRWURFTlJUR0FaVEFNMkZHSTRER09CVEhFMlRBTVJZR000VEdSSlNHQVpUT01aWUdVWURFTUpURzQyQT09PT0=
נפענח ונקבל:
root@kali:/media/sf_CTFs/bsidestlv/The_Lost_Award# echo SUVZRUlNQldHTVpUR09KVEdNWlRLTTJGR0lZVEdOSlRHUVpUR01aVkdRWURFTlJUR0FaVEFNMkZHSTRER09CVEhFMlRBTVJZR000VEdSSlNHQVpUT01aWUdVWURFTUpURzQyQT09PT0= | base64 -d
IEYEIMBWGMZTGOJTGMZTKM2FGIYTGNJTGQZTGMZVGQYDENRTGAZTAM2FGI4DGOBTHE2TAMRYGM4TGRJSGAZTOMZYGUYDEMJTG42A====
זה נראה כמו Base32, נפענח ונקבל:
root@kali:/media/sf_CTFs/bsidestlv/The_Lost_Award# echo IEYEIMBWGMZTGOJTGMZTKM2FGIYTGNJTGQZTGMZVGQYDENRTGAZTAM2FGI4DGOBTHE2TAMRYGM4TGRJSGAZTOMZYGUYDEMJTG42A==== | base32 -d
A0D06333933353E2135343335402630303E2838395028393E2037385021374
זה נראה כמו ייצוג של בתים, אך הפענוח לא נראה כמו משהו מוכר:
root@kali:/media/sf_CTFs/bsidestlv/The_Lost_Award# echo A0D06333933353E2135343335402630303E2838395028393E2037385021374 | xxd -p -r | xxd -g 1
00000000: a0 d0 63 33 93 33 53 e2 13 53 43 33 54 02 63 03 ..c3.3S..SC3T.c.
00000010: 03 e2 83 83 95 02 83 93 e2 03 73 85 02 13 74 ..........s...t
עם זאת, שמנו לב למאפיין בולט של אוסף המחרוזות. רובן התחילו עם אותה תחילית: SUVZRUlNQl. לאחר שרשרת הפענוח, הדבר התמפה ל-A0D0. הרצף הזה אינו בעל משמעות, אבל הוא מאוד מזכיר רצף אחר שנראה בתדירות כשמסתכלים על הייצוג הבינארי של קבצי טקסט: 0A0D, או במילים אחרות, "\r\n".
מה יקרה אם נהפוך את הייצוג שקיבלנו ורק אז ננסה להתייחס אליו כ-ASCII?
echo A0D06333933353E2135343335402630303E2838395028393E2037385021374 | rev | xxd -p -r
G1 X70.98 Y88.006 E3451.53936
קיבלנו תוכן בעל משמעות! זהו פורמט G-Code, המשמש לייצוג עצמים בעולם ההדפסה התלת-מימדית. לאחר פענוח כל המחרוזות לפי הלוגיקה הנ"ל, קיבלנו רשימה ארוכה בפורמט G-Code, לדוגמה:
root@kali:/media/sf_CTFs/bsidestlv/The_Lost_Award# strings BSidesTLV.gnpacp | grep SUVZR | while read line ; do echo $line | base64 -d | base32 -d | rev | xxd -p -r ; done | head
G1 F1500 X144.304 Y134.404 E800.40224
G0 F9000 X143.805 Y134.613
G1 F1500 X143.005 Y133.813 E800.44928
G0 F9000 X142.522 Y134.037
G1 F1500 X143.307 Y134.821 E800.49541
G0 F9000 X142.808 Y135.03
G1 F1500 X142.02 Y134.242 E800.54174
G0 F9000 X141.516 Y134.445
G1 F1500 X142.31 Y135.239 E800.58842
G0 F9000 X141.796 Y135.432
המודל המתקבל מכך הוא:
מזוויות מסויימות אפשר לראות משהו שמזכיר דגל:
אולם, הרבה יותר נוח לנקות שורות בצורה אקראית ולבחון את התוצאה. למשל:
לאחר מספר נקיונות באזורים שונים ניתן היה לחבר את החלקים השונים לדגל מלא:
BSidesTLV{w3_Pr1nt1ng_3D_FL@gz_n0w!}