
הטקסט המלא של הדקות הראשונות בהרצאה «הסבר על Reverse Shell מוצפן - חלק 2» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום לכולם בהרצאה הזו אנחנו רוצים להצפין את התקשורת בין הקורבן לבין התוקף אנחנו רוצים לייצר שני מפתחות הצפנה public וprivate שני מפתחות וכל מה שהpublic יצפין רק הprivate יכול לפתוח שני מפתחות אחד סוגר השני פותח ואת הpublic אנחנו ניתן לקורבן שלנו שיצפין לנו את המידע ואת המידע המוצפן רק אנחנו נוכל לפתוח כי רק לנו יש את הprivate key
אם מישהו מאזין על הכבל, איזושהי מערכת ניטור, תנסה להבין מה קורה שמה, היא לא תבין כלום כי הכל יהיה מוצפן ולאף אחד אין את הפרייבט קי שלי, הפרייבט קי שלי הוא רק שלי.
ככה עובדת התקשורת מול הבנק, ככה מוצפן ה-HTTPS. יש שני מפתחות, אחד מצפין, השני פותח וזה שפותח נמצא רק אצלי.
זה נקרא הצפנה אסימטרית, שיש שני מפתחות הצפנה ולא מפתח אחד שגם פותח וגם סוגר. אז בואו נייצר את הזוג מפתחות הזה, ויש לנו תוכנת OpenSSL, דרך אגב יש אותה גם לווינדוס, שמייצרת לנו זוג מפתחות לפי תקן.
קודם כל אני מייצר בקשה, ריקוויסט, לייצר זוג מפתחות. אני אומר שאני רוצה NewKey, מפתחות חדשים שלא קיימים עד עכשיו, בטכנולוגיה, בתקן של RSA, באורך ההצפנה, אורך המפתח הסודי יהיה 2048, זה דרגת קושי של לפרוץ את המפתחות האלו, כן, אורך המפתח, ככל שהוא ארוך יותר, כך קשה
יותר לפרוץ אותו. הדבר הבא שאני כותב זה no death. death זה אלגוריתם הצפנה של המפתח הפרטי שלי. אם אני לא אכתוב no death, הוא יבקש ממני סיסמה, ועם הסיסמה הזאת הוא יצפין את ה-private key שלי, את המפתח הפרטי שלי.
זה בא במטרה להגן על ה-private key, שגם אם מישהו יגנוב לי אותו, הוא לא יוכל להשתמש בו, כי ה-private key עצמו יהיה מוצפן בסיסמה שאני אתן לו.
אבל זה לא מעניין אותי, אני לא רוצה להגן על המפתח הפרטי שלי, שהמפתח הפרטי שלי יהיה בקובץ ב-Key Out, קובץ שנקרא private key.key. פה ישכב המפתח הסודי שלי, הפרטי שלי, והוא לא יהיה מוצפן בסיסמה, כתבתי לו no death.
הלאה, אני רוצה לקבל החוצה תעודה דיגיטלית בתקן X509, שתעודה דיגיטלית זה גם ה-public key וגם מידע נוסף, גם מפתח הצפנה ציבורי שאני אתן ללקוחות שלי, קורבנות שלי שיצפינו אליי את המידע וגם מידע נוסף יהיה בתעודה דיגיטלית תכף נראה מה זה המידע הנוסף זה תקן x509 התעודה תהיה תקפה
ל-362 ימים אני יכול לעשות יותר ימים פחות ימים אחרי שיעבור התוקף שלה הלקוח אמור לא לרצות להשתמש בה להודיע שהתעודה פגה תוקף למה עושים את זה כדי להחליף כל שנה תעודות ואז כל פעם שאני מחליף תעודות אני גם מחליף מפתחות ואם מישהו ינסה לפרוץ אליי, עד שהוא יפרוץ אליי אני כבר מחליף מפתחות.
זה כמו שאני אחליף מפתחות של הבית כל שנה. בקיצור, זו החלפת מפתחות כל שנה. למה? כי אם מישהו תופס לי תקשורת עד שהוא יעלה על כל המפתחות שלי, כבר יעברו המון שנים והוא לא יוכל לעשות לי נזק.
זה אמצעי אבטחה. אני לא כזה לחוץ על זה אז השארתי את זה שנה נניח באתר של פרקטי קיו כל שלושה חודשים אנחנו מחליפים את כל מפתחות ההצפנה של אתר הווב שלנו HTTPS שלנו ודבר אחרון זה אאוט אנחנו נשים את הפאבליקי ומידע נוסף של תעודה דיגיטלית זה הכל נקרא תעודה דיגיטלית זה גם פאבליקי וגם המידע אקסטרה בקובץ שנקרא פאבליקי נקודה CRT ואני לוחץ פה
אנטר והוא מתחיל לשאול אותי מידע נוסף שיהיה בתעודה דיגיטלית בנוסף למפתח הציבורי לדוגמה, באיזה מדינה אני גר? אני עושה לו Enter והוא לוקח את מה שבסוגריים, נניח אוסטרליה.
מה השם המלא של אזור שבו אתה נמצא? מה השם של העיר שבה אתה נמצא? כל מה שבסוגריים מרובעות זה ברירת מחדל, כרגע זה יהיה ריק. מה השם החברה?
נניח אני אכתוב חברה פרקטיקיו, וזה מופיע על התעודה עצמה. באיזה מחלקה אתה עובד בתוך הארגון? לא משנה, Enter. וזה השדה היחיד שחשוב, common name זה השם שיהיה רשום על התעודה ואם זה יהיה דבדפן שהשתמש הוא ישווה בין השם הזה לשם של שרת שאליו מתחברים כך הוא יודע שהשרת תואם לתעודה עכשיו במקרה שלי כל זה לא חשוב אבל סתם שתדעו נניח באתר אמיתי של
פרקטיקיו אנחנו משתמשים בתעודה www.practice.com ועם התעודה הזאת אתם מתחברים אלינו ב-HTTPS במקרה הזה זה לא באמת חשוב כי אנחנו נגיד ללקוח להתעלם ולא לבדוק שום פרמטרים בבדיקה, אני אקפוץ קדימה ואתם רואים כתוב פה Verify שווה 0, זה אומר אל תבדוק שום דבר בהתחברות,
וגם פה כתבתי פה Verify שווה 0, שלא יבדוק את כל הדברים האלו בתוך התעודה, אבל בדפדפן אמיתי זה לא יקרה, דפדפן אמיתי בודק שהכל תואם, אחרת נותן לכם הערה אדומה.
מבחינה טכנית, הדבר הכי חשוב, לא אינפורמטיבית, טכנית, זה השדה הזה של Common Name, לאיזה שם מתחברים, שם בדפדפן למעלה חייב להיות תואם לשם בתעודה אבל אנחנו לא הולכים להשתמש בתעודה לדפדפן אנחנו הולכים להשתמש בה לצורך הצפנת תקשורת מול הקורבן ואז אנחנו רואים פה שנוצרו לנו שני קבצים privatekey.key וpublickey.certificate
בוא נראה מה קורה בתוך הקבצים האלו אני עושה cut ל privatekey.key ואני רואה פה שהקובץ privatekey.key מתחיל בכאלו חמישה המינוסים מילים בגין פרייבט קי וזה המפתח ההצפנה הסודי שלי זה הדבר שיפתח לי את כל ההצפנות ואני לא אתן אותו לאף אחד נהדר זה הפרייבט קי מה יש לנו עוד יש לנו עוד את הפאבליקי נכון פאבליקי נקודה סרטיפיקייט איך נראה פאבליקי
פאבליקי נראה באופן דומה רק במקום בגין קי יש לנו בגין סרטיפיקייט ובתוך הסרטיפיקייט הזה מקודד גם הפאבליקי שלי וגם המידע הנוסף שסיפקתי שימו לב בתעודה הזאת אף אחד לא חתם עליה.
במציאות גם נדרשת חתימה של מישהו מעליי על הסרטיפיקט שלי. מישהו שיחתום ויגיד, אני הבאתי לו את התעודה הזאת. ככה בודקים שהתעודה הזאת, יש לה מקור שכולם סומכים עליו.
אבל כרגע אנחנו לא באים לבדוק את השרשרת הזאת. לא מעניין אותנו שלא יסמכו עלינו. מעניינת אותנו רק ההצפנה. אם היינו משתמשים בתעודה הזאת לצורך גלישת HTTPS, היינו צריכים לדאוג לחתימה דיגיטלית על הסרטיפיקט