Linux Forensics: সাইবার হামলার শিকার লিনাক্স সার্ভার থেকে ডিজিটাল প্রমাণ সংগ্রহ!
Linux Forensics হলো Compromised সার্ভার থেকে Volatile ও Non-volatile প্রমাণ সংগ্রহ করে আক্রমণের পূর্ণ চিত্র পুনর্গঠনের বিজ্ঞান।
একটি সাইবার আক্রমণের পর সবচেয়ে গুরুত্বপূর্ণ প্রশ্নগুলো হলো - কী ঘটেছে, কীভাবে ঘটেছে, কে দায়ী, এবং কী কী চুরি হয়েছে? এই প্রশ্নের উত্তর খুঁজতে যে শৃঙ্খলাবদ্ধ প্রক্রিয়া অনুসরণ করতে হয়, তার নাম Digital Forensics। যেহেতু ইন্টারনেটের অধিকাংশ সার্ভার Linux-এ চলে, তাই Linux Forensics-এ দক্ষতা আজকের Incident Response টিমের জন্য অপরিহার্য। Apache, Nginx, MySQL, Docker, এবং Kubernetes-এর মতো প্রায় সব Critical Infrastructure Linux-ভিত্তিক, ফলে আক্রমণের শিকারও বেশিরভাগই Linux সার্ভার।
এই বিস্তৃত প্রবন্ধে আমরা Linux Forensics-এর প্রতিটি ধাপ - প্রমাণ সংগ্রহ, Volatile Data বিশ্লেষণ, Persistent Storage পরীক্ষা, লগ অনুসন্ধান, এবং রিপোর্ট প্রস্তুতকরণ - নিয়ে আলোচনা করব। DFIR (Digital Forensics and Incident Response) প্রফেশনাল হিসেবে গড়ে উঠতে চাইলে এই গাইডটি একটি গুরুত্বপূর্ণ রেফারেন্স।
Digital Forensics-এর মূলনীতি
Digital Forensics-এর সবচেয়ে গুরুত্বপূর্ণ মূলনীতি হলো "Chain of Custody" বজায় রাখা এবং "Evidence Integrity" নিশ্চিত করা। প্রমাণ সংগ্রহের সময় কোনোভাবেই মূল ডেটা পরিবর্তন হওয়া উচিত নয়। তাই Forensics বিশ্লেষকরা সাধারণত সিস্টেমের একটি বিট-বাই-বিট কপি বা "Forensic Image" তৈরি করেন এবং সেই কপির উপর বিশ্লেষণ চালান। মূল সিস্টেমকে "Read-only" মোডে রাখা হয়।
Order of Volatility নামক একটি ধারণা আছে, যা বলে যে কোন ডেটা আগে সংগ্রহ করা উচিত। সবচেয়ে অস্থায়ী (Volatile) ডেটা থেকে শুরু করতে হবে - CPU Registers, Cache, RAM, Running Processes, Network Connections, এবং সবশেষে Disk Storage। কারণ RAM-এর ডেটা সিস্টেম শাটডাউন হলে চিরতরে হারিয়ে যায়, কিন্তু Disk-এর ডেটা টিকে থাকে।
Locard's Exchange Principle-এর সাইবার সংস্করণ অনুসারে, একজন আক্রমণকারী সিস্টেমে অবস্থান করলে অবশ্যই কিছু না কিছু চিহ্ন রেখে যাবে - তা যত ছোটই হোক না কেন। Forensics বিশ্লেষকের কাজ হলো সেই চিহ্নগুলো খুঁজে বের করা।
Live Response এবং Volatile Data সংগ্রহ
যখন একটি সক্রিয় Compromised সিস্টেম পাওয়া যায়, প্রথমেই Volatile Data সংগ্রহ করতে হয়। এর জন্য সিস্টেম চালু অবস্থায় বেশ কিছু কমান্ড চালাতে হয়। সংগৃহীত আউটপুট অবশ্যই একটি বহিরাগত মিডিয়া (USB বা Network Share) তে সংরক্ষণ করতে হবে যাতে স্থানীয় Disk-এ পরিবর্তন না হয়।
date > /mnt/evidence/01_date.txt
w > /mnt/evidence/02_logged_users.txt
ps auxef > /mnt/evidence/03_processes.txt
netstat -tulpn > /mnt/evidence/04_network.txt
ss -tulpn > /mnt/evidence/05_sockets.txt
lsof -n > /mnt/evidence/06_open_files.txt
last -Faiwx > /mnt/evidence/07_last_logins.txt
RAM Dump নেওয়ার জন্য LiME (Linux Memory Extractor) একটি জনপ্রিয় Kernel Module। এটি সম্পূর্ণ মেমরি একটি ফাইলে লিখে দেয়, যা পরে Volatility বা Volatility3 দিয়ে বিশ্লেষণ করা যায়। AVML (Microsoft-এর Azure VM Memory Acquisition Tool) Cloud পরিবেশে উপযোগী।
sudo insmod lime.ko "path=/mnt/evidence/memory.lime format=lime"
Process এবং Network Analysis
Compromised সিস্টেমে চলমান অস্বাভাবিক Process শনাক্ত করা একটি গুরুত্বপূর্ণ ধাপ। ps auxef দিয়ে সমস্ত Process এবং তাদের Parent-Child Relationship দেখা যায়। সন্দেহজনক Indicators হতে পারে - অস্বাভাবিক জায়গা থেকে চলা Process (যেমন /tmp/ থেকে), Random Name-এর Binary, অথবা Hidden Process।
/proc/<pid>/ ডিরেক্টরি প্রতিটি Process সম্পর্কে বিস্তারিত তথ্য রাখে। /proc/<pid>/exe symlink দেখায় Process-এর Binary-র অবস্থান, /proc/<pid>/cmdline দেখায় Command Line Arguments, এবং /proc/<pid>/maps দেখায় Memory Mapping।
ls -la /proc/<pid>/exe
cat /proc/<pid>/cmdline
cat /proc/<pid>/environ | tr '\0' '\n'
Network Connection বিশ্লেষণে netstat -anp বা ss -anp ব্যবহার করতে হয়। অস্বাভাবিক Outbound Connection, বিশেষ করে বিদেশী IP-তে, একটি C2 (Command and Control) চ্যানেলের ইঙ্গিত দিতে পারে। lsof -i দিয়ে কোন Process কোন নেটওয়ার্ক Connection খুলে রেখেছে তা দেখা যায়।
Disk Imaging এবং Mount Strategy
Volatile Data সংগ্রহের পর Disk Imaging-এর পালা। dd অথবা dcfldd (DOD Forensics ভেদে উন্নত সংস্করণ) ব্যবহার করে একটি বিট-বাই-বিট কপি তৈরি করা হয়। আরও উন্নত টুল হলো ewfacquire যা EWF (Expert Witness Format) ফাইল তৈরি করে যা Compression এবং Hash Integrity সমর্থন করে।
sudo dcfldd if=/dev/sda of=/mnt/evidence/disk.img \
hash=sha256 hashlog=/mnt/evidence/disk.hash bs=4M
Image তৈরি করার আগে এবং পরে অবশ্যই SHA-256 Hash গণনা করতে হবে এবং সেটি ডকুমেন্ট করতে হবে। বিশ্লেষণের সময় Image-কে অবশ্যই Read-only মোডে মাউন্ট করতে হবে:
sudo mount -o ro,loop,noexec,nodev disk.img /mnt/analysis
Autopsy এবং The Sleuth Kit (TSK) হলো ওপেন সোর্স Forensics টুলকিট যা Disk Image বিশ্লেষণে ব্যাপকভাবে ব্যবহৃত হয়। X-Ways Forensics বাণিজ্যিক বিকল্প হিসেবে অত্যন্ত শক্তিশালী।
Filesystem এবং Timestamp Analysis
Linux Filesystem-এ প্রতিটি ফাইলের চারটি Timestamp থাকে - MAC times (Modified, Accessed, Changed) এবং Birth time (Btime, যদি Filesystem সমর্থন করে)। stat <file> কমান্ড এই তথ্য দেখায়।
stat /etc/passwd
Timeline Analysis করতে mactime (Sleuth Kit-এর অংশ) বা log2timeline.py (Plaso framework) ব্যবহৃত হয়। এগুলো একটি Comprehensive Timeline তৈরি করে যেখানে সমস্ত Filesystem Activity, লগ Event, এবং অন্যান্য Artifact ক্রমানুসারে সাজানো থাকে।
আক্রমণকারীরা প্রায়শই "Timestomping" কৌশল ব্যবহার করে Timestamp পরিবর্তন করে নিজেদের কার্যকলাপ লুকাতে চায়। কিন্তু ext4 ফাইলসিস্টেমের Inode-এর ctime (Inode Change Time) সাধারণত পরিবর্তন করা যায় না Standard tools দিয়ে, ফলে এটি গুরুত্বপূর্ণ Indicator।
Log Analysis
Linux সার্ভারের লগ ফাইল Forensics-এর সোনার খনি। প্রধান লগ ফাইলগুলো /var/log/ ডিরেক্টরিতে থাকে। আক্রমণ বিশ্লেষণে সবচেয়ে গুরুত্বপূর্ণ লগগুলো হলো:
/var/log/auth.logবা/var/log/secure- Authentication ইভেন্ট/var/log/syslogবা/var/log/messages- সিস্টেম মেসেজ/var/log/audit/audit.log- auditd এর বিস্তারিত লগ/var/log/apache2/বা/var/log/httpd/- ওয়েব সার্ভার লগ/var/log/wtmpও/var/log/btmp- সফল ও ব্যর্থ লগইন~/.bash_history- ব্যবহারকারীর শেল কমান্ড ইতিহাস
last, lastb, এবং who কমান্ড দিয়ে লগইন তথ্য বিশ্লেষণ করা যায়। SSH brute-force attempt শনাক্ত করতে:
grep "Failed password" /var/log/auth.log | \
awk '{print $11}' | sort | uniq -c | sort -rn
আক্রমণকারীরা প্রায়শই লগ মুছে ফেলে বা পরিবর্তন করে। wtmp বা btmp ফাইল না থাকলে বা অস্বাভাবিকভাবে ছোট হলে সেটি Tampering-এর ইঙ্গিত। Forensics বিশ্লেষকরা প্রায়ই extundelete বা photorec দিয়ে মুছে ফেলা ফাইল পুনরুদ্ধার করার চেষ্টা করেন।
Persistence Mechanism Identification
আক্রমণকারীরা সিস্টেমে দীর্ঘমেয়াদী অ্যাক্সেস বজায় রাখতে বিভিন্ন Persistence কৌশল ব্যবহার করে। Linux-এ সাধারণ Persistence স্থানগুলো হলো:
/etc/crontabএবং/etc/cron.*/ডিরেক্টরিতে Scheduled Tasks/etc/systemd/system/এবং/lib/systemd/system/-এ Custom Systemd Service/etc/init.d/এবং/etc/rc*.d/-এ Init Scripts~/.bashrc,~/.bash_profile,/etc/profile.d/-এ Shell Startup Scripts/etc/ld.so.preload- Library Hijacking- SSH
authorized_keysফাইলে অননুমোদিত Key
find /etc/cron* -type f -newer /etc/cron.daily 2>/dev/null
systemctl list-unit-files --state=enabled
cat /etc/ld.so.preload
Rootkit Detection-এর জন্য chkrootkit এবং rkhunter ব্যবহৃত হয়। তবে আধুনিক Kernel-level Rootkit এড়িয়ে যেতে পারে এই টুলগুলো, তাই Memory Forensics অপরিহার্য।
Memory Forensics with Volatility
Volatility Framework হলো Memory Forensics-এর জন্য সবচেয়ে জনপ্রিয় ওপেন সোর্স টুল। একবার Memory Dump সংগ্রহ করা হলে, এটি দিয়ে চলমান Process, Network Connection, Loaded Module, এবং এমনকি Encryption Key পর্যন্ত উদ্ধার করা সম্ভব।
vol.py -f memory.lime --profile=LinuxUbuntu2004x64 linux_pslist
vol.py -f memory.lime --profile=LinuxUbuntu2004x64 linux_netstat
vol.py -f memory.lime --profile=LinuxUbuntu2004x64 linux_bash
vol.py -f memory.lime --profile=LinuxUbuntu2004x64 linux_check_modules
linux_bash plugin বিশেষভাবে আকর্ষণীয় - এটি Memory থেকে Bash Command History উদ্ধার করতে পারে, এমনকি যদি আক্রমণকারী .bash_history মুছে ফেলে। Volatility3 হলো নতুন সংস্করণ যা Python 3-এ লেখা এবং আধুনিক Kernel সমর্থন করে।
বাস্তব উদাহরণ: Cryptojacking Investigation
একটি বাস্তব Case Study বিবেচনা করুন - একটি কোম্পানির Ubuntu সার্ভারে অস্বাভাবিক CPU ব্যবহার লক্ষ্য করা গেছে। Forensics দল প্রথমে top চালিয়ে দেখেছে যে xmrig নামক একটি Process ৯৯ শতাংশ CPU ব্যবহার করছে, যা XMR (Monero) Cryptocurrency Miner।
ls -la /proc/<pid>/exe দিয়ে দেখা গেছে Binary /tmp/.hidden/xmrig থেকে চলছে। auth.log বিশ্লেষণে দেখা গেছে একটি দুর্বল Password-সহ ssh অ্যাকাউন্টে Brute-force সফল হয়েছিল। crontab -l -u www-data চালিয়ে একটি Scheduled Task পাওয়া গেছে যা প্রতি ৫ মিনিটে Miner পুনরায় চালু করে।
Network Log-এ pool.minexmr.com-এর সাথে Outbound Connection নিশ্চিত করেছে এটি Cryptojacking আক্রমণ। সম্পূর্ণ Timeline তৈরি করে দেখা গেছে আক্রমণটি ৩ সপ্তাহ ধরে চলছিল।
প্রতিরোধ ও প্রতিকার
Linux Forensics-এর কাজ সহজ করতে সিস্টেম প্রস্তুত রাখা গুরুত্বপূর্ণ। auditd সক্ষম রেখে বিস্তারিত Audit Trail তৈরি করতে হবে। /etc/audit/rules.d/audit.rules ফাইলে গুরুত্বপূর্ণ সিস্টেম কল এবং ফাইল অ্যাক্সেস মনিটর করার নিয়ম যোগ করতে হবে।
Centralized Logging সেটআপ করা অপরিহার্য - rsyslog বা journald দিয়ে লগগুলো একটি Remote SIEM সার্ভারে পাঠানো উচিত। এতে আক্রমণকারী স্থানীয় লগ মুছে ফেললেও Remote Copy থাকবে। File Integrity Monitoring-এর জন্য AIDE বা Tripwire ব্যবহার করা যেতে পারে।
Incident Response Playbook প্রস্তুত রাখা উচিত যা ধাপে ধাপে দেখায় কীভাবে একটি Compromised সিস্টেম Isolate করতে হবে এবং প্রমাণ সংগ্রহ করতে হবে। নিয়মিত Tabletop Exercise চালিয়ে দলের প্রস্তুতি যাচাই করতে হবে।
Linux Forensics একটি অত্যন্ত প্রযুক্তিগত এবং পদ্ধতিগত ক্ষেত্র যা ধৈর্য, বিস্তারিত মনোযোগ, এবং Linux-এর গভীর জ্ঞান দাবি করে। Volatile Data সংগ্রহ থেকে শুরু করে Disk Imaging, Log Analysis, Persistence Identification, এবং Memory Forensics - প্রতিটি ধাপ আক্রমণের চিত্র পুনর্গঠনে গুরুত্বপূর্ণ ভূমিকা পালন করে। Volatility, Sleuth Kit, Autopsy, এবং Plaso-র মতো ওপেন সোর্স টুল আজ যেকোনো DFIR পেশাদারের অস্ত্রাগারে অপরিহার্য। প্রতিটি Incident থেকে শিক্ষা নিয়ে নিজের দক্ষতা ক্রমাগত উন্নত করা এই পেশায় সাফল্যের চাবিকাঠি।
আপনার জ্ঞান যাচাই করতে প্রস্তুত? আজই HackCert-এ Linux Forensics MCQ Quiz-টি দিন!
Related articles
Data Destruction: The Risks of Data Wiping in Cyber Attacks and Strategies for Recovery
10 min
Linux Hardening: Best Practices to Maximize Server Security
8 min
Log Shipping: Storing Log Files on Remote Servers to Thwart Cyber Attacks
10 min
macOS Forensics: Investigating Digital Evidence on Apple Mac Systems
11 min

