Logo

רד-בורד: ארכיון

ראשי > אבטחת מידע > תרגום:תולעים במאה ה21

2004-07-18 15:14 Enn
לבינתיים לא עלה לי רעיון על מה לרשום טקסטים. אומנם רשמתי טקסט אחד או שניים לפני יותר מחודש אבל עדיין אני לא חושב שאני מסוגל לרשום טקסט מעניין, מקצועי- גם בגלל הידע שלי שאולי אינו מספיק, וגם בגלל שכמעט על כל דבר ניתן למצוא מידע באינטרנט. יחד עם זאת חשבתי שיהיה נחמד לתרגם מאנגלית משהו. דילגתי בין מאמרים שונים שקראתי באנגלית והחלטתי שאני יתרגם את הטקסט Wormz in 21st century (תולעים במאה ה-21) שנכתב ע"י Benny/29A .

הטקסט המקורי ניתן למצוא ב
http://www.29a.host.sk/29a-5/29a-5.207

אהה וזה לא הכי מעודכן- אני יודע... (אני כמעט בטוח שזה משנת 2002).
על המבוא דילגתי- משעמם לתרגם דברים קצת משעממים וניגשתי ישר לדברים המענינים.
אם יש לי הערות- ארשום אותם בסוגריים רבועיים והערות העורך המקורי בסוגריים רגילים.
יכול להיות והקורא המצוי לא ישים לב לכמה עיוותים בתרגום, אבל יש כמה כאלו. כמקובל בתרגום של ישראלים מצויים גם אני מעקם/מעוות/משנה/מקלקל כמה דברים יפים מאנגלית והופך אותם לדברים לא ברורים- אם יש כאלו אשמח לקבל על כך תגובות (וכמובן יתוקן). לבינתיים כפי שרשום בסוף עדיין לא תרגמתי הכל והפסקתי באמצע אבל בכל זאת עדיף לקרוא "מעט" מאשר כלום.
קריאה מהנה

----------------------------------------------------------------------------------------------------------------------------
#############################
³ אנאטומיה של "תולעת מושלמת" ³
#############################
גם זלוואסקי [באנגלית Zalewski] ידע זאת, וידע הרבה זמן לפנינו. הוא רצה לתכנת תולעת, אחת באמת מסוכנת (והוא אמר שהוא עשה זאת). אבל רגע, מסוכן לא אומר שזה הרסני. מסוכן פירושו תולעת בעלת יכולות התפשטות מסוכנות. תולעתו [=התולעת שלו] הייתה מבוססת על 7 חוקים:
1. ניידות [portability] - על התולעת לא להיות תלויה במטרה או בפלטפורמת המטרה, וחייבת לעבוד על כמה מערכות הפעלה, לא רק מערכות Unix אלא גם Win/Dos.
2. הסוואה/הסתתרות [invisibility] - התולעת צריכה להוציא לפועל הרבה אנטי-* [מישהו מבין? אני לא :)] ויכולות הסוואה במערכת המטרה, ולהיות בלתי מורגשת הכי הרבה זמן שאפשר
3. עצמאיות [independency] - התולעת צריכה להתפשט בעצמה, ללא צורך באינטרקציה מצד המשתמש, מאגר נתונים של אקספלויטים.
4. יכולות למידה [learning abilities נושא מעניין מאוד- זה קשור לבינה מלאכותית קשר הדוק] - על התולעת ללמוד טכניקות ביצוע חדשות בזמן הריצה [on the fly]. כל התולעים [זה זכר או נקבה? אני יתייחס על זה כמילה שלא יודעת את מינה...] יהיו מסוגלות להוריד עידכונים באמצעות ערוץ תקשורת מיוחד (בואו נקרא לו "wormnet") .
5. שלמות [integrity] - כל תולעת והמבנה הכולל של וורמנט [wormnet] צריך להיות קשה לגילוי ולשינוי/השמדה.
6. פולימורפיזם [polymorphism כלומר רב צורתיות]- התולעת צריכה להיות פולימורפית לחלוטין, ללא חלקי קוד קבועים
7. ישום [application] - התוכנה צריכה לעבוד על ידי תוכנית- למשל מערכת דבוקה, להוריד הוראות, לשלוח כמה קבצים, וכאשר המשימה הושלמה- לברוח מהמכונה.

כעת נדון על כל נקודה ונקודה [בהתאמה].

1. ניידות ככל הנראה תהיה בעיה גדולה. יהיה טוב לתכנת תולעת שכזו בשפה עילית [HLL כמו הניק של הלל :)] כלשהי - C תהיה הבחירה הטובה ביותר, כיוון שהיא נתמכת כמעט על כל מערכת הפעלה [אבל לדעתי המשפט הזה קצת בעיתי]. אתה תצטרך להשתמש בסיפריות זמן ריצה סטנדרטיות עד כמה שאפשר [טוב אנא גם הוא מבין שהמשפט הקודם קצת בעייתי]. לפעמים תצטרך להשתמש בקריאות ספציפיות למערכת הפעלה, בעיקר בנקודות 2 ו6.

2. מה יכול להיות קשה יותר מתיכנות שגרות אנטי-* טיפשיות, אולי אתה חושב. בכל אופן, זה לא כל כך קל לתכנת ולא כל כך לא חשוב כמו שאתה [עלול] לחשוב. בטוח, אתה צריך ליישם הרבה תכונות אנטי-* ידועות לתיכנות וירוס, זה ברור. אך זה לא הכל.... תארו לכם שהתולעת שבניתם פעולת על שרת כלשהו למשך מספר ימים ולוקחת באופן קבוע זמן מעבד, לשבוע. כאשר האדמין יפתח את מנהל המשימות [task manager] הוא יראה כי תהליך מוזר רץ במשך שבוע וזה בטח נראה חשוד. עצתי היא:

שנו את מספר הזיהוי של התהליך ושם התהליך ותעשו הסוואה על הזמן בו התולעת רצה. תחת Win95/98 הדבר קל מאוד [זה טקסט ישן...] אתם יכולים להשתמש בRegisterServiceProcess API אשר יכול לעשות את התהליך בלתי נראה [מיקרוסופט שמים קריאות API מסריחות]. תחת WinNT/2k המצב מסובך יותר- אין כזה API וזה בלתי אפשרי לעשות את הישום בלתי נראה במערכת - הממ, רק ע"י לכידת קריאות psapi.dll (כמו EnumProcesses API) , אך זה קשה יותר לתיכנות. אני יודע דרך טובה יותר: להעתיק את קובץ התולעת תחת שם אחר (כמו winlogon.exe, services.exe, crcss.exe - אם תשתמשו בשם שכבר רץ בשירותים, מנהל המשימות לא יוכל לכבות את זה!), לבצע את זה ולסגור את עצמו. מבדרך זו אתם תיצרו תהליך חדש שלם. זה מאוד קל ויעיל.

אולי תרצה לרשום את התולעת ש'ך [כדי שהטקסט יהיה מעניין הכותב מתחיל לכתוב כמו ערס? ] כתוכנית שירות תחת WinNT/2k. במקרה שכ'זה תעיף מבט בקריאות API OpenSCManagerA וCreateServiceA שנמצאות בADVAPI32.dll.

לתולעת שכ'זו, זה מזה חשוב לא להתגלות למשך הכי הרבה זמן שאפשר. עדיף למחוק את התולעת מאשר שתתגלה- אני מציע לך שאם אתה "חושב" שהוא התגלה (אנטיוירוס מקומי מזהה, דיבאגר מזהה, טסק מנג'ר פתוח וכד') התולעת צריכה להתאבד- למחוק את עצמה מיד. איך? תחת וינדוס 95 אתה יכול אפילו למחוק קבצים פתוחים ע"י קריאת API פשוטה DeleteFile(A/W). תחת Win98/NT/2k הדבר איננו אפשרי. אתה יכול לקרוא לAPI MoveFileEx שיאפשר לך למחוק קבצים פתוחים לאחר הפעלת המערכת מחדש. אך הדבר איננו ישים בWin95/98 :( אז עליך להשתמש בדרך חכמה... לרשום לרג'יסטרי HKLMSoftwareMicrosoftWindowsCurrentVersionRunOnce %comspec% /C del
<path_to_wormworm_file_name.exe> [לא תרגמתי את זה אבל אנא למי שרוצה תרגום איצ'קיאלאמ/תוכנה/מיקרוסופט/וינדוס//גירסהנוכחית/הרץ אחת... אבל ראו הוזהרתם! מיקרוסופט ישראל לא מתרגמת את הרג'יסטרי!] ולהפעיל מחדש ת'מחשב. שורה זאת צריכה למחוק את התולעת בהפעלה הבאה של מערכת ההפעלה.

3. זהו עניין חשוב ביותר. אם המשתמש הוא לפחות קצת חכם [בישראל כמעט ואין כזה דבר?] הוא לא יפתח הודעה שכזו: "פתח את הקובץ המצורף blah.exe, ואז תקבל מלא כסף". זוהי דרך ממש מטומטמת להפיץ את התולעת. אבל איך [לעזאזאל] להפיץ את התולעת ללא מגע משתמש? האם אתה יודע מה זה remote exploit? remote exploit זה תוכנית אשר מנצלת באגים ידועים של התוכנית/מערכת [בעיקר של מיקרוסופט :)] כדי להריץ קוד כלשהו על remote machine. אני בטוח ששמעתם על כך כבר. אקספלויטים לOutlook Express נפוצים מאוד [כמו אקספלויטים לכל דבר אחר של מיקרוסופט]- לדוגמא באג ה <DATE> buffer overflow - אם פריט התאריך בהודעת הדוא"ל כולל למעלה מהסטנדרטים הרגילים, הקוד שנמצא לאחר התאריך יורץ כלל בלי לשאול את המשתמש [וזה עצוב]. מטומטם אהה? אבל זה עובד. בוינדוס יש אלפי אלפי באגים, רק פתחו תדפדפן ובקרו ב www.securityfocus.com שמה תמצאו מלא באגים ומידע עליהם.

הרעיון הוא ליצור מסד נתוני אקספלויטים שניתן לעדכן שישמשו לתקיפת מכונה. לא הכי קל, אבל גם לא כל כך קשה.

4. איך התולעת תוכל ללמוד? "ללמוד" היא לא מילה מדוייקת. במקרה זה "ללמוד =" יותר לעדכן את עצמו לגירסה מתקדמת יותר. התולעת צריכה , כאשר היא פועלת לבדוק אם יש גירסה חדשה יותר, ובמקרה שיש, להוריד אותה, להתקין אותה ללא ידיעת המשתמש ולמחוק את עצמה.

5. אבל איך נעדכן את התולעת? איפה תהיה הגירסה החדשה יותר? מה יהיה ערוץ התקשורת? איך להסתיר זאת? אנא כמה רעיונות:
א. HTTP/FTP : הדרך הקלה ביותר. אתה, כמו גם האחרים, תוכל לשים את העידכון לתולעת באתר אינטרנט ציבורי ומשם התולעת תוריד גרסאות חדשות. יתרונות: קל לתיכנות (תוך שימוש בסיפריית WININET.DLL), קל לעדכן, קל לדהבג (מלשון דיבאגינג). הכל קל במקרה זה. חסרונות: קל לזיהוי, קל לניקוי (המשטרה יכולה ליצור קשר עם המארח ופשוט לסגור את האתר או להוסיף תולעת מזוייפת וכך כל התולעים ינקו את עצמן). דרך זאת היא לא טובה
ב. IRC/EMAIL - דומה בשתי נקודות. התולעת תיצור קשר בתחילה עם שרת IRC/EMAIL ואתה יכול לעלות את התולעת העדכנית [העידכון] דרך הDCC (בIRC) או דרך כתובת האיימיל הציבורית. יתרונות: קל לתיכנות, ושאר היתרונות כמו מקודם. חסרונות: אותם חסרונות כמו מקודם.
ג. פרוטוקול משלך: כן, אכן פרוטוקל משלך. איך? יש לי כמה רעיונות בראש, לא הסביר אותם כאן, זאת עבודה שלכם. אבל תאמינו לי זה לא כל כך קשה כפי שזה נראה שמתכנתים את זה לראשונה.









[סוף התרגום]





לא יודע מה אתכם אבל אני מעט התעייפתי (דווקא עכשיו זה חלק מעניין אבל אניי עייף מהתרגום). אני מקווה להמשיך לתרגם מאוחר יותר. (אהה המשכתי לתרגם קצת על פי ההמלצות של אפיק והחלטתי שאני לא יתרגם דברים במעוקם (וכמובן אני אף פעם לא נוהג לתרגם ניקים למעט יוצא הדופן light))


[נערך על-ידי Enn בתאריך 2004/07/18 17:46]
עמודים: 1