זיהוי פריצה למערכת הוא תהליך מורכב הדורש ניסיון רב והכרות אינטימית במיוחד עם המערכת. אחד ממכרי "שיחק מחבואים" עם פורץ בזמן שהוא עסוק במלאכתו וגילה, ממש כמו בסרטים, איך דברים נעלמו לו מתחת לידיים (הפורץ מחק את כל תכולת המחשב ברגע שהוא הבין שהוא נתגלה) תוך כדי עבודה ...
למרות שאין ממש דרך חד משמעית לזהות פריצה, יש כמה שיטות שהקלו עלי בעבר באופן אישי. בכל אופן, אם יש לכם חשד כלשהו, נתקו את המכונה מהרשת מיד. שיטות אלו דורשות כאמור לא מעט ניסיון, אבל אני מקווה שתוכלו להתמודד איתן.
השיטות מתבססות כאמור על היכרות עם rootkits נפוצים והמאמר הבא כתוב על סמך התבוננות במקרה פריצה מסוים ולכן הן אינן משקפות את המציאות או מקרים אחרים בהכרח לכן אני מציע לכם לקרא את המאמר כרשימת בדיקה, או הצעות איך להתמודד עם פריצה למערכת וטיפול נקודתי בפריצה אם התרחשה. במקרים קשים יותר, הפורץ עשוי לא להסתפק בהסתרת קבצים, תוכניות, שמות משתמשים אלא לשתול מודולים חדשים לקרנל ועוד.
1) אחת הדרכים הנפוצות בשימוש ב-rootkit הוא ליצור ספריה בעלת שם פשוט בספריית ה dev/ במערכת שלכם. בתוך הספריה הזאת, שלמעשה איננה מערכת קבצים אמיתית, ישבו מספר קבצים בינאריים חדשים שאינם קבצי התקנים, אלא בינאריים מהודרים. במקרה שלי למשל, נוספה ספריה תמימה למראה בשם dev/hda0/ ב- dev/ שכללה בתוכה מגוון כלים חלופיים.
לעיתים קרובות קשה לתפוס אותם, כי הם יושבים בספריה שמכילה שתי נקודות ורווח עצום עד לתו הבא במטרה להצניע את הצגתם ברשימת הקבצים. אם מצאתם ספריה כזו (הספריה עשויה לפעמים לכלול קוד ומקור לאותם בינאריים מחוללים), הרי שפרצו אליכם.
2) השתמשו בפקודה lsattr על כמה ספריות בינארים (כמו למשל bin/ או sbin/) כדי למצוא בינארים שהוגדרו עם לקריאה בלבד (כדי להקשות עליכם להחליפם). אם מצאתם כאלו, סביר שנפרצתם.
3) בדקו את גירסת ה-SSH שמותקן אצלכם וודאו שהיא אכן הגרסה הנכונה. מסתובבת ב-rootkit גירסת OpenSSH רגילה לחלוטין עם טוויסט קטן: עם משתמש וסיסמא מסויימים, ניתן לקבל גישת root. בדקו את קובץ הסיסמאות שלכם ( etc/passwd/) ושימו לב אם מופיע שם משתמש חשוד.
בזמנו מצאתי משתמש שנקרא crontest שהיה, הלכה למעשה, בעל הרשאות רוט. שימו לב שה-UID 0 צריך להיות רק למשתמש root ולא לאף משתמש אחר, אפילו אם הוא נראה לגיטימי. אם יש משתמש לא לגיטימי, אזי פרצו אליכם.
בנוסף, שימו לב שלכל משתמשי המערכת (שעל מערך ההרשאות שלהם רצים שירותים שונים) מוגדר shell כ-nologin או כ- dev/null/. ודאו שה-nologin איננו בינארי שתול, שקורא ל bin/login/ למשל.
4) נפוץ מאוד לראות במערכות שנפרצו את כרטיסי הרשת תחת מצב promiscuous כלומר, מצב בו כרטיס הרשת מאזין לכל תעבורת הרשת. אם הוא במצב כזה, אזי סביר להניח שפרצו אליכם (אלא אם כן אתם עובדים עם ממשק רשת וירטואלי כמו eth0:0 למשל). פעמים רבות גם התוכנית ifconfig מוחלפת בתוכנית שלא מציגה את המצב הזה (ראו סעיף 2).
5) נסו להשתמש בפקודה strace על מספר פקודות פשוטות, כמו ls או ps, ושימו לב לאילו קבצים הן פונות. בינארים אלו, אם הם מוחלפים, מקבלים פרמטרים פעמים רבות מקובץ נחבא, אשר מגדיר להם ממה להתעלם.
6) הציצו בקובץ etc/rc.d/rc.local/ ובידקו האם נוספה לו שורה בסופו (אם התמזל מזלכם אזי אכן רק בסופו) אשר קוראת לבינארי מסויים זה או אחר. אם יש שם משהו שלא אתם שמתם אז כנראה שפרצו אליכם.
7) בחנו גם את השירותים שעולים באופן אוטומטי. בדקו האם מדובר בשירותים שהגדרתם בעצמכם או כאלו שאתם מודעים לקיומם מההתקנה. בחנו את תוכן הספריות etc/rc.d/rc5.d/ ו- etc/rc.d/rc3.d/ במיוחד. לעיתים ירשמו שם שירותים פיקטיביים שתפקידם להכניס "סוס טרויאני" למערכת עם הפעלתה.
8) האזינו גם לתעבורה נכנסת ויוצאת מהמכונה לאורך זמן. נסו לבדוק האם יש תעבורה חשודה ל-IRC. לא מעט rootkits משתמשים בערוצי IRC כדי לזרוק לשם סיסמאות שנתפסות מהרשת (אם אתם עובדים במצב טקסט בלבד, עם תוכניות כמו telnet או FTP, לדוגמא).
9) בדקו רצף ההודעות בלוגים תקין או ישנם פערים גדולים מממש. לעיתים קרובות הפורצים לא מסתבכים במחיקה סלקטיבית של כניסות בלוגים, אלא ממש מוחקים את כל הלוגים כולם, על תוכנם, ואפילו הורגים את שירות syslog., לכן כדאי גם לבדוק באמת אם הוא רץ ושאכן מדובר בו.
זכרו! לא מספקי לסגור פורטים. וודאו שיש לכם גם פיירוול (firewall) פעיל, עם רישום לוגים רלוונטי לכל נסיון חשוד, גם אם הוא לגיטימי. אם הפיירוול נמצא במכונה נפרדת, מה טוב.
שימוש בשרת לוגים יכול להציל את עורכם אף הוא. בעיקר אם לשרת הלוגים יש סט סיסמאות שונה. פעולות שבוצעו לפני ניטרול מכאניזם התיעוד במחשב יראו בשרת הלוגים, ולא תהיה דרך לפורץ למחוק אותן (אלא על ידי פריצה למכונה נוספת כמובן).
עז (ezaton), מנהל פורום לינוקס בתפוז
הערה: המאמר התפרסם לראשונה בפורום לינוקס בתפוז | |
|