טל; דר
צווישן אפריל 1 און מאי 3, 2026, איין npm ארויסגעבער, user0001, רעגיסטרירט מיט דער נישט-באשטעטיגטער דזשימעיל אדרעס tanvisoul9@gmail.com, שטילערהייט ארויסגעשטופט זעקס פּעקלעך מיט באַוואוסטזיניק נישטיקע, אינפראַסטרוקטור-קלינגענדיקע נעמען: centralogger, dom-utils-lite, node-fetch-lite, connector-agent, node-gyp-runtime, און node-env-resolve.
די לעצטע צוויי ווערסיעס פון node-env-resolve, 1.0.7 און 1.0.8, זענען געווארן געמאָלדן דורך Xygeni'ס Malware Early Warning (MEW) סיסטעם דעם 2טן מאי און באשטעטיקט שלעכט דעם 3טן מאי.
דער אימפּלאַנט איז ומגעוויינטלעך פֿאַר וואָס עס איז נישט: עס זענען נישטאָ קיין טעלעגראַם באָץ, קיין OAST קאָלבאַקס, קיין obfuscation, און קיין פּרוּוו צו כאַפּן AWS קראַדענטשאַלז ביים אינסטאַלירן. אַנשטאָט, postinstall.js פלאַנצט אַ ווינדאָוז בוט-פּערסיסטענס אַרייַנטרעטן, ניצנדיק אַ HKCU ראַן שליסל וואָס לאָנטשט wscript.exe קעגן א VBS שטומף. דערנאך שאפן עס אן אפגעטיילטן Node.js אגענט וואס באנדלט מאדולן פאר מיקראפאן כאפן, בראוזער-געשיכטע גניבה, סקרינשאטן, און מאויז/קיבארד סימולאציע.
מיר רופן דעם קלאַסטער דעווטאַפּ, נאכדעם וואס דער קיט לאזט עס לויפן אויף א דעוועלאפער'ס מאשין.
אלע זעקס פעקלעך זענען געווען לייוו אויף npm אין דער צייט פון שרייבן. מיר האבן זיי אריינגעגעבן צום רעגיסטרי'ס אביוז קאנאל. פארטיידיקער זאלן ארויסנעמען אלע אינסטאלאציעס פון דעם ארויסגעבער ביז זיי ווערן אראפגענומען.
דער קלאַסטער: זעקס פּאַקעטן, איין פֿאַרלעגער
דער ארויסגעבער חשבון user0001 איז נישט וועריפיצירט. עס האט נישט קיין SCM וועריפיקאציע, קיין דאמעין-געבונדענע אימעיל, און קיין פריערדיגע היסטאריע. די דזשימעיל האנדל tanvisoul9 ערשיינט נישט אין קיין אנדערן npm ארויסגעבער רעקארד וואס מיר האבן געקענט געפינען.
אלע זעקס פעקלעך ליסטן דעם זעלבן אויפהאלטער, זענען ארויסגעגעבן געווארן פון דעם זעלבן אקאונט, און טיילן דעם זעלבן package.json עס איז נישטאָ קיין repository, ניט homepage, און ניט description לענגער ווי איין שורה.
די נאַמינג סטראַטעגיע איז דער אינטערעסאַנטער טייל. נישט ווי אַ קלאַסישע דעפּענדענסי-קאָנפוזשאַן אָדער טיפּאָסקוואַט קאַמפּיין, קיין איינער פון די נעמען צילט נישט אַ ספּעציפֿישע אַפּסטרים ביבליאָטעק. אַנשטאָט, זיי זענען קאַליברירט צו פאַרשווינדן אין אַן עכטן package.json or npm ls רעזולטאַט.
| פּעקל | ערשטער פֿאַרעפֿנטלעכט | לעצט ווערסיע | ווערסיעס | ראָלע אין דעם קלאַסטער |
|---|---|---|---|---|
| צענטראלאגער | 2026-04-01 12:46 UTC | 1.0.9 | 5, פֿון 1.0.5 ביז 1.0.9 | קלאַסטער'ס "לאָגינג יוטיליטי" דעקל; ערשטע פּובליקאַציע |
| דאָם-יוטילס-לייט | 2026-04-14 07:36 UTC | 1.0.3 | 3 | אלגעמיינע DOM-העלפער דעקל |
| נאָוד-פֿעטש-לייט | 2026-04-19 10:22 UTC | 1.0.2 | 3 | נאכמאכט נאָדע-פעטש משפּחה |
| קאַנעקטאָר-אַגענט | 2026-04-25 05:12 UTC | 1.0.0 | 1 | אלגעמיינער נאמען "אגענט" |
| נאָדע-גיפּ-רענטיים | 2026-04-25 05:17 UTC | 1.0.0 | 1 | נאָכמאַכט נאַטיוו-מאָדול בויען טולינג |
| נאָדע-ענוו-רעזאָלוו | 2026-04-25 05:21 UTC | 1.0.9 | 10, פֿון 1.0.0 ביז 1.0.9 | אַקטיווער דראָפּער; פולער אימפּלאַנט |
נאַמעס ווי centralogger, node-fetch-lite, און node-gyp-runtime זענען דיזיינט צו קוקן נישט קאנטראווערסיעל אין קאוד רעצענזיע. זיי הערן זיך אן ווי זאכן וואס וואלטן שוין געווען אין א פראיעקט'ס דעפענדענץ בוים.
צוזאַמען מיט אַ פרישן, נישט-באַשטעטיקטן אַרויסגעבער און פֿעלנדיקע לינקס צו רעפּאָזיטאָריעס, פֿאָרמען זיי אַ דערקענטלעכן מוסטער: אַן אַקטיאָר וואָס זייט נידעריק-פֿרײַקציע נעמען אין רעגיסטרי, און דאַן גייט שנעל צוריק אויף דעם וואָס איז וויכטיק. אין דעם פֿאַל, node-env-resolve באַקומען צען ווערסיעס אין אַכט טעג.
וואָס לאַנדט אויף אַ ווינדאָוז דעוועלאָפּער קעסטל
די בייזוויליקע קייט אויף node-env-resolve:1.0.8 איז קורץ, דירעקט, און ומגעוויינטלעך פֿעיִטשער-רייַך פֿאַר אַן npm RAT.
נאָך-אינסטאַלאַציע: פּערסיסטענס און דיטאַטשט אַגענט
package.json דערקלערט אן איינציקע אינסטאל קרוק:
{ "scripts": { "postinstall": "node postinstall.js" } }postinstall.js טוט דריי זאכן אין סדר.
ערשטנס, שטעלט עס אן אינסטאַלאַציע דירעקטאָרי אינדרויסן פון דעם npm בוים. דער דרך ווערט אויסגערעכנט ביי ראַנטיים אין דעם סקריפּט ווי INSTALL_DIRדערנאך לויפט עס אן אינערליכע execSync('npm install --production --silent ...') אינעווייניק צו ציען די אימפּלאַנט'ס ראַנטיים דיפּענדאַנסיז. דאָס לייגט דעם אַגענט אויף דיסק ערגעץ אין אַ מאַנואַל node_modules אוידיט וועט נישט געפינען.
צווייטנס, עס שרייבט א VBS לאָנטשער און רעגיסטרירט עס פֿאַר בוט פּערסיסטענס:
reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Run \ /v ${AGENT_NAME} \ /t REG_SZ \ /d "wscript.exe \"${vbsPath}\"" /fwscript.exe איז דער ווינדאָוס סקריפּט האָסט, אַ געחתמעטער מייקראָסאָפֿט ביינערי וואָס לויפט .vbs טעקעס אָן אַ קאָנסאָל פֿענצטער. דאָס איז פאַר-cisפארוואס עס איז באוואוסט פאר אויטארישן שטאב.
עס איז אויך דא א פארגלייכונג reg delete וועג אינעווייניק src/index.js, וואָס טייַטשט אַז דער אימפּלאַנט איז דיזיינט צו זיין ריין אַראָפּנעמלעך אויף אָפּעראַטאָר'ס באַפֿעל.
דריטנס, עס ברענגט ארויס א אפגעזונדערטן קינד פראצעס:
spawn(node, [path.join(INSTALL_DIR, 'src/index.js')], { detached: true, env: { ...process.env, SERVER_URL } })צוויי דעטאלן זענען דא וויכטיג.
SERVER_URL ווערט געלייענט פון דער סביבה. אלס רעזולטאט, איז דער C2 ענדפּוינט קאָנפיגורירבאר פּער דיפּלוימאַנט און איז נישט איינגעבאַקן אין דעם פּאַקעט. יענע קליינע אָבער באַוואוסטזיניקע ברירה באַזיגט רובֿ סטאַטישע-IOC סוויפּס.
אויך, דער געבוירן קינד ירשעט די פולע עלטערן סביבה. דעריבער, יעדער NPM_TOKEN, AWS_*, GITHUB_TOKEN, אדער SSH-אגענט סאקעט וואס איז פאראן אין דער דעוועלאָפּער שאָל ביי דער אינסטאַלאַציע צייט, פארט אריין אין דעם לאַנג-לעבעדיגן אַגענט'ס זכּרון.
וואָס דער אַגענט שיקט מיט
די געבונדלע src/ בוים כולל דריי מאָדולן וועמענס נעמען אַליין דערציילן די געשיכטע: audioCapture.js, browserHistory.js, און systemInfo.js.
די ראַנטיים דעפּענדענסי ליסטע, אויפגעלייזט בעת די סטיידזשד npm install, באַשטעטיקט זיי.
דיזער צוגאַנג פֿאַרוואַנדלט אַ כאַאָטישן אינצידענט אין אַ קאָנטראָלירטע רעאַקציע.
אנשטאט רעאגירן בלינדערהייט, ארבעטן טימז מיט קלאָרע פּריאָריטיזאַציע און שנעלע רעמעדיאַציע.
| דעפּענדענסי | וואָס דאָס איז פֿאַר אין דעם קאָנטעקסט |
|---|---|
| סקרעענשאָט-דעסקטאַפּ | פּעריִאָדישע פאַרשטעלן כאַפּן |
| @נוס-בוים-גאָפּל/נוס-דזשעי | מויז און קלאַוויאַטור אויטאָמאַציע / אינפוט סימולאַציע |
| בעסער-sqlite3 | דירעקט לייענט Chrome, Edge, און Firefox History SQLite דאַטאַבייסעס |
| אַדמין-זיפ | בונדלען געזאמלטע אַרטיפאַקטן איידער עקספילטראַציע |
| שאַרף | גרייס-ענדערן / קאמפרעסירן סקרעענשאָץ און בילד אַרטיפאַקץ |
| סאָקעט.יאָ-קליענט | שטענדיקער צוויי-דירעקציאָנעלער C2 קאַנאַל |
| נאָדע-מאַשין-אידענטיפיקאַציע | סטאַביל פּער-האָסט פינגערפּרינט פֿאַר קרבן טראַקינג |
systemInfo.js קאַללס os.networkInterfaces() פֿאַר נאָך פינגערפּרינטינג איידער דעם ערשטן בעאַקאָן.
פארוואס די אודיאָ קאַפּטשער איז די אויסגעצייכנטע סיגנאַל
רוב npm RATs וואָס מיר טריאַזירן אין MEW שטעלן זיך אָפּ ביי געהיימע גנייווע בעת אינסטאַלאַציע. זיי לייענען. ~/.npmrc, לייענען ~/.aws/credentials, קראַצן process.env, פּאָסט צו אַ וועבהוק, און אַרויסגיין. דאָס פּאַסט צו אַ סמאַש-און-גראַב עקאָנאָמישן מאָדעל. קרעדענשאַלז האָבן אַ קורצע האַלב-לעבן, און דער אַטאַקירער דאַרף שנעל מאָנעטיזירן.
node-env-resolve איז אַנדערש אין פֿאָרעם.
די אנהאלטונג איז אויפגעשטעלט צו איבערלעבן א ריסטארט. דער אגענט לויפט אפגעזונדערט און לאנג-לעבעדיג אונטער wscript.exeדער קיט וואָס עס טראָגט איז פֿאַר זײַן דאָרט אויף אַ דעוועלאָפּער'ס מאַשין, נישט פֿאַר כאַפּן און לאָזן: אַ מיקראָפאָן רעקאָרדער, אַ קלאַוויאַטור/מויז דרייווער, פֿול בראַוזער-געשיכטע אײַננעמען, סקרין קאַפּטשער, און אַן אינטעראַקטיווער Socket.IO קאַנאַל צוריק צו אַ קאָנפיגוראַבלע C2.
מיקראָפאָן קאַפּטשער אין באַזונדער איז די ליניע וואָס די קאַמפּיין גייט אַריבער וואָס רובֿ npm מאַלוואַרע טוט נישט.
א דעוועלאָפּער וואָרקסטיישאַן איז, מער און מער, אויך די וואָרקסטיישאַן וואו דעוועלאָפּערס נעמען סטאַנד-אַפּס, קונה רופן, פּלאַן דיסקוסיעס, און אויף-רוף בריקן. אן אימפּלאַנט וואָס רעקאָרדירט דעם מיקראָפאָן איז נישט טאַקע נאָך דעם דעוועלאָפּער'ס npm טאָקען. עס איז נאָך וואָס דער דעוועלאָפּער זאָגט פֿאַרנט פֿון לאַפּטאָפּ.
יענע מעגלעכקייטן, פּלוס דער מאַנגל פון פֿאַרשטויכונג און דער אַוועק פון קיין בליצנדיקע אינסטאַלאַציע-צייט עקספֿילטראַציע, לייענט זיך ווי פאַר-פּאָזיציאָנירן פֿאַר צילגעריכטעטן צוטריט אַנשטאָט אָפּאָרטוניסטישע קרעדענשאַל גנייווע.
מיר באַהויפּטן נישט צושרייבונג נאָר פֿון דעם אַליין. מיר באַמערקן דעם אָפּעראַציאָנעלן פּראָפֿיל.

די אַכט-טאָגיקע איטעראַציע קאַדענץ אויף node-env-resolve איז די מערסט אפעראציאנעל אויסזאגענדע דעטאלן אין די צייטליניע.
דאָס איז נישט קיין "פֿײַער און פֿאַרגעס" דראָפּ. דער פֿאַרלעגער האַלט אַקטיוו אין אָרדענונג דעם דראָפּער, וואָס מיינט געוויינטלעך איינע פֿון צוויי זאַכן. אָדער טוען זיי עס צו קעגן טעסט־סביבות פֿאַר אַ ברייטערע דיפּלוימאַנט, אָדער זיי האָבן שוין אינסטאַלירן טעלעמעטרי וואָס קומט צוריק און רעאַגירן דערויף.
די אנדערע פינף פעקלעך האבן עפעקטיוו נישט געזען קיין פארלוסט נאך זייער ערשטע ארויסגעבונג. דאס פאסט צו א "שטאפל איין מאל, לאז א נאמען" מוסטער פארן שטיצנדיקן קלאסטער, בשעת די אינזשענירינג מי פאקוסירט אויף דעם פעקל וואס טוט די ארבעט.
צושרייבונג: קליינע אנווייזונגען, קיין פעסטער אורטייל
עפנטלעך אָסינט סיגנאַלן זענען דין, און מיר וועלן זיי נישט אויסשטרעקן. וואָס איז באַאָבאַכטבאַר:
די דזשימעיל האַנטל tanvisoul9 טיילווייז ענלעך צו א דרום אזיאטישן געגעבענעם נאמען, "טאנווי." דאס איז א שוואכער סיגנאל. דזשימעיל הענטלעך זענען נישט אידענטיטעט, און די לעצטע soul9 איז אלגעמיין. עס איז נישט זיכער צו אויספירן געאגראפיע פון אן אימעיל לאקאל-טייל אליין.
קאָד סטיל איז נישט באַמערקעוודיק Node.js: standard ביבליאָטעק רופן ווי למשל os, child_process, spawn, און reg addעס איז נישטאָ קיין פארקלעמונג, קיין סטרינג ראָטאַציע, און קיין אַנטי-דיבאַג לאָגיק. דער מחבר איז באַקוועם מיט ווינדאָוז רעגיסטרי פּרימיטיוון און דיטאַטשט-קינד-פּראָצעס אָרקעסטראַציע, אָבער עס שיינט נישט צו זיין גרייט צו אַ מער שטילע האַנדל-קראַפט וואָס זיי קענען מסתּמא נוצן.
דיפּענדאַנסיז זענען גאָר גרייט און באַקאַנט: screenshot-desktop, nut-js, better-sqlite3, און socket.io-clientעס איז נישטאָ קיין אייגענעם פּראָטאָקאָל, קיין פֿון קראַץ אויסגעאַרבעטער C2 סטעק, און קיין נייער טריק פֿאַר פּערסיסטענץ ווייטער פֿון אַ לערנבוך. HKCU לויף שליסלדאָס איז אַ קאָמפּעטענטער אינטעגראַטאָר, נישט קיין געצייַג־מחבר.
מיר האָבן נישט געפֿונען נישט-ענגלישע סטרינגס, אײַנגעבעטעטע באַמערקונגען, לאָקאַלע דאַטן, אָדער קאָמפּיילער-רעזולטאַט צײַטזאָנע פֿינגער-אָפּדרוקן אין די פֿאַרעפֿנטלעכטע אַרטיפאַקץ.
מיר האָבן געקוקט אויף קאָד איבערלאַפּונג מיט פריערדיקע קאַמפּיינז וואָס מיר שוין טראַקן, אַרייַנגערעכנט שי חולוד, אויליוויאָן, בילדקייט, און די לעצטע העיביי / claude-code-best Anthropic-CLI קלאָן משפּחה. מיר האָבן נישט געפֿונען קיין איינע: קיין געטיילטע C2 מוסטערן, קיין געטיילטע טעקע אויסלייגן, און קיין געטיילטע אידיאָמען.
וואָס מיר וואָלטן נישט זאָגן: אַז דאָס איז אַ שטאַט אַקטיאָר, אַ באַקאַנטע גרופּע, אָדער געאָגראַפֿיש פֿאַרבונדן צו אַ ספּעציפֿישן לאַנד.
דער אפעראציאנעלער פראפיל איז קאנסיסטענט מיט א קליינער, מיטלמעסיג באגאבטער מאַנשאַפֿט וואָס טוט דעוועלאָפּער-וואָרקסטיישאַן אויפזיכט. עס איז מסתּמא פינאַנציעל מאָטיווירט דורך דאַונסטרים נוצן פון די אַקסעס, אָבער מעגלעך אויך רעקאָנאַסאַנס-אַלס-אַ-סערוויס פֿאַר אַ באַזונדער קויפער.
צוויי אומדירעקטע פונקטן שטיצן דאס: די אויסמיידונג פון אויפמערקזאמקייט-כאפנדיקע עקספילטראציע מעכאניק וואס וואלטן פארברענט דעם קלאסטער שנעל, ווי למשל טעלעגראם באטס, oastify.com, אדער קאַנעריטאָקאָנס, און די באַוואוסטזיניק פּשוטע פּעקל נעמען, וואָס בעפֿאָרצוגן שטילע לאַנג-טייל אינסטאַלאַציעס איבער אַ קורצן הויך-וואָלומען שפּיץ.
אינדיקאַטאָרן פון קאָמפּראָמיס און דעטעקציע
| פּאַקעטן און פֿאַרלעגער | |
|---|---|
| פעלד | ווערט |
| npm ארויסגעבער | וסערקסנומקס |
| ארויסגעבער אימעיל | tanvisoul9@gmail.com, נישט וועריפיצירט |
| פּאַקקאַגעס | צענטראלאגער, דאם-יוטילס-לייט, נאָדע-פעטש-לייט, קאנעקטאר-אגענט, נאָדע-דזשיפּ-רענטיים, נאָדע-ענוו-רעסאָלוו |
| באַשטעטיקט בייזוויליק | נאָוד-ענוו-רעסאָלוו@1.0.7, נאָוד-ענוו-רעסאָלוו@1.0.8 |
| באַלעבאָס אַרטעפאַקטן | |
|---|---|
| טיפּ | ווערט |
| פּערסיסטענס שליסל | HKCU\סאָפטווער\מייקראָסאָפֿט\ווינדאָוס\קראַנטווערסיע\לויפֿן |
| פּערסיסטענס ווערט | וועריאַבלע נאָמען; דאַטן פון דער פאָרעם wscript.exe " \\ .vbs" |
| אינסטאַלירן קרוק | פּאָסטינסטאַל: נאָוד postinstall.js אין דעם פּאַקעט מאַניפעסט |
| אימפּלאַנט מאָדולן | src/audioCapture.js, src/browserHistory.js, src/systemInfo.js |
| סטיידזשינג דירעקטאָרי | INSTALL_DIR איז אויפגעלייזט אינדרויסן פון די פּראָיעקט'ס node_modules; לאָקאַציע באַשטימט דורך postinstall.js ביים אינסטאַלירן צייט. |
| נעץ | |
|---|---|
| טיפּ | ווערט |
| C2 טראַנספּאָרט | socket.io-קליענט, אנהאלטנדיקער צוויי-דירעקציאָנעלער קאַנאַל |
| C2 ענדפּוינט | צוגעשטעלט צום אגענט דורך די SERVER_URL סביבה וועריאַבל; נישט האַרד-קאָדירט אין פאַרעפֿנטלעכטע אַרטיפאַקץ |
דעטעקציע נאטיצן
צוויי כּללים כאַפּן די משפּחה אָן צו דאַרפֿן דעם C2 ענדפּונקט.
ערשטנס, מאַרקירן פּאָסטינסטאַל סקריפּטן וואָס דורכפירן אַן אינערלעכע npm install אין א וועג אינדרויסן פון דעם פעקל'ס אייגענעם דירעקטארי. יעדער לעגיטימער פארגעבויטער דאונלאודער, ווי צום ביישפיל node-gyp איבערבויט אדער פאַר-געבויטע בינערי דאַונלאָודערז, שרייבט אינעווייניק דעם פּעקל אדער אין פּלאַטפאָרמע-standard קאַש פּאַטס מיט וועריפיצירטע העשיז. עס שרייבט נישט אין אַ פריש געשאַפענעם INSTALL_DIR אנדערש אויף דיסק.
צווייטנס, מאַרקירן פּאָסטינסטאַל סקריפּטן וואָס אַרויסגעבן reg add HKCU\…\Run מיט wscript.exe אלס דער לאָנטשער. דאָס איז אין עסענץ קיינמאָל נישט לעגיטימאַט פֿון אַן npm פּעקל. מאַרקירט און קאַראַנטינט עס.
א דריטע הויריסטיק איז נוצלעך צו דערקענען דעם נעקסטן געשוויסטער פּעקל איידער עס ווערט באַשטעטיקט: אַ פרישער npm פאַרלעגער אָן קיין SCM וועריפיקאציע, א דזשימעיל אימעיל, ניין repository פעלד, און קייפל קורצע, אלגעמיינע, אינפראַסטרוקטור-קלינגענדיקע פּעקל נעמען ארויס אין עטלעכע טעג איינס פון דעם אַנדערן, איז, אַליין גענוג צו באַרעכטיקן מאַנועלע איבערבליק.
געמאָלדן צום npm רעגיסטרי. מיר וועלן דערהייַנטיקן דעם פּאָסטן ווען דער פאַרלעגער חשבון ווערט אַוועקגענומען.






