קרדיט ל- TheLeader
איך מתחילים?
בזמן האחרון לרגל פתיחת פורום מתחילים הרבה משתמשים שואלים אותי את אותה שאלה - "איך מתחילים? מאיפה כדאי להתחיל? מה צריך לדעת כדי להיות האקר?".
1. ובכן, ראשית כל צריך הרבה עצבים קשים ורצון ללמוד. הרבה אנשים התחילו קצת ועזבו את התחום בדיוק מהסיבה הזו.
בקיצור, אם באתם בשביל לפרוץ לחברה שלכם את ה-ICQ, כדאי שתעזבו כבר מעכשיו. האקינג הוא תחום מורכב ומסובך ודורש הבנת תהליכים וידע בהנדסת תוכנה כדי ללמוד ולפתח את היכולת לגלות חורי אבטחה, לעקוף מנגנונים, לפצח אלגוריתמים, להזריק קוד ולכתוב כלים ואקספלויטים משלך.
2. שנית, צריך לדעת איך באמת משתמשים בגוגל. גוגל הוא כלי עוצמתי וחבל שלא תשתמשו בו כמו שצריך. לכן למדו את מנוע החיפוש שלכם והכירו אותו לעומק כדי שתוכלו להשתמש בו לכריית מידע.
http://googleguide.co.il/07-operators.html
http://www.google.co.il/
3.כדי להיות האקר טוב צריך לדעת לקרוא מאמר ולנתח אותו בצורה לוגית כך שאתם מבינים את כל השלבים. אם אין לכם את היכולת הזו ואתם מרגישים שאתם לא מבינים את כל חלקי המאמר, עברו למאמר פשוט יותר. רק משם תוכלו לצמוח.
http://he.wikipedia.org/
4. רוב החומר בנושא כתוב בשפה האנגלית, ולכן אם אין לכם ידע בינוני באנגלית, יהיה לכם מאוד קשה להתקדם.
Go Learn English.
5. למדו HTML, וכיצד לכתוב דפי אינטרנט. זוהי השכבה הבסיסית ביותר, ובלעדיה תישארו תקועים לנצח. למרבה המזל, השפה היא מאוד קלה וייקח לכם גג יום אחד בשביל ללמוד אותה.
http://www.amalnet.k12.il/guide/html_bas.htm
6. למדו והבינו את תהליך פיתוח התוכנה. אם אתם רוצים לנסות לגלות חורי אבטחה בפלטפורמת תוכנה, ראשית כל תצרטכו להבין את תהליך פיתוח התוכנה ולנסות לפתח אחת משלכם. עליכם לדעת - ניתן לחלק את רוב שפות המחשב לשלושה סוגים:
שפות עיליות:
שפות שנכתבות בשפה עילית, כלומר "גבוהה" יחסית לשפת המכונה, ולאחר מכן עוברות תהליך שנקרא "הידור" או בשפת העם "קימפול" כדי להמירה לשפה "נמוכה" - שפת המעבד, בצורה שהוא יוכל להריץ את התוכנית. כדי לתכנת בשפה עילית תצטרכו להוריד מהדר (קומפיילר) מתאים לשפה שלכם ולהשתמש בו על מנת להמיר את הקוד לאפליקציה בת-הרצה, לשפת המעבד.
http://he.wikipedia.org/wiki/%D7%A9%...9C%D7%99%D7%AA
http://he.wikipedia.org/wiki/%D7%9E%D7%94%D7%93%D7%A8
שפת סף, אסמבלי:
שפת מכונה היא שפה שמורצת ישירות על ידי המעבד, ללא כל תירגום. ישנו הבדל קל בין המושגים "שפת סף" ו"שפת מכונה", כנראה מכיוון שבשפת סף ישנו עדיין איזשהו גורם מגשר בין המעבד לקוד (אחרי הכל, גם אסמבלי עוברת הידור בגמר כתיבת הקוד). בכל מקרה, שפת סף הנקראת גם "אסמבלי" היא השפה הקרובה ביותר לשפת מכונה, ולמעשה מאפשרת למעבד לגשת ישירות לכתובות בזיכרון, ולבצע למעשה כל פעולה שניתן לבצע בשפה אחרת, אלא שהתהליך מורכב בדרך כלל מהרבה יותר פקודות ולא כל כך אינטואיטיבי וקל להבנה. אחד היתרונות הבולטים של אסמבלי הוא שהיא מהירה בהרבה משפות אחרות, בשל טבעה כשפה נמוכה. השימושים באסמבלי לאבטחת מידע רבים, וניתן בעזרתה לנתח מנגנוני הגנה של תוכנות וליצור קראקים וקיגנים. כמו כן, מטבעה הישיר של שפת אסמבלי לעיתים קל יותר לבנות בה תוכנות שמתעסקות בתחומים שנוגעים להזרקות לזיכרון, כגון DLL Injection, Process Hijacking ו-Buffer Overflow. כאשר כותבים קוד אסמבלי זדוני (Shellcode) על-מנת להזריק אותו מאוחר יותר למעבד כדי שיריץ אותו, הדבר מחייב ידע באסמבלי, אך למעשה ניתן להוריד קודים מוכנים כאלו מהאינטרנט. בקיצור השימושים של השפה הזו רבים - אך בסה"כ, מדובר בשפה קשה יחסית ולא מומלצת למתחילים.
http://he.wikipedia.org/wiki/%D7%A9%...A_%D7%A1%D7%A3
http://he.wikipedia.org/wiki/%D7%A9%...95%D7%A0%D7%94
http://he.wikibooks.org/wiki/%D7%90%...91%D7%9C%D7%A8
שפות אלו עוברות את התהליך הבא:
א. כתיבה
ב. ניפוי שגיאות
ג. שיכתוב (כתיבה מחדש)
ד. הידור
ה. הרצה
שפות סקריפט (תסריט):
שפות סקריפט מתייחדות בכך שהן לא עוברות דרך מהדר אלא מורצות דרך גורם ביניים שנקרא מפרש או "אינטרפרטר" (Interpreter) ומתרגם בזמן אמת את הקוד לשפת מעבד. לרוב מדובר גם בשפות עוצמתיות ועם זאת קלות להבנה באופן יחסי. כדי להשתמש בשפת סקריפט, תצטרכו להתקין מפרש מתאים לשפה שלכם.
http://he.wikipedia.org/wiki/%D7%A9%...A8%D7%99%D7%98
שפות אלו עוברות תהליך קצר יותר של פיתוח:
א. כתיבה
ב. ניפוי שגיאות
ג. שיכתוב (כתיבה מחדש)
ד. הרצה ישירה ללא הידור
_____________________
כמו כן, קיימת ההבחנה בין שני סוגים של שפות:
שפות צד-לקוח - שמורצות בצד הלקוח, על שולחן העבודה או בדפדפן.
שפות צד-שרת - שמורצות בצד השרת, ומשדרות את הפלט לצד הלקוח.
שפות "היברידיות" - שניתנות להרצה גם בצד הלקוח וגם בצד השרת. לרוב אלו הן שפות סקריפט.
_____________________
אינני מעוניין להלאות אתכם, אך בנוסף עליכם לדעת שישנו עוד חילוק בין סוגי השפות:
שפות מונחות עצמים - שבהן התיכנות מונחה ע"י עצמים שסביבם מתבסס התיכנות ודרכם ניתן לבצע פעולות.
שפות שאינן מונחות עצמים - שבהן התיכנות אינו מונחה ע"י עצמים אלא בדרך כלל על-ידי פקודות ישירות.
מהניסיון של שנים רבות של תיכנות, רוב המתכנתים הגיעו לאותה מסקנה: תיכנות מונחה עצמים שולט. =]
http://he.wikipedia.org/wiki/תכנות_מונחה_עצמים
7. למדו שפת תיכנות חזקה וכתבו את התוכנית הראשונה שלכם. במקרה הזה זהו עניין של טעם אישי, ולכן לא אוכל לעזור לכם כל-כך אלא רק להנחות אתכם בקווים כלליים אילו שפות רלוונטיות אליכם כרגע. היעזרו בגוגל ובויקיפדיה כדי ללמוד עוד על השפה שמעניינת אתכם. מה שאתם אמורים ללמוד כרגע הוא בעיקר שפת צד-לקוח חזקה.
שפות עיליות (צד לקוח):
C
C++
C#
JAVA
שפת סף:
IA-32 Assembly
שפות סקריפט (צד לקוח/שרת) :
PHP
Perl
Python
שפות דפדפן:
HTML
JavaScript
AJAX
CSS
שפת מסד:
SQL
8. למדו והכירו את מודל ה-OSI ואת פרוטוקול ה-TCP/IP כדי שתוכלו לדעת יותר על צורת התקשורת בין מחשבים, ומאוחר יותר גם לנצל את הידע הזה לטובתכם. אך כדי להבין היטב את מודל ה-OSI (או "מודל שבע השכבות"), ראשית עליכם ללמוד על היחסים בין השרת ללקוח, מהי כתובת IP(כתובת פרוטוקול אינטרנטי), ומהו פורט(שער).
http://he.wikipedia.org/wiki/%D7%A6%D7%93_%D7%9C%D7%A7%D7%95%D7%97
http://he.wikipedia.org/wiki/%D7%A9%D7%A8%D7%AA
http://he.wikipedia.org/wiki/%D7%A9%...A7%D7%95%D7%97
http://he.wikipedia.org/wiki/%D7%9B%...D7%91%D7%AA_IP
http://he.wikipedia.org/wiki/%D7%A4%D7%95%D7%A8%D7%98_(%D7%AA%D7%A7%D7%A9%D7%95%D7%A8%D7%AA)
http://he.wikipedia.org/wiki/%D7%9E%D7%95%D7%93%D7%9C_%D7%94-OSI
http://he.wikipedia.org/wiki/TCP/IP
9. לאחר שלמדתם את הבסיס, למדו כיצד להשתמש ב-Socketים על מנת לבצע התקשרות לאינטרנט. הסוקט הוא למעשה כמו "טלפון" לאינטרנט, כתובת ה-IP משמשת כ"מספר הטלפון", ומספר הפורט משמש כמספר השער אליו תבוצע ההתקשרות (בנוסף יש עוד כמה פרטים שצריך להוסיף, כגון סוג הפרוטוקול, זמן תפוגה וכדומה). כך תוכלו ליצור תקשורת עם יעדים אחרים באינטרנט, ומשם הדרך פתוחה לפלטפורמות חדשות שניתן לחקור. מכיוון שהפונקציה לפתיחת סוקט משתנה משפה לשפה, לא אוכל לעזור לכם בנושא הזה ולכן אנחה אתכם להשתמש בגוגל.
10. בחרו תחום כללי אשר אותו אתם מעוניינים לחקור, ומתוכו בחרו את הפלטפורמה הספציפית שאתם מעוניינים להתמקד בה כרגע. בתחום אבטחת המידע ישנו מגוון רחב ביותר של ענפים, אשתדל לתת כאן רשימה חלקית של נושאים שעשויים לעניין אתכם. היעזרו בגוגל ובויקיפדיה.
התקפת מניעת שירות (DoS)
הזרקות קוד (Code Injections)
התקפות מבוססות דפדפן
התקפות מבוססות אפליקציות צד-שרת
התקפות מבוססות רשתות, זיוף בקשות וניתוב
התקפות מבוססות זיכרון, גלישות זיכרון
רברסינג או "הנדסה הפוכה" (Reverse Engineering)
הנדסה חברתית (Social Engineering)
אסיפת מידע ויצירת שגיאות מסגירות מידע (Error Raising)
הצפנה וקריפטוגרפיה, אליס ובוב
פריצת סיסמאות (Password Cracking)
הסוואה וקיבוע של וירוסים
פיצוח אלגוריתמים חלשים (Weak Algorithm Breaking)
השתלטות על תהליכים (Process Hijacking)
העלאת הרשאות (Privilege Escalation)
זיוף כתובת מקור (IP Spoofing)
ניצול מערכת הרשאות/הגדרות פגומה (Broken Access Control)
פריקינג וטלפוניה (Phreaking)
בנייה ועקיפה של מערכות לזיהוי חדירות, אנטיוירוסים, אנטי-רוגלות וחומות אש
עקיפת מנגנוני זיהוי/חסימה (Bypassing)
האזנה להתקשרויות ("רחרוח"), התקפות האיש שבאמצע (Sniffing, Man in the middle attacks)
התקפות קיבוע Session (Session Fixation Attacks)
FootPrinting, מחיקת לוגים, פרוקסים ואנונימיזציה ברשת
זה על קצה המזלג. חשוב גם לדעת לא להישאר מקובע על תחום אחד - אם יש לכם תחושה שמיציתם את עצמכם בענף שלכם, עברו לנושא הבא.
11. למדו והכירו היטב את הפלטפורמה שאתם מעוניינים לחקור ולפרוץ. לעיתים זה כרוך בלמידת פרוטוקול חדש, מערכת הפעלה חדשה או שפת תיכנות חדשה, אך בלעדי הצעד החיוני הזה לא תוכלו להמשיך. הורידו והתקינו את כל מה שדרוש ללימוד על המחשב שלכם, והתחילו ללמוד.
12. לאחר שהכרתם היטב את הפלטפורמה ואתם בקיאים בה, למדו התקפות ידועות שקשורות לנושא. אין טעם להמציא את הגלגל מחדש - חוקרי אבטחת המידע בעולם כבר גילו הרבה דרכים לנצל חורי אבטחה בתוכנות, פרוטוקולי תקשורת, מערכות מידע, מסדי נתונים, שרתים, דפדפנים, אפליקציות רשת וחומרה. למטה אתן קישורים לכמה מאגרי מידע שמכילים מאמרים על התקפות ידועות, אותם תוכלו לקרוא וללמוד.
13. בתום הלמידה, נסו את ההתקפות החדשות שלמדתם על מחשבים שלכם (אינכם רוצים להסתבך עם החוק). במידה ונכשלתם, קראו שנית את המאמר, נסו לבדוק את גירסאות התוכנה שברשותכם ושניסיתם לנצל, וצפו בסירטונים שמדגימים את ביצוע ההתקפה שלב אחר שלב.
14. במידה והצלחתם, עברו הלאה להתקפה הבאה. הפסיקו לשבת במקומכם ולצפות שהדברים יקרו מאליהם - אם לומדים, קוצרים תוצאות. אם לא לומדים, אוכלים ת'לב.
15. אם אתם מרגישים שאתם שולטים בהתקפה מסויימת, גלו חורי אבטחה משלכם במערכות ידועות. לא מדובר כאן על אתרים קטנים אלא על אפליקציות רשת (כגון פורומים ובלוגים) דפדפנים או תוכנות לשולחן העבודה (כגון משחקי מחשב ידועים, תוכנות FTP, ICQ, מסנג'רים, סקייפ). כמו כן, אתרים גדולים מאוד כגון YouTube, ג'ימייל, MSN, הוטמייל וכדומה שווים בדיקה.
16. בעת שאתם בודקים חורי אבטחה ביעד מרוחק, הישארו אנונימיים והעבירו את התקשורת דרך שרת מתווך אנונימי (Anonymous Proxy). זה יחסוך לכם הרבה צרות. חשוב להדגיש שאם יש צו מבית משפט, ניתן להכריח את בעלי הפרוקסי לגלות את כתובת האייפי שלכם אף על פי שהתחברתם דרך פרוקסי, וכך לגלות את הפרטים האישיים שלכם ולעצור אתכם. אז בבקשה, אל תעשו שטויות.
17. לאחר שגיליתם חור אבטחה במערכת ידועה, כתבו לו פיסת קוד שתנצל אותו ופרסמו אותה. פיסת קוד כזו מכונה אקספלויט (Exploit - שפירושה "ניצול"). מאגר האקספלויטים הגדול בעולם נמצא באתר http://www.milw0rm.com והוא מכיל אלפים של אקספלויטים (שווה ביקור! =] ) - במידה וכתבתם אחד, שלחו אותו לשם עם הכינוי שלכם.
18. שמרו אמונים לאתיקת ההאקר. לעיתים אנשים עם יותר מדי עוצמה בידיים שוכחים את הערכים והמוסר שלימדו אותם בכיתה א', ומרגישים חופשיים לשנות ולהרוס דברים כאוות נפשם, לפגוע בחלשים. זכרו - סוף גנב לתלייה, ואותו הדבר לגבי האקר שהורס.
אז הנה קצת מאתיקת ההאקר:
העריכו כל יצירה ולו הקטנה שבהן, גישה למחשבים צריכה להיות מוחלטת ובלתי מוגבלת לכולם, חשבו מחוץ לקופסה, דעו שהמחשב הוא כלי עוצמתי שעימו ניתן להרוס וליצור, תרמו* לחופש מידע, האמינו שכל דבר הוא אפשרי, לעולם אל תשפטו אדם על פי גזעו, מוצאו, מינו, גילו, דתו או צבע עורו, הגנו על פרטיות האנשים, שמרו על פרופיל נמוך, שתפו את יצירותיכם, תרמו* לבניית אינטרנט טוב יותר, תרמו* לפרויקטים של קוד פתוח, דעו כי תמיד יהיו יותר טובים מכם, הישארו תמיד בצד הטוב, עזרו למתחילים כי גם אתם הייתם פעם מתחילים, והכי חשוב - אל תהרסו.
*כאן הכוונה היא לאו דווקא לתרומה כספית אלא גם לתרומה בקוד ושותפות בפרוייקט.
http://en.wikipedia.org/wiki/Hacker_ethic
http://www.fiu.edu/~mizrachs/hackethic.html
19. אל תלמדו רק איך לפרוץ אתרים אלא גם כיצד לאבטח אותם. התמקדו בגורם הבעייה ונסו למצוא דרך למנוע את היווצרותה. לעיתים יש כבר פונקציות מובנות לטיפול בבעייה הזו, כל שצריך לעשות הוא להשתמש בגוגל. אם תפתחו את היכולת הזו, תוכלו לעבוד באבטחת מידע בצבא, או כמקצוע.
20. כתבו מאמרים חמודים על איך מתחילים. =]
שלכם, TheLeader
מאגרי מידע:
UnderWar - קטגוריית אבטחת מידע - מאגר מאמרים - חובה
גוגל
ויקיפדיה עברית - קטגוריית אבטחת מחשבים
ויקיפדיה אנגלית - קטגוריית Computer Security
ויקיפדיה אנגלית - קטגוריית Security Exploits
ויקיפדיה אנגלית - קטגוריית Web Security Exploits
ויקיפדיה אנגלית - קטגוריית Injection Exploits
OWASP - וויקי שמוקדש לנושאי אבטחת מידע
מילוורם - מאגר האקספלויטים הגדול בעולם
מגזין Phrack - אוסף ענק של מאמרים
גנרטור ה-ShellCode של MetaSploit
Secunia - מאגר מתעדכן של חורי אבטחה
איך להיות האקר - תרגום של המאמר המקורי מאת Eric S. Raymond
מאגר CSRFים
בלוגים:
http://hacking.org.il
http://aviv.raffon.net
http://johnny.ihackstuff.com
http://ha.ckers.org
http://www.hackaday.com/





ציטוט ההודעה