המוסד 2018 חלק 2
אתגר 2 מתחיל בקובץ pcap.
נוריד את הקובץ ונפתח אותו באמצעות 7zip.
את הקובץ אפשר לפתוח עם wireshark ולהתחיל לנתח אותו, אך מצד שני יש דרך קלה יותר לנתח קבצי pcap פשוטים והיא להשתמש בתוכנה CapLoader 1.6:
בפלט של התוכנה ניתן לראות שמדובר בפרוטוקול FTP על פורט 2121 אשר שם המשתמש עבור ההתחברות הינו user והסיסמא הינה 12345.
נבצע התחברות פשוטה באמצעות תוכנת FTP ממכונת לינוקס כלשהי ונראה שהשרת לא מאשר את ההתחברות שלנו מסיבה כלשהי:
נחזור לתוכנת הCapLoader ונסתכל שאר החבילות:
ניתן לראות שלפני שהclient פנה לשירות הftp הוא פנה לשירות אחר על פורט 5555 מה שנראה כמו שיטת port knocking כלשהי.
נסתכל על החבילות בשני הפניות הראשונות וננסה להבין מה שיטת הPort knocking שהשתמשו בה.
חבילה ראשונה:
נתחיל לנתח את החבילה הראשונה בכך שננסה להתחבר לצד השרת על פורט 5555:
ניתן לראות שהשרת החזיר לנו hash כלשהו באורך 32 תווים בדיוק כמו הhashים שראינו בקובץ הpcap:
Hash באורך 32 תווים בדרך כלל מסמן md5, ניקח את אחד הhashים שאנחנו כבר יודעים מה התשובה המתבקשת עבורו ונזרוק אותו לאתר:
`` https://hashkiller.co.uk/md5-decrypter.aspx`
ונקבל:
אם נסתכל על כמות התווים בתשובות שנשלחו לצד השרת בחבילות ניתן לראות שאורך התשובה הינה 128 תווים שזה מסמן sha512.
אם ניקח את המספרים שקיבלנו ונעשה עליהם sha512 נראה שאנחנו מקבלים תוצאה שונה לחלוטין מהתוצאה שהיינו אמורים לקבל בקובץ הpcap.
לכן החלטנוי לנסות לעשות bruteforce , באמצעות הקוד python הבא:
הקוד ביצע בדיוק ריצה אחת ועצר, מכאן ניתן להסיק שעלינו לבנות קטע קוד פשוט שיבצע את הפעולות הבאות:
כדי לבצע זאת כתבנו את הקוד הבא:
כעת נתחבר לשירות הFTP:
ונמשוך את כל הקבצים למחשב שלנו כדי שיהיה לנו נוח יותר לחפש בהם:
השלב הבא באתגר הוא לאתר קבצים מעניינים בתוך מערכת הקבצים שהורדנו, על מנת לעשות כך כתבנו קוד קצר שמדפיס לנו רשימה של כל הקבצים הקיימים בתייקה כדי שיהיה קל יותר לעבור אליהם:
בתוך התיקייה של המשתמש backup ניתן למצוא 3 קבצים מעניינים:
hint – שמכיל את הסיסמא.
`` s3cr3t`
id_rsa – מפתח פרטי לגישה לשרת.
ועוד קובץ floppyfw.conf.enc שכרגע אין לנו מושג מה תפקידו, אבל בגלל הסיומת שלו ניתן להסיק שהוא מוצפן כנראה.
ננסה לגשת לשרת עם שם המשתמש backup מכיוון שאנו נמצאים בתיקיית הבית שלו והסיסמא למפתח s3cr3t ונקבל:
ניתן לראות שכן הצלחנו להתחבר לשרת אבל בגלל שאין לנו terminal שמוגדר נזרקנו החוצה, ננסה להתחבר באמצעות שירות אחר כגון sftp ונקבל:
נמשוך את קובץ הpython אלינו ונפתח אותו באמצעות תוכנה נקראת:
`` EasyPythonDecompiler`
מה שנראה כך:
כעת נסתכל על קובץ הpython שקיבלנו ונבחן כיצד הוא אמור לעזור לנו לפענח את הקובץ floppyfw.conf.enc.
תוכן הקובץ conf_enc הוא בסה"כ שימוש מאוד בסיסי באלגוריתם AES בpython:
נהפוך את פונקציית ה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 ולהחזיר את המידע הזה, כך שהפונקציה שלנו תראה כך:  ננסה לפענח את הקובץ floppyfw.conf.enc ונקבל את הקובץ הבא:  בקובץ מצאנו הגדרות iptables של הfirewall שמאפשרות גישה לכתובת האייפי 10.128.0.3 לפורטים 8080 ו3389 כרגע אנחנו עדיין לא סגורים למה זה משמש , ולכן החלטנו לחפש עוד קבצים שמכילים את הסיומת .enc כדי לפענח אותם ולראות מה נקבל:  מצאנו את הקבצים cisco.conf.enc והחלטנו לפענח את העדכני ביותר.  ניתן לראות שזהו גיבוי של קובץ ה running-config רגיל של ציוד cisco, בקובץ ניתן לראות שיש לנו את שם המשתמש fwadmin והסיסמא המוצפנת בהצפנה type 7 שקל מאוד לפענח באמצעות האתר: `` http://packetlife.net/toolbox/type7/
נסכם את מה שהשגנו עד כאן:
`` 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
`
על סמך הנתונים בקבצים האלו נתחיל ליצור את המסלול שלנו לשרת הקבצים הפנימי:
- נבצע tunnel אל השרת הפנימי כך:
`` ssh -i id_rsa -L -N 1337:10.164.0.3:22 [email protected]`
הדגלים שהשתמשנו בהם:
- -N לא לבצע פקודות על שיחת הssh מכיוון שאנו משתמשים בשיחה לצורך tunnel
- -L מקבל את הפורט כניסה ויציאה לצורך הtunnel אנחנו הגדרנו כניסה על 1337 ויציאה על 22.
כך בעצם דרך השרת 35.204.90.89 הגענו לשרת 10.164.0.3 ויש לנו פורט בהאזנה:
2. נבצע tunnel שני דרך הפורט שלנו 1337 לתוך שרת הקבצים באמצעות הפקודה הבאה:
`` ssh [email protected] -p 1337 -N -L 1234:10.128.0.3:8080 -g`
הדגלים שהשתמשנו בהם:
- -p מציין פורט להתחברות הריי אנחנו מתחברים דרך השרת הtunnel שיצרנו בפורט 1337
- -N הסברנו בפקודה הקודמת, משתמשים כדי לא לשלוח פקודות על הtunnel
- -L הסברנו בפקודה הקודמת, תפקידה לפתוח פורט אצלנו הפעם 1234 שיוביל ל
- -g מציין שהאזנה תיהיה גלובלית על כתובת 0.0.0.0 כדי שאנחנו נצליח להתחבר באמצעות מחשב הwindows שלנו דרך מכונת הלינוקס לתוך שרת הקבצים
התוצאה תראה כך:
3. נפתח דפדפן ונפנה למכונת הלינוקס לפורט 1234 שיוביל אותנו ישירות דרך הtunnel לשרת הקבצים הפנימי:
ניכנס לתיקייה ונראה שעברנו לשלב השלישי:
המשך האתגר בחלק השלישי