חוקרי Cisco Talos חשפו ב-23 ביולי נוזקה חדשה בשם msaRAT, כלי גישה מרחוק (RAT, תוכנה שנותנת לתוקף שליטה מרחוק על מחשב נגוע) שכתוב בשפת Rust ומיוחס לקבוצת הכופרה Chaos. מה שמייחד אותה הוא לא מה שהיא עושה, אלא איך היא מסתירה את התקשורת עם התוקף.
רוב הנוזקות פותחות חיבור רשת ישיר אל שרת השליטה והבקרה שלהן, וזה בדיוק מה שמערכות ההגנה מחפשות. msaRAT לא עושה זאת. היא מפעילה דפדפן Chrome או Edge אמיתי על המחשב הנגוע, משתלטת עליו דרך ממשק ניפוי השגיאות המובנה בו, ומשתמשת בדפדפן עצמו כצינור שדרכו עוברת כל תעבורת השליטה. מבחינת ההגנה, מה שנראה על הרשת הוא דפדפן לגיטימי שמדבר עם שירותי ענן מוכרים.
מי עומד מאחורי הכלי
קבוצת Chaos היא מבצע כופרה-כשירות (RaaS, מודל שבו מפעילי הכופרה משכירים את הנוזקה לתוקפים אחרים) שפעיל מתחילת 2025, ולמרות השם אין לו קשר למשפחת הכופרה הישנה שנשאה אותו ב-2021. לפי Talos הקבוצה תוקפת ארגונים גדולים דרך דואר זבל ושיחות טלפון מתחזות (vishing), משתילה כלי ניהול מרחוק כדי לשמור על אחיזה, ומוציאה מידע החוצה דרך תוכנות שיתוף קבצים לגיטימיות.
השם msaRAT נגזר משמות הפונקציות שהחוקרים מצאו בקוד עצמו: msaOpen, msaClose, msaError ו-msaMessage. הכלי בנוי מעל Tokio, ספריית הרצה אסינכרונית של Rust שמאפשרת לו לטפל בכמה פעולות במקביל בלי להיתקע: לקבל מידע מהשרת, לשלוח פקודות לדפדפן ולנהל את חילופי המפתחות בו-זמנית.
איך הנוזקה מגיעה למחשב
השתלת msaRAT מגיעה מאוחר בשרשרת התקיפה, אחרי שהתוקף כבר השיג גישה ראשונית. בשלב הזה מורדת מהשרת של התוקף חבילת התקנה בפורמט MSI בשם update_ms.msi, שמתחזה לעדכון Windows רגיל ונשמרת בתיקיית ProgramData. כשהחבילה רצה, פעולה מותאמת בתוכה טוענת את גוף הנוזקה, קובץ בשם lib.dll, ישירות לזיכרון מתוך טבלת הרכיבים של ה-MSI, בלי לכתוב אותו כקובץ נפרד לדיסק.
הבחירה הזאת לא מקרית. קובץ שנטען ישר לזיכרון משאיר פחות עקבות לכלי ההגנה שסורקים את הדיסק, וההתחזות לעדכון מערכת מקטינה את הסיכוי שמישהו ישים לב לתהליך חריג.
השתלטות על הדפדפן דרך CDP
כאן מתחיל החלק המעניין. msaRAT מאתרת את Chrome או Edge דרך משתני סביבה או דרך הרישום של Windows, ומפעילה את הדפדפן במצב חבוי (headless, בלי חלון גלוי) עם דגל שמפעיל את פורט ניפוי השגיאות מרחוק. הפורט הזה נועד במקור למפתחים שרוצים לשלוט בדפדפן מכלים חיצוניים, והוא נחשף דרך Chrome DevTools Protocol (CDP), ממשק שליטה מובנה בכל דפדפן מבוסס Chromium.
הנוזקה נפתחת אל אותו ממשק ומתחילה להזרים דרכו פקודות. קודם היא מנטרלת את מדיניות אבטחת התוכן של הדף (CSP, מנגנון שמגביל איזה קוד מותר לדף להריץ) בעזרת פקודת Page.setBypassCSP, כדי שהקוד הזדוני שהיא עומדת להזריק לא ייחסם. אחר כך היא רושמת חמש נקודות קישור בין הדפדפן לנוזקה דרך Runtime.addBinding: msaOpen, msaClose, msaError, msaMessage ו-dataAck. לבסוף היא מזריקה לתוך הדף קוד JavaScript ששמור בתוך גוף הנוזקה עצמה. הקוד הזה הוא שיבנה בפועל את ערוץ התקשורת.
ערוץ WebRTC שמסתתר בין שירותי ענן
ה-JavaScript שהוזרק לא פונה ישר לשרת של התוקף. במקום זאת הוא שולח בקשה ל-Cloudflare Workers, שירות אירוח קוד של Cloudflare, כדי לקבל את פרטי החיבור. כדי שהבקשה תיראה תמימה הוא מזייף את מזהה הדפדפן ל-HeadlessChrome ומעמיד פנים שהמקור והמפנה שלה הם דומיינים של מיקרוסופט.
התשובה שחוזרת מגדירה חיבור WebRTC, אותה טכנולוגיה שמפעילה שיחות וידאו בדפדפן. היא מצביעה על שרת STUN של גוגל ועל שרת ממסר TURN של Twilio, ופותחת ערוץ נתונים עם שם אקראי באורך חמישה עד עשרים תווים כדי שלא יבלוט כדפוס קבוע. כאן נמצא הטריק המרכזי: התשובה מגדירה בכוונה כתובת 0.0.0.0 ומשמיטה את פרטי החיבור הישיר, וכך מכריחה את כל התעבורה לעבור דרך שרת הממסר של Twilio במקום בחיבור ישיר בין שני הצדדים. התוצאה, כפי שכתבו החוקרים, היא ש"כתובת ה-IP האמיתית של שרת התוקף לעולם לא מופיעה בתעבורת הרשת".
המבנה הזה, שרשור של Cloudflare Workers ואחריו ממסר Twilio, קובר את השרת האמיתי של התוקף בתוך טווחי כתובות של שירותי ענן מוכרים, ועושה את החסימה שלו קשה מאוד לצוותי הגנה. אי אפשר פשוט לחסום את Twilio או את Cloudflare בלי לשבור המון שירותים לגיטימיים.
שתי שכבות הצפנה
התקשורת מוגנת בשתי שכבות נפרדות. הראשונה היא DTLS, ההצפנה ש-WebRTC מספק אוטומטית לכל חיבור. השנייה היא שכבה שהנוזקה מוסיפה בעצמה: הצפנת ChaCha20-Poly1305 עם מפתח שנגזר בחילופי מפתחות מסוג ECDH. כשהחיבור נפתח, השרת שולח מסגרת פתיחה עם המפתח הציבורי שלו, msaRAT מייצרת זוג מפתחות משלה, גוזרת את מפתח ההצפנה המשותף ומחזירה את המפתח הציבורי שלה. גם מי שיצליח לפענח את שכבת ה-DTLS של הדפדפן ייתקל בשכבת הצפנה שנייה שהתוקף שולט בה לבדו.
מה הכלי מאפשר לתוקף
מעבר להסתרה, msaRAT היא כלי עבודה מלא. שתי היכולות המרכזיות שלה הן הרצת קוד מרחוק דרך הדפדפן ומנהור סמוי של תעבורה, כלומר היא יכולה גם להריץ פקודות על המכונה הנגועה וגם לשמש כמעבר שדרכו התוקף מגיע למערכות נוספות ברשת הפנימית. הפקודות עוברות בפרוטוקול מבוסס מסגרות: מבנה חיצוני שמנהל את מחזור החיים של החיבור, ומעליו מעבד פנימי שמפרסר כל מסגרת ומפעיל את הפקודה המתאימה. מסגרת הפתיחה, המסומנת בערך 0xFE, היא זו שנושאת את המפתח הציבורי של השרת.
פרט אחד מסגיר את הכוונה. הנוזקה מנהלת בקרת זרימה על החוצץ של WebRTC ושולחת מידע החוצה רק כשהתפוסה שלו יורדת מתחת ל-24 קילובייט. עבודה כזאת על העברת נתונים גדולים באמינות לא נדרשת לכלי שרק שולח פקודות קצרות. היא נדרשת לכלי שנבנה גם להוציא כמויות מידע החוצה מהארגון.
למה זה חשוב מעבר לכלי בודד
הרעיון של "לחיות מהקרקע", כלומר להשתמש בכלים לגיטימיים שכבר קיימים במערכת במקום להביא כלים זדוניים חדשים, לא חדש. מה ש-msaRAT מוסיפה הוא הרחבה שלו אל תוך הדפדפן: הנוזקה לא רק משתמשת בכלי מערכת, היא הופכת תהליך דפדפן לגיטימי לגמרי לצינור התקשורת שלה, ומחביאה את התעבורה שלה בתוך תעבורת WebRTC רגילה שקשה להבחין בה משיחת וידאו.
זה מציב אתגר אמיתי לזיהוי מבוסס רשת. חוקרי Talos מציינים שהמבנה "קשה מבנית לחסימה" עבור המגנים, כי אין כתובת שרת בודדת לחסום ואין תעבורה חריגה שבולטת. BleepingComputer, שדיווח על הממצא, מדגיש שהשילוב של Rust, ניצול הדפדפן ושרשור שירותי הענן הופך את הכלי לקשה במיוחד למעקב.
מה זה אומר בפועל
הזיהוי של הכלי הזה עובר מהרשת אל התחנה. שווה לנטר הפעלות בלתי צפויות של Chrome או Edge במצב חבוי, במיוחד כשהן מגיעות מתהליך שאינו הדפדפן הרגיל, ופתיחה של פורט ניפוי שגיאות מרחוק על מכונה שאין בה עבודת פיתוח. הופעה של כלי ניהול מרחוק שלא הותקנו על ידי הארגון, או של קובץ update_ms.msi בתיקיית ProgramData, היא סימן אזהרה ברור. Talos פרסמה חתימות זיהוי מוכנות ל-ClamAV ול-Snort לצד רשימת סימני פשרה מלאה, ומי שמריץ את המערכות האלה כדאי שיוודא שהן מעודכנות.
תגובות