TL; ডিআর
nolimit-agent একটি এনপিএম প্যাকেজ যার প্রকাশিত সংস্করণগুলো — 1.0.299 মাধ্যমে 1.0.307২০২৬-০৬-২৬ থেকে ২০২৬-০৬-২৯ পর্যন্ত চার দিনে প্রকাশিত — প্রতিটির সাথে রয়েছে একটি সম্পূর্ণ ফিশিং এবং বাল্ক-মেইল ফ্রেমওয়ার্ক একটি লুকানো, সম্পূর্ণ দুর্বোধ্য ডিরেক্টরির ভিতরে। প্রতিটি সংস্করণে প্রধান এন্ট্রিটি সমাধান হয় .ad/x0.jsএকটি ডটফাইল-নামযুক্ত ফোল্ডারের প্রায় ৮৬টি ফাইলের মধ্যে এটি একটি, যেখানে প্রায় ৪,২০০টি জাভাস্ক্রিপ্ট-অবফাসকেটর স্ট্রিং-অ্যারে ব্লব রয়েছে; এর ইনস্টল হুক এবং এন্ট্রি লেআউট সর্বত্র অভিন্ন।
ধোঁয়াশার আড়ালে বসে আছে এক মাইক্রোসফ্ট 365 OAuth ডিভাইস-কোড প্রবাহ (login[.]microsoftonline[.]com/common/oauth2/v2.0/devicecodeযা, একবার কোড অনুমোদিত হলে, মাইক্রোসফ্ট গ্রাফ এপিআই (Microsoft Graph API)-এর মাধ্যমে ভুক্তভোগীর আউটলুক ইনবক্স এবং প্রেরিত আইটেমগুলো পড়ে; অপারেটর-সরবরাহকৃত প্রাপক তালিকা দ্বারা চালিত একটি বাল্ক এসএমটিপি (SMTP) এবং এসএমএস (SMS) পাঠানোর ইঞ্জিন; ব্র্যান্ড-ছদ্মবেশ বার্তার টেমপ্লেট; ওপেন-রিডাইরেক্ট লিঙ্ক তৈরি; এবং ডিএনএস-ওভার-এইচটিটিপিএস (DNS-over-HTTPS), হু-ইজ (WHOIS), ও গিটহাব কোড সার্চের মাধ্যমে তথ্য সংগ্রহ। অপারেটরের অবকাঠামোতে রানটাইম ট্র্যাফিক বীকন। api[.]nolimitent[.]xyz:4100.
প্রভাবিত: যে কেউ প্যাকেজটির যেকোনো সংস্করণ ইনস্টল করবে, এবং যে কেউ মাইক্রোসফট ৩৬৫ মেইলবক্স যার মালিক এর মাধ্যমে উপস্থাপিত একটি ডিভাইস কোড অনুমোদন করেন। সর্বশেষ সংস্করণ, 1.0.307এটি বর্তমান সর্বশেষ ট্যাগ এবং একই ডিভাইস-কোড মেইলবক্স সক্ষমতা বহন করে — ক্ষতিকারক কোডটি কোনো একটি পূর্ববর্তী সংস্করণে সীমাবদ্ধ নয়।
নির্দয়তা: সংকটপূর্ণক্ষতিগ্রস্ত বাস্তুতন্ত্র: npmপ্রথমে যে সূচকটি খুঁজতে হবে: হোস্ট। api[.]nolimitent[.]xyz.
আক্রমণ: এটি কীভাবে কাজ করে
একটি লুকানো পেলোডের উপর একটি নিরীহ আবরণ
প্যাকেজটি একটি সাধারণ পৃষ্ঠতল উপস্থাপন করে। package.json ঘোষণা করে পোস্টইনস্টল হুক –
text postinstall: node scripts/postinstall.js এবং পরিদর্শনে scripts/postinstall.js এটি ক্ষতিকর নয়: এটি একটি উইন্ডোজ কমান্ড শিম ইনস্টল করে এবং প্রস্থান করে। আচরণটি হুকের মধ্যে থাকে না। প্রধান এবং am উভয় ক্ষেত্রই নির্দেশ করে .ad/একটি ডিরেক্টরি, যার শুরুতে থাকা ডট চিহ্নটি একে অনানুষ্ঠানিকতা থেকে দূরে রাখে। ls আউটপুট, এবং যার বিষয়বস্তু অভিন্নভাবে মেশিন-অস্পষ্ট করা হয়েছে। স্ট্যাটিক স্ক্যানারটি জুড়ে প্রায় ৪,২৯৩টি এনকোডেড-পেলোড স্প্যান গণনা করেছে। .ad/ মডিউল সেট; javascript-obfuscator এটি একটি ঘোষিত ডেভেলপমেন্ট ডিপেন্ডেন্সি, যা বান্ডেল করা ফাইলগুলোর স্ট্রিং-অ্যারে-রোটেশন আকৃতির সাথে মেলে।
এই বিভাজনটিই হলো প্রথম উল্লেখযোগ্য সংকেত: একজন পর্যালোচক যে ইনস্টল হুকটি খুঁটিয়ে দেখবেন, সেটি ত্রুটিমুক্ত; অথচ অপারেশনাল কোডটি এক ডিরেক্টরি দূরে, লুকানো ও দুর্বোধ্য অবস্থায় থাকে এবং কেবল প্যাকেজটির এক্সপোর্ট করা এন্ট্রি পয়েন্ট রান করলেই সেটি অ্যাক্সেস করা যায়।
মাইক্রোসফট ৩৬৫ ডিভাইস-কোড মেইলবক্স অ্যাক্সেস
মডিউল .ad/x12.js এটি ফ্রেমওয়ার্কটির সবচেয়ে গুরুত্বপূর্ণ সক্ষমতা বহন করে। এটি মাইক্রোসফ্ট 365 OAuth 2.0 ডিভাইস অনুমোদন মঞ্জুরি পরিচালনা করে:
text POST login[.]microsoftonline[.]com/common/oauth2/v2.0/devicecode ডিভাইস-কোড গ্র্যান্ট হলো ইনপুট-সীমাবদ্ধ ডিভাইসগুলোর জন্য ডিজাইন করা একটি বৈধ মাইক্রোসফট ফ্লো: একটি সার্ভিস একটি কোডের জন্য অনুরোধ করে, এবং ব্যবহারকারী সেই কোডটি টাইপ করে। microsoft.com/deviceloginদ্বিতীয় একটি ডিভাইসে অনুরোধটি অনুমোদিত হলে, অনুরোধকারী পরিষেবাটি টোকেন পায়। অনুরোধকারী পরিষেবাটি যদি মেইলবক্সের মালিক ছাড়া অন্য কারো হয়, তবে অনুমোদনের মাধ্যমে সেই তৃতীয় পক্ষকে একটি টোকেন দেওয়া হয়। একবার টোকেন পাওয়া গেলে, `.ad/x12.js` সরাসরি মাইক্রোসফ্ট গ্রাফের মাধ্যমে মেইলবক্সটি পড়ে:
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) প্রবেশাধিকার: প্রচলিত অর্থে ফিশিং করার জন্য কোনো ক্রেডেনশিয়াল থাকে না, শুধু অনুমোদনের জন্য একটি কোড থাকে।
ছদ্মবেশ টেমপ্লেট সহ একটি বাল্ক মেইল এবং এসএমএস ইঞ্জিন
মেইলবক্স অ্যাক্সেসের চারপাশে একটি মেইলার থাকে। প্যাকেজটিতে অপারেটর-সম্পাদনাযোগ্য ডেটা ফাইল পাঠানো হয় — প্রেরকের তালিকা (প্রেরকদের.txt, smtps.txtএবং একটি টেমপ্লেট ফাইল (functions.txt) — যার নামমাত্র ঠিকানাগুলো ছদ্মবেশ ধারণের জন্য একটি কাস্টিং লিস্টের মতো দেখায়: security@apple.com, login-যাচাইকরণ, OAuth-পরিষেবা, বিলিং, এবং অ্যাকাউন্ট-বিজ্ঞপ্তি প্রেরকদের বিরুদ্ধে আপনারডোমেইন.কম বিকল্প অপারেটর প্রতিস্থাপন করে। এসএমএস অংশে একটি ফোন থাকে।ebook এবং গেটওয়ে কনফিগারেশন। মেইলারটি অপারেটর-সরবরাহকৃত প্রাপকের তালিকা ধরে ধরে কনফিগার করা SMTP রিলেগুলির মাধ্যমে মেইল পাঠায়।
সংযোগ স্থাপন করতে, .ad/xu.js এবং .ad/xq.js ইউআরএল পার্সিংয়ের অস্পষ্টতা এবং ক্লিক ট্র্যাকিংকে কাজে লাগিয়ে ইউআরএল তৈরি করুন। এই স্পুফ প্যাটার্নগুলো একটি ইউআরএলের আগে একটি বিশ্বস্ত-দেখানো অথরিটি এমবেড করে। @ সুতরাং দৃশ্যমান প্রিফিক্সটি আসল হোস্ট থেকে ভিন্ন:
text https://trusted[.]com@ https://trusted[.]com%40 https://trusted[.]com:80@ https://redirect[.]example[.]com/ https://track[.]example[.]com/click? এই ফ্রেমওয়ার্কটি প্রধান ভোক্তা এবং enterprise মেইল প্রোভাইডার — একটি বিশ্বাসযোগ্য প্রোভাইডার-ব্র্যান্ডেড প্রম্পট বা ল্যান্ডিং পেজ তৈরি করার একটি প্রচলিত কৌশল।
লক্ষ্যবস্তু এবং অবকাঠামো পর্যবেক্ষণ
বেশ কয়েকটি মডিউল পাঠানোর আগে প্রাসঙ্গিক তথ্য সংগ্রহ করে। .ad/x0.js DNS-over-HTTPS এর মাধ্যমে নাম সমাধান করে (dns[.]google/resolve), .ad/xa.js WHOIS অনুসন্ধান করুন (api[.]whois[.]vu), এবং .ad/x9.js গিটহাব কোড অনুসন্ধান চালায় (api[.]github[.]com/search/code?q=) — রিলে লিস্টে তথ্য সরবরাহের জন্য উন্মুক্ত মেইল-সার্ভার কনফিগারেশন এবং SMTP ক্রেডেনশিয়াল খুঁজে বের করার সাথে সামঞ্জস্যপূর্ণ একটি প্যাটার্ন। .ad/xs.js ওয়েব্যাক মেশিনের CDX ইনডেক্স অনুসন্ধান করে।
আদেশ ও নিয়ন্ত্রণ
অস্পষ্ট সেট জুড়ে, .ad/x4.js অপারেটর এন্ডপয়েন্টকে নির্দেশ করে:
text http://api[.]nolimitent[.]xyz:4100 হোস্ট তার শেয়ার করে নোলিমিটেন্ট প্রকাশকের নিজস্ব নামকরণ সহ ব্র্যান্ড, এবং : 4100 পোর্ট হলো ফ্রেমওয়ার্কের কল-হোম চ্যানেল। ডিফেন্ডারদের জন্য এটিই সবচেয়ে নির্ভরযোগ্য সূচক: একটি প্যাকেজ, একটি ডেভেলপার ওয়ার্কস্টেশন, বা একটি বিল্ড এজেন্ট সংযোগ স্থাপন করছে। api[.]nolimitent[.]xyz এই কোডটি চালানো হয়েছে।
সমঝোতার সূচক
নিচের সূচকগুলোর ওপর ভিত্তি করে একজন ডিফেন্ডার ব্যবস্থা নিতে পারে — যেমন লকফাইল গ্রেপ করা, কোনো হোস্ট ব্লক করা, অথবা প্রক্সি ও ডিএনএস লগ অনুসন্ধান করা। মাইক্রোসফট এন্ডপয়েন্টগুলো প্রদর্শিত হয় কারণ ফ্রেমওয়ার্কটি সেগুলোর অপব্যবহার করে; এগুলো নিজে ক্ষতিকর নয় এবং ব্লক করা উচিত নয়।
| ইনডিকেটর | আদর্শ | কোথায় | ডিফেন্ডার অ্যাকশন |
|---|---|---|---|
nolimit-agent (সকল সংস্করণ ১.০.২৯৯–১.০.৩০৭) | প্যাকেজ | npm | লকফাইল / ইনস্টল লগগুলি গ্রেপ করুন |
api[.]nolimitent[.]xyz (:4100) | C2 হোস্ট | .ad/x4.js | ব্লক করুন; ডিএনএস ও প্রক্সি লগ অনুসন্ধান করুন |
.ad/ লুকানো ডিরেক্টরি প্রধান/বিন টার্গেট হিসেবে | গঠন | package.json | রেজিস্ট্রি পর্যালোচনায় স্থির সংকেত |
trusted[.]com@ / %40 / :80@ লিঙ্ক ফর্ম | ইউআরএল স্পুফ | .ad/xu.js, .ad/xq.js | মেইল/প্রক্সি ইউআরএল পরিদর্শন |
ডিভাইস-কোড অনুদান + গ্রাফ inbox/sentitems পড়া | আচরণ | .ad/x12.js | M365 সাইন-ইন + গ্রাফ অডিট পর্যালোচনা |
ট্রায়েজে সংগৃহীত ফাইল হ্যাশগুলি:
- প্যাকেজ/.ad/x0.js — sha256 e4153bb614ee03ec456e6b5b41926385db6aae0e4f3e771d18e581571ad7ca2a
- প্যাকেজ/প্যাকেজ.json — sha256 8618064f1f6146b4a8f0459aff9154dca1847e3936aa44f4d4cd37e127075644
এই প্যাকেজটি থেকে স্বাধীনভাবে অনুসন্ধান করার মতো একটি মাইক্রোসফট ৩৬৫ টেন্যান্ট সংকেত হলো: সফল ডিভাইস-কোড সাইন-ইন-এর পরপরই গ্রাফ রিড হওয়া। মেইল ফোল্ডার/ইনবক্স এবং মেইল ফোল্ডার/প্রেরিত আইটেমবিশেষ করে এমন কোনো সেশন থেকে যা ব্যবহারকারী চিনতে পারেন না।
আরোপণ এবং পর্যবেক্ষণকৃত আচরণ
যা পর্যবেক্ষণযোগ্য, তা এর পেছনের ব্যক্তি থেকে পৃথক থাকে।
পর্যবেক্ষণযোগ্য তথ্য: প্যাকেজটি হ্যান্ডেলের অধীনে প্রকাশিত হয়। নোলিমিট-এজেন্ট একটি যাচাইবিহীন জিমেইল ঠিকানা এবং কোনো সংযুক্ত উৎস সংগ্রহস্থল ছাড়াই; এর package.json এটিকে একটি “উন্নত ইমেল প্রেরক” হিসেবে বর্ণনা করে এবং এর সাথে ট্যাগ করে লাল-দল কীওয়ার্ড; রানটাইম কোড একটি লুকানো, দুর্বোধ্য স্থানে কেন্দ্রীভূত। .ad/ ডিরেক্টরি যার টুলচেইন (javascript-obfuscator) একটি ঘোষিত নির্ভরতা; এবং কল-হোম হোস্ট api[.]nolimitent[.]xyz পুনরায় ব্যবহার করে নোলিমিটেন্ট ব্র্যান্ড। এটি একটি একক প্যাকেজ, যার সাথে একটি অপারেটর-নিয়ন্ত্রিত অবকাঠামোগত ল্যান্ডমার্ক রয়েছে — এটি একাধিক প্যাকেজের সমষ্টি নয়, এবং পূর্বে নাম দেওয়া কোনো ক্যাম্পেইনের সাথে এর কোনো ওভারল্যাপ শনাক্ত করা যায়নি।
সার্জারির লাল-দল কীওয়ার্ডটি শ্রেণিবিন্যাস পরিবর্তন করে না। বৈধ আক্রমণাত্মক-নিরাপত্তা টুলিং, যা দ্বৈত-ব্যবহারের ক্ষমতা প্রদান করে, তা স্বচ্ছভাবেই করে থাকে: পাঠযোগ্য সোর্স কোড, অপারেটর-সরবরাহকৃত টার্গেট এবং কোনো লুকানো কল-হোম না থাকা। এই প্যাকেজটি সেই প্রতিটি বৈশিষ্ট্যকে উল্টে দেয় — এর অপারেশনাল কোড অস্পষ্ট ও লুকানো থাকে এবং এটি ব্যবহারকারীর সরবরাহ করা কোনো টার্গেটের পরিবর্তে নির্দিষ্ট অপারেটর অবকাঠামোতে বীকন পাঠায়। এর আচরণই রায় নির্ধারণ করে, লেবেল নয়, যা ক্ষতিকর।
এখানে উদ্দেশ্য স্পষ্টভাবে বলা হয়নি। পোস্টটিতে বর্ণনা করা হয়েছে কোডটি কী করে — যেমন একটি ডিভাইস কোডের জন্য অনুরোধ করা, গ্রাফের মাধ্যমে একটি মেইলবক্স পড়া, কনফিগার করা রিলেগুলির মাধ্যমে বাল্ক মেইল পাঠানো, একটি নির্দিষ্ট হোস্টে বীকন পাঠানো — কিন্তু এর পেছনের উদ্দেশ্য অনুক্ত রাখা হয়েছে।
প্রভাব, প্রবণতা এবং ডিফেন্ডার নির্দেশিকা
ইনস্টলেশন-সময়ের দুটি প্রভাব গুরুত্বপূর্ণ। প্রথমত, যে কোনো ডেভেলপার বা সিআই এজেন্ট যা ইনস্টল করে নোলিমিট-এজেন্ট ফ্রেমওয়ার্কটিকে সেই হোস্টে নিয়ে আসে এবং কল-হোম স্থাপন করে api[.]nolimitent[.]xyzদ্বিতীয়ত, ডিভাইস-কোড সক্ষমতা ইনস্টলকারী হোস্টের বাইরেও এর পরিধি প্রসারিত করে: একটি Microsoft 365 মেইলবক্স, যার মালিককে উপস্থাপিত কোডটি অনুমোদন করতে প্ররোচিত করা হয়, তা সরাসরি Graph-এর মাধ্যমে পড়া হয় এবং এতে কোনো পাসওয়ার্ডই নেটওয়ার্কের মাধ্যমে আদান-প্রদান হয় না।
বৃহত্তর প্রবণতাটি হলো অভ্যন্তরীণকরণ। ডিভাইস-কোড (AiTM) ফিশিং স্বতন্ত্র ফিশিং পরিকাঠামো থেকে সরে এসে একটি পাবলিক রেজিস্ট্রিতে থাকা প্যাকেজের মধ্যে চলে এসেছে — যার বিতরণ হয় npm ইনস্টল করুন ইমেইল করা লিঙ্কের মাধ্যমে নয়। কিটটিকে এইভাবে প্যাকেজ করার ফলে ফিশিং অপারেটরের হোস্টিং এবং লিঙ্ক-ডেলিভারি সমস্যার পরিবর্তে একটি রেজিস্ট্রির নাগাল পাওয়া যায়, এবং অপারেশনাল কোডটি একটি ক্লিন ইনস্টল হুক ও একটি ডটফাইল-নামযুক্ত দুর্বোধ্য ডিরেক্টরির আড়ালে লুকিয়ে রাখা হয়, যা দ্রুত হাতে ধরে পরীক্ষা করা অসম্ভব করে তোলে।
প্রতিরক্ষাকারীদের জন্য:
- রেজিস্ট্রি এবং নির্ভরতা পর্যালোচনা। এমন একটি প্যাকেজকে বিবেচনা করুন যার প্রধান/am এটি একটি লুকানো (ডট-প্রিফিক্সযুক্ত) ডিরেক্টরিতে পরিণত হয়, যেখানে সুষমভাবে দুর্বোধ্য ফার্স্ট-পার্টি কোড থাকে এবং শুধুমাত্র কাঠামোগত কারণেই এটিকে উচ্চ-ঝুঁকিপূর্ণ হিসেবে চিহ্নিত করা হয়, ইনস্টল হুকটি দেখতে পরিষ্কার কিনা তা নির্বিশেষে। মিনিফিকেশন দুর্বোধ্যতা নয় — গেটটি স্ট্রিং-অ্যারে ডিকোডারের সিগনেচারের উপর প্রয়োগ করতে হবে, লাইনের দৈর্ঘ্যের উপর নয়।
- মাইক্রোসফট ৩৬৫ হার্ডেনিং. যেখানে অপারেশনালভাবে প্রয়োজন নেই, সেখানে কন্ডিশনাল অ্যাক্সেস ব্যবহার করে ডিভাইস-কোড অথরাইজেশন ফ্লো সীমাবদ্ধ করুন; ডিভাইস-কোড গ্রান্ট একটি পরিচিত AiTM ভেক্টর এবং ইন্টারেক্টিভ ব্যবহারকারীদের এটি খুব কমই প্রয়োজন হয়। ডিভাইস-কোড সাইন-ইন নিরীক্ষা করুন এবং এর পরপরই গ্রাফ মেইলবক্স গণনা করুন।
- নেটওয়ার্ক সনাক্তকরণ। ব্লক এবং সতর্ক করুন api[.]nolimitent[.]xyzডেভেলপার এবং বিল্ড পরিকাঠামো জুড়ে আউটবাউন্ড ডিএনএস এবং প্রক্সি লগগুলিতে এটি অনুসন্ধান করুন।
- মেইল-পাথ সনাক্তকরণ। সার্জারির user@host ইউআরএল-স্পুফ ফর্ম (trusted[.]com@…) মেইল গেটওয়ে এবং প্রক্সিতে শনাক্তযোগ্য; যেসব লিঙ্কের অথরিটি কম্পোনেন্ট একটি এর আগে থাকে, সেগুলোকে ফ্ল্যাগ করুন। @.
বিশ্লেষণের সময় প্যাকেজটি npm-এ লাইভ ছিল। কারণ লুকানো ফ্রেমওয়ার্কটি সম্পূর্ণ প্রকাশিত সংস্করণ লাইন এবং বর্তমান সংস্করণ জুড়ে বিস্তৃত। সর্বশেষ ট্যাগ (1.0.307) ডিভাইস-কোড সক্ষমতা বহন করে, রেজিস্ট্রি টেকডাউন শুধুমাত্র একটি ব্যাক-ভার্সন নয়, বরং প্রতিটি ভার্সনকে অন্তর্ভুক্ত করা উচিত।




