
הטקסט המלא של הדקות הראשונות בהרצאה «עוקפים את הענן - Meterpreter Reverse HTTPS vs Microsoft Defender Cloud» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום לכולם בהרצאה הזו אני רוצה להחליף את הפיילוט שלנו מנון סטייג'ד לסטייג'ד מה ההבדל שבנון סטייג' אין שלבים בגלל שאין שלבים הכל עובר בשליחה אחת ליוזר זאת אומרת אנחנו שולחים לו ישר את כל הטרויאן והוא איזה 200k וכל הוויז'ואל סטודיו שלי לא זז אז אני עובר מנון סטייג'ד לסטייג'ד שזה אומר זה יהיה דו שלבי
והשלב השני למעשה יעביר את כל מה שצריך כאשר השלב הראשון הוא רק 600 בתים קטנים זאת אומרת אני מחלק את הפיילוד לשני חלקים איזשהו לואודר קטן של 600 בתים בלבד וכל ה-200 אלף בתים של הקוד יגיעו בשלב השני זאת אומרת השלב הראשון מופעל אצל הלקוח, אני שולח לו אותו, הוא מפעיל אותו ואז הקוד הזה שולף מהשרת את כל שאר התוכנה אני מחלק את זה לשני שלבים אז השלב הראשון הוא קטן יותר נוח לעבוד איתו וזה מה שאני
רוצה לעשות כדי שלא יעלו עליי אני מוסיף קצת אבטחה איזה אבטחה אני מוודא שכשמגיע השלב השני שהוא הגיע מהשרת הנכון עם תעודה דיגיטלית נכונה זאת אומרת הקליינט בודק שהשרת הוא אכן נכון לפי תעודה דיגיטלית אז גם הקליינט בודק את השרת וגם השרת יבדוק את קליינט שני הצדדים בודקים אחד את השני לפי תעודה דיגיטלית לפי ההאש של התעודה הדיגיטלית
תכף תראו את זה אז ככה אז אנחנו הולכים לייצר לעשות generate לפיילורד מספר 2 זה יהיה הפיילורד השני שלנו כאשר ההבדל הכי גדול שפה היה כזה דבר ואני החלפתי אותו לדבר כזה מה ההבדל זה דו שלבי שלב ראשון שלב שני זה נקרא staged זה נקרא נון סטייג'ד הכל בשלב אחד הכל כחתיכה אחת
אני לא רוצה הכל כחתיכה אחת, אני רוצה הכל כשתי חתיכות. אז אני עושה פה סלאש, למה אני רוצה שתי חתיכות? שוב, כדי שהשלב הראשון יהיה רק 600 בתים, שיהיה לי קל לעבוד איתו.
כי ראיתם שכל הוויז'ואל סטודיו שלי לא זז, ונורא קשה לי לעבוד עם החתיכה הגדולה הזאת של המידע שאני שולח ללקוח, אני רוצה לעבוד עם חתיכה קטנה, עם הלואודר הקטן, אז אני מחליף את זה בזה, זה כל הסיפור.
אוקיי, אז החלפתי את זה בזה, ושמתי לו פה שם payload 2, מה הלאה? אני מציין לו את השם של הסרטיפיקייט, שם של תעודה דיגיטלית, שתוטמע בלקוח.
הלקוח הזה, בעזרת התעודה הזאת, יבדוק את השרת, שהוא התחבר לשרת הנכון. אחרי שהוא התחבר לשרת הנכון, אנחנו את השלב השני נקודד אותו, שאם מישהו ינסה לתפוס אותנו בזיכרון, לסרוג זיכרון ולתפוס אותנו או לתפוס אותנו תוך כדי העברת מידע, יהיה לו מאוד מאוד קשה, כי אנחנו נעשה קידוד שמשנה צורה ל-payload
המקורי, אז האינקודר הזה יש לו שתי מטרות, אחת זה להתגבר על כל מיני מאזינים בדרך שמנסים לפענח את התקשורת ולהבין אותה, למרות שלדעתי זה מאוד קשה עד בלתי אפשרי בגלל שהכל HTTPS, אלא אם כן יש פרוקסי ששובר HTTPS, אבל ליתר ביטחון אנחנו מוסיפים קידוד,
אז הקידוד הזה הוא פעם אחת מונע הבנה פשוטה של מה שעובר על הכבל, ודבר שני הוא מונע את ההבנה הפשוטה בזמן סריקת זיכרון מה זה הבנה פשוטה? זה אומר שאולי אתה מכיר את המטרפריטר המקורי אבל אני עכשיו מקודד אותו, מחליף לו צורה, אולי לא תיזהה אותו קידוד הזה הוא לא 100% אבל עדיף לעשות אותו
מאשר לא לעשות אותו זה גם נגד סריקת זיכרון וגם נגד סריקת כבל רשת כשאני מקודד אותו אני אומר שאני מאפשר קידוד Enable Stage Encoding ודבר אחרון, אני אומר שאם הכידוד לא מצליח, פולבק, פולבק זה ליפול אחורה אם הכידוד לא מצליח.
אני לא מאפשר לך להעביר מידע לא מקודד. אני רוצה שיהיה מקודד ולוודא שהוא מקודד. ככה אני מוודא שהוא לא פתוח, כי אני מפחד מסריקת זיכרון, אני אספר לכם סוד.
אני לא באמת מפחד מזה שמישהו מאזין לי ב-HTTPs, אני מפחד שהאנטיווירוס ייקח באיזשהו שלב, באיזשהו API, נניח כמו Create Process, ויסרוק את הזיכרון ויעלה על הקוד שלי.
אוקיי, אז עוד פעם אני חוזר, אנחנו הולכים לייצר פיילואוד. כאשר אנחנו מציינים לו תעודה דיגיטלית, אומרים לו לבדוק שהתחברת לשרת הנכון, לעשות וריפיי ל-SSL סרטיפיקייט.
אחרי שבדקת את הכל, ואתה מקבל את השלב השני, את ה-200K של כל הקוד העיקרי של מטרפריטר, הכל חייב להיות מקודד, וזה השם של הקידוד. אתם יכולים להריץ search ולראות את כל הכידודים שיש בתוך המטה ספלוייט.
אם אני מפעיל את הכידוד אני חייב לעשות לו enable, פקודה שאומרת enable staging coding, אז אני עושה enable true, מאפשר את זה, ודבר אחרון, fallback, ליפול אחורה, לחזור למצב לא מקודד אני לא מאפשר.
אוקיי, אנחנו הולכים לייצר את כל זה, יפה, אני מדביק את כל הפקודה הזאת לפה, הוא מפעיל MSF קונסול במצב שקט ומריץ את כל הפקודות האלו במקום שאני אריץ אותן אחד אחד, ואנחנו יכולים לעשות show options ולראות את האופציות הפשוטות ו-show advanced ולראות את האופציות המתקדמות.
מה זה האופציות המתקדמות? זה כל הדברים האלו stage encoding fallback האם מותר ליפול אחורה falls אסור לחזור אחורה כל מה שהגדרנו נמצא פה ויש כאן גם עוד אפשרויות נוספות שלא דיברנו עליהן לדוגמה auto run script להריץ איזשהו סקריפט באוטומט אז יש פה עוד עוד אופציות מעניינות הנה הסרטיפיקייט שלנו
בתוך האופציה הזאת אנחנו שואו באדוונסט רואים את הכל enable stage encoding true אני רק מוודא שהכל נתפס לנו יש לנו auto run script אנחנו יכולים להריץ סקריפט אוטומטי איך שהכל מתחבר אז תראו פה את הדברים הנוספים שיש בקיצור סיימנו לייצר את הפיילוד אנחנו יוצאים אחרי שיצאנו אנחנו יכולים להיכנס לתיקייה
/root איפה שעשינו את הפיילוד לאן ששמרנו אותו ויש לנו עכשיו שלושה קבצים, הפיילוד המקורי, הפיילוד החדש, שימו לב, הוא הרבה יותר קטן מזה, אתם רואים, הוא הרבה יותר קטן, תכף נראה אותו, והתעודה הדיגיטלית.
כשנפעיל את המאזין שמקבל חיבורים, נשתמש בתעודה הזאת. טוב, אנחנו צריכים להעביר את הפיילוד לצד השני ולהצפין אותו, נכון?
אז אנחנו מפעילים שרת ווב והולכים לווינדוס 10. בווינדוס 10 פותחים אותו ומתחברים לפורט 8000 ויש לנו את הפיילוד 2. נהדר, בגלל שהפיילוד הזה במצב פתוח אני מפחד שהאנטיווירוס יעלה עליי אז אני מנתק אותו כי אני הולך להפעיל תוכנת הצפנה אבל לפני ההצפנה הוא יהיה פתוח אז אני סוגר אותו, את האנטיווירוס
הוא כותב לי פה שצריך להדליק את האנטיווירוס, תיאורנון, אני אומר לו תודה, להתראות מעתיק את ה-829 בתים, נכון? 829 זה לא 200 אלף במקום 200 אלף זה פחות מ-1001, זה פי 200 יותר קטן בגלל זה זה יזוז לי נורמלי ואנחנו צריכים פה visual studio visual studio 2019 בוא נשים
אותה פה למטה פותחים אני מזכיר לכם שיש לנו שני פרויקטים פרויקט אחד שמצפין ופרויקט אחד שמריץ את ההצפנה כאילו פותח אותה ומריץ אותה אז זה המצפין אני פותח את המצפין שלנו זאת התוכנה למעלה יש לנו את ה-200 אלף האלו אני הולך למחוק אותם יחד עם הערות שהוא הגיע ובמקומם אני מכניס מה?
את מה שעשינו copy-paste שזה 829 אז יש לי 829 בתים פה שזה יחסית קצת ואחרי זה יש לי פה לולאה שמצפינה את הכל ובסוף יש לי encrypted ואחרי זה את כל ה-encrypted הזה אני הופך אותו ל-string ל-x-builder אני הופך אותו ל-string ואחרי שהפכתי אותו ל-string אני רושם אותו לקובץ אני עושה file, write all text
אוקיי, למעשה זה כמה שורות קוד קטנות. בואו נעביר אותו למצב דיבאג. נגיד לו להריץ לא את הפיילוד, את האינקריפטור שזה זה. שימו לב, זה נהיה בולד ואנחנו מריצים אותו.
אחרי שהרצנו את התוכנה הזאת, היא עובדת. הנה, היא סיימה לעבוד, מסך שחור זה אומר שהיא סיימה לעבוד. היא רשמה את הכל לקובץ הזה, בואו נבדוק.
בין, איך אני יודע דרך אגב איפה לחפש פה? באאוטפוט, אם תעשו ריבילד או בילד, צריך לעשות רווח, סתם דוגמא, עשיתי רווח, שיעשה בילד מחדש, הנה זאת התיקייה שבה הכל נמצא, אני יכול ללכת לתיקייה הזאת ולראות פה את הקובץ MyPayload עם 829 בתים, זה הפלט שהוא עשה, נהדר.
עכשיו לוקחים את הפלט המוצפן והולכים למה שאנחנו הולכים לשלוח ללקוח, קוד שכתבנו, רק במקום 200 אלף לשלוח ללקוח אנחנו נשלח הפעם רק 829 וזה מוצפן, הקוד המוצפן אני רוצה לוודא שההצפנה נפתחת כמו שצריך אז אני אחרי הלולאה הזאת שפותחת את כל ההצפנה ולפני הרצה בדיוק בנקודה הזאת רוצה לעצור ולראות מה יש לנו בתוך הדקודד אז יופי נעצור בנקודה הזאת ונראה מה קורה דיבאג
כדי שנוכל לעצור בזמן ואני אומר לו להריץ הפעם לא את המצפין את הפיילוט שימו לב זה נהיה פה בולד בצד ימין בולד זה בולט זה אומר שזה מה שירוץ קוראים לעשות right click אני עושה מפה אז אנחנו מריצים את התוכנה הזאת היא עוצרת בדיוק בשלב הזה בפקודה הזאת היא יצרה בוא נלך לאינקריפטור
נפתח את המקור זה המקור נשים אותו בצד ימין זה לפני ההצפנה זה המקור אני רוצה לראות האם במקורי זה כמו פה בדקודד אני עושה דקודד quick watch ואני רואה שאחרי שהוא פתח את ההצפנה שהוא פתח אותה נכון E-B-27, E-B-27, 5-B, 5-B, 53, 5-F, אני רואה שהוא פתח את זה נכון, הוא פתח נכון, ויש לו
סך הכל 828, כאשר האחרון זה, מה זה האחרון? 82-54DD, 82-54DD, נכון, הוא פתח הכל נכון, נהדר, אז את האינקריפטור הזה, את המצפין המקורי אפשר לסגור, אני לא צריך אותו, רק רציתי לוודא שהלולה פתחה הכל כמו שצריך, ועכשיו אנחנו מריצים את זה,
ועובד לנו הפיילורד מצוין מה נשאר לנו לעשות לארוז אותו זאת אומרת שאחרי שהרצנו אותו עכשיו אנחנו צריכים לעשות אקספורט פה לעשות לו פה יצוא שהכל יהיה בקובץ אחד למה כי אני מזכיר לכם בקצרה למי ששכח אחרי שאני עושה פה ריבילד רק אני רוצה לעשות לו ריבילד במצב ריליס ריליס זה אומר המצב הסופי ללא מידע נוסף למתכנת בדיבאג יש מידע
נוסף למתכנת שעוזר למתכנת לחפש תקלות ברליס כבר הכל במינימום שצריך רק להרצה אין מידע אקסטרה כי המידע אקסטרה זה גם עוזר לאנטיווירוסים ולמי שרוצה להבין מה אני עושה אז פה מורידים ברליס את כל המידע האקסטרה בדיבאג אני משתמש לצרכים שלי כמתכנת וברליס אני משתמש כשאני רוצה כבר לשלוח הכל ללקוח הסופי אוקיי אז יש לנו פה שני קבצים אנחנו רוצים להפוך הכל לקובץ אחד
אז מה אנחנו עושים? בואו נעשה דבר כזה. ניקח פה, נמחק את כל הבין. בין זה אומר כל התוצאה הסופית, ביינארי, התוצאה הסופית.
מחקתי את כל הבין. עשיתי לו עוד פעם ריבילד, שיבנה הכל מההתחלה. הנה הוא בנה הכל מההתחלה ויש לנו פה בתוך בין תיקיית x64 והוא בנה הכל בתוכה.
עכשיו אני רוצה לחבר את הכל ביחד, את ה-DLL ואת ה-Exe, אז אני הולך לתיקייה של הפרויקט, איפה שיש קובץ Project, פותח CMD ואני מזכיר לכם שדיברנו על כל בהרחבה בהרצאות קודמות אני עושה עכשיו הכל זריז ועושה ככה עושה פאבליש אחרי שעשיתי פאבליש אתם יכולים לראות פה תתווסף לי התיקייה תכף תראו
אותה הנה זאת התיקייה שלתוכה הוא עשה את הכל בין ריליס אתם רואים בין ריליס וזאת התיקייה אני מעתיק אותה אתם יכולים לראות אותה גם פה שהתווספה לפני כן היא לא הייתה אז אפשר להיכנס מכאן ככה ולעשות אופן או שאפשר היה פשוט לעשות פה רייט קליק וגם כאן קופי פייסט מתוך האוטפוט