HackCert
Intermediate 10 min read May 25, 2026

Deobfuscation: ম্যালওয়্যারের অস্পষ্ট কোড বিশ্লেষণ করে আসল উদ্দেশ্য শনাক্তকরণ!

Obfuscated malware code-কে decode করে তার আসল কার্যকলাপ বুঝতে Deobfuscation কৌশলের গভীর বিশ্লেষণ এবং পেশাদার technique।

Imran Hossain Chowdhury
Malware Reverse Engineer
share
Deobfuscation: ম্যালওয়্যারের অস্পষ্ট কোড বিশ্লেষণ করে আসল উদ্দেশ্য শনাক্তকরণ!
Overview

একজন ম্যালওয়্যার বিশ্লেষকের ডেস্কে এসে পৌঁছেছে একটি সন্দেহজনক ফাইল। প্রথমে সাধারণ inspection-এ কোনো অর্থপূর্ণ কোড দেখা যাচ্ছে না— শুধু hex value-এর স্রোত, base64-এর দীর্ঘ string, এবং অসংখ্য অর্থহীন variable name। এই বিশৃঙ্খলার পেছনে লুকিয়ে আছে আক্রমণকারীর প্রকৃত উদ্দেশ্য— হয়তো credential চুরি, হয়তো ransomware, হয়তো লাইভ command-and-control communication। এই লুকানো উদ্দেশ্যকে আলোতে আনার বিজ্ঞান এবং কৌশলের নামই Deobfuscation।

আধুনিক ম্যালওয়্যার লেখকরা reverse engineering ঠেকানোর জন্য বিভিন্ন স্তরের obfuscation প্রয়োগ করেন। তারা চান তাদের কোড যেন automated antivirus scanner বুঝতে না পারে, এবং human analyst-দের ঘণ্টার পর ঘণ্টা সময় খরচ করতে হয়। এই নিবন্ধে আমরা আধুনিক obfuscation কৌশল, সেগুলোর বিরুদ্ধে deobfuscation পদ্ধতি, পেশাদার tool এবং practical workflow নিয়ে বিশদভাবে আলোচনা করব।

মূল ধারণা

Obfuscation হলো এমন প্রক্রিয়া যেখানে কোডের কার্যকারিতা অপরিবর্তিত রেখে তার পঠনযোগ্যতা এবং বিশ্লেষণযোগ্যতা কমিয়ে দেওয়া হয়। এর বৈধ ব্যবহার আছে— intellectual property protection, কোড optimization, এবং কখনো কখনো performance enhancement। কিন্তু ম্যালওয়্যার লেখকরা এটিকে ব্যবহার করেন নিরাপত্তা বিশ্লেষক এবং automated detection tool-কে বিভ্রান্ত করতে।

Deobfuscation হলো এই প্রক্রিয়ার বিপরীত— obfuscated code থেকে আসল, পঠনযোগ্য, এবং বোধগম্য রূপে ফিরিয়ে আনা। এটি reverse engineering-এর একটি গুরুত্বপূর্ণ অংশ, যা malware analysis, threat intelligence, এবং forensic investigation-এর ভিত্তি।

Obfuscation-এর বিভিন্ন স্তর রয়েছে। প্রথম স্তরে আছে Lexical Obfuscation— variable, function এবং class-এর নাম পরিবর্তন করা। getUserPassword() হয়ে যায় a1b2c3(), decrypt_key হয়ে যায় xyz। এই ধরনের obfuscation সবচেয়ে সাধারণ এবং সহজে চেনা যায়।

দ্বিতীয় স্তরে আছে Data Obfuscation— string, constant এবং অন্যান্য ডেটা encode করা। সংবেদনশীল string যেমন URL, command, এবং API name— এগুলো base64, XOR, RC4, বা custom encoding-এর মাধ্যমে লুকানো হয়। শুধুমাত্র runtime-এ এগুলো decode হয়।

তৃতীয় স্তরে আছে Control Flow Obfuscation— প্রোগ্রামের নিয়ন্ত্রণ প্রবাহকে অপ্রয়োজনীয় জটিলতা যোগ করে বিভ্রান্তিকর করা। Opaque predicate, jump table, dispatcher-based control flow flattening— এসব কৌশলে ব্যবহৃত হয়। সরল if-else চেইন হয়ে যায় বিশাল switch statement যেখানে প্রতিটি case একটি state-এ লাফ দেয়।

চতুর্থ স্তরে আছে Code Virtualization— সবচেয়ে পরিশীলিত কৌশল। মূল কোডকে একটি custom virtual machine-এর instruction-এ অনুবাদ করা হয়, এবং একটি interpreter সেই instruction চালায়। VMProtect এবং Themida-এর মতো commercial protector এই কৌশল ব্যবহার করে।

সাধারণ Obfuscation কৌশল

Script-based malware যেমন PowerShell, JavaScript, এবং VBScript-এ আক্রমণকারীরা প্রায়শই string concatenation এবং substitution ব্যবহার করেন। ('cmd' + '.exe') লেখা হয় cmd.exe লেখার পরিবর্তে। আরও এক ধাপ এগিয়ে character code ব্যবহার— [char]99 + [char]109 + [char]100— "cmd" লেখার পরিবর্তে।

Base64 encoding ম্যালওয়্যারে অত্যন্ত সাধারণ। একটি PowerShell command-এর entire payload base64-এ encoded থেকে runtime-এ decode হয়ে execute হয়। powershell.exe -EncodedCommand ব্যবহার করা একটি জনপ্রিয় কৌশল।

JavaScript-এ packing— যেখানে কোড একটি eval() statement-এর মধ্যে dynamically generated string হিসেবে থাকে— অত্যন্ত প্রচলিত। JJEncode, AAEncode, JSF*ck— এসব হলো বিখ্যাত JavaScript obfuscation library যা কোডকে শুধু symbol এবং সীমিত character দিয়ে রূপান্তরিত করে।

PE binary-তে packer ব্যবহার আরেকটি জনপ্রিয় কৌশল। UPX হলো সবচেয়ে সাধারণ packer, যদিও এটি easily detectable। MEW, FSG, এবং অন্যান্য custom packer-ও ব্যবহৃত হয়। Packer-এর কাজ হলো executable-এর actual code এবং data-কে compress এবং encrypt করা, এবং runtime-এ একটি ছোট stub দ্বারা decompress এবং unencrypt করা।

Macro malware— প্রাথমিকভাবে Microsoft Office document-এ থাকে— প্রায়ই multi-stage obfuscation ব্যবহার করে। প্রথম stage-এ একটি ছোট VBA macro থাকে যা থেকে আরেকটি obfuscated payload extract করা হয়, যা থেকে আরেকটি stage-এ আসে। প্রতিটি stage-এ ভিন্ন encoding বা encryption প্রয়োগ করা থাকে।

API hashing হলো advanced কৌশল— ম্যালওয়্যার কোডে Windows API function-এর name সরাসরি থাকে না; বরং তাদের hash থাকে। Runtime-এ ম্যালওয়্যার ntdll.dll-এর export table স্ক্যান করে, প্রতিটি function-এর নামের hash গণনা করে, এবং expected hash-এর সাথে মিলিয়ে দেখে।

Deobfuscation কৌশল ও পদ্ধতি

Deobfuscation-এর জন্য দুটি প্রধান approach রয়েছে— Static Analysis এবং Dynamic Analysis।

Static Analysis-এ কোড execute না করেই বিশ্লেষণ করা হয়। Disassembler যেমন IDA Pro, Ghidra, এবং Binary Ninja ব্যবহার করে assembly-level কোড পড়া হয়। Decompiler— Hex-Rays, Ghidra-এর built-in decompiler— assembly থেকে C-like code তৈরি করে যা পড়তে সহজ। এই decompiled code-এ obfuscation pattern চিনে manual reverse engineering শুরু হয়।

String extraction tool যেমন strings, FLOSS (FLARE Obfuscated String Solver), এবং StringSifter— এগুলো binary থেকে interesting string বের করে। FLOSS বিশেষভাবে interesting কারণ এটি stack-based string construction এবং runtime decryption ধরতে পারে।

Dynamic Analysis-এ ম্যালওয়্যারকে নিয়ন্ত্রিত পরিবেশে চালানো হয় এবং তার runtime behavior পর্যবেক্ষণ করা হয়। Sandbox যেমন Cuckoo Sandbox, Any.Run, এবং Hybrid Analysis— এগুলো automated behavior analysis সরবরাহ করে। API call, file system change, registry modification, এবং network communication— সব record করা হয়।

Debugger যেমন x64dbg, OllyDbg, এবং WinDbg ব্যবহার করে ম্যালওয়্যারকে step-by-step execute করে দেখা যায়। Breakpoint বসিয়ে নির্দিষ্ট পর্যায়ে execution থামিয়ে memory inspect করা যায়। Obfuscated string runtime-এ decode হলে memory-তে clear-text version পাওয়া যায়।

Memory dump একটি গুরুত্বপূর্ণ কৌশল। Packed malware unpack হওয়ার পর memory-তে original code থাকে। Process Hacker, Volatility, বা Scylla-এর মতো tool ব্যবহার করে এই unpacked code dump করা যায় এবং তারপর static analysis-এ ফেরত যাওয়া যায়।

Symbolic Execution একটি advanced কৌশল যেখানে input-কে concrete value-এর পরিবর্তে symbolic value হিসেবে treat করে কোড execute করা হয়। Angr, KLEE, এবং Triton— এসব framework symbolic execution সমর্থন করে। এই কৌশল opaque predicate এবং complex conditional resolve করতে কার্যকর।

পেশাদার Tool ও Workflow

একজন professional malware analyst-এর toolkit-এ বিভিন্ন tool থাকে। Initial triage-এর জন্য VirusTotal-এ hash submit করে দেখা হয় ইতিমধ্যে identified কিনা। PEStudio, Detect It Easy (DIE), এবং Exeinfo PE— এগুলো PE file-এর সম্পর্কে initial information দেয়— packer, compiler, suspicious import।

Disassembly এবং decompilation-এর জন্য Ghidra (NSA-developed, free এবং open source) এবং IDA Pro (commercial, industry standard) ব্যবহার হয়। Ghidra-এর script automation এবং Pro-এর IDAPython পরিশীলিত automation সম্ভব করে।

Script malware-এর জন্য বিভিন্ন বিশেষায়িত tool আছে। PowerShell-এর জন্য PSDecode, Revoke-Obfuscation, এবং Sublime Text-এর সাথে syntax highlighting plugin। JavaScript-এর জন্য box-js, JStillery, এবং de4js। VBA-এর জন্য olevba, oledump.py, এবং ViperMonkey।

Yara rule এবং Sigma rule ব্যবহার করে নির্দিষ্ট pattern শনাক্ত করা হয়। CAPA নামে FireEye/Mandiant-এর একটি tool আছে যা malware-এর capability automatically identify করে— "creates a service," "reads clipboard data," "performs DNS lookup"— এই ধরনের high-level capability detection।

Workflow সাধারণত এভাবে এগোয়— প্রথমে sample-এর hash গণনা করে threat intelligence database-এ search করা। যদি ইতিমধ্যে identified থাকে, পূর্ববর্তী analysis থেকে শুরু করা। নাহলে static analysis দিয়ে packing/encoding শনাক্ত করা, প্রয়োজনে unpacking, তারপর string analysis এবং import inspection। Dynamic analysis sandbox-এ চালিয়ে behavior সম্পর্কে initial পরিচয় পাওয়া। তারপর debugger-এ targeted analysis— specific function-এর reverse engineering, network traffic capture, এবং final report তৈরি।

বাস্তব উদাহরণ

Emotet ম্যালওয়্যার Family-তে বহুস্তরীয় obfuscation দেখা যায়। প্রাথমিক payload একটি malicious Word document-এ থাকে, যার macro VBA-তে heavily obfuscated। Macro PowerShell command execute করে যা base64 encoded এবং character substitution-এর মাধ্যমে আরও obfuscated। সেই PowerShell একটি executable download করে যা packed। Packed executable unpacked হলে main Emotet payload আসে, যেখানে আরও encryption এবং API hashing থাকে। প্রতিটি স্তর আলাদাভাবে deobfuscate করতে হয়।

Cobalt Strike— যা পেশাদার pentest tool কিন্তু threat actor-দের পছন্দের— তার beacon-এ heavy obfuscation থাকে। Profile-based customization দিয়ে আক্রমণকারীরা detection signature পরিবর্তন করতে পারে। MalleableC2 profile network traffic-কে legitimate-looking করে। Reverse engineering Cobalt Strike beacon malware analysis-এর একটি advanced skill।

Ransomware family-গুলো নিয়মিত updated obfuscation নিয়ে আসে। REvil, LockBit, এবং BlackCat-এ ভিন্ন কৌশল রয়েছে— string encryption, control flow flattening, এবং anti-debugging technique। প্রতিটি new variant-এর জন্য analyst-দের নতুনভাবে kit তৈরি করতে হয়।

বাংলাদেশসহ দক্ষিণ এশিয়ায় targeted banking malware এবং business email compromise— এসব ক্ষেত্রেও obfuscated payload দেখা যায়। AgentTesla, Lokibot, এবং Formbook— এসব credential stealer obfuscated VBA macro বা PowerShell loader-এর মাধ্যমে বিতরণ হয়।

প্রতিরোধ ও প্রতিকার

প্রতিষ্ঠান পর্যায়ে obfuscated malware-এর বিরুদ্ধে কয়েকটি defensive strategy রয়েছে। Endpoint Detection and Response বা EDR সমাধান behavior-based detection সরবরাহ করে যা obfuscation-নির্বিশেষে কাজ করে। কোড যাই হোক, তার আচরণ— file encrypt করা, suspicious process spawn করা, network beacon পাঠানো— এসব EDR ধরতে পারে।

Application Whitelisting— শুধু approved application execute করার অনুমতি— ম্যালওয়্যারের অনেক ধরন একেবারেই ঠেকিয়ে দেয়। Microsoft AppLocker, Windows Defender Application Control— এগুলো প্রয়োগ করা যেতে পারে।

PowerShell-এর জন্য Constrained Language Mode, Script Block Logging এবং Module Logging চালু রাখা উচিত। AMSI (Antimalware Scan Interface) Windows-এ obfuscated PowerShell এবং .NET code memory-তে decode হওয়ার পর scan করতে পারে।

Office document-এ macro disable করা— বিশেষ করে external source থেকে আসা document-এ— সবচেয়ে কার্যকর প্রতিরক্ষা। Microsoft এখন default-ই internet-এ থেকে আসা document-এর macro block করে।

কর্মী প্রশিক্ষণ অপরিহার্য। Phishing email-এ attached document খোলার আগে যাচাই করার অভ্যাস, "Enable Content" button-এ click না করার সচেতনতা, এবং সন্দেহজনক কিছু IT-কে report করার সংস্কৃতি— এগুলো ম্যালওয়্যার সংক্রমণ অনেকটাই ঠেকাতে পারে।

চ্যালেঞ্জ ও ভবিষ্যৎ

Deobfuscation একটি constantly evolving field। AI-driven obfuscation এবং AI-driven deobfuscation— দুটোই দ্রুত উন্নতি লাভ করছে। Large language model এখন malware code analyze করে commentary দিতে পারে, যা analyst-দের কাজ দ্রুততর করে। অন্যদিকে আক্রমণকারীরাও AI ব্যবহার করে আরও পরিশীলিত obfuscation তৈরি করছেন।

Polymorphic এবং Metamorphic malware প্রতিবার নিজেকে নতুনভাবে encode করে। Signature-based detection এদের ধরতে পারে না; behavior-based এবং ML-based detection লাগে। এই কৌশলগুলো বিশেষভাবে advanced persistent threat-এর arsenal-এ থাকে।

Cloud-native malware একটি নতুন challenge। Container, serverless function, এবং cloud API-এর মাধ্যমে চালানো malware-এর জন্য traditional disassembly-based analysis কম কার্যকর। Cloud-native security tool এবং runtime protection প্রয়োজন।

Key Takeaways

Deobfuscation শুধু একটি প্রযুক্তিগত দক্ষতা নয়— এটি একটি বুদ্ধিদীপ্ত খেলা, যেখানে analyst এবং malware author পরস্পরের বিপরীতে মেধার সংঘাতে লিপ্ত। প্রতিটি obfuscation কৌশল একটি ধাঁধা, যা সমাধান করা হলে আক্রমণকারীর উদ্দেশ্য, পদ্ধতি এবং লক্ষ্য সম্পর্কে গভীর অন্তর্দৃষ্টি পাওয়া যায়। এই অন্তর্দৃষ্টিই ভবিষ্যৎ আক্রমণ ঠেকাতে, threat intelligence গড়ে তুলতে, এবং নিরাপত্তা সরঞ্জাম উন্নত করতে সাহায্য করে।

একজন malware analyst-এর সবচেয়ে মূল্যবান গুণাবলি হলো ধৈর্য, কৌতূহল এবং নিরন্তর শেখার মানসিকতা। কোনো একটি malware sample বিশ্লেষণে ঘণ্টার পর ঘণ্টা লাগতে পারে, কিন্তু সেই বিশ্লেষণ থেকে যে jewel of insight বেরিয়ে আসে, সেটা পুরো প্রতিষ্ঠানের নিরাপত্তা ভঙ্গি উন্নত করতে পারে। Deobfuscation-এর জগতে স্বাগতম— এখানে প্রতিটি byte-এর পেছনে গল্প আছে, এবং সেই গল্প বের করে আনাই আপনার কাজ।

আপনার জ্ঞান যাচাই করতে প্রস্তুত? আজই HackCert-এ Deobfuscation MCQ Quiz-টি দিন!

Related articles

back to all articles