ברוכים הבאים לאזור הבלוגים הטכנולוגיים של ITsafe

קריאה מהנה

Mossad 2018 Solutions Part 2

אתגר 2 מתחיל בקובץ pcap.

נוריד את הקובץ ונפתח אותו באמצעות 7zip.

את הקובץ אפשר לפתוח עם wireshark ולהתחיל לנתח אותו, אך מצד שני יש דרך קלה יותר לנתח קבצי pcap פשוטים והיא להשתמש בתוכנה CapLoader 1.6:
צילום תעבורת רשת, התעבורה מכילה שם משתמש וסיסמא ל-FTP
בפלט של התוכנה ניתן לראות שמדובר בפרוטוקול FTP על פורט 2121 אשר שם המשתמש עבור ההתחברות הינו user והסיסמא הינה 12345.

נבצע התחברות פשוטה באמצעות תוכנת FTP ממכונת לינוקס כלשהי ונראה שהשרת לא מאשר את ההתחברות שלנו מסיבה כלשהי:
חיבור לשירות FTP, החיבור נכשל
נחזור לתוכנת הCapLoader ונסתכל שאר החבילות:
תעבורת רשת על פורט 2121
ניתן לראות שלפני שהclient פנה לשירות הftp הוא פנה לשירות אחר על פורט 5555 מה שנראה כמו שיטת port knocking כלשהי.

נסתכל על החבילות בשני הפניות הראשונות וננסה להבין מה שיטת הPort knocking שהשתמשו בה.
תעבורת רשת על פורט 5555
חבילה ראשונה:

נתחיל לנתח את החבילה הראשונה בכך שננסה להתחבר לצד השרת על פורט 5555:
תקשורת מול השרת על פורט 5555 וקבלת אתגר
ניתן לראות שהשרת החזיר לנו hash כלשהו באורך 32 תווים בדיוק כמו הhashים שראינו בקובץ הpcap:
אורך התווים הינו 32
Hash באורך 32 תווים בדרך כלל מסמן md5, ניקח את אחד הhashים שאנחנו כבר יודעים מה התשובה המתבקשת עבורו ונזרוק אותו לאתר:
` https://hashkiller.co.uk/md5-decrypter.aspx
ונקבל:
פינוח ה-hash נותן לנו 33794 ו-37478
אם נסתכל על כמות התווים בתשובות שנשלחו לצד השרת בחבילות ניתן לראות שאורך התשובה הינה 128 תווים שזה מסמן sha512.

אם ניקח את המספרים שקיבלנו ונעשה עליהם sha512 נראה שאנחנו מקבלים תוצאה שונה לחלוטין מהתוצאה שהיינו אמורים לקבל בקובץ הpcap.

לכן החלטנוי לנסות לעשות bruteforce , באמצעות הקוד python הבא:
קוד פייתון שמבצע bruteforce
הקוד ביצע בדיוק ריצה אחת ועצר, מכאן ניתן להסיק שעלינו לבנות קטע קוד פשוט שיבצע את הפעולות הבאות:

      1. התחבר לכתובת האייפי 35.204.90.89 ולפורט 5555
      2. נמשוך את הmd5 ונעשה עליו bruteforce זריז כדי לקבל את הערך
      3. נוסיף 1 לערך ונבצע עליו את פעול הגיבוב sha512
      4. נשלח חזרה את התוצאה לשרת.

כדי לבצע זאת כתבנו את הקוד הבא:
התוצאה של הקוד היא 84912
כעת נתחבר לשירות הFTP:
תיקיות לינוקס בסיסיות
ונמשוך את כל הקבצים למחשב שלנו כדי שיהיה לנו נוח יותר לחפש בהם:
תיקיית גיבוי בשם backup
השלב הבא באתגר הוא לאתר קבצים מעניינים בתוך מערכת הקבצים שהורדנו, על מנת לעשות כך כתבנו קוד קצר שמדפיס לנו רשימה של כל הקבצים הקיימים בתייקה כדי שיהיה קל יותר לעבור אליהם:
גיבוי קבצי הגדרות של סיסקו
בתוך התיקייה של המשתמש backup ניתן למצוא 3 קבצים מעניינים:

hint – שמכיל את הסיסמא.
` s3cr3t
id_rsa – מפתח פרטי לגישה לשרת.

ועוד קובץ floppyfw.conf.enc שכרגע אין לנו מושג מה תפקידו, אבל בגלל הסיומת שלו ניתן להסיק שהוא מוצפן כנראה.

ננסה לגשת לשרת עם שם המשתמש backup מכיוון שאנו נמצאים בתיקיית הבית שלו והסיסמא למפתח s3cr3t ונקבל:
התחברות לנתב סיסקו
ניתן לראות שכן הצלחנו להתחבר לשרת אבל בגלל שאין לנו terminal שמוגדר נזרקנו החוצה, ננסה להתחבר באמצעות שירות אחר כגון sftp ונקבל:
שימוש בקובץ הגיבוי בשביל לקבל את הסיסמא
נמשוך את קובץ הpython אלינו ונפתח אותו באמצעות תוכנה נקראת:
` EasyPythonDecompiler
מה שנראה כך:
פינוח קובץ הפייתון
כעת נסתכל על קובץ הpython שקיבלנו ונבחן כיצד הוא אמור לעזור לנו לפענח את הקובץ floppyfw.conf.enc.

תוכן הקובץ conf_enc הוא בסה"כ שימוש מאוד בסיסי באלגוריתם AES בpython:
פינעוח קוד ה-AES ב-פייתון
נהפוך את פונקציית הencrypt לdecrypt וננסה לפענח את הקובץ, את ההיפוך נבצע מהסוף להתחלה כך:

תחילה נהפוך את השורה:
` return base64.b64encode(iv + cipher.encrypt(raw))
ניתן לראות בשורה הזאת שהIV מתווסף למידע המוצפן ועליו מבצעים base64 כך שהפענוח שלנו חייב להתחיל בפתיחת הbase64 ואז החלוקה של המידע והIV כך:
` raw = base64.b64decode(raw)
iv = raw[:16]
data = raw[16:]




אורך הIV ניתן לראות שהגדירו באמצעות AES.block_size שהינו 16.

לאחר מכן עלינו להפוך את הפקודה:
` cipher.encrypt(raw)
לפקודה:
` Chpher.decrypt(raw)
וכל שנשאר עלינו לעשות הוא לבצע unpad ולהחזיר את המידע הזה, כך שהפונקציה שלנו תראה כך:
פונקציית פיענוח aes בסיסית
ננסה לפענח את הקובץ floppyfw.conf.enc ונקבל את הקובץ הבא:
חוקי iptables
בקובץ מצאנו הגדרות iptables של הfirewall שמאפשרות גישה לכתובת האייפי 10.128.0.3 לפורטים 8080 ו3389 כרגע אנחנו עדיין לא סגורים למה זה משמש , ולכן החלטנו לחפש עוד קבצים שמכילים את הסיומת .enc כדי לפענח אותם ולראות מה נקבל:
רשימת קבצי גיבוי מוצפנים שאנו יודעים לפענח
מצאנו את הקבצים cisco.conf.enc והחלטנו לפענח את העדכני ביותר.
פיענוח קובץ גיבוי של סיסקו
ניתן לראות שזהו גיבוי של קובץ ה running-config רגיל של ציוד cisco, בקובץ ניתן לראות שיש לנו את שם המשתמש fwadmin והסיסמא המוצפנת בהצפנה type 7 שקל מאוד לפענח באמצעות האתר:
` http://packetlife.net/toolbox/type7/

פיענוח סיסמאת סיסקו מוצפנת בקוד 7
נסכם את מה שהשגנו עד כאן:
      1. יש לנו סיסמא לציוד הcisco
      2. יש לנו חוקי iptables שאם נבחן אותם מקרוב נראה שהם מאפשרים חיבור ssh ומעבירים אותו לכתובת 10.128.0.3 שכנראה זאת המטרה שלנו.
    ` USE_IPTABLES=y
    RULE_1=iptables -I INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
    RULE_2=iptables -P INPUT -j DROP
    RULE_3=iptables -I OUTPUT -i eth1 -p tcp -m tcp --dport 3389 -d 10.128.0.3 -j ACCEPT
    RULE_4=iptables -I OUTPUT -i eth1 -p tcp -m tcp --dport 8080 -d 10.128.0.3 -j ACCEPT
    RULE_5=iptables -P OUTPUT -j DROP
    RULE_6=iptables -P FORWARD -j ACCEPT








      3. בהגדרות של הcisco ניתן לראות שהגדירו access list שמאפשר כניסה בכתובת 10.164.0.3 באמצעות ssh ויציאה אל כתובת 10.128.0.3 שזאת לכאורה המטרה לפורטים 3389 ו- 8080.

חוקי access list של סיסקו
על סמך הנתונים בקבצים האלו נתחיל ליצור את המסלול שלנו לשרת הקבצים הפנימי:

1. נבצע tunnel אל השרת הפנימי כך:
` ssh -i id_rsa -L -N 1337:10.164.0.3:22 backup@35.204.90.89
הדגלים שהשתמשנו בהם:
  • -N לא לבצע פקודות על שיחת הssh מכיוון שאנו משתמשים בשיחה לצורך tunnel
  • -L מקבל את הפורט כניסה ויציאה לצורך הtunnel אנחנו הגדרנו כניסה על 1337 ויציאה על 22.

כך בעצם דרך השרת 35.204.90.89 הגענו לשרת 10.164.0.3 ויש לנו פורט בהאזנה:
פורט 1337 פתוח ומאזין
2. נבצע tunnel שני דרך הפורט שלנו 1337 לתוך שרת הקבצים באמצעות הפקודה הבאה:
` ssh fwadmin@localhost -p 1337 -N -L 1234:10.128.0.3:8080 -g
הדגלים שהשתמשנו בהם:
  • -p מציין פורט להתחברות הריי אנחנו מתחברים דרך השרת הtunnel שיצרנו בפורט 1337
  • -N הסברנו בפקודה הקודמת, משתמשים כדי לא לשלוח פקודות על הtunnel
  • -L הסברנו בפקודה הקודמת, תפקידה לפתוח פורט אצלנו הפעם 1234 שיוביל ל
  • -g מציין שהאזנה תיהיה גלובלית על כתובת 0.0.0.0 כדי שאנחנו נצליח להתחבר באמצעות מחשב הwindows שלנו דרך מכונת הלינוקס לתוך שרת הקבצים

התוצאה תראה כך:
פורט 1234 פתוח ומאזין
3. נפתח דפדפן ונפנה למכונת הלינוקס לפורט 1234 שיוביל אותנו ישירות דרך הtunnel לשרת הקבצים הפנימי:

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

Share this post