
הטקסט המלא של הדקות הראשונות בהרצאה «הצפנת Payload» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום לכולם, הגענו לשלב המכריע של להצפין את הפיילואוד בואו נתחיל מזה שנזכר שבהרצאה קודמת בתיקיית רוט הכנו שני קבצים רק אנחנו לא יכולים להיכנס לשם כי אנחנו צריכים לעשות סודו מינוס s לעבור מיוזר קאלי ליוזר רוט ועכשיו אנחנו נוכל להיכנס לתיקייה של רוט ולראות שיש לנו פה שני
קבצים אחד עם פיילואוד ואחד עם הפי.או.פם הפיילוד הזה, אני מזכיר לכם, הכנו אותו בהרצאה קודמת על ידי הפקודה הזאת.
MSF קונסול מסוג reverse HTTPS בלי ה-staged כדי לחסוך סיכון שניתפס בזמן העברת ה-DLL של השלב השני. אנחנו מביאים את הכל במכה אחת, בשלב אחד, לא עושים דו-שלבי.
הפעלנו גם תעודה דיגיטלית. לתוך הפיילוד הכנסנו תעודה דיגיטלית כדי לבדוק את השרת, שהשרת הוא נכון. אחרי שיש לנו את הפיילורד הזה מוכן, אנחנו מפעילים מודול של HTTP Server בתוך פייתון רק כדי להעביר אותו לשמה.
אתם רואים, זה פייתון עשה לנו שרת ווב בתיקייה הנוכחית בפורט 8000. נכנסים לדבדפן, לפורט 8000, לוקחים את הפיילורד שלנו. יופי, איך אנחנו ניקח את הפיילורד, שזה למעשה פקודות בשפת מכונה שמכילות את הקוד הזדוני שלנו?
פותחות לנו reverse HTTPS במטרפריטר, זה כמו CMD משוכלל, מטרפריטר. אז אנחנו רוצים להפעיל את זה, אנחנו צריכים ליצור מזה Thread, אבל לפני שאנחנו ניצור מזה Thread, תהליכון, אנחנו רוצים להצפין את זה, כדי שלא יעלו עלינו בחתימות.
אז בואו ניקח את כל זה, נעשה לזה קופי, ונעשה עכשיו תוכנה משלנו שמצפינה. אני מזכיר לכם שהתקנו Visual Studio 2019, אני מפעיל Visual Studio 2019, והיו לנו שתי תוכנות, אחת שמצפינה, והתוכנה השנייה שפותחת את ההצפנה ומריצה את הקוד הזדוני אחרי שהוא פתוח.
אנחנו עושים Create New Project, פרויקט חדש, נעשה אותו ב-C-Sharp, בשפת C-Sharp שזה הכי קל, נעשה את זה לפלטפורמת Windows, ונעשה את זה בקונסול, מה זה אומר קונסול?
מסך שחור של CMD. אנחנו לא רוצים לעשות דברים מסובכים כמו Windows עם דסקטופ, עם חלונות, אנחנו לא רוצים להסתבך עם כל הציור של החלונות, כל הנושא הזה של גרפיקה, אז אני עושה קונסול שזה הכי פשוט.
ה-C-Sharp Windows קונסול השאיר לנו שתי אופציות, זה למעשה פילטרים שהשאירו לי שתי אופציות. .NET Framework זה ה-.NET הישן, והיום הם כבר עזבו את ה-.NET Framework שהיה עובד רק ב-Windows ועברו ל-Core.
אתם רואים? .NET Core. ה-Core הזה עובד גם על Windows, גם על לינוקס וגם על מייקים. בקיצור אנחנו עושים את הcore כי הוא עובד בכל הסביבות והוא היחיד שמייקרוסופט ימשיכו לתחזק אותו בעתיד.
.NET framework הזה יום אחד ייעלם. אז אנחנו עושים את הConsol Application שזה אומר אפליקציה בחלון שחור של DOS מסוג Windows.NET Core. איך נקרא לזה?
נקרא לזה לסולושן הזה MyPayload. לא יודע מה. נקרא לזה MyPayload. סולושן זה הפתרון. case project in the same directory, לא צריך.
הוא שואל אותי איזה .NET core, אני אקח את ה-5, את הכי מעודכן שיש כרגע, אתם יכולים לקחת משהו יותר משוכלל, זה לא משנה כי העקרונות הם אותם עקרונות.
ואנחנו עכשיו יוצרים פרויקט חדש ונקי. למעשה, לפי ההיגיון שלנו, אנחנו פה בשלב הזה של Encrypt payload. אז יש לנו פה MyPayload, זה הולך להיות התוכנה שאני אריץ בסוף, זה ה-X שאני אריץ.
אתם רואים, הוא כתב למעשה Using, מצא לי פונקציה שנקראת מיין פונקציית מיין כוללת משהו שמגיע לה מבחוץ ומדפיסה הלואו וורד בוא נריץ את זה נעשה פליי נריץ את זה ונראה שזה אכן עובד לנו ואנחנו רואים שאכן נפתח לנו מסך שחור וכתוב הלואו וורד אם אני אוסיף פה aaa ואני אעשה סייב ואני אריץ עוד פעם הוא הופך את הc-sharp הזה לשפת מכונה ואז מריץ
אותו אז אנחנו רואים שזה עובד יופי זה הפרויקט הראשון של הפיילואוד. אני ישר מייצר עוד פרויקט, עוד קובץ אקזה. תסתכלו פה למעלה, אני יכול ללחוץ show all files.
הוא יראה לי את כל הקבצים שיש בארדיסק. ויש פה תיקיית בין, ויש פה תיקיית דיבאק, .NET 5, ויש קובץ אקזה. מה זה אומר? זה אומר שאם אני אפתח את הדבר הזה באקספלואור, זה בדיוק אותם תיקיות למעשה.
מה שראינו בצד זה אותם תיקיות, ויש פה קובץ myupload.exe, אני יכול להריץ אותו והוא יעבוד. למה לא ראינו את זה? כי זה הבהב לנו מהר, אנחנו בדיוק באותה תיקייה.
כותבים my upload.exe והוא כותב לי Hello World. עוד פעם, אני יכול להיכנס לתיקייה ולהפעיל קובץ אקזה והוא יעבוד לי. זאת אומרת, כל סביבת הפיתוח הזאת זה למעשה כמו כתבן משוכלל שבו אני כותב פקודות בשפת C-Sharp, הוא לוקח את הפקודות האלו בשפת C-Sharp, הופך אותן לשפת מכונה.
זה נקרא לעשות Rebuild. הוא לוקח את ה-C-Sharp, הופך אותו לשפת מכונה, ואחרי שהוא הפך אותו לשפת מכונה, אני יכול להיכנס לתיקייה שלו ולהריץ את הקובץ, והוא עובד.
במקום להיכנס ולהריץ את זה מפה ידנית, אני יכול ללחוץ פה Play. אז הוא גם מקמפל וגם מריץ. אז ככה זה עובד. אז תתייחסו לדבר הזה כסביבת פיתוח, כמו כתבן משוכלל, כמו נוטפד משוכלל, שיודע גם לעשות ריבילד קומפיילר זה נקרא סביבת פיתוח גם נוטפלד משוכלל גם קומפיילר שעושה ריבילד והופך לשפת מכונה וגם אני יכול לעבור שורה שורה ולראות האם יש פה תקלה לדוגמה
אני עושה לו פה נקודה אדומה עושה פליי הוא מגיע עד הנקודה האדומה ועוצר זאת אומרת שהוא מריץ לי תוכנה פקודה פקודה עכשיו אני יכול לעשות לו דיבאג סטפ אינטו F11 או F10 ואז הוא מבצע לי פקודה פקודה אתם יכולים לראות פה שהוא בינתיים עשה שתי הדפסות אם אני אעשה פה עוד פעם דיבאג ואלחץ F11 תסתכלו מה יקרה הוא יעשה עוד פקודה זאת
אומרת הוא עובר שורה שורה מראה לי בצהוב בדיוק איפה הוא עוצר אני יכול לקחת אותו קדימה אחורה אתם רואים החזרתי אותו אחורה אני לוחץ עוד פעם F11 והנה הוא עוד פעם מבצע את הפקודה אתם רואים בצהוב הוא מבצע את הפקודה בצהוב אנחנו ממש יכולים לראות את זה אני יכול להחזיר אותו אחורה הוא מבצע עוד פעם את הפקודה הזאת
הבנתם זה נקרא לעשות דיבאג לעבור פקודה פקודה ובזמן אמת להגיד לו איזה פקודה בדיוק לבצע שהתוכנה תתבצע לא ברצף אלא אחרי כל פקודה תחזור אל השליטה ואני אוכל לבדוק אותה אז visual studio יודעת גם לעשות דיבאג שזה זה לעבור פקודה פקודה ולראות מה קורה בתוך המשתנים בזיכרון תוך כדי ריצה גם לקמפל את זה להפוך את זה לשפת מכונה וגם
לעזור לי לכתוב את הקוד אם אני עושה כל מיני שגיאות בזמן הכתיבה זאת אומרת אם אני אכתוב פקודה לא נכון הוא ידע לתקן את זה אז זה סביבת פיתוח טוב מה אנחנו רוצים לעשות אנחנו רוצים להצפין את הפיילורד שלנו, נכון?
אז בואו נעשה ככה, נעשה לנו עוד פרויקט אחד, אני הולך ל-Solution, עושה Add New Project. מה זה פרויקט?
זה קובץ אקזה, זו תוכנה נפרדת, זה יכול להיות אתר אינטרנט, זה יכול להיות קובץ אקזה. למעשה, יהיו לי שני קבצי אקזה, אחד שמריץ ואחד שמצפין.
עוד פעם, Console Application ב-Dotnet Core, Next, אני אקרא לו My Encryptor, אני אקרא לו, סתם אני קורא לו ככה, גם יהיה .NET 5, והנה, יש לנו פה כבר שתי תוכנות.
תוכנה שנקראת מיינד קריפטור, Hello from Encryptor. ואני יכול להגיד לו, תריץ לי את התוכנה הזאת, סטארט-אפ פרוג'קט.
עשיתי סטארט-אפ פרוג'קט, עכשיו זה נהיה שחור בולט, והוא יריץ את זה. אני עושה לו ככה, והוא מריץ את התוכנה הזאת. אז למעשה יש לי פה שני קבצי אקזה נפרדים לחלוטין.
קובץ אקזה אחד, לחצתי כאן, שנמצא פה בתיק יד בין דיבאג דוט נט פייב מיינקריפטור זאת תוכנה אחת ויש לי עוד תוכנה אחרת לגמרי שנקראת מיי פיילורד התוכנה הזאת זה שפותח את ההצפנה ומריץ אותה ומיינקריפטור יהיה זה שמצפין את הכל אוקיי אז יש לי פה שני פרויקטים שתי תוכנות תחת סולושן אחד פתרון אחד זה סתם
שם כללי לכמה קבצי אקזה זה מה שרציתי להראות לכם שאנחנו עושים פה כמה תוכנות ביחד מאוחדות בפתרון אחד פתרון זה סתם לנוחות של מתכנת לנוחות שלי בסופו של דבר מבחינת התוצאה הסופית יש לנו שני קבצי אקזה אחד שנקרא מיינקריפטור אחד שנקרא מייפיילורד יופי אז מה אנחנו כותבים פה דבר ראשון אנחנו צריכים למחוק את השטויות
האלו כי את זה אנחנו לא צריכים נכון את ה-hello מיינקריפטור אנחנו לא צריכים אנחנו לוקחים ומכניסים את הפיילורד שלנו לכאן אני לוקח את הפיילורד לפני ההצפנה מכניס אותו לכאן יופי עכשיו נהיה לי משתנה בזיכרון לוקח לו קצת זמן לסדר אותו ככה בגלל שהוא ענקי יהיה לי משתנה בזיכרון שמכיל את כל הקודים האלו איך קוראים למשתנה קוראים לו באף מה אנחנו רוצים אנחנו
רוצים להצפין אותו אז נעשה לולאה פשוטה שרצה על כל מספר ועושה איתו משהו נניח כל מספר אנחנו נוסיף לו 136 סתם אני זורק לכם אתם יכולים לזרוק כל מספר שאתם רוצים וכל כל ספרה שביעית אנחנו יכולים להוסיף לה לא 136 אלא 29. זאת אומרת, אני קובע איך אני מצפין את זה.
בואו אני אראה לכם את זה. אני מייצר קודם כל משתנה חדש. אז עשיתי פה משתנה חדש שנקרא encoded, שזה גם מערך של בתים. מה זה בית? זה מספרים. מערך של בתים כאלו, 8 ביט.
מערך זה אומר רצף, רצף מספרים. והגודל שלו זה בדיוק כמו הגודל של החבר הגדול שלנו פה. בבקשה, אני מכווץ אותו שיהיה לנו קל.
אז יש לנו פה עכשיו משתנה באף שכולל את כל מה שהבאנו לו מהפיילוד וזה כולל אותו דבר, פשוט רק ריק, הוא יהיה ריק. לכאן אנחנו נכניס את הקידוד שלנו.
כרגע הוא ריק לחלוטין. אוקיי, ומה אנחנו נעשה? נעשה לולת for, נכתוב for, טאב טאב, יהיה משתנה i שמתחיל מ-0 ורץ על המספר האחרון, באף נקודה length, האורך שלו, וזאת למעשה לולאה שתעשה את הפעולה הזאת 200 ב-1,000 פעמים
ועבור כל פעולה היא תעלה לי את ה-i, i0, i1, i2, i3, זאת הלולאה.
ומה נעשה בתוך הלולאה עם ה-i הזה? נעשה דבר נורא פשוט. קודם כל נכריז בתוך הלולאה על משתנה עזר שנקרא New Number, ככה אני קראתי לו, וה-New Number הזה יקבל את המספר המקורי מתוך ה-buff i ויוסיף אליו 136 זאת אומרת אני לוקח את המספר מתוך הבאף
הזה מה זה אומר מספר פעם זה יהיה מספר הראשון אחרי זה המספר השני המספר השלישי מתחילים ספירה מ-0 זאת אומרת בפעם הראשונה הוא ייקח את ה-4d הזה בפעם השנייה הוא ייקח את ה-5a הזה אחרי זה 41 ה-i ירוץ לנו וייקח כל פעם מספר אחר אז אני אומר לו ככה תרוץ לי מ-0 עד המספר האחרון מספר
i הזה ישתנה ותיקח כל פעם בית אחר מתוך המערך כל פעם הוא ישלוף בית אחר בהתחלה את הראשון את השני את השלישי את הרביעי ועבור כל מספר כזה תעביר אותו לאנסיין אינטג'ר האמת זה לא כזה חשוב לי אנסיין אינטג'ר סיין אינטג'ר שיהיה אנסיין אינטג'ר זה אומר בלי מינוסים לא משנה תעביר לי אותו למספר תחליף את מה שקיבלת תהפוך
אותו למספר ותוסיף לו 136 זה הכידוד הסודי שלי אתם רוצים משהו אחר? בואו נעשה סתם מספר 83.