ראשי > אבטחת מידע > איך אפשר למצוא ולכתוב אקספלויט?
כדי לכתוב אקספלויט אתה צריך קודם כל לדעת שפת תיכנות, אני ממליץ לך ללמוד Perl (אם אתה לא יודע..), היא מאוד נוחה, פשוטה לשימוש, וקלה ללימוד.
אחרי זה אתה צריך להכיר קצת מושגים וקצת מהמסגרת.., אני ממליץ לך לקרוא כל מני אקספלויטים אחרים וככה לראות איך הם השתמשו ומה הם עשו כדי לנצל חור מסויים.
אחרי זה, תחפש חורים מוכרים ותנסה לכתוב בעצמך אקספלויטים בשבילהם, ואחר"כ תנסה להוריד איזה מערכת פורומים חינמית, או תתקין שרת על המחשב שלך או איזה ישום מסויים על המחשב ותתחיל לחקור אותו ותחפש כל מני באגים שקיימים שם (אם זה מערכת פורומים למשל אז תנסה לעבור על הקוד מקור של כל מני מקומות "פגיעים" או כל מני שאילתות וכו').
ואחרי שתמצא חורים כאלה תנסה לשבת ולראות איך אפשר לנצל אותם לטובתך, ואחרי שאתה מבין איך אפשר לנצל את זה לא תיהיה לך בעיה לכתוב בעזרת הידע שלך את האקספלויט שינצל את אותו החור.
אז הבסיס זה להתחיל ללמוד שפת תיכנות שתעזור לך, לרב כותבים אקספלויטים בPerl או בCPP, ובגלל שPerl היא ה"יותר נוחה" והשימוש והגשיה לסוקטים (כלי שבעזרתו אפשר לשלוח ולקבל מידע מהוסט מסויים) יותר נוחה והרבה יותר "גמישה", אבל אם אתה מעדיף C אז תלמד אותה..
בכל אופן, מה הידע שלך בתיכנות/תיכנות בעזרת סוקטים?
הממ אם אני אסביר לך את התיאוריה מאחורי חלק מהאקספלוייטים הנפוצים כמו גט ובאפר אוברפלוו אני איאלץ לבזבז זמן כי HLL כתב מאמר מצויין שנמצא בisra-hell.org
תעיף מבט!
ציפי!! אני מחכה לתוכנה שלי
וסילי... אממ.. איך אני אגיד את זה... אהה... אוה.... האתר כבר לא קיים... אולי הם מתכננים איזה קאמ-באק, אבל אין לי מושג)
רוב האקספלוייטים נכתבים ב c, ורובם משתמשים בטכניקת הבאפר אוברפלו...
דוגמא לבאפר אוברפלו (גלישת מאגרים בתרגום חופשי)
1)
char c[10]; הגדרנו מחרוזת בת 10 איברים או יותר נכון 9 ועוד תו סיום אחד.
strcpy("aaaaaaaaaaaaaaaaaaaa",c) העתקנו אל המקום שהוגדר מחרוזת בת יותר מ9 תווים מה שיגרום לשמירתם של התווים בכתובות מסויימות שבכלל לא הוגדרו לצורך הזה.
עוד דוגמא:
char *p;
p=(int *)malloc(10 * sizeof(char));
strcpy("jfgjfikfkgfjgkfjgkfwijejhrsfd",p);
שוב ]ה הגדרנו מצביע ואז בעזרת הקצאה דינמית הקצאנו לו 10 תאים....... כשהכנסנו את המידע פשוט הוא נשמר במקום שלא הוקצה לו ויכול להיות שדרס מידע אחר.
האמת לא התעמקתי על כתיבת אקספלוייטים, אבל בעיקרון לדוגמא פונקציה מסויימת (בקוד מקור של התוכנית הפגועה) או מחרוזת שהוגדרה מקבלת יותר ממה שהיא יכולה להחזיק, בעיקרון strcpy היא אחת מהפונקציות היותר מסוכנות של השפה ורוצים למצוא פתרום אליה.....
הבעיה קוראת בגלל שמוגדרת רק כתובת התחלה לנתונים, ולא כתובת סיום, ככה שכשמנסים לחרוג מהמקום שהוקצה בעזרת strcpy, פשוט אין אזהרה...
אמממממ ברוב האקפלוייטים תראה קוד הקסדצימלי....
משהו כזה:
x05\x07\x75\45x\34x
שהושם כערך של char.....
ברובם גם תראו בסוף bin/sh...... זתומרת התוכנית יוצרת shell אחרי שהיא עושה באפר אוברפלו.......
אמממ, זה קוד אסמבלי שיוצר shell והפכו אוטתו להקסדצימלי........
בעיקרון שימוש בסוקטים תחת לינוקס הוא יחסית קל, והאמת רוב האקספלוייטים שמתחברים לשרת מסויים נכתבים ב c.....
הרעיון הוא "להזריק" מידע בSQL לשאילתה מסויימת וככה להשיג מידע שלא היה לנו גישה אליו לפני-כן.
למשל יש לנו טופס שממלאים בו שם משתמש וסיסמא, ואז השאילתה נגשת לטבלה מסויימת ובודקת אם הפרטים נכונים, אם כן היא מחזירה True ומחברת אותה לחשבון של אותו היוזר המסויים ואם לא היא תחזיר False ומבקשת ממך לנסות להתחבר מחדש.
עכשיו אם למשל בשם משתמש נכתוב "יוסי כהן" ובסיסמא נכתוב" 'Baka or 'SSS'='SSS " אז השאילתה תבדוק קודם אם יש כזה משתמש ואז היא בודקת את הסיסמה ועכשיו, תראה שלא משנה מה, תמיד התנאי הזה יתקיים כי תמיד 'SSS' יהיה שווה ל'SSS' ולכן הסיסמה תיהיה או Baka (מה שכמעט בטוח שלא) אבל אחרי זה יהיה את התנאי שמתקיים ובגלל ש F or T שווה לT אז זה יתקיים ויחזיר לך True ויחבר אותך לחשבון של "יוסי כהן".
לרב ההזרקה תיהיה יותר מסובכת ולפעמים תיהיה צריך ליצור שאילתה מכוננת או לנסות לנחש ערכים מסויימים בטבלה (אם זה למשל פורום אז אתה יכול להוריד את המערכת (כל עוד היא חינמית) ואז לבדוק את הערכים וככה לא תיהיה צריך לנחש..)
וBufferOver Flow אני תמיד מדמה לארון שכשאתה ממלא תא מסווים בו ב"יותר ספרים ממה שהוא יכול להכיל" אז אותו התא קורס וכל הספרים נופלים לתא שמתחתיו וככה הם כיביכול "דורסים" את הספרים (מידע) שיש באותו התא.
יש עוד הרבה סוגים של אקספלויטים, יש יותר מוכרים ויש פחות.. אני מציע לך לחפש בגוגל, אני בטוח שיש שם הרבה מידע מעניין בנושא.
תהנה, ואל תשכח- לאכול בריא זה חשוב!
נדבר קצת....
גם לאי סי קיו שנים לא התחברתי, שלח לי את המספר שלך בפרטי וכשאני אתחבר אני אדבר איתך אחי :)
אגב, לכבוד הוא לי שנוסטלגיה כמוך מגיב פה
אתה יכול להוריד אותו מכאן בנושא "אשכול טקסטים" (הוא בספר השני שלי).
או מכאן:
http://planet.nana.co.il/cp77/texts/3xpl01ts.txt
תהנה, אני אשמח לקבל תגובה.
אני זוכר שרון היה מחובר לאי סי קיו הרבה בזמן האחרון (כל הפעמים האחרונות שאני התחברתי ראיתי אותו מחובר), שמע, כשאני אתחבר ואשלים לך את כל מספרי האי סי קיו, שמרתי על קשר עם הרבה מהעבר...
[נערך על-ידי cp77fk4r בתאריך 2004/06/28 20:11]
בכל מקרה אפשר אולי לבקש ישירות מHLL את הטקסט שלו
אגב, אם אני זוכר טוב, זה בכלל היה של סרבי, לא? הוא כתב בזה משהו בפרל..
ולאטרפ, כן, יש איזה סרבר שהרבה חברה ותיקים נמצאים בו.. זוכר את סקאט? את דיאבלו? יוגי? איגור? טייגר? טרמי? גימל? היקינג? אינפקטד גלב? וכל אלה.. (אני לא זוכר עם מי אתה היית מסתובב, ככה שאני לא יודע בדיוק על מי אתה מדבר כשאתה אומר "וכל אלה.."), אני אשלים לך הכל באי סי קיו.. מקסימום שלח פה הודעה פרטית, זה לא לכאן...
אגב, מנהל גראפיקה (Forbidden) זה Debugger, אם אתה זוכר אותו :)[נערך על-ידי cp77fk4r בתאריך 2004/06/28 20:15]
http://www.red-board.co.il/board/topic.asp?tid=13173
:)
ואמ.. הודעה שלך לא ראיתי פה... מי אתה? (אם היה לך ניק לפני-כן..)
אבל זה אחד שכינויו בארץ הוא Paranoia.... נשמע קצת מוכר.....
(כמה אני מקווה שאנחנו מדברים על אותו אחד..)
ולא אחי, הוקי שינה ניק ממזמן.
ובבקשה, זה לא הנושא...[נערך על-ידי cp77fk4r בתאריך 2004/06/29 01:19]
אחי איזה האווקי אני האוק מעפן שלא מבין כלום בתכנות והאקר בחיתולים
הניק שלו היה BlackHawk ובדיוק אני והוא דיברנו עליו ואז נרשמת, אז הוא חשב שזה אתה, ואמרתי לו שלא בגלל שראיתי את ההודעה שכתבת (זאת שמחקתי- שלחתי לך הודעה פרטית עם התשובה והסיבה למחיקה), וגם בגלל שהוקי שינה את הניק שלו לפני הרבה זמן.
בכל אופן, אני מבקש שנפסיק לדבר על זה, זה לא הנושא של הטופיק.