Process Injection: উইন্ডোজের সাধারণ প্রসেসের ভেতর সাইবার অপরাধীদের ক্ষতিকর কোড ইনজেক্ট!
Process Injection-এর বিভিন্ন কৌশল, রিয়েল-ওয়ার্ল্ড ম্যালওয়্যার এবং আধুনিক প্রতিরক্ষা ব্যবস্থার গভীর বিশ্লেষণ।
Process Injection আধুনিক ম্যালওয়্যারের সবচেয়ে শক্তিশালী এবং বহুমুখী কৌশলগুলোর একটি। এই পদ্ধতিতে আক্রমণকারী একটি বৈধ, চলমান প্রসেসের মেমোরি স্পেসে নিজের ক্ষতিকর কোড ইনজেক্ট করে, যাতে সেই কোড বৈধ প্রসেসের পরিচয় ব্যবহার করে এক্সিকিউট হতে পারে। ফলে অ্যান্টিভাইরাস, ফায়ারওয়াল, এবং বিহেভিয়ারাল মনিটরিং সিস্টেম প্রায়ই বিভ্রান্ত হয়।
MITRE ATT&CK ফ্রেমওয়ার্কে T1055-এর অধীনে ১২টিরও বেশি সাব-টেকনিক তালিকাভুক্ত আছে, যা প্রমাণ করে এই কৌশলের ব্যাপকতা এবং বৈচিত্র্য। এই প্রবন্ধে আমরা বিভিন্ন প্রসেস ইনজেকশন কৌশল, তাদের ভেতরের কারিগরি বিস্তারিত, রিয়েল-ওয়ার্ল্ড ব্যবহার এবং কার্যকর প্রতিরক্ষা নিয়ে গভীর আলোচনা করব।
মূল ধারণা
Process Injection-এর মৌলিক ভিত্তি হলো একটি প্রসেসের অ্যাড্রেস স্পেসে অন্য একটি প্রসেস থেকে কোড লিখে সেটি এক্সিকিউট করা। উইন্ডোজে এটি সম্ভব হয় কারণ অপারেটিং সিস্টেম পর্যাপ্ত প্রিভিলেজ থাকা প্রসেসকে অন্য প্রসেসের মেমোরি পড়া ও লেখার অনুমতি দেয়, প্রধানত ডিবাগিং, প্রোফাইলিং, এবং বৈধ এক্সটেনশন মেকানিজমের জন্য।
প্রধান ইনজেকশন কৌশল
Classic DLL Injection: এটি সবচেয়ে সরল পদ্ধতি। আক্রমণকারী OpenProcess দিয়ে টার্গেট প্রসেস ওপেন করে, VirtualAllocEx দিয়ে মেমোরি অ্যালোকেট করে, WriteProcessMemory দিয়ে DLL পাথ লিখে, এবং CreateRemoteThread দিয়ে LoadLibrary-কে এন্ট্রি পয়েন্ট হিসেবে কল করে।
Reflective DLL Injection: এই অ্যাডভান্সড পদ্ধতিতে DLL-টি ডিস্কে থাকে না। পুরো DLL মেমোরিতে লোড হয় এবং নিজেকে রিফ্লেক্সিভভাবে রিজলভ করে। এটি Stephen Fewer দ্বারা ২০০৮ সালে প্রস্তাবিত হয় এবং Cobalt Strike, Meterpreter-এ ব্যাপকভাবে ব্যবহৃত হয়।
Thread Hijacking: এই কৌশলে একটি চলমান থ্রেডকে সাসপেন্ড করে তার কনটেক্সট পরিবর্তন করা হয়, যাতে পরবর্তী এক্সিকিউশনে সেটি ম্যালিশিয়াস কোডে জাম্প করে। নতুন থ্রেড তৈরির প্রয়োজন না থাকায় এটি অনেক EDR সলিউশনকে এড়িয়ে যেতে পারে।
APC Injection: Asynchronous Procedure Call-এর মাধ্যমে একটি অলস (alertable) থ্রেডে কোড এক্সিকিউট করানো হয়। QueueUserAPC API ব্যবহার করে এই কৌশল প্রয়োগ করা হয়।
Atom Bombing: Tal Liberman ২০১৬ সালে এই কৌশল প্রকাশ করেন, যেখানে গ্লোবাল অ্যাটম টেবিল ব্যবহার করে অন্য প্রসেসে স্ট্রিং প্ল্যান্ট করা হয় এবং পরে সেটি এক্সিকিউট করা হয়। এই কৌশলটি ক্লাসিক APIs এড়িয়ে যায়।
Process Doppelgänging: NTFS Transactions ব্যবহার করে এমন ফাইল থেকে প্রসেস তৈরি করা হয়, যা পরে রোলব্যাক হয়ে যায়। ফলে ডিস্কে কোনো প্রমাণ থাকে না।
বাস্তব উদাহরণ
একটি Classic DLL Injection-এর বেসিক ইমপ্লিমেন্টেশন:
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, targetPid);
LPVOID pRemoteMem = VirtualAllocEx(hProcess, NULL,
strlen(dllPath) + 1, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
WriteProcessMemory(hProcess, pRemoteMem, dllPath,
strlen(dllPath) + 1, NULL);
HMODULE hKernel32 = GetModuleHandle("kernel32.dll");
LPVOID pLoadLibrary = GetProcAddress(hKernel32, "LoadLibraryA");
HANDLE hThread = CreateRemoteThread(hProcess, NULL, 0,
(LPTHREAD_START_ROUTINE)pLoadLibrary, pRemoteMem, 0, NULL);
WaitForSingleObject(hThread, INFINITE);
রিয়েল-ওয়ার্ল্ড ম্যালওয়্যার কেস স্টাডি
Emotet: এই দুর্ধর্ষ ব্যাংকিং ট্রোজান explorer.exe-তে নিজেকে ইনজেক্ট করে পার্সিস্টেন্স বজায় রাখত। এর ইনজেকশন রুটিন বিভিন্ন EDR এড়িয়ে যেতে নিয়মিত আপডেট হতো।
Cobalt Strike: কমার্শিয়াল রেড টিম টুল হলেও বিভিন্ন APT এবং র্যানসমওয়্যার গ্রুপ এর Beacon পেলোডকে রিফ্লেক্সিভ DLL ইনজেকশনের মাধ্যমে স্থাপন করে।
Stuxnet: ২০১০ সালের এই বিখ্যাত ICS ম্যালওয়্যার ইনজেকশন এবং DLL হাইজ্যাকিং উভয়ই ব্যবহার করে SCADA সিস্টেমে নিজেকে ছড়িয়ে দিয়েছিল।
SunBurst (SolarWinds): এই সাপ্লাই চেইন আক্রমণে আক্রমণকারীরা বৈধ SolarWinds Orion প্রক্রিয়ায় ক্ষতিকর কোড সংযুক্ত করেছিল, যা প্রসেস ইনজেকশনের একটি বিশেষ রূপ।
উদাহরণ — Cobalt Strike Beacon ইনজেকশন
void inject_beacon(DWORD pid, BYTE* shellcode, SIZE_T size) {
HANDLE hProc = OpenProcess(PROCESS_VM_OPERATION |
PROCESS_VM_WRITE |
PROCESS_CREATE_THREAD,
FALSE, pid);
LPVOID pRemote = VirtualAllocEx(hProc, NULL, size,
MEM_COMMIT, PAGE_EXECUTE_READWRITE);
WriteProcessMemory(hProc, pRemote, shellcode, size, NULL);
CreateRemoteThread(hProc, NULL, 0,
(LPTHREAD_START_ROUTINE)pRemote, NULL, 0, NULL);
}
PAGE_EXECUTE_READWRITE পারমিশনের ব্যবহার বর্তমান EDR-এর জন্য একটি বড় লাল পতাকা। আধুনিক আক্রমণকারীরা তাই প্রথমে RW পারমিশনে অ্যালোকেট করে, কোড লেখার পর VirtualProtectEx দিয়ে RX-এ পরিবর্তন করে।
ডিটেকশন কৌশল
Process Injection ডিটেকশন বহুমাত্রিক একটি চ্যালেঞ্জ। সিকিউরিটি প্রফেশনালরা বেশ কিছু সিগন্যাল ব্যবহার করেন।
প্রথমত, API কল চেইন মনিটরিং অপরিহার্য। OpenProcess → VirtualAllocEx → WriteProcessMemory → CreateRemoteThread এই সিকোয়েন্স অত্যন্ত সন্দেহজনক। ETW (Event Tracing for Windows) এবং কার্নেল কলব্যাকের মাধ্যমে এগুলো ট্র্যাক করা যায়।
দ্বিতীয়ত, মেমোরি পারমিশন অ্যানোমালি। RWX পেজ একটি বিরল কনফিগারেশন বৈধ প্রসেসে। নিয়মিত মেমোরি স্ক্যানিং এই ধরনের পেজ চিহ্নিত করতে পারে।
তৃতীয়ত, থ্রেড স্টার্ট অ্যাড্রেস বিশ্লেষণ। যদি একটি থ্রেড একটি প্রাইভেট, ফ্লোটিং মেমোরি অঞ্চল থেকে শুরু হয় (যেমন কোনো লোডেড মডিউলের সাথে যুক্ত নয়), এটি একটি শক্তিশালী ইনজেকশন ইন্ডিকেটর।
# Sigma rule example
title: Suspicious Process Injection via CreateRemoteThread
detection:
selection:
EventID: 8
SourceImage|endswith:
- '\powershell.exe'
- '\cmd.exe'
TargetImage|endswith:
- '\explorer.exe'
- '\svchost.exe'
condition: selection
চতুর্থত, মেমোরি ফরেনসিকে Volatility-এর malfind, hollowfind, এবং ldrmodules প্লাগইন ব্যবহার করে ইনজেক্টেড কোড শনাক্ত করা যায়।
প্রতিরোধ ও প্রতিকার
কার্যকর প্রতিরক্ষার জন্য বহুস্তরীয় কৌশল প্রয়োজন। প্রথমত, EDR টুলিং-এ বিনিয়োগ অপরিহার্য। আধুনিক EDR কেবল সিগনেচার ম্যাচিং নয়, বরং বিহেভিয়ারাল অ্যানালিটিক্স এবং মেমোরি স্ক্যানিংও সাপোর্ট করে।
দ্বিতীয়ত, Windows Defender Exploit Guard এবং Attack Surface Reduction (ASR) রুল সক্রিয় রাখা গুরুত্বপূর্ণ। বিশেষত "Block credential stealing from the Windows local security authority subsystem" এবং "Block process creations from Office applications" রুলগুলো অনেক ইনজেকশন প্রচেষ্টা প্রতিরোধ করে।
তৃতীয়ত, Protected Process Light (PPL) মেকানিজম ব্যবহার করে গুরুত্বপূর্ণ প্রসেসকে সুরক্ষিত করা যায়। LSASS, Antimalware সার্ভিস, এবং অন্যান্য সেনসিটিভ প্রসেসকে PPL হিসেবে চালালে বহিরাগত প্রসেস তাদের মেমোরি অ্যাক্সেস করতে পারে না।
চতুর্থত, Credential Guard এবং Device Guard সক্রিয় রাখলে অনেক ক্রেডেনশিয়াল হার্ভেস্টিং অ্যাটাক যা প্রসেস ইনজেকশনের উপর নির্ভর করে, ব্যর্থ হয়।
পঞ্চমত, প্রিভিলেজ ম্যানেজমেন্ট। SeDebugPrivilege সীমাবদ্ধ রাখা এবং Just-In-Time Access প্রয়োগ করলে আক্রমণকারীদের কাজ অনেক কঠিন হয়।
ষষ্ঠত, থ্রেট হান্টিং। নিয়মিত ETW লগ অ্যানালাইসিস, Sysmon ইভেন্ট কোরিলেশন, এবং MITRE ATT&CK T1055 সাব-টেকনিকের জন্য নির্দিষ্ট হান্ট পরিচালনা করা উচিত। থ্রেট ইন্টেলিজেন্স ফিডের সাথে ইন্ডিকেটর ম্যাচিং স্বয়ংক্রিয় করা যেতে পারে।
সপ্তমত, নেটওয়ার্ক সেগমেন্টেশন এবং প্রিন্সিপাল অফ লিস্ট প্রিভিলেজ এক্সপ্লয়টেশনের পরবর্তী পর্যায়গুলোকে সীমিত করে। যদি একটি ওয়ার্কস্টেশন কম্প্রোমাইজ হয়, তবু আক্রমণকারী যেন লেটারাল মুভমেন্ট করতে না পারে।
Process Injection আধুনিক সাইবার আক্রমণের একটি ভিত্তিপ্রস্তর। এর বহুরূপিতা — Classic DLL Injection থেকে Atom Bombing, Doppelgänging থেকে Reflective Loading — প্রমাণ করে যে আক্রমণকারীরা নিরন্তর উদ্ভাবন করছে। প্রতিরক্ষাকারীদের একইভাবে গতিশীল হতে হবে। শুধু একটি EDR ইনস্টল করা যথেষ্ট নয়; প্রয়োজন গভীর উইন্ডোজ ইন্টারনালস জ্ঞান, প্রোঅ্যাকটিভ থ্রেট হান্টিং, এবং কঠোর সিকিউরিটি বেসলাইন। সাইবার নিরাপত্তা একটি অবিরাম দৌড়, এবং Process Injection সেই দৌড়ের সবচেয়ে চ্যালেঞ্জিং ট্র্যাকগুলোর একটি।
আপনার জ্ঞান যাচাই করতে প্রস্তুত? আজই HackCert-এ Process Injection MCQ Quiz-টি দিন!
Related articles
Malware Basics: Understanding Different Types of Malware and How They Operate
11 min
5G Security: Unveiling Cyber Attack Risks in Modern Networks and Mitigation Strategies
10 min
Active Directory: Why the Heart of the Corporate Network is the Ultimate Hacker Target
11 min
AD Exploitation: Advanced Tactics Hackers Use to Conquer Active Directory
10 min

