החתימה הדיגיטלית על הדרייבר תקפה מאוגוסט 2013 עד ספטמבר 2014, והיא הונפקה לחברה סינית בשם Nanjing Ranyi Technology. הדרייבר עצמו נמצא על מחשבים שנפרצו בקמפיין שרץ ב-2026. בתוך הקובץ נשאר גם נתיב הידור שמישהו שכח למחוק, ובו מחרוזות בסינית שמשמעותן "מעבדת נאנג'ינג" ו"פרויקטים 2024". לפי הדוח של קספרסקי שפורסם ב-14 באוגוסט, בדיקת מקורות גלויים לא קישרה את המחרוזות האלה לאף ארגון, מפתח או קבוצת תקיפה מוכרת.

החוקר Fareed Radzi מצוות GReAT של קספרסקי מתאר גרסה חדשה של CoolClient, דלת אחורית שמיוחסת לקבוצת הריגול HoneyMyte (מוכרת יותר בשם Mustang Panda). מה שהשתנה בגרסה הזאת הוא לא היכולות של הדלת האחורית עצמה, אלא איפה היא מסתתרת: הנוזקה מתקינה עכשיו דרייבר ליבה חתום ומדברת איתו ישירות. נעבור על הדרך שהיא עושה מקובץ שנטען בטעות ועד למודול שרץ בליבת המערכת, ואז על מה בדיוק הוא מעלים.

מי זו HoneyMyte, ומה CoolClient עשתה עד עכשיו

HoneyMyte היא קבוצת ריגול סייבר שפועלת שנים מול ארגונים באסיה וברוסיה. CoolClient היא אחד הכלים שלה, ומאז שנחשפה לראשונה על ידי Sophos ב-2022 ונותחה על ידי Trend Micro ב-2023 היא ממשיכה להתפתח. בגרסה שקספרסקי ניתחה ב-2025 נוספו גניבת לוח הגזירים ויירוט תעבורת HTTP לצורך חילוץ פרטי אימות. היכולות הבסיסיות נשארו: רישום הקלדות, ניהול קבצים, איסוף מידע על המערכת, ותוספים שנטענים לפי הצורך.

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

הרכיב הראשון נטען על ידי תוכנה לגיטימית

לפני שהתוקפים העתיקו משהו למחשב במיאנמר הם דאגו ש-Windows Defender לא יסתכל לשם: הם הוסיפו לו חריגה לתיקייה שלמה ולקובץ ההרצה שבתוכה. אחר כך יצרו תיקייה שנראית כמו ספריית ההתקנה של Defender עצמו, העתיקו אליה את הרכיבים, ולקחו קובץ הרצה לגיטימי לגמרי של חברת Sangfor ושינו את שמו ל-defender.exe. אחיזה קבועה הושגה דרך משימה מתוזמנת שמריצה את הקובץ הזה עם הרשאות SYSTEM בכל עלייה של המערכת.

התוכנה הלגיטימית הזאת היא שמריצה בפועל את הקוד הזדוני. כשהיא עולה היא מחפשת ספרייה בשם libngs.dll וטוענת אותה, ובמקום הספרייה האמיתית מחכה לה גרסה של התוקפים באותו שם ובאותה תיקייה. לטכניקה הזאת קוראים DLL sideloading, והיא עובדת כי הקוד שנטען יורש את המוניטין של התהליך שטען אותו. כדי שהזיוף ייראה משכנע, הספרייה הזדונית מייצאת שורה ארוכה של פונקציות ריקות שכל אחת מהן רק מדפיסה את שמה ליומן הניפוי ומסיימת את התהליך. הלוגיקה האמיתית יושבת בנקודת הכניסה של הספרייה, מעורפלת בעזרת השטחת זרימת בקרה, ובסוף היא עושה דבר אחד: מפענחת שלב שני מוצפן XOR ומריצה אותו מהזיכרון.

השלב השני, קובץ שנקרא loadcert.ini, בודק קודם כל בתוך איזה תהליך הוא רץ ולפי זה בוחר מסלול. במסלול ההתקנה הוא כותב ערך הרצה אוטומטית ברישום בשם goopdate, מזריק את עצמו לעותק חדש של synchost.exe (בגרסאות קודמות זה היה write.exe), ומנסה להתקין את עצמו גם כשירות Windows בשם media_updaten. לפני התקנת השירות הוא בודק שאין במערכת תהליכים של אנטי-וירוס 360 Total Security. אם יש, הוא מוותר על המסלול הזה.

במקביל היא צריכה לעלות בהרשאות, וזה מוביל לחלק המחוכם ביותר במסלול הזה. כדי לעלות בהרשאות הנוזקה צריכה להריץ עותק חדש של עצמה, וזה בדיוק סוג האירוע שמערכות הגנה מחפשות בעץ התהליכים. הפתרון שלה: לגרום לתהליך החדש להיראות כאילו נולד מתהליך מערכת מהימן ולא ממנה. היא יוצרת תהליכים דרך ממשק RPC מקומי, מוציאה מאחד מהם object של ניפוי שגיאות, ומשתמשת בו כדי להשיג handle מלא לתהליך אחר. את ה-handle הזה היא מציבה כהורה של העותק החדש שהיא מריצה. התוצאה היא עותק מוסלם שנראה כאילו הופעל על ידי רכיב של Windows. קספרסקי מציינת שהשיטה דומה לזו שתועדה על ידי Google Project Zero.

הדרייבר msagent.sys, ומתי הוא בכלל נטען

עד כאן הכול קורה במרחב המשתמש. הצד השני מתחיל רק אם הנוזקה כבר מחזיקה מספיק כוח: לפני שהיא נוגעת בליבה היא בודקת שיש לה גישה מלאה למנהל השירותים ושברשותה ההרשאה SeTcbPrivilege. אם התנאים לא מתקיימים היא מדלגת על הדרייבר לגמרי וממשיכה לשלב האחרון. כשהם כן מתקיימים, היא מחלצת דרייבר דחוס בפורמט LZMA שהוטמע בתוך השלב השני, כותבת אותו לדיסק בשם msagent.sys, ורושמת אותו כשירות.

אחרי הטעינה הרכיב במרחב המשתמש פותח את ההתקן ומדבר איתו. הדרייבר מממש 33 מטפלי IOCTL, כלומר 33 פקודות שאפשר לשלוח לו, אבל הדגימה שנותחה השתמשה רק בשלוש: אחת שרושמת את התהליך של CoolClient כתהליך מהימן, אחת שמוסרת לדרייבר את כתובת ה-IP של שרת השליטה והבקרה (C2, השרת שממנו התוקף שולח פקודות), ואחת שרושמת את הנתיבים בדיסק וברישום שצריך להגן עליהם. שאר שלושים הפקודות, ובהן הזרקת shellcode לתהליך, הסרת הגנת PPL וכתיבה לכתובת שרירותית בליבה, לא הופעלו בדגימה הזאת.

אז מה בדיוק נעלם מהמסך?

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

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

למה תעודה משנת 2013 עדיין שווה משהו

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

זאת גם לא הפעם הראשונה שהקבוצה עושה את זה. בדוח מדצמבר 2025 תיארה קספרסקי דרייבר אחר של HoneyMyte, שהזריק גרסה של הדלת האחורית ToneShell והגן עליה באותה גישה. גם הוא נחתם בתעודה של חברה סינית, Guangzhou Kingteller Technology, שהייתה תקפה מאוגוסט 2012 עד 2015, ושהחוקרים תיארו כתעודה ישנה, גנובה או שדלפה. שתי חתימות, שתי חברות, ואותו דפוס.

המסקנה של החוקרים זהירה ומדודה: התוספת של דרייבר ליבה ל-CoolClient מרמזת, לדבריהם, שהקבוצה "ממשיכה להרחיב את השימוש ביכולות rootkit כדי לשפר הסתרה, שרידות והתחמקות מהגנות" בשלבים שאחרי הפריצה. במילים אחרות, מה שהיה עד לא מזמן מאפיין של כלים בודדים הופך לחלק סטנדרטי מהערכה.

מה זה אומר בפועל

הקמפיין הזה מכוון לגופי ממשל באסיה, ואין בדוח שום אינדיקציה לקורבנות ישראלים. מה שכן רלוונטי לכל מי שמנהל תחנות Windows הוא רצף הפעולות, שאינו ייחודי לקבוצה הזאת: חריגה שנוספת ל-Defender משורת פקודה, ספריית התקנה שמחקה שם של רכיב מערכת, ושירות ליבה חדש שנטען עם דרייבר של חברה שאף אחד במערכת לא מכיר. אירועי טעינת דרייבר וכתיבה למנהל השירותים הם המקום לחפש בו, כי ברגע שהמודול כבר בליבה הרשימות שאתם מסתכלים עליהן מפסיקות להיות עדות אמינה. קספרסקי פרסמה בסוף הדוח חתימות קבצים, נתיבי התקנה ושמות דומיינים של שרתי השליטה, וזה החומר שאפשר להזין לכלי הציד.