הפקודות הגיעו דרך חדר צ'אט, והדיווחים יצאו לברוקר של מפתחי IoT: הדלת האחורית הראשונה של Toy Ghouls
על המחשב הנגוע רץ service בשם Windows Telemetry Aggregator Service. השם נראה כמו עוד רכיב שגרתי של ווינדוס, הקובץ עצמו נקרא wtass.exe, והתעבורה שהוא מייצר יוצאת לשרת הודעות פתוח. בגרסה השנייה של אותה נוזקה ה-service נקרא Problem Reports Control Panel, והיעד הוא broker.hivemq.com, מתווך הודעות ציבורי שמפתחי IoT משתמשים בו כדי להעביר נתונים בין חיישנים. שני היעדים לגיטימיים לגמרי, ושניהם פתוחים לכל מי שנרשם. זו בדיוק הנקודה.
חוקרי Kaspersky GERT פרסמו ב-4 בספטמבר ניתוח של דלת אחורית חדשה שבה משתמשת קבוצת הכופרה Toy Ghouls, קבוצה שעד לפני כמה חודשים הסתפקה בכלים מוכנים שהורידה מ-GitHub. לפי הדוח זו הפעם הראשונה שהקבוצה מפעילה כלי גישה מרחוק שנבנה עבורה, והוא הגיע בשתי גרסאות שנבדלות כמעט רק בערוץ שדרכו התוקפים מדברים איתו. בהמשך נעבור על איך הנוזקה נוחתת על המכונה, איך היא נועלת את ההגדרות שלה כך שיעבדו רק שם, ולמה דווקא שני הערוצים שנבחרו כאן קשים כל כך לזיהוי.
מי זו Toy Ghouls, ומה היה לה עד עכשיו
קספרסקי עוקבת אחרי הקבוצה הזאת, שמוכרת גם בשמות Bearlyfy, Laboo.boo ו-Feral Wolf, מאז 2025. המניע כספי, והיעדים הם ארגונים ברוסיה. בהתחלה הן הכלים והן הכופרה עצמה היו של אחרים: כלים מפרויקטי קוד פתוח, ובילדרים שדלפו של Babuk ו-LockBit, כלומר תוכנות ההרכבה שבעזרתן קבוצות אחרות ייצרו את הכופרה שלהן. בהמשך הקבוצה עברה לכופרה משלה בשם GenieLocker.
את GenieLocker ניתחו פדור סיניצין ויאניס זינצ'נקו בדוח שפורסם ב-30 ביולי, והוא נותן את הרקע התפעולי. הכופרה פעילה מאז מרץ 2026 ומכוונת בעיקר לתעשייה הרוסית. באירוע אחד שקספרסקי חקרה, התוקפים נכנסו דרך חיבור OpenVPN שמקורו ברשת של שותף עסקי חיצוני, עם פרטי אימות גנובים שעדיין היו תקפים. משם הם הריצו סורק רשת של SoftPerfect כדי למפות מה יש בסביבה, חילצו פרטי אימות עם Mimikatz, ניגשו למנהל הסיסמאות KeePassXC שכבר היה מותקן על כמה מהמכונות, והתקדמו לרוחב הרשת ב-RDP לשרתי ווינדוס וב-SSH ללינוקס. את הכופרה עצמה הם פרסו בעזרת PsExec ו-PAExec, שתי תוכנות ניהול לגיטימיות.
שתי תכונות של הקבוצה שווה לזכור לפני שממשיכים. הראשונה, GenieLocker לא משאירה מכתב כופר על הדיסק ולא מכילה שום כתובת ליצירת קשר, והדרישות מועברות ידנית במהלך התקיפה. השנייה, בבדיקות הפורנזיות לא נמצאו סימנים להוצאת מידע החוצה, ולקבוצה אין אתר הדלפות. היא מצפינה, לא סוחטת בשני מסלולים. ומה ששימש אותה כערוץ שליטה באותו אירוע היה מנהרת SSH הפוכה, פתרון סטנדרטי לגמרי. זה מה שהשתנה עכשיו.
איך הכלי נוחת על המכונה ונועל את עצמו שם
ההעברה לא מתבססת על חולשה. לפי הדוח, התוקפים משתמשים ב-WinRM, שירות הניהול מרחוק המובנה בווינדוס שמאפשר למנהל רשת להריץ פקודות על מכונה אחרת ולהעביר אליה קבצים, ומפעילים אותו דרך שני כלי קוד פתוח מוכרים, Evil-WinRM ו-WinRM-fs. במילים אחרות, הם כבר בפנים ועם פרטי אימות מתאימים, והדלת האחורית פשוט מועתקת פנימה יחד עם קובץ ההגדרות שלה.
אחרי ההעתקה הכלי יכול לרוץ בחלון פקודה רגיל, אבל האופציה שמעניינת היא install, שרושמת אותו כ-service של ווינדוס כדי שיעלה מחדש בכל אתחול. שם הקובץ והשם שה-service מציג נבחרו כך שייראו שגרתיים: cplsupport.exe נרשם בשם Problem Reports Control Panel, ו-wtass.exe בשם Windows Telemetry Aggregator Service. פלט העזרה של שתי הגרסאות מגלה גם את השמות הפנימיים שנתנו להן המפתחים, mqtt-bird-agent ו-matrix-bird-agent, ומכאן גם הכותרת שקספרסקי בחרה לדוח. (מספר הגרסה בשתיהן הוא 0.1.0, כלומר לא מדובר בתשתית ותיקה שהתגלתה באיחור אלא בכלי שרק יצא לדרך.)
כאן מגיע החלק שמסבך את מי שמנסה לנתח את הנוזקה. הדלת האחורית מחפשת קובץ הגדרות בשם config.toml בתיקייה שממנה הורצה, ואם אינו שם היא נופלת חזרה לנתיב קבוע תחת %PROGRAMDATA%. בהרצה הראשונה היא לוקחת את השדות הרגישים בקובץ ומצפינה אותם במקום, עם מפתח שנגזר ממזהה ייחודי שווינדוס מקצה לכל התקנה ושומר ברישום תחת HKLM\Software\Microsoft\Cryptography\MachineGuid. התוצאה היא שקובץ ההגדרות נקשר מרגע זה למכונה הספציפית הזאת. האלגוריתם הוא ChaCha20-Poly1305, והפונקציה בקוד נקראת seal.
מי שמעתיק את הקובץ למעבדה כדי לפתוח אותו שם מקבל קובץ שלא ניתן לפענוח, והדוח מציין שבמקרה כזה הנוזקה פשוט מפסיקה לרוץ. בגרסת ה-MQTT השדות המוצפנים הם המפתח הפרטי של הסוכן, מזהה הערוץ מול הברוקר והמפתח הציבורי של השרת. גרסת Matrix מרחיקה לכת: היא מוחקת את קובץ ההגדרות מיד אחרי ההרצה הראשונה וכותבת את הפרמטרים לרישום, תחת HKLM\Software\synapse\Config\SealedConfig. אין קובץ להעתיק.
עד כאן איך הכלי מתמקם. הצד המעניין יותר הוא לאן הוא מדבר.
אז למה דווקא ברוקר MQTT?
יש פרוטוקול הודעות קטן שנבנה במקור לחיישנים ולמכשירים משובצים, כאלה שצריכים לשלוח שורת נתונים כל כמה שניות בלי לפתוח חיבור כבד. במקום שכל מכשיר ידבר ישירות מול היעד, כולם מתחברים למתווך אחד, שולחים אליו הודעות לנתיב מוסכם, וכל מי שנרשם לאותו נתיב מקבל אותן. לפרוטוקול קוראים MQTT, ולמתווך קוראים ברוקר. חברת HiveMQ מפעילה ברוקר ציבורי שכל אחד יכול להתנסות בו, ולפי הדוח התוקפים פתחו בו אשכול משלהם. המסלול החינמי, כפי שקספרסקי מתארת אותו, מספיק להם: עד 100 חיבורים במקביל ועד 10 ג'יגה-בייט תעבורה בחודש.
התקשורת עצמה מחולקת לארבעה נתיבים תחת מזהה האשכול של התוקפים, על פורט 8883, הפורט הסטנדרטי ל-MQTT מוצפן. לנתיב status נשלח מצב המכונה עם שם ה-host והדומיין, חותמת זמן ונתוני מיקום. לנתיב metrics3 נשלחים בתדירות שנקבעת בקובץ ההגדרות עומס מעבד, זיכרון פנוי מול זיכרון כולל, ניצול דיסק, ממוצעי עומס ו-uptime. מהנתיב cmd/req הסוכן שולף פקודות, כל אחת עם מזהה ומגבלת זמן, ולנתיב cmd/res הוא מחזיר את הפלט: הפלט התקני, הודעות השגיאה, קוד היציאה ומשך הריצה במילישניות. בשתי הגרסאות, מיד עם העלייה, הנוזקה פונה גם ל-ip-api.com כדי לברר מהי כתובת ה-IP הציבורית של המכונה ובאיזו מדינה היא נמצאת. את הפקודות עצמן גרסת ה-MQTT מריצה דרך PowerShell בחלון מוסתר, עם הדגלים שמונעים טעינת פרופיל ואינטראקציה עם המשתמש.
מי שמסתכל על התעבורה רואה משהו שנראה בדיוק כמו מה שהוא: מכשיר שמדווח על עצמו לברוקר ציבורי כל כמה דקות, עומס מעבד וזיכרון פנוי, בערוץ מוצפן.
הגרסה השנייה: חדר צ'אט פרטי
הגרסה האחרת מחליפה את הברוקר בשרת הודעות. הפרוטוקול שמאחורי אפליקציית Element נקרא Matrix, תקן פתוח שבו כל אחד יכול להקים לעצמו שרת בית משלו ולפתוח בו חדרים, בלי להיות תלוי בספק מרכזי. התוקפים הקימו שרת כזה בכתובת meet.element[.]tw ופתחו בו חדר, וקובץ ההגדרות של הנוזקה מכיל את כתובת השרת, מזהה החדר ו-token גישה לאותו חדר. אם שדה ה-token ריק, הדלת האחורית מבקשת סיסמה באופן אינטראקטיבי בזמן ההתקנה ושומרת את ה-token שקיבלה.
ההודעות מסומנות בסוגים משלהן, m.bird.status למצב המכונה, m.bird.metrics לנתוני הביצועים ו-m.bird.cmd_response לפלט. שמות השדות במדדים שונים במקצת מאלה של גרסת ה-MQTT, סימן לבסיס קוד משותף שעבר התאמה. הפקודות מגיעות כהודעות טקסט בחדר, ונבדלות לפי הפתיח שלהן: הודעה שמתחילה ב-config:set_interval משנה את תדירות הדיווח לערך שבין 5 ל-3,600 שניות ושומרת אותו ברישום, והודעה שמתחילה ב-cmd: היא פקודה שתרוץ על המכונה, כאן דרך שורת הפקודה של ווינדוס ולא דרך PowerShell.
וכאן יש פרט שמדגים למה בחירה בערוץ נוח לתוקף לא תמיד משתלמת לו. Element שומר את היסטוריית החדרים בקבצי SQLite מקומיים, על המכונה עצמה. החוקרים פתחו את הקבצים האלה על המכונה הפרוצה ושלפו מהם את שם החשבון ששלח את הפקודות: panel-bot.
מה הדוח אומר, ומה הוא לא
"המעבר מפרויקטים זמינים בקוד פתוח לכלים שנבנו בהזמנה מרמז ש-Toy Ghouls פועלת כדי להפוך את המתקפות שלה למתוחכמות יותר ולהתחמק מזיהוי לאורך זמן רב יותר", כתבו החוקרים. את הדלת האחורית הם ראו לראשונה בתחילת יולי 2026.
מה שהדוח לא נותן שווה ציון באותה מידה. אין בו מספר קורבנות, אין בו טענה שהכלי נראה מחוץ לרוסיה, ואת השיוך של GenieLocker לקבוצה קספרסקי עצמה מייחסת למודיעין ממקורות גלויים ולא לממצא שלה. גם בין הדוחות יש הבדלים קטנים: ברשימת הכינויים ובזהות הכופרות שהקבוצה השאילה בעבר. מה שכן עולה מהשניים במשותף הוא הכיוון, קבוצה שמפסיקה להשתמש בכלים של אחרים ומתחילה לכתוב את שלה.
מה זה אומר בפועל
הערך של שני הערוצים האלה לתוקף אינו בהצפנה אלא בכך שאיש לא חוסם אותם, פשוט כי לא חשבו עליהם. ברוב הרשתות הארגוניות אין שום סיבה עסקית שתחנת עבודה תפתח חיבור לפורט 8883 מול ברוקר MQTT ציבורי, ואין סיבה שהיא תדבר עם שרת Matrix לא מוכר, כך שחסימה או לפחות התראה על שני אלה בשער היציאה זולה ומדויקת. מעבר לזה, שמות הקבצים, שמות ה-service וערכי הרישום מפורטים במלואם בדוח של קספרסקי ומתאימים לסריקה נקודתית; וכיוון שההעברה נעשית ב-WinRM עם פרטי אימות תקפים, כדאי לבדוק מי בכלל רשאי להתחבר כך למכונות אצלכם.
תגובות