رفتن به محتوا
برگرد

راهنمای کامل تحلیل بدافزار

منتشرشده در:  at  ۰۳:۴۶ بعدازظهر
8 دقیقه مطالعه

فهرست مطالب

مقدمه

تحلیل بدافزار نیاز به محیط ایزوله‌ای داره که بتونیم توش بدافزارها رو بدون خطر برای سیستم اصلی اجرا و بررسی کنیم. این محیط باید شامل یک ماشین مجازی ویندوزی برای اجرای بدافزار، یک ماشین لینوکسی برای تحلیل ترافیک شبکه، و یک شبکه ایزوله باشه که این دو با هم ارتباط برقرار کنن.

پیش نیاز ها

برای این راهنما سیستم اصلی لینوکس 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:

  1. Edit > Connection Details > Virtual Networks
  2. روی + کلیک کنید
  3. اسم شبکه: malware-lab
  4. Mode: Isolated
  5. IPv4: فعال، مثلاً 192.168.100.0/24، DHCP رو غیرفعال کنید
  6. IPv6 رو غیرفعال کنید

این شبکه فقط بین VM‌ها ارتباط برقرار می‌کنه و به اینترنت متصل نیست.

راه‌اندازی ماشین مجازی ویندوز

نصب ویندوز

  1. ISO ویندوز 10 یا 11 رو دانلود کنید
  2. در virt-manager یک VM جدید بسازید:
    • RAM: حداقل 4GB
    • CPU: 2 core
    • Disk: 60GB
    • Network: شبکه malware-lab
  3. ویندوز رو نصب کنید و یک حساب 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:

راه‌اندازی 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 جدید بسازید و از دیسک موجود استفاده کنید:

  1. New VM > Import existing disk image
  2. دیسک: مسیر remnux.qcow2
  3. OS: Ubuntu 20.04
  4. RAM: 4GB
  5. CPU: 2 core
  6. Network: شبکه malware-lab

روش 2: نصب دستی روی Ubuntu 20.04

ISO Ubuntu 20.04 Desktop رو دانلود کنید: https://releases.ubuntu.com/20.04/

VM جدید بسازید:

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:

آپدیت 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 هستن:

از ویندوز باید بتونید 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 رو خاموش کنید، بعد:

  1. View > Snapshots
  2. روی + کلیک کنید
  3. اسم بدید: 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)

تحلیل استاتیک یعنی بررسی بدافزار بدون اجراش.

ابزارها

چی دنبالش باشیم؟

تحلیل دینامیک پایه (Basic Dynamic Analysis)

تحلیل دینامیک یعنی اجرای بدافزار و مشاهده رفتارش.

قبل از اجرا

  1. Snapshot بگیرید

  2. Process Monitor رو اجرا کنید

  3. Process Explorer رو اجرا کنید

  4. Wireshark رو روی REMnux اجرا کنید:

    sudo wireshark
  5. INetSim رو روی REMnux اجرا کنید

  6. FakeNet-NG رو روی ویندوز اجرا کنید (اگر از FLARE-VM استفاده می‌کنید):

    FakeNet-NG.exe

اجرا

بدافزار رو اجرا کنید و منتظر بمونید. چند دقیقه رو مشاهده کنید.

چی چک کنیم؟

Process Monitor

فیلترها رو تنظیم کنید تا فقط process مربوط به بدافزار رو ببینید.

دنبال:

Process Explorer

Wireshark روی REMnux

تمام ترافیک شبکه رو capture کنید:

می‌تونید pcap رو ذخیره کنید و بعداً با NetworkMiner یا tcpdump بررسی کنید.

لاگ‌های INetSim

tail -f /var/log/inetsim/service.log

تمام درخواست‌های HTTP, DNS, و … اینجا ثبت میشه.

بعد از تحلیل

  1. گزارش رفتارها رو یادداشت کنید
  2. فایل‌های ساخته شده رو کپی کنید (برای تحلیل بیشتر)
  3. Snapshot رو restore کنید
  4. برای تحلیل عمیق‌تر، از دیباگر (x64dbg, WinDbg) استفاده کنید

امیر's avatar

امیر

دانشجوی ارشد امنیت - صنعتی اصفهان


مقاله قبلی
حل مسائل کتاب Understanding Cryptography - فصل 6
مقاله بعدی
معرفی:‌ NixOS