מסד נתונים של איומים ערכות שורש ערכת רוטקיט לינוקס של LinkPro

ערכת רוטקיט לינוקס של LinkPro

פריצה שנעשתה לאחרונה בסביבת שירותי אינטרנט של אמזון (AWS) חשפה ערכת רוט של GNU/Linux שלא תועדה קודם לכן, תחת הכותרת LinkPro. דלת אחורית זו בולטת בשימוש הכפול שלה במודולי eBPF: סט אחד להסתרת ארטיפקטים, וסט אחר שפועל כטריגר חשאי - "נקישה" שמעוררת פונקציונליות של פקודה מרחוק רק לאחר שנראית חבילת TCP שנוצרה במיוחד. שרשרת ההתקפה ומנגנוני ערכת הרוט ממחישים מפעיל מתוחכם שמשלב שימוש לרעה במכולות, הסתרה ברמת הליבה והפעלת רשת גמישה כדי לסכל גילוי וקורלציה פורנזית.

וקטור זיהום ופריסה ראשונית

הפריצה החלה בניצול של מופע Jenkins חשוף ופגיע ל-CVE-2024-23897 (CVSS 9.8). מאחיזת רגל זו, התוקפים דחפו תמונת Docker זדונית (kvlnt/vv, שהוסרה מאז מ-Docker Hub) למספר אשכולות Kubernetes. התמונה השתמשה בבסיס Kali Linux ונשאה תיקיית יישומים קטנה שנועדה ליצור שמירה על תפקוד, גישה מרחוק והורדה אחורית מדורגת.

בתוך תמונת הדוקר הזדונית

תיקיית האפליקציה של התמונה הכילה שלושה קבצים מרכזיים בעלי תפקידים שונים:

start.sh - סקריפט מעטפת שמפעיל שירות SSH ומבצע את שני הרכיבים האחרים.

קישור - תוכנת קוד פתוח (vnt) שעברה קומפילציה/ארוזה כדי לפעול כלקוח VPN/proxy, המתחברת יוצאת אל vnt.wherewego[.]top:29872. זה מאפשר לתוקף להגיע למארח שנפרץ מכל מקום ולפנות דרכו ליעדים אחרים.

app - תוכנת הורדה מבוססת Rust (המכונה vGet) אשר מורידה מטען vShell מוצפן מדלי S3, ולאחר מכן יוצרת קישור WebSocket לשרת הפיקוד והבקרה (C2) שלה בכתובת 56.155.98[.]37.

מטענים נוספים נמסרו לצמתי Kubernetes

לצד התמונה הזדונית, המפעילים גם הציגו שני רכיבים נוספים על הצמתים: ערכת חיתוך שמתקינה דלת אחורית נוספת של vShell, ו-LinkPro, ערכת רוט שנכתבה ב-Golang. LinkPro נועד לפעול באחד משני מצבים - פסיבי (הפוך) או אקטיבי (קדימה) - בהתאם לתצורה שלו. במצב פסיבי, הוא ממתין להפעלה על ידי חבילת רשת מיוחדת; במצב אקטיבי, הוא יוזם קשר עם ה-C2 עצמו. מצב קדימה תומך בחמישה פרוטוקולי תעבורה (HTTP, WebSocket, UDP, TCP, DNS), בעוד שמצב הפוך מגביל את התקשורת ל-HTTP.

איך LinkPro מתמשכת

הביצוע הכולל והתנהגות ההתמדה של התוכנה הזדונית עוקבות אחר רצף ברור:

  • התקן את מודול Hide eBPF. מודול זה כולל את תוכניות Tracepoint ו-Kretprobe eBPF המשמשות להסתרת תהליכים ופעילות רשת של LinkPro.
  • אם התקנת מודול Hide eBPF נכשלת - או אם הוא הושבת - התקינו ספרייה משותפת ב- /etc/libld.so והוסיפו נתיב זה ל- /etc/ld.so.preload כמנגנון הסתרה חלופי.
  • עבור פעולה הפוכה (פסיבית), התקן את מודול Knock eBPF. Knock מכיל תוכנית XDP ותוכנית TC, כך שערוץ C2 הופך לפעיל רק לאחר קבלת 'חבילת קסם' ספציפית.
  • בנה התמדה על ידי יצירת שירות systemd.
  • ביצוע פקודות שהתקבלו מה-C2.
  • בעת כיבוי או כאשר ניתנת אות (SIGHUP, SIGINT, SIGTERM), הסר את התקנת מודולי eBPF והסר/שחזר את השינוי /etc/libld.so שנטען מראש כדי שהמערכת תחזור למצבה הקודם.

חבילת הקסם ומנגנון הפעלת הדפיקה

ההפעלה הפסיבית של LinkPro תלויה בחבילת TCP מדויקת: כל חבילת TCP שגודל החלון שלה שווה ל-54321 מטופלת כ"חבילת הקסם". כאשר Knock מזהה את החבילה, הוא שומר את כתובת ה-IP של המקור ומתייג אותה עם תאריך תפוגה של שעה אחת. חבילות TCP עוקבות מאותו מקור מנוטרות, וכאשר מתאים, Knock כותב מחדש את הכותרות כך שתעבורת המפעיל מנותבת ליציאת ההאזנה של LinkPro (2333). חבילות יוצאות מותאמות כדי להציג את היציאה המקורית בחזרה לרשת (יציאת המקור נכתבת מחדש ל-2233). הכוונה פשוטה אך יעילה: לאפשר לתוקף להגיע ל-LinkPro דרך כל יציאה שחומת האש הקדמית מאפשרת, תוך הקשת קישור בין יומני חומת האש החיצונית לפעילות הרשת הפנימית של המארח.

כיצד LinkPro מסתיר את עצמו

LinkPro משתמש באסטרטגיית הסתרה דו-שלבית:

הסתרת ליבה/eBPF : מודול Hide eBPF מתקין תוכניות Tracepoint ו-Kretprobe המיירטות קריאות מערכת כגון getdents (להסתרת קבצים/ספריות) ו-sys_bpf (להסתרת תוכניות BPF משלו). גישה זו דורשת ליבה שנבנתה עם CONFIG_BPF_KPROBE_OVERRIDE מופעל.

גיבוי LD_PRELOAD במרחב המשתמש : אם יכולת הליבה אינה קיימת, LinkPro כותב ספרייה משותפת (libld.so) וממקם את הנתיב שלה ב-/etc/ld.so.preload. מכיוון ש-/etc/ld.so.preload גורם לספרייה שצוינה להיטען לכל תהליך המקושר באופן דינמי (אלה המשתמשים ב-/lib/ld-linux.so וב-glibc), ה-libld.so המושתל קושר פונקציות libc מוקדם (לפני ההתנהגות של glibc עצמו) ומשנה החזרות מקריאות libc כדי להסתיר ארטיפקטים שאחרת היו חושפים את נוכחותה.

יכולות Rootkit וקבוצת פקודות

LinkPro תומך בפעולות מרחוק אינטראקטיביות ואוטומטיות כאחד. התכונות המיושמות שלו כוללות:

  • הפעלת פסאודו-טרמינל /bin/bash והרצת סשנים אינטראקטיביים של מעטפת.
  • ביצוע פקודות מעטפת שרירותיות.
  • ספירת קבצים וספריות וביצוע פעולות קבצים.
  • הורדה וכתיבת קבצים לדיסק.
  • הקמת מנהרת פרוקסי SOCKS5 עבור ציר ופרוקסי חיים מחוץ לאדמה.

תמיכה בפרוטוקולי רשת והתנהגות C2

במצב פעיל (קדימה), LinkPro גמיש: הוא יכול לתקשר באמצעות HTTP, WebSocket, UDP, TCP או DNS. במצב פסיבי (הפוך), התקשורת שלו מוגבלת ל-HTTP אך נהנית מהתגנבות מכיוון שהיא מאזינה רק לאחר שחבילת הקסם של Knock פתחה חלון פקודה זמני של שעה.

התנהגות ניקוי והסרה

אם התהליך מקבל אותות סיום, LinkPro שואף להסיר עקבות: הוא מסיר את מודולי eBPF המותקנים ומוחק או משחזר את קובץ /etc/libld, מקבץ אותו למצבו הקודם כך שהמערכת תיראה ללא שינוי. שגרת ניקוי מכוונת זו מצביעה על כך שמפעיל מודאג מהתחמקות וממזער עקבות פורנזיות לטווח ארוך.

הקשר תפעולי וייחוס

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

תלות בליבת הגרעין והתנהגות גיבוי

מכיוון ש-LinkPro מסתמך על תכונות עקיפת kprobe של BPF לצורך יירוט חמקמק של הליבה, הוא מחיל את טכניקת ההסתרה ברמת הליבה רק כאשר הליבה המארחית חושפת את CONFIG_BPF_KPROBE_OVERRIDE. במקומות בהם יכולת הליבה הזו חסרה, LinkPro חוזר במכוון לשיטת הספרייה המשותפת LD_PRELOAD כדי להסתיר את עצמה במרחב המשתמש, ובכך להבטיח הסתרה במגוון רחב של סביבות.

הערה מסכמת

LinkPro מדגים כיצד חדירות מודרניות יכולות לשלב פגיעה בקונטיינרים, טוענים מבוצעים, מכשור ליבה (eBPF) וטריקים חכמים ברשת (הפעלת חבילות קסם וכתיבת פורטים מחדש) כדי לשמור על חמקנות וגמישות. זיהוי ותיקון דורשים בדיקה מדוקדקת של תוכניות eBPF לא מורשות, ערכים בלתי צפויים ב-/etc/ld.so.preload, שירותי systemd יוצאי דופן וחיבורי רשת לתשתית המצוינת (אינדיקטורים פורנזיים כוללים את כתובת ה-IP 56.155.98[.]37, פורטים 29872, 2333, 2233 ואת שם תמונת ה-Docker שהוסר kvlnt/vv).

מגמות

הכי נצפה

טוען...