Process Hollowing: বৈধ প্রোগ্রামের মেমোরি স্পেস দখল করে ক্ষতিকর ম্যালওয়্যার চালানোর পদ্ধতি!
Process Hollowing কৌশলে বৈধ প্রসেসকে শূন্য করে ম্যালিশিয়াস কোড রান করানোর প্রক্রিয়া ও ডিটেকশনের বিস্তারিত আলোচনা।
ম্যালওয়্যার ডেভেলপারদের মধ্যে Process Hollowing দীর্ঘদিন ধরে অন্যতম জনপ্রিয় ইভেশন কৌশল হিসেবে পরিচিত। এর পেছনের ধারণাটি বেশ চাতুর্যপূর্ণ — একটি বৈধ উইন্ডোজ প্রসেসকে সাসপেন্ডেড অবস্থায় তৈরি করা হয়, তারপর তার মেমোরিতে থাকা মূল ইমেজ "ফাঁপা" করে সেখানে ক্ষতিকর কোড প্রতিস্থাপন করা হয়। ফলে Task Manager-এ একটি পরিচিত প্রসেস (যেমন svchost.exe বা explorer.exe) দেখা গেলেও বাস্তবে চলে ম্যালওয়্যার পেলোড।
এই কৌশলটি ২০১১ সালের কাছাকাছি বিভিন্ন ব্যাংকিং ট্রোজান এবং RAT-এ ব্যাপকভাবে ব্যবহৃত হতে শুরু করে, এবং আজও বিভিন্ন APT অপারেশন এবং কমোডিটি ম্যালওয়্যার যেমন TrickBot, Dridex, এবং FormBook-এ Process Hollowing দেখা যায়। এই প্রবন্ধে আমরা গভীরভাবে আলোচনা করব এর প্রযুক্তিগত কাঠামো, ডিটেকশন কৌশল এবং প্রতিরোধমূলক ব্যবস্থা।
মূল ধারণা
Process Hollowing-এর মূল প্রবাহকে কয়েকটি পর্যায়ে ভাগ করা যায়। প্রথমে আক্রমণকারী CreateProcess API ব্যবহার করে একটি বৈধ প্রসেস তৈরি করে, কিন্তু CREATE_SUSPENDED ফ্ল্যাগসহ। এর ফলে প্রসেসটি তৈরি হলেও তার প্রধান থ্রেড এক্সিকিউট শুরু করে না। এই অবস্থায় প্রসেসের মেমোরিতে মূল এক্সিকিউটেবলের ইমেজ লোড থাকে।
দ্বিতীয় ধাপে, NtUnmapViewOfSection বা ZwUnmapViewOfSection API ব্যবহার করে প্রসেসের বেস অ্যাড্রেস থেকে মূল ইমেজটি আনম্যাপ করা হয়। এর ফলে প্রসেসের মেমোরি স্পেস কার্যত খালি বা "ফাঁপা" হয়ে যায়।
তৃতীয় ধাপে, আক্রমণকারী VirtualAllocEx দিয়ে নতুন মেমোরি অ্যালোকেট করে এবং WriteProcessMemory ব্যবহার করে সেখানে ক্ষতিকর পেলোড লিখে। পেলোডটি সাধারণত একটি সম্পূর্ণ PE (Portable Executable) ফাইল, যার হেডার, সেকশন এবং ইম্পোর্ট টেবিল ম্যানুয়ালি প্রক্রিয়া করতে হয়।
চতুর্থ ধাপে, SetThreadContext ব্যবহার করে প্রসেসের প্রধান থ্রেডের EIP/RIP রেজিস্টার নতুন পেলোডের এন্ট্রি পয়েন্টে পরিবর্তন করা হয়। অবশেষে ResumeThread কল করলে প্রসেস চলতে শুরু করে, কিন্তু এবার সে এক্সিকিউট করে ম্যালিশিয়াস কোড।
কেন এই কৌশল কার্যকর
Process Hollowing-এর কার্যকারিতা কয়েকটি কারণে ব্যাপক। প্রথমত, ডিস্কে কোনো ক্ষতিকর ফাইল থাকে না — শুধু একটি বৈধ এক্সিকিউটেবল লঞ্চ করা হয়। দ্বিতীয়ত, প্রসেস লিস্টে একটি পরিচিত নাম দেখায়, যা ম্যানুয়াল ইনভেস্টিগেশনকে কঠিন করে। তৃতীয়ত, যদি প্রসেসটি একটি সিস্টেম-সাইনড বাইনারি হয়, তবে অনেক হুরিস্টিক ডিফেন্স এটিকে ট্রাস্ট করে।
বাস্তব উদাহরণ
একটি সাধারণ Process Hollowing ইমপ্লিমেন্টেশনের সিউডোকোড:
STARTUPINFO si = { sizeof(si) };
PROCESS_INFORMATION pi;
CreateProcessA("C:\\Windows\\System32\\svchost.exe",
NULL, NULL, NULL, FALSE,
CREATE_SUSPENDED, NULL, NULL, &si, &pi);
CONTEXT ctx = { CONTEXT_FULL };
GetThreadContext(pi.hThread, &ctx);
PVOID baseAddress;
ReadProcessMemory(pi.hProcess,
(PVOID)(ctx.Ebx + 8), &baseAddress, sizeof(PVOID), NULL);
NtUnmapViewOfSection(pi.hProcess, baseAddress);
PVOID newImage = VirtualAllocEx(pi.hProcess, baseAddress,
payload_size, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
WriteProcessMemory(pi.hProcess, newImage, payload, payload_size, NULL);
ctx.Eax = (DWORD)newImage + payload_entry_offset;
SetThreadContext(pi.hThread, &ctx);
ResumeThread(pi.hThread);
বাস্তবে আক্রমণকারীরা এই বেসিক ফ্লোতে অনেক রিফাইনমেন্ট যোগ করে — যেমন রিলোকেশন প্রসেসিং, ইম্পোর্ট অ্যাড্রেস টেবিল ফিক্স-আপ, এবং পেজ পারমিশন সঠিকভাবে সেট করা।
বাস্তব দুনিয়ার ম্যালওয়্যার
TrickBot ব্যাংকিং ম্যালওয়্যার তার মডিউলগুলো ইনজেক্ট করতে Process Hollowing ব্যাপকভাবে ব্যবহার করে। সাধারণত এটি svchost.exe বা wermgr.exe-কে টার্গেট করে। Dridex তার কোর পেলোড লুকাতে একই কৌশল প্রয়োগ করে। FormBook ইনফোস্টিলার প্রায়ই explorer.exe-তে নিজেকে হোলো করে রিজিল্যান্স বজায় রাখে।
APT সাইডে, FIN7 এবং Carbanak গ্রুপ তাদের ব্যাংকিং অ্যাটাকে Process Hollowing-এর কাস্টমাইজড ভ্যারিয়েন্ট ব্যবহার করেছে। কোরিয়ান APT গ্রুপ Lazarus-ও তাদের অপারেশনে এই কৌশল প্রয়োগের প্রমাণ পাওয়া গেছে।
ডিটেকশন কৌশল
Process Hollowing ডিটেক্ট করার জন্য সিকিউরিটি প্রফেশনালরা বেশ কিছু সিগন্যাল ব্যবহার করেন। প্রথমত, প্যারেন্ট-চাইল্ড প্রসেস রিলেশনশিপ পরীক্ষা করা গুরুত্বপূর্ণ। যদি winword.exe থেকে svchost.exe লঞ্চ হয়, তা অস্বাভাবিক এবং সন্দেহজনক।
দ্বিতীয়ত, মেমোরি অ্যানোমালি ডিটেকশন কার্যকর। বৈধ প্রসেসের মেমোরিতে সাধারণত PE ইমেজের সাথে মিল থাকে। যদি দেখা যায় বেস অ্যাড্রেসে আনম্যাপড বা ম্যানুয়ালি অ্যালোকেটেড মেমোরিতে PE হেডার, এটি একটি শক্তিশালী ইন্ডিকেটর।
তৃতীয়ত, Sysmon Event ID 8 (CreateRemoteThread) এবং Event ID 10 (ProcessAccess) মনিটরিং সাহায্য করে। PROCESS_VM_WRITE এবং PROCESS_VM_OPERATION অ্যাক্সেস রাইটসহ ProcessAccess ইভেন্ট সন্দেহজনক।
চতুর্থত, মেমোরি ফরেনসিকে Volatility-এর hollowfind প্লাগইন ব্যবহার করে হোলোড প্রসেস শনাক্ত করা যায়। এটি ভিআইডি (Virtual Address Descriptor) ট্রির সাথে PE হেডার তুলনা করে অসামঞ্জস্য খুঁজে বের করে।
# Sample detection logic
def detect_hollowing(process):
disk_image = read_pe_from_disk(process.image_path)
memory_image = read_pe_from_memory(process.base_address)
if disk_image.size != memory_image.size:
return True
if hash(disk_image.text_section) != hash(memory_image.text_section):
return True
return False
প্রতিরোধ ও প্রতিকার
Process Hollowing-এর বিরুদ্ধে কার্যকর প্রতিরক্ষা গড়ে তুলতে বহুস্তরীয় কৌশল প্রয়োজন। প্রথমত, আধুনিক EDR সলিউশন মোতায়েন করা যা মেমোরি স্ক্যানিং এবং বিহেভিয়ারাল অ্যানালিটিক্স সাপোর্ট করে। CrowdStrike Falcon, SentinelOne, এবং Microsoft Defender for Endpoint-এর মতো প্ল্যাটফর্ম প্রসেস হোলোয়িং বিহেভিয়ার ভালোভাবে শনাক্ত করতে পারে।
দ্বিতীয়ত, Windows Defender Exploit Guard-এর Attack Surface Reduction (ASR) রুল সক্রিয় রাখা জরুরি। বিশেষত "Block process creations originating from PSExec and WMI commands" এবং "Block executable content from email client and webmail" রুলগুলো ইনিশিয়াল এক্সিকিউশন প্রতিরোধে সাহায্য করে।
তৃতীয়ত, Code Integrity Guard (CIG) এবং Arbitrary Code Guard (ACG) সক্রিয় করলে অনেক প্রসেস হোলোয়িং প্রচেষ্টা ব্যর্থ হয়। এই মিটিগেশনগুলো অননুমোদিত মেমোরি অ্যালোকেশন এবং পারমিশন পরিবর্তন ব্লক করে।
চতুর্থত, প্রিভিলেজ ম্যানেজমেন্ট গুরুত্বপূর্ণ। সাধারণ ইউজারদের অ্যাডমিনিস্ট্রেটিভ প্রিভিলেজ না থাকলে অনেক হোলোয়িং অ্যাটাক ব্যর্থ হয়। Local Administrator Password Solution (LAPS) এবং Just Enough Administration (JEA) ব্যবহার করা উচিত।
পঞ্চমত, থ্রেট হান্টিং টিমকে নিয়মিত Sigma রুল আপডেট করা এবং MITRE ATT&CK T1055.012 (Process Hollowing)-এর জন্য নির্দিষ্ট হান্ট পরিচালনা করা উচিত। লগ অ্যাগ্রিগেশন প্ল্যাটফর্মে অস্বাভাবিক প্যারেন্ট-চাইল্ড রিলেশনশিপ, সাসপেন্ডেড প্রসেস ক্রিয়েশন, এবং রিমোট মেমোরি ম্যানিপুলেশনের জন্য অ্যালার্ট সেট করতে হবে।
Process Hollowing আধুনিক ম্যালওয়্যারের অস্ত্রাগারে একটি ক্লাসিক কিন্তু এখনো কার্যকর কৌশল। যদিও এটি প্রায় এক যুগ পুরোনো, তবু সঠিক প্রতিরক্ষা ছাড়া সংগঠনগুলো এর শিকার হতেই থাকবে। সিকিউরিটি প্রফেশনালদের অবশ্যই উইন্ডোজ প্রসেস ইন্টারনালস গভীরভাবে বোঝা, EDR টুলিং সঠিকভাবে কনফিগার করা, এবং নিয়মিত থ্রেট হান্টিং পরিচালনার মাধ্যমে এই হুমকির বিরুদ্ধে প্রস্তুত থাকতে হবে। প্রতিরক্ষা সবসময় বিবর্তিত হচ্ছে, এবং প্রতিরক্ষাকারীদের সেই বিবর্তনের সাথে তাল মিলিয়ে চলতে হবে।
আপনার জ্ঞান যাচাই করতে প্রস্তুত? আজই HackCert-এ Process Hollowing MCQ Quiz-টি দিন!
Related articles
Process Doppelganging: Advanced Malware Memory Tricks to Evade Antivirus
10 min
Process Ghosting: Executing Malicious Code via Memory File Manipulation
10 min
Access Control: Evaluating the Security of Your Corporate System Privileges
8 min
Active Defense: Proactive Strategies to Thwart Advanced Cyber Attacks
9 min

