LinkPro Linux Rootkit

সম্প্রতি একটি Amazon Web Services (AWS) পরিবেশের সাথে আপোষের ফলে LinkPro নামে ট্র্যাক করা একটি পূর্বে নথিভুক্ত GNU/Linux রুটকিট প্রকাশ পেয়েছে। এই ব্যাকডোরটি eBPF মডিউলের দ্বৈত ব্যবহারের জন্য উল্লেখযোগ্য: একটি সেট আর্টিফ্যাক্ট লুকানোর জন্য, এবং অন্যটি একটি গোপন ট্রিগার হিসাবে কাজ করে - একটি 'নক' যা বিশেষভাবে তৈরি TCP প্যাকেট দেখার পরেই রিমোট কমান্ড কার্যকারিতা জাগ্রত করে। আক্রমণ শৃঙ্খল এবং রুটকিটের প্রক্রিয়াগুলি একটি পরিশীলিত অপারেটরকে চিত্রিত করে যা সনাক্তকরণ এবং ফরেনসিক সম্পর্ককে হতাশ করার জন্য কন্টেইনার অপব্যবহার, কার্নেল-স্তরের গোপনকরণ এবং নমনীয় নেটওয়ার্ক অ্যাক্টিভেশনকে মিশ্রিত করে।

সংক্রমণ ভেক্টর এবং প্রাথমিক স্থাপনা

CVE‑2024‑23897 (CVSS 9.8) এর জন্য ঝুঁকিপূর্ণ একটি উন্মুক্ত জেনকিন্স ইনস্ট্যান্সের শোষণের মাধ্যমে অনুপ্রবেশ শুরু হয়েছিল। সেই অবস্থান থেকে, আক্রমণকারীরা একটি ক্ষতিকারক ডকার চিত্র (kvlnt/vv, যেহেতু ডকার হাব থেকে সরানো হয়েছে) একাধিক Kubernetes ক্লাস্টারে ঠেলে দেয়। ছবিটিতে একটি Kali Linux বেস ব্যবহার করা হয়েছিল এবং একটি ছোট অ্যাপ্লিকেশন ফোল্ডার ছিল যা স্থায়ীত্ব, দূরবর্তী অ্যাক্সেস এবং একটি পর্যায়ক্রমে ব্যাকডোর ডাউনলোড স্থাপনের উদ্দেশ্যে তৈরি করা হয়েছিল।

ম্যালিসিয়াস ডকারের ভিতরের ছবি

ছবির অ্যাপ ফোল্ডারে তিনটি মূল ফাইল রয়েছে যার আলাদা আলাদা ভূমিকা রয়েছে:

start.sh — একটি শেল স্ক্রিপ্ট যা একটি SSH পরিষেবা চালু করে এবং অন্য দুটি উপাদান কার্যকর করে।

লিঙ্ক — একটি ওপেন-সোর্স প্রোগ্রাম (vnt) যা VPN/প্রক্সি ক্লায়েন্ট হিসেবে কাজ করার জন্য কম্পাইল/প্যাকেজ করা হয়েছে, যা vnt.wherewego[.]top:29872 এর সাথে আউটবাউন্ড সংযোগ স্থাপন করে। এটি আক্রমণকারীকে যেকোনো জায়গা থেকে আপোস করা হোস্টে পৌঁছাতে এবং এর মাধ্যমে অন্যান্য লক্ষ্যবস্তুতে পিভট করতে দেয়।

অ্যাপ — একটি রাস্ট-ভিত্তিক ডাউনলোডার (যাকে vGet বলা হয়) যা একটি S3 বাকেট থেকে একটি এনক্রিপ্ট করা vShell পেলোড আনে, তারপর 56.155.98[.]37 এ তার কমান্ড-এন্ড-কন্ট্রোল (C2) সার্ভারে একটি ওয়েবসকেট লিঙ্ক স্থাপন করে।

কুবারনেটস নোডগুলিতে অতিরিক্ত পেলোড সরবরাহ করা হয়েছে

ক্ষতিকারক ছবির পাশাপাশি, অপারেটররা নোডগুলিতে আরও দুটি উপাদান ফেলেছে: একটি ড্রপার যা আরেকটি vShell ব্যাকডোর ইনস্টল করে এবং LinkPro, একটি Golang-লিখিত রুটকিট। LinkPro দুটি মোডের একটিতে চালানোর জন্য ডিজাইন করা হয়েছে - প্যাসিভ (বিপরীত) বা সক্রিয় (ফরোয়ার্ড) - এর কনফিগারেশনের উপর নির্ভর করে। প্যাসিভ মোডে, এটি একটি বিশেষ নেটওয়ার্ক প্যাকেট দ্বারা সক্রিয় হওয়ার জন্য অপেক্ষা করে; সক্রিয় মোডে, এটি C2-তে নিজেই যোগাযোগ শুরু করে। ফরোয়ার্ড মোড পাঁচটি ট্রান্সপোর্ট প্রোটোকল (HTTP, WebSocket, UDP, TCP, DNS) সমর্থন করে, যেখানে বিপরীত মোড HTTP-তে যোগাযোগ সীমাবদ্ধ করে।

LinkPro কীভাবে টিকে থাকে

ম্যালওয়্যারের সামগ্রিক কার্য সম্পাদন এবং স্থায়িত্বের আচরণ একটি স্পষ্ট ক্রম অনুসরণ করে:

  • Hide eBPF মডিউলটি ইনস্টল করুন। এই মডিউলটিতে Tracepoint এবং Kretprobe eBPF প্রোগ্রাম রয়েছে যা LinkPro এর প্রক্রিয়া এবং নেটওয়ার্ক কার্যকলাপ গোপন করতে ব্যবহৃত হয়।
  • যদি Hide eBPF মডিউল ইনস্টল করা ব্যর্থ হয় — অথবা যদি এটি নিষ্ক্রিয় করা থাকে — তাহলে /etc/libld.so এ একটি শেয়ার্ড লাইব্রেরি ইনস্টল করুন এবং /etc/ld.so.preload এ একটি ফলব্যাক হাইডিং মেকানিজম হিসেবে সেই পাথটি যোগ করুন।
  • বিপরীত (প্যাসিভ) অপারেশনের জন্য, নক ইবিপিএফ মডিউলটি ইনস্টল করুন। নক-এ একটি এক্সডিপি প্রোগ্রাম এবং একটি টিসি প্রোগ্রাম রয়েছে, তাই সি২ চ্যানেলটি একটি নির্দিষ্ট 'ম্যাজিক প্যাকেট' পাওয়ার পরেই সক্রিয় হয়।
  • একটি systemd পরিষেবা তৈরি করে স্থায়িত্ব প্রতিষ্ঠা করুন।
  • C2 থেকে প্রাপ্ত কমান্ডগুলি কার্যকর করুন।
  • বন্ধ করার সময় অথবা সিগন্যাল করার সময় (SIGHUP, SIGINT, SIGTERM), eBPF মডিউলগুলি আনইনস্টল করুন এবং /etc/libld.so প্রিলোড পরিবর্তনটি সরিয়ে/পুনরুদ্ধার করুন যাতে সিস্টেমটি তার পূর্ববর্তী অবস্থায় ফিরে আসে।

ম্যাজিক প্যাকেট এবং নক অ্যাক্টিভেশন মেকানিজম

LinkPro-এর প্যাসিভ অ্যাক্টিভেশন একটি সুনির্দিষ্ট TCP প্যাকেটের উপর নির্ভর করে: যেকোনো TCP প্যাকেট যার উইন্ডোর আকার 54321 এর সমান তাকে 'ম্যাজিক প্যাকেট' হিসেবে বিবেচনা করা হয়। যখন নক সেই প্যাকেটটি সনাক্ত করে, তখন এটি সোর্স IP সংরক্ষণ করে এবং এক ঘন্টার মেয়াদ শেষ হওয়ার সাথে সাথে ট্যাগ করে। সেই সোর্স থেকে পরবর্তী TCP প্যাকেটগুলি পর্যবেক্ষণ করা হয় এবং, যখন উপযুক্ত হয়, নক হেডারগুলি পুনর্লিখন করে যাতে অপারেটরের ট্র্যাফিক LinkPro-এর লিসেনিং পোর্টে (2333) পুনঃনির্দেশিত হয়। আউটবাউন্ড প্যাকেটগুলি মূল পোর্টটিকে নেটওয়ার্কে ফিরিয়ে আনার জন্য সামঞ্জস্য করা হয় (সোর্স পোর্টটি 2233 এ পুনর্লিখিত)। উদ্দেশ্যটি সহজ কিন্তু কার্যকর: আক্রমণকারীকে ফ্রন্ট-এন্ড ফায়ারওয়াল দ্বারা অনুমোদিত যেকোনো পোর্টের মাধ্যমে LinkPro-তে পৌঁছানোর অনুমতি দেয়, একই সাথে হোস্টের অভ্যন্তরীণ নেটওয়ার্ক কার্যকলাপের সাথে বহিরাগত ফায়ারওয়াল লগগুলির সম্পর্ক স্থাপন করা কঠিন করে তোলে।

LinkPro কীভাবে নিজেকে গোপন করে

LinkPro একটি দ্বি-স্তরের গোপন কৌশল ব্যবহার করে:

কার্নেল/eBPF লুকানো : Hide eBPF মডিউল Tracepoint এবং Kretprobe প্রোগ্রাম ইনস্টল করে যা getdents (ফাইল/ডিরেক্টরি লুকানোর জন্য) এবং sys_bpf (নিজস্ব BPF প্রোগ্রাম লুকানোর জন্য) এর মতো সিস্টেম কলগুলিকে বাধা দেয়। এই পদ্ধতির জন্য CONFIG_BPF_KPROBE_OVERRIDE সক্ষম করে তৈরি একটি কার্নেল প্রয়োজন।

User-space LD_PRELOAD ফলব্যাক : যদি কার্নেল ক্ষমতা উপস্থিত না থাকে, তাহলে LinkPro একটি শেয়ার্ড লাইব্রেরি (libld.so) লিখে /etc/ld.so.preload-এ এর পাথ স্থাপন করে। যেহেতু /etc/ld.so.preload নির্দিষ্ট লাইব্রেরিটিকে প্রতিটি গতিশীলভাবে সংযুক্ত প্রক্রিয়ায় (যারা /lib/ld-linux.so এবং glibc ব্যবহার করে) লোড করে, তাই ইমপ্লান্ট করা libld.so libc ফাংশনগুলিকে (glibc-এর নিজস্ব আচরণের আগে) তাড়াতাড়ি সংযুক্ত করে এবং libc কল থেকে রিটার্ন পরিবর্তন করে এমন আর্টিফ্যাক্ট লুকাতে সাহায্য করে যা অন্যথায় এর উপস্থিতি প্রকাশ করবে।

রুটকিট ক্ষমতা এবং কমান্ড সেট

LinkPro ইন্টারেক্টিভ এবং স্বয়ংক্রিয় দূরবর্তী উভয় ধরণের ক্রিয়া সমর্থন করে। এর বাস্তবায়িত বৈশিষ্ট্যগুলির মধ্যে রয়েছে:

  • একটি /bin/bash সিউডো-টার্মিনাল শুরু করা এবং ইন্টারেক্টিভ শেল সেশন চালানো।
  • ইচ্ছামত শেল কমান্ড কার্যকর করা।
  • ফাইল এবং ডিরেক্টরিগুলির তালিকা তৈরি করা এবং ফাইল ক্রিয়াকলাপ সম্পাদন করা।
  • ডিস্কে ফাইল ডাউনলোড এবং লেখা।
  • পিভটিং এবং লিভিং-অফ-দ্য-ল্যান্ড প্রক্সি করার জন্য একটি SOCKS5 প্রক্সি টানেল স্থাপন করা।

নেটওয়ার্ক প্রোটোকল সাপোর্ট এবং C2 আচরণ

সক্রিয় (ফরোয়ার্ড) মোডে LinkPro নমনীয়: এটি HTTP, WebSocket, UDP, TCP, অথবা DNS ট্রান্সপোর্ট ব্যবহার করে যোগাযোগ করতে পারে। প্যাসিভ (রিভার্স) মোডে এর যোগাযোগ HTTP-তে সীমাবদ্ধ থাকে কিন্তু স্টিলথ থেকে উপকৃত হয় কারণ এটি কেবল নক ম্যাজিক প্যাকেটটি এক ঘন্টার অস্থায়ী কমান্ড উইন্ডো খোলার পরেই শুনতে পায়।

আচরণ পরিষ্কার এবং আনইনস্টল করুন

যদি প্রক্রিয়াটি সমাপ্তির সংকেত পায়, তাহলে LinkPro এর লক্ষ্য হল চিহ্নগুলি অপসারণ করা: এটি ইনস্টল করা eBPF মডিউলগুলি আনইনস্টল করে এবং /etc/libld মুছে ফেলে বা পুনরুদ্ধার করে, এটিকে তার পূর্ববর্তী অবস্থায় গোষ্ঠীভুক্ত করে যাতে সিস্টেমটি অপরিবর্তিত থাকে। এই ইচ্ছাকৃত পরিষ্কারের রুটিনটি নির্দেশ করে যে অপারেটর দীর্ঘমেয়াদী ফরেনসিক পদচিহ্নগুলি ফাঁকি দেওয়ার এবং কমানোর বিষয়ে উদ্বিগ্ন।

পরিচালনাগত প্রসঙ্গ এবং বৈশিষ্ট্য

প্রচারণায় উচ্চ-তীব্রতার জেনকিন্স এক্সপ্লাইট, ক্ষতিকারক কন্টেইনার ছবি, একাধিক ব্যাকডোর ভেরিয়েন্ট এবং কার্নেল-লেভেল স্টিলথ ব্যবহার করা হয়েছিল - এমন একটি সংমিশ্রণ যা একটি অনুপ্রাণিত, সক্ষম অপারেটরকে নির্দেশ করে। কোনও নির্দিষ্ট বৈশিষ্ট্য প্রকাশ করা হয়নি; তবে, প্রক্সি করার জন্য টুলসেট এবং আপসের আপাত ব্যবহার এবং স্থায়ী দূরবর্তী অ্যাক্সেস দৃঢ়ভাবে আর্থিকভাবে অনুপ্রাণিত কার্যকলাপের (অতিরিক্ত অনুপ্রবেশের জন্য পিভোটিং, প্রক্সি করা, অথবা অ্যাক্সেসের পুনঃবিক্রয়) ইঙ্গিত দেয়।

কার্নেল নির্ভরতা এবং ফলব্যাক আচরণ

যেহেতু LinkPro তার গোপন কার্নেল ইন্টারসেপশনের জন্য BPF kprobe ওভাররাইড বৈশিষ্ট্যের উপর নির্ভর করে, এটি কেবল তখনই কার্নেল-স্তরের লুকানোর কৌশল প্রয়োগ করে যখন হোস্ট কার্নেল CONFIG_BPF_KPROBE_OVERRIDE প্রকাশ করে। যেখানে সেই কার্নেল ক্ষমতা অনুপস্থিত, LinkPro ইচ্ছাকৃতভাবে LD_PRELOAD শেয়ার্ড-লাইব্রেরি পদ্ধতিতে ফিরে আসে যাতে ব্যবহারকারীর স্থানে নিজেকে লুকিয়ে রাখা যায়, যা বিস্তৃত পরিবেশে গোপন রাখা নিশ্চিত করে।

সমাপনী নোট

LinkPro দেখায় যে আধুনিক অনুপ্রবেশ কীভাবে কন্টেইনার কম্প্রোমাইজ, স্টেজড লোডার, কার্নেল ইন্সট্রুমেন্টেশন (eBPF) এবং চতুর নেটওয়ার্ক কৌশল (ম্যাজিক-প্যাকেট অ্যাক্টিভেশন এবং পোর্ট-রিরাইটিং) একত্রিত করে স্টিলথ এবং নমনীয়তা বজায় রাখতে পারে। সনাক্তকরণ এবং প্রতিকারের জন্য অননুমোদিত eBPF প্রোগ্রাম, /etc/ld.so.preload-এ অপ্রত্যাশিত এন্ট্রি, অস্বাভাবিক সিস্টেমড পরিষেবা এবং নির্দেশিত অবকাঠামোর সাথে নেটওয়ার্ক সংযোগের জন্য সতর্কতার সাথে পরিদর্শন প্রয়োজন (ফরেনসিক সূচকগুলির মধ্যে রয়েছে IP 56.155.98[.]37, পোর্ট 29872, 2333, 2233, এবং সরানো ডকার চিত্রের নাম kvlnt/vv)।

চলমান

সর্বাধিক দেখা

লোড হচ্ছে...