TL; DR
nolimit-agent היא חבילת npm שגרסאותיה שפורסמו - 1.0.299 עד 1.0.307, שוחררו במשך ארבעה ימים בין 26-06-2026 ל-29-06-2026 - כל אחד נושא מסגרת מלאה של פישינג ודואר בכמות גדולה בתוך ספרייה נסתרת ומטושטשת לחלוטין. בכל גרסה הערך הראשי הופך ל .ad/x0.js, אחד מתוך כ-86 קבצים בתיקייה בשם dotfile המכילה כ-4,200 כתמי מערך מחרוזות מסוג javascript-obfuscator; וו ההתקנה ופריסת הכניסה זהים לכל אורך השורה.
מאחורי ההסתה מסתתר א זרימת קוד התקן של Microsoft 365 OAuth (login[.]microsoftonline[.]com/common/oauth2/v2.0/devicecode) אשר, לאחר אישור קוד, קורא את תיבת הדואר הנכנס של Outlook ופריטים שנשלחו דרך ממשק ה-API של Microsoft Graph; מנוע שליחה של SMTP ו-SMS בכמות גדולה המונע על ידי רשימות נמענים המסופקות על ידי המפעיל; תבניות הודעות התחזות למותג; בניית קישורי הפניה פתוחים; וסיור באמצעות חיפוש קוד DNS-over-HTTPS, WHOIS ו-GitHub. משואות תנועה בזמן ריצה לתשתית המפעיל ב api[.]nolimitent[.]xyz:4100.
מושפעים: כל מי שמתקין גרסה כלשהי של החבילה, וכל תיבת דואר של מיקרוסופט 365 שבעליו מאשר קוד מכשיר המוצג דרכו. הגרסה העדכנית ביותר, 1.0.307, הוא התג העדכני ביותר והוא נושא את אותה יכולת תיבת דואר של קוד התקן - הקוד הזדוני אינו מוגבל לגרסה אחורית אחת.
חומרה: קריטימערכת אקולוגית מושפעת: Npmהאינדיקטור היחיד לחפש קודם: המארח api[.]nolimitent[.]xyz.
ההתקפה: איך זה עובד
קליפה שפירה מעל מטען נסתר
החבילה מציגה משטח רגיל. package.json מכריז על א לאחר ההתקנה וו –
text postinstall: node scripts/postinstall.js — ובבדיקה scripts/postinstall.js אינו מזיק: הוא מתקין shim של פקודה של Windows ויוצא. ה-hook אינו המקום שבו ההתנהגות נמצאת. ה- ראשי ו בן שדות שניהם מצביעים אל תוך .מוֹדָעָה/, ספרייה שנקודה ראשונה מונעת ממנה גישה מזדמנת ls פלט, ותוכנם מעורפל באופן אחיד על ידי המכונה. הסורק הסטטי ספר ~4,293 טווחי מטען מקודדים על פני ה- .מוֹדָעָה/ סט מודולים; javascript-obfuscator היא תלות פיתוח מוצהרת, התואמת את צורת סיבוב המחרוזת-מערך של הקבצים המצורפים.
הפיצול הוא הסימן הראשון שכדאי לנקוב בשמו: וו ההתקנה שסוקר היה בודק הוא נקי, בעוד שקוד ההפעלה נמצא ספרייה אחת משם, מוסתר ומעורפל, ומגיעים אליו רק כאשר נקודת הכניסה של החבילה המיוצאת פועלת.
גישה לתיבת דואר באמצעות קוד מכשיר של Microsoft 365
המודול .ad/x12.js נושא את היכולות המשמעותיות ביותר של המסגרת. הוא מניע את מתן הרשאות המכשירים של Microsoft 365 OAuth 2.0:
text POST login[.]microsoftonline[.]com/common/oauth2/v2.0/devicecode מענק קוד התקן הוא זרימת מיקרוסופט לגיטימית המיועדת למכשירים מוגבלי קלט: שירות מבקש קוד, המשתמש מקליד את הקוד הזה לתוך microsoft.com/devicelogin` במכשיר שני ומאשר, והשירות המבקש מקבל אסימונים. כאשר השירות המבקש שייך למישהו שאינו בעל תיבת הדואר, האישור מוסר לצד שלישי זה אסימון. לאחר קבלת אסימון, .ad/x12.js` קורא את תיבת הדואר ישירות דרך Microsoft Graph:
text GET graph[.]microsoft[.]com/v1.0/me/mailFolders/inbox/messages?$top=250&$select=from GET graph[.]microsoft[.]com/v1.0/me/mailFolders/sentitems/messages?$top=250&$select=toRecipients השמיים $select תחזיות שולפות כתובות שולח מתיבת הדואר הנכנס וכתובות נמען מפריטים שנשלחו - חומר הגלם למיפוי כותבי הקורבן. זוהי גישה מסוג "אויב באמצע" (AiTM) באמצעות הסכמה ולא באמצעות לכידת סיסמה: אין אישור לפישינג במובן הקלאסי, רק קוד לקבלת אישור.
מנוע דואר בכמות גדולה ו-SMS עם תבניות התחזות
מסביב לגישה לתיבת הדואר נמצא דיוור. החבילה שולחת קבצי נתונים הניתנים לעריכה על ידי המפעיל - רשימות שולחים (קובץ senders.txt, smtps.txt) וקובץ תבנית (functions.txt) — שכתובותיו, שמציין המיקום שלהן, נקראות כדף יציקה לצורך התחזות: security@apple.com, login-אימות, שירות OAuth, חיוב ושולחי הודעות חשבון מול yourdomain.com ממלא מקום המפעיל. צד ה-SMS נושא טלפוןebook ותצורת שער. הדיוור מבצע איטרציות של רשימות נמענים שסופקו על ידי המפעיל ושולח דרך ממסרי SMTP שהוגדרו.
כדי לגרום לקישורים לנחות, .ad/xu.js ו .ad/xq.js בניית כתובות URL המנצלות עמימות בניתוח כתובות URL ומעקב אחר קליקים. דפוסי הזיוף מטמיעים רשות שנראית מהימנה לפני @ כך שהקידומת הנראית לעין שונה מהמארח האמיתי:
text https://trusted[.]com@ https://trusted[.]com%40 https://trusted[.]com:80@ https://redirect[.]example[.]com/ https://track[.]example[.]com/click? המסגרת גם אוספת favicons מצרכנים גדולים ו enterprise ספקי דואר - טכניקה שגרתית ליצירת דף נחיתה או הנחיה משכנעים המותג על ידי ספק.
סיור מטרות ותשתיות
מספר מודולים אוספים הקשר לפני שליחה. .ad/x0.js פותר שמות דרך DNS-over-HTTPS (dns[.]google/resolve), .ad/xa.js שאילתות WHOIS (api[.]whois[.]vu,) ו .ad/x9.js מפעיל חיפוש קוד ב-GitHub (api[.]github[.]com/search/code?q=) - דפוס התואם לגילוי תצורת שרת דואר חשופה ופרטי SMTP להזנת רשימת הממסר. .ad/xs.js מבצע שאילתות באינדקס ה-CDX של Wayback Machine.
פיקוד ובקרה
על פני הסט המעורפל, .ad/x4.js מפנה לנקודת הקצה של האופרטור:
text http://api[.]nolimitent[.]xyz:4100 המארח משתף את שלו ללא הגבלה מותג עם שם המוציא לאור עצמו, וה- : 4100 פורט הוא ערוץ הקריאה הביתית של המסגרת. זהו האינדיקטור העמיד ביותר עבור מגינים: חבילה, תחנת עבודה של מפתח או סוכן בנייה שמגיע api[.]ללא הגבלה[.]xyz הפעיל את הקוד הזה.
אינדיקטורים של פשרה
האינדיקטורים שלהלן הם אלה שהגנה יכולה לפעול על פיהם - grep לקובץ נעילה, חסימת מארח, או חיפוש ביומני פרוקסי ו-DNS. נקודות קצה של מיקרוסופט מופיעות מכיוון שהמסגרת מנצלת אותן לרעה; הן עצמן אינן זדוניות ואין לחסום אותן.
| אינדיקטור | סוּג | איפה | פעולת ההגנה |
|---|---|---|---|
nolimit-agent (כל הגרסאות 1.0.299–1.0.307) | חֲבִילָה | Npm | קבצי נעילה של Grep / יומני התקנה |
api[.]nolimitent[.]xyz (:4100) | מארח C2 | .ad/x4.js | חסימה; חיפוש ביומני DNS + פרוקסי |
.ad/ תיקייה מוסתרת כיעד ראשי/bin | מִבְנֶה | package.json | אות סטטי בסקירת הרישום |
trusted[.]com@ / %40 / :80@ טפסי קישור | זיוף כתובת URL | .ad/xu.js, .ad/xq.js | בדיקת כתובת URL של דואר/פרוקסי |
מענק קוד התקן + גרף inbox/sentitems לקרוא | התנהגות | .ad/x12.js | כניסה ל-M365 + סקירת ביקורת גרפים |
גיבובי קבצים שנלכדו במיון:
- חבילה/.ad/x0.js — שא256 e4153bb614ee03ec456e6b5b41926385db6aae0e4f3e771d18e581571ad7ca2a
- חבילה/חבילה.json — שא256 8618064f1f6146b4a8f0459aff9154dca1847e3936aa44f4d4cd37e127075644
אות דייר של Microsoft 365 ששווה לחפש ללא קשר לחבילה זו: כניסות מוצלחות לקוד המכשיר ולאחר מכן קריאות גרף של תיקיות דואר/תיבת דואר נכנס ו תיקיות/פריטים שנשלחו בדואר, במיוחד מסשן שהמשתמש לא מזהה.
ייחוס והתנהגות נצפית
מה שניתן לצפות בו נשאר נפרד ממי שעומד מאחוריו.
עובדות נצפות: החבילה מתפרסמת תחת שם המשתמש סוכן nolimit עם כתובת Gmail לא מאומתת וללא מאגר מקורות מקושר; package.json מתאר אותו כ"שולח דוא"ל מתקדם" ומתייג אותו עם צוות אדום מילת מפתח; קוד זמן הריצה מרוכז במקום נסתר ומטושטש .מוֹדָעָה/ ספרייה ששרשרת הכלים שלה (javascript-obfuscator) הוא תלויות מוצהרת; ומארח השיחות הביתיות api[.]ללא הגבלה[.]xyz משתמש מחדש ב ללא הגבלה מותג. זוהי חבילה אחת עם נקודת ציון אחת של תשתית הנשלטת על ידי המפעיל - לא אשכול מרובה חבילות, ולא זוהתה חפיפה עם קמפיין בעל שם קודם.
השמיים צוות אדום מילת המפתח אינה משנה את הסיווג. כלי אבטחה התקפיים לגיטימיים המספקים יכולת שימוש כפול עושים זאת בשקיפות: מקור קריא, מטרות המסופקות על ידי המפעיל, וללא קוד גישה נסתר. חבילה זו הופכת כל אחת מהתכונות הללו - קוד ההפעלה שלה מעורפל ומוסתר, והיא שולחת אות לתשתית קבועה של המפעיל במקום ליעד שהמשתמש מספק. ההתנהגות, ולא התווית, קובעת את פסק הדין, שהוא זדוני.
כוונה אינה נטענת כאן. הפוסט מתאר מה הקוד עושה - לבקש קוד מכשיר, לקרוא תיבת דואר דרך Graph, לשלוח דואר בכמות גדולה דרך ממסרים מוגדרים, לשלוח אות למארח קבוע - ומשאיר את המניע לא מצוין.
השפעה, מגמות והנחיות למגינים
שתי השפעות על זמן ההתקנה חשובות. ראשית, כל מפתח או סוכן CI שמתקין סוכן nolimit מביא את המסגרת למארח הזה ומקים את ה-call-home ל api[.]ללא הגבלה[.]xyzשנית, יכולת קוד ההתקן מרחיבה את טווח ההגעה מעבר למארח המתקין: תיבת דואר של Microsoft 365 שבעליה מתבקש לאשר קוד שהוצג נקראת ישירות דרך Graph, מבלי שסיסמה תעבור אי פעם את הרשת.
המגמה הרחבה יותר היא זו של הפנמה. פישינג בקוד התקן (AiTM) עבר מתשתית פישינג עצמאית לחבילה במרשם ציבורי - הפצה על ידי התקנת npm במקום באמצעות קישור שנשלח בדוא"ל. אריזת הערכה בדרך זו מחליפה את בעיית האירוח ומסירת הקישורים של מפעיל הפישינג עבור הישג ידו של רישום, ומסתירה את קוד ההפעלה מאחורי וו התקנה נקייה וספרייה ערומה בשם dotfile שמביסה סקירה ידנית מהירה.
עבור המגנים:
- סקירת רישום ותלות. התייחסו לחבילה אשר ראשי/בן מתפזר לספרייה נסתרת (עם קידומת נקודה) של קוד צד ראשון מעורפל באופן אחיד כבעל סיכון גבוה על המבנה בלבד, ללא קשר לשאלה האם וו ההתקנה נראה נקי. מזעור אינו ערפול - שער על חתימת מפענח מערך המחרוזות, לא על אורך השורה.
- הקשחת Microsoft 365. הגבל את זרימת הרשאות קוד המכשיר באמצעות גישה מותנית במקומות בהם היא אינה נדרשת מבחינה תפעולית; אישורים של קוד המכשיר הם וקטור AiTM ידוע ורק לעתים רחוקות נדרשים על ידי משתמשים אינטראקטיביים. ביקורת עבור כניסות של קוד המכשיר ולאחר מכן ספירה מיידית של תיבת הדואר של Graph.
- זיהוי רשת. חסימה והתראה מופעלת api[.]ללא הגבלה[.]xyzחפש יומני DNS ופרוקסי יוצאים עבורו בתשתית המפתחים והבונים.
- זיהוי נתיב דואר. השמיים user@host טפסי זיוף כתובות URL (trusted[.]com@…) ניתנים לזיהוי בשער הדואר ובפרוקסי; מסמנים קישורים שרכיב הסמכות שלהם קודם ל- @.
החבילה הייתה פעילה ב-npm בזמן הניתוח. מכיוון שהמסגרת הנסתרת משתרעת על פני כל קו הגרסאות שפורסמו והנוכחי. האחרון התג (1.0.307) נושא את יכולת קוד ההתקן, הסרת הרישום צריכה לכסות כל גרסה, לא רק גרסה אחורית אחת.




