BambooToken: הנוזקה שמדברת בפרוטוקול של תרמוסטטים חכמים, ולא פונה לשרת של התוקף אף פעם
בתעבורה שיוצאת מהרשת זה נראה כמו עוד חיישן. פורט 1883, הודעות קצרות, שרת מתווך שמעביר אותן הלאה. זה הפרוטוקול שתרמוסטטים חכמים ומצלמות אבטחה מדברים בו. רק שבצד אחד של החיבור הזה לא יושב חיישן אלא מחשב Windows במשרד עריכת דין בצ'ילה, וההודעות הקצרות הן פקודות.
ב-15 בספטמבר פרסמו חוקרי Black Lotus Labs, חטיבת המחקר של חברת התקשורת Lumen, ניתוח של משפחת נוזקות שהם קוראים לה BambooToken. את הניתוח חתמו דני אדמיטיס וסטיב רד. לפי הדוח המשפחה פעילה לפחות מפברואר 2023 ועד יולי 2026, רצה גם על Windows וגם על Linux, ולא ניתן לקשר אותה לשום אשכול פעילות מתועד. הם סופרים כתריסר ארגונים שנפרצו, רובם באסיה וכמה בדרום אמריקה, ולצדם כ-150 נתבים.
מה שמעניין כאן הוא ערוץ התקשורת, כי המחשב הנגוע לא פונה לשרת של התוקף בכלל. בהמשך נראה למה זה עובד, איך הנוזקה נכנסת דרך התקן שכל תפקידו להוכיח זהות, ומה גילו החוקרים בגלל טעות אחת של המפתח.
למה תוקף רוצה פרוטוקול של חיישנים
נתחיל מאיך זה בנוי. במקום שכל מכשיר יפתח חיבור לשרת מרכזי וישאל אותו מה לעשות, כל ההודעות עוברות דרך מתווך אחד. מי ששולח מפרסם את ההודעה תחת שם של נושא, למשל "טמפרטורה/סלון", ומי שרוצה לקבל אותה נרשם לאותו נושא. השולח לא יודע מי מקבל, והמקבל לא יודע מי שלח. לארכיטקטורה הזאת קוראים publish-subscribe, ולפרוטוקול שמיישם אותה בעולם ה-IoT קוראים MQTT.
עכשיו תסתכלו על זה מנקודת המבט של מי שמפעיל נוזקה. היתרון הראשון שהחוקרים מונים הוא שהמחשב הנגוע אינו מדבר עם שרת השליטה והבקרה (C2, השרת שדרכו התוקף שולח פקודות לתוכנה הזדונית) אלא רק עם המתווך, כך שמי שחוקר מחשב נגוע רואה כתובת אחת ומאחוריה מסתדרת כל התשתית. השני הוא שהתקשורת אינה סינכרונית. השלישי מעניין במיוחד: גם אם חוקר מדביק בכוונה מכונה משלו ומנסה להירשם לנושא, המתווך צריך לאשר את הרישום.
זה נדיר. Lumen בדקה קמפיינים קודמים ומצאה שלושה בלבד שהשתמשו ב-MQTT: IOCONTROL, משפחת Korplug (המכונה גם PlugX) ומשפחת פשיעה בשם WailingCrab. הראשונה מכירה את ישראל מקרוב.
IOCONTROL הוא הכלי שחוקרי Team82 של קלארוטי חילצו ממערכות לניהול תדלוק שנפרצו, וייחסו לקבוצה CyberAv3ngers שלפי הערכתם קשורה לזרוע הסייבר של משמרות המהפכה האיראניים. גם הוא מדבר עם השרת שלו על פורט 8883, הגרסה המוצפנת של אותו פרוטוקול. לפי אותו דוח נפגעו כמה מאות מערכות מתוצרת אורפק הישראלית ו-Gasboy האמריקאית, בישראל ובארצות הברית. הקבוצה עצמה פרסמה בטלגרם שתקפה 200 תחנות דלק, מספר שהיא מסרה על עצמה ולא אומת בנפרד.
הדלת: התקן שכל תפקידו להוכיח שאתם אתם
כדי שהנוזקה תרוץ על Windows היא צריכה שתוכנה לגיטימית תטען אותה. הדרך שהתוקפים בחרו היא לשתול קובץ DLL זדוני בשם OnKeyToken_KEB.dll במקום שבו התוכנה המקורית מחפשת אותו, כך שהיא טוענת אותו בעצמה בלי לבדוק. לטכניקה הזאת קוראים sideloading, והתוכנה שנבחרה כאן היא OnKeySrv של Tendyron הסינית.
ומה עושה OnKey? הוא מאמת את מי שמנסה להתחבר לעמדה מול חומר קריפטוגרפי ששמור על התקן USB פיזי. לפי הדוח, ברישום של NIST התוכנה מתוארת כמי שמספקת שירותי RSA, TDES ו-AES ליישומי זיהוי, תשלומים ובנקאות, והיצרן מונה באתרו לקוחות בסקטור הפיננסי והממשלתי בסין. הקובץ הלגיטימי חתום בתעודה תקינה שהונפקה ל-Tendyron, ולפי Lumen לא התעודה ולא סביבת הבנייה של החברה נפרצו. ההערכה שלהם היא שהתוקפים מצאו קובץ שפגיע ל-sideloading וסביר שיימצא ממילא ברשתות שהם רוצים להגיע אליהן.
יש בזה היגיון קר. במקום להילחם בתוכנת האבטחה של העמדה, מגיעים אליה על גבה של תוכנה שכבר מותקנת שם ושכל תפקידה הוא אמון.
שלוש גרסאות, ומה השתנה בכל אחת
הגרסה הראשונה, מפברואר 2023, עוד לא השתמשה ב-MQTT בכלל. היא נכתבה ב-C++, מפענחת ב-XOR מזהה ייחודי שמוטמע בתוכה, ומשתמשת בו כדי לבדוק אם עותק שלה כבר רץ על המכונה ולצאת אם כן. את כתובת השרת היא מחפשת בקובץ נתונים שיושב לצד הקובץ הנטען, ואם הוא אינו קיים היא נופלת לכתובת שמוטמעת בקוד. רשימת הפקודות שהיא יודעת לקבל קצרה: לטעון תוסף, לעצור את כל התוספים, לסיים את עצמה, להתנתק.
הגרסה השנייה, שהתפתחה במהלך 2024 ו-2025, היא זו שהחליפה HTTP ב-MQTT. היא נרשמת לארבעה נושאים, אחד כללי לשידור לכל הנגועים ושלושה שמורכבים מהמזהה הייחודי של המכונה, ומפרסמת הודעה בפורמט JSON שאומרת אם הבוט עלה או ירד. לפי החוקרים המימוש מבוסס על ספריית קוד פתוח בשם Mosquitto מבית Eclipse. לפני הלופ היא מתשאלת את המכונה דרך WMI, ממשק הניהול המובנה של Windows, ואוספת ממנו פרטי מערכת הפעלה, מספר סידורי ואפילו את מפתח המוצר המקורי.
הגרסה השלישית היא הראשונה שקומפלה ל-Linux, והחוקרים ראו אותה לראשונה בדצמבר 2025. היא נרשמת לחמישה נושאים במקום ארבעה, ואחד מהם מרמז על יכולת להריץ קוד Lua. שלושת המטפלים בפקודות שזוהו בה פשוטים וחזקים: אחד פותח shell, אחד מאפשר להוריד ולהעלות ולמחוק קבצים, והשלישי שולח מדי פעם דיווח חיים עם נתוני המכונה. לפי הדוח היא עוד בפיתוח, מפני שהיא מקבלת שלושה ארגומנטים בשורת הפקודה ולאחד בלבד יש מימוש.
התוסף היחיד שהחוקרים הצליחו לשים עליו יד הוא דווקא הצנוע ביותר: כל חמש שניות הוא שואל את WMI אילו מוצרי אבטחה מותקנים על המכונה ושולח את השמות לשרת. Lumen משערת שזה היה הראשון שנפרס, כדי שהתוקפים ידעו למי הם שולחים את הכלים הבאים ולא יאבדו אותם.
עד כאן איך הנוזקה עובדת. איך ידעו החוקרים מה עוד היא מתכננת לעשות מעניין יותר.
שני דגלים שהמפתח שכח להדליק
כשמקמפלים תוכנה, המהדר יכול לזרוק מהקובץ הסופי קוד שאף אחד לא קורא לו, וב-Visual C++ ההתנהגות הזאת דלוקה כברירת מחדל בבניית Release. בדגימה אחת של BambooToken היא לא הייתה דלוקה כמו שצריך, בין השאר בגלל ספרייה שקושרה סטטית ולא נבנתה באותה הגדרה. התוצאה היא קוד מת: שמות ומחרוזות שנשארו בקובץ אף שאינם מורצים.
ומהמחרוזות האלה עולה תמונה של מה שהמשפחה הזאת יודעת, או ידעה, לעשות. יש שם מחרוזת שנראית כמו שם של רכיב להקלטת מקלדת, כולל שגיאת כתיב, אחת שמצביעה על גישה ללוח ההעתקה, ואחרות שמרמזות על הקלטת שמע ועל צילום מהמצלמה ומהמסך. החוקרים מדגישים שלא מצאו את הפונקציות התואמות בזרימת ההרצה, כך שאין מדובר ביכולות שהם ראו פועלות אלא בשמות שנשארו בקובץ. הם כן מעריכים שהכלי מאפשר תיעול תקשורת וחילוץ פרטי אימות.
ובכל זאת, אין כאן חובבנות. כותרות ה-PE של הדגימות מצהירות שהן נבנו על Windows Server 2003 עם Visual Studio 2005, מה שהחוקרים מעריכים שאינו אמיתי אלא חלק מניקוי עקבות, והתוקף אף הקפיד לא לזייף את כל השדות לאותו ערך, כי חתימת זמן זהה בכל הדגימות הייתה בעצמה סימן מזהה.
מי נדבק, ולמה זה כנראה לא היעד האמיתי
Lumen חילקה את הנגועים לשתי קבוצות. הראשונה היא מה שהיא מכנה תשתית של יחיד או של רשת קטנה, ובפועל נתבים. ב-15 בדצמבר 2025, בין 07:30 ל-23:45 UTC, נצפתה סריקה רחבה של האינטרנט על פורט 161, הפורט של SNMP, פרוטוקול שדרכו מנהלים נתבים מרחוק. מהסריקה נספרו חיבורים דו-כיווניים ליותר מ-150 כתובות, ומקצתן דיברו עם אחד משרתי השליטה דווקא על פורט 1883. הנתבים ההם, בעיקר מתוצרת MikroTik ו-DrayTek, יושבים בסינגפור, בקמבודיה ובווייטנאם, והחוקרים מדגישים שהם קורבנות ולא ממסרים.
מהנתבים האלה יצאה תעבורה שהסתיימה כמעט כולה בשירות VPN שמשווק לסינים שחיים בחו"ל, ומכאן ההשערה של Lumen שהיעד הוא הקהילה הסינית מחוץ לסין.
הקבוצה השנייה היא ארגונים, כתריסר כאלה, רובם באסיה. שרתי backend של אפליקציות מובייל היו הסוג הנפוץ ביותר, ובהם שתיים שקשורות למטבעות קריפטו ופונות כנראה לקהל עולמי. לצדן שרת GitLab בהונג קונג, חברה ויטנאמית שמפתחת התקן נייד, בית מלון בווייטנאם, חברת ביו-רפואה בארגנטינה, משרד עריכת דין בצ'ילה ואתר קריפטו בליטא.
ויש מספר אחד שמסביר למה החוקרים מעריכים שהגישה הייתה רחבה יותר ממה שהם רואים: אחד משמות המתחם של התשתית נכנס בדצמבר 2025 לרשימת 500 אלף השמות הפופולריים ביותר במדד Cloudflare Radar. תשתית שמדורגת כך אינה תשתית של קמפיין קטן.
וכאן מגיעה ההסתייגות המעניינת בדוח. Lumen כותבת במפורש שיש לה ביטחון נמוך שהיעדים שנראים כאן הם המטרות הסופיות, בין השאר מפני שתוקפים לא נוהגים להתחזות לתוכנה של כלי קריפטוגרפיה אלא אם הם מכוונים גבוה יותר. ההקשר שהם מציעים הוא של אשכולות סיניים שמנסים יכולות חדשות במקומות שקטים לפני שהם מפנים אותן לכיוונים אחרים, והם מונים את Volt Typhoon, את GhostEmperor ואת הגורם שמאחורי ZuoRAT.
ואם חושבים על סוגי היעדים יחד, מצטיירת מכונה לאיסוף מידע על אנשים. אפליקציות מובייל ושעונים חכמים מאפשרים לשחזר שגרת חיים, וגוף פיננסי או מערכת של בית מלון מספרים מי נסע לאן, מתי ובאיזה כסף. זה לא איסוף של סודות תעשייתיים.
מה זה אומר בפועל
ההמלצה הראשונה של Lumen היא גם הפשוטה ליישום: כלל בחומת האש שמחפש פרוטוקולים חריגים שיוצאים מהרשת, ו-MQTT הוא דוגמה מדויקת לכזה. ברשת ארגונית שאין בה IoT, תעבורה על פורט 1883 או 8883 שיוצאת לאינטרנט מצדיקה בדיקה, ומי שכן מפעיל חיישנים צריך לדעת לאיזה מתווך הם אמורים לדבר ולחסום את השאר.
שני הדברים האחרים נוגעים לנתבים ולנראות. נתב שמשיב לבקשות SNMP מהאינטרנט הוא בדיוק מה שנסרק באותו יום בדצמבר, ולכן כדאי לוודא שהשירות חסום מבחוץ ושמחרוזות הקהילה וסיסמאות ברירת המחדל הוחלפו. ושווה להסתכל על העברות מידע גדולות שיוצאות מהרשת גם כשכתובת היעד יושבת באותו אזור גיאוגרפי, כי על ההנחה הזאת בדיוק נשענת תשתית שמתחבאת מאחורי Cloudflare ומאחורי מתווך.
תגובות