فهرست مطالب
- مقدمه
- راهاندازی QEMU/KVM و Virt-Manager
- راهاندازی ماشین مجازی ویندوز
- راهاندازی REMnux
- نصب Guest Tools
- تنظیم شبکه تحلیل
- راهاندازی INetSim
- Snapshot گرفتن
- تحلیل استاتیک پایه (Basic Static Analysis)
- تحلیل دینامیک پایه (Basic Dynamic Analysis)
مقدمه
تحلیل بدافزار نیاز به محیط ایزولهای داره که بتونیم توش بدافزارها رو بدون خطر برای سیستم اصلی اجرا و بررسی کنیم. این محیط باید شامل یک ماشین مجازی ویندوزی برای اجرای بدافزار، یک ماشین لینوکسی برای تحلیل ترافیک شبکه، و یک شبکه ایزوله باشه که این دو با هم ارتباط برقرار کنن.
پیش نیاز ها
برای این راهنما سیستم اصلی لینوکس Arch در نظر گرفته شده و برای مجازی سازی از زیر ساخت QEMU/KVM استفاده میشه. میتونید از راه VirtualBox برید، که یه خوبی های خودشو داره.
راهاندازی QEMU/KVM و Virt-Manager
اول از همه باید QEMU/KVM و ابزارهای مرتبط رو نصب کنیم:
sudo pacman -S qemu-full libvirt virt-manager dnsmasq iptables-nft edk2-ovmf
سرویس libvirt رو فعال و اجرا کنیم:
sudo systemctl enable libvirtd
sudo systemctl start libvirtd
کاربر خودمون رو به گروههای لازم اضافه میکنیم:
sudo usermod -aG libvirt,kvm $(whoami)
لاگاوت و لاگین کنید تا تغییرات اعمال بشه.
virt-manager رو باز کنید. یک شبکه NAT پیشفرض به نام default وجود داره که میتونیم ازش استفاده کنیم، ولی برای لب تحلیل بدافزار بهتره یک شبکه isolated بسازیم.
ساخت شبکه Isolated
در virt-manager:
- Edit > Connection Details > Virtual Networks
- روی + کلیک کنید
- اسم شبکه:
malware-lab - Mode: Isolated
- IPv4: فعال، مثلاً
192.168.100.0/24، DHCP رو غیرفعال کنید - IPv6 رو غیرفعال کنید
این شبکه فقط بین VMها ارتباط برقرار میکنه و به اینترنت متصل نیست.
راهاندازی ماشین مجازی ویندوز
نصب ویندوز
- ISO ویندوز 10 یا 11 رو دانلود کنید
- در virt-manager یک VM جدید بسازید:
- RAM: حداقل 4GB
- CPU: 2 core
- Disk: 60GB
- Network: شبکه
malware-lab
- ویندوز رو نصب کنید و یک حساب local بسازید
غیرفعال کردن Windows Update
Settings > Update & Security > Windows Update > Advanced options > Pause updates رو تا حد ممکن فعال کنید.
یا از طریق Registry:
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v NoAutoUpdate /t REG_DWORD /d 1 /f
غیرفعال کردن Windows Defender
Settings > Update & Security > Windows Security > Virus & threat protection > Manage settings > همه رو خاموش کنید.
از طریق PowerShell (به عنوان Administrator):
Set-MpPreference -DisableRealtimeMonitoring $true
Set-MpPreference -DisableIOAVProtection $true
Set-MpPreference -DisableScriptScanning $true
New-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows Defender" -Name DisableAntiSpyware -Value 1 -PropertyType DWORD -Force
نصب FLARE-VM
FLARE-VM یک مجموعه کامل از ابزارهای تحلیل بدافزاره که روی ویندوز نصب میشه.
Set-ExecutionPolicy Unrestricted -Force
(New-Object System.Net.WebClient).DownloadFile('https://raw.githubusercontent.com/mandiant/flare-vm/main/install.ps1', "install.ps1")
.\install.ps1
نصب چند ساعت طول میکشه. سیستم چندین بار ریبوت میشه.
نصب ابزارها به صورت دستی
اگر نمیخواید FLARE-VM رو نصب کنید، میتونید ابزارهای خاص رو با Chocolatey نصب کنید:
Set-ExecutionPolicy Bypass -Scope Process -Force
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
بعد ابزارها:
choco install -y x64dbg ghidra ida-free wireshark procmon procexp pestudio dnspy dotpeek hxd
یا با winget:
winget install -e --id Wireshark.Wireshark
winget install -e --id Microsoft.Sysinternals.ProcessExplorer
winget install -e --id Microsoft.Sysinternals.ProcessMonitor
تنظیم IP استاتیک
Network Settings > Change adapter options > Ethernet > Properties > IPv4:
- IP:
192.168.100.10 - Subnet:
255.255.255.0 - Gateway: خالی
- DNS:
192.168.100.20(IP ماشین REMnux)
راهاندازی REMnux
REMnux یک دیستروی لینوکس مخصوص تحلیل بدافزاره. دو راه برای نصبش داریم. البته در صورتی که بخوایم از KVM/QEMU استفاده کنیم. فرمت OVA مستقیم توی VirtualBox قابل استفاده هست.
روش 1: تبدیل OVA به QCOW2
فایل OVA رو از سایت REMnux دانلود کنید: https://remnux.org
wget https://docs.remnux.org/install-distro/get-virtual-appliance
OVA استخراج کنید:
tar -xvf remnux-v7-focal.ova
VMDK رو به QCOW2 تبدیل کنید:
qemu-img convert -f vmdk -O qcow2 remnux-v7-focal-disk1.vmdk remnux.qcow2
در virt-manager یک VM جدید بسازید و از دیسک موجود استفاده کنید:
- New VM > Import existing disk image
- دیسک: مسیر
remnux.qcow2 - OS: Ubuntu 20.04
- RAM: 4GB
- CPU: 2 core
- Network: شبکه
malware-lab
روش 2: نصب دستی روی Ubuntu 20.04
ISO Ubuntu 20.04 Desktop رو دانلود کنید: https://releases.ubuntu.com/20.04/
VM جدید بسازید:
- RAM: 4GB
- CPU: 2 core
- Disk: 60GB
- Network: شبکه
malware-lab
Ubuntu رو نصب کنید، بعد اسکریپت نصب REMnux رو اجرا کنید:
wget https://REMnux.org/remnux-cli
mv remnux-cli remnux
chmod +x remnux
sudo mv remnux /usr/local/bin
نصب کامل REMnux:
sudo remnux install
این فرآیند ممکنه یک ساعت طول بکشه. سیستم رو ریبوت کنید.
تنظیم IP استاتیک
sudo nmtui
Edit a connection > Wired connection:
- IPv4 Configuration: Manual
- Address:
192.168.100.20/24 - Gateway: خالی
- DNS:
8.8.8.8(فقط برای آپدیت، بعداً حذفش میکنیم)
آپدیت REMnux
remnux update
remnux upgrade
بعد از آپدیت، DNS رو حذف کنید یا به 127.0.0.1 تغییر بدید تا REMnux بتونه با INetSim DNS جعلی ارائه بده.
نصب Guest Tools
ویندوز - VirtIO Drivers
ISO درایورهای VirtIO رو دانلود کنید:
wget https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso
در virt-manager، ISO رو به VM ویندوز وصل کنید و درایورها رو نصب کنید. بعد spice-guest-tools رو از https://www.spice-space.org/download.html دانلود و نصب کنید.
REMnux - QEMU Guest Agent
sudo apt install qemu-guest-agent
sudo systemctl enable qemu-guest-agent
sudo systemctl start qemu-guest-agent
تنظیم شبکه تحلیل
الان دو VM داریم که در یک شبکه isolated هستن:
- ویندوز:
192.168.100.10 - REMnux:
192.168.100.20
از ویندوز باید بتونید REMnux رو ping کنید:
ping 192.168.100.20
اگر ping جواب نداد، فایروال لینوکس یا ویندوز رو چک کنید.
REMnux به عنوان DNS و سرور شبکه جعلی عمل میکنه. ویندوز سعی میکنه به اینترنت وصل بشه، ولی همه درخواستهاش توسط REMnux جواب داده میشه.
راهاندازی INetSim
INetSim یک ابزاره که سرویسهای اینترنتی مختلف (HTTP, DNS, SMTP, …) رو شبیهسازی میکنه.
تنظیمات INetSim
فایل کانفیگ رو ویرایش کنید:
sudo nano /etc/inetsim/inetsim.conf
تغییرات:
service dns
dns_default_ip 192.168.100.20
start_service dns
start_service http
start_service https
start_service smtp
start_service ftp
اجرای INetSim
sudo inetsim
لاگها در /var/log/inetsim/ ذخیره میشن. هر درخواستی که بدافزار بفرسته اینجا ثبت میشه.
برای اینکه INetSim به عنوان DNS عمل کنه، باید مطمئن بشید که systemd-resolved غیرفعاله یا روی پورت دیگهای گوش میده:
sudo systemctl disable systemd-resolved
sudo systemctl stop systemd-resolved
و فایل /etc/resolv.conf رو به nameserver 8.8.8.8 تغییر بدید برای خود REMnux.
Snapshot گرفتن
قبل از اینکه هر بدافزاری رو اجرا کنید، حتماً snapshot بگیرید.
در virt-manager
VM رو خاموش کنید، بعد:
- View > Snapshots
- روی + کلیک کنید
- اسم بدید:
clean-state
از خط فرمان
virsh snapshot-create-as --domain windows-malware-lab --name "clean-state" --description "Clean Windows before analysis"
virsh snapshot-create-as --domain remnux-lab --name "clean-state" --description "Clean REMnux before analysis"
برای بازگشت:
virsh snapshot-revert --domain windows-malware-lab --snapshotname "clean-state"
تحلیل استاتیک پایه (Basic Static Analysis)
تحلیل استاتیک یعنی بررسی بدافزار بدون اجراش.
ابزارها
-
File Type: مشخص کردن نوع فایل واقعی
file malware.exe -
Hash: برای جستجو در دیتابیسهای آنلاین
md5sum malware.exe sha256sum malware.exeاین hashها رو در VirusTotal یا MalwareBazaar جستجو کنید.
-
Strings: استخراج رشتههای متنی
strings malware.exe | less strings -e l malware.exe | lessدنبال URL، IP، نام فایل، رجیستری باشید.
-
PEiD / Detect It Easy: تشخیص packer
در ویندوز از DIE (Detect It Easy) استفاده کنید.
-
PEStudio: بررسی ساختار PE
Import/Export table، sectionها، resourceها رو چک کنید.
-
Dependency Walker / CFF Explorer: بررسی DLLها و APIهای import شده
-
IDA Free / Ghidra: دیساسمبل و بررسی کد
چی دنبالش باشیم؟
- Import table: چه APIهایی استفاده میشه؟ (CreateProcess, WriteFile, RegSetValue, socket)
- Strings: URL، IP، command، نام فایل مشکوک
- Packer: اگر pack شده، باید اول unpack بشه
- Resources: آیکون، دیالوگ، فایلهای embedded
- Sectionها: executable section با entropy بالا ممکنه packed یا encrypted باشه
تحلیل دینامیک پایه (Basic Dynamic Analysis)
تحلیل دینامیک یعنی اجرای بدافزار و مشاهده رفتارش.
قبل از اجرا
-
Snapshot بگیرید
-
Process Monitor رو اجرا کنید
-
Process Explorer رو اجرا کنید
-
Wireshark رو روی REMnux اجرا کنید:
sudo wireshark -
INetSim رو روی REMnux اجرا کنید
-
FakeNet-NG رو روی ویندوز اجرا کنید (اگر از FLARE-VM استفاده میکنید):
FakeNet-NG.exe
اجرا
بدافزار رو اجرا کنید و منتظر بمونید. چند دقیقه رو مشاهده کنید.
چی چک کنیم؟
Process Monitor
فیلترها رو تنظیم کنید تا فقط process مربوط به بدافزار رو ببینید.
- File: چه فایلهایی ساخته، خونده، یا نوشته شده؟
- Registry: چه کلیدهایی اضافه یا تغییر کرده؟
- Network: چه connectionهایی برقرار شده؟
دنبال:
- فایلهای executable جدید در Temp, AppData, Startup
- کلیدهای Run در رجیستری برای persistence
- فایلهای system مهم که modify شدن
Process Explorer
- Process tree رو ببینید: کدوم process چی رو spawn کرده؟
- DLLهای load شده رو چک کنید
- Network connectionها رو ببینید
- Stringهای memory رو استخراج کنید: Right-click > Properties > Strings
Wireshark روی REMnux
تمام ترافیک شبکه رو capture کنید:
- چه protocolهایی استفاده شده? (HTTP, DNS, IRC, custom)
- چه domainها یا IPهایی query شدن؟
- چه data هایی send/receive شده؟
میتونید pcap رو ذخیره کنید و بعداً با NetworkMiner یا tcpdump بررسی کنید.
لاگهای INetSim
tail -f /var/log/inetsim/service.log
تمام درخواستهای HTTP, DNS, و … اینجا ثبت میشه.
بعد از تحلیل
- گزارش رفتارها رو یادداشت کنید
- فایلهای ساخته شده رو کپی کنید (برای تحلیل بیشتر)
- Snapshot رو restore کنید
- برای تحلیل عمیقتر، از دیباگر (x64dbg, WinDbg) استفاده کنید