در مقاله ی قبلی، با قدرت شناسایی و شکار تهدیدها با قوانین YARA آشنا شدیم و دیدیم چطور میتوان با نشانهگذاری دقیق رفتار و ساختار بدافزارها، آنها را از میان صدها فایل سالم بیرون کشید. اما YARA فقط به ما میگوید این فایل مشکوک است. سؤال مهمتر این است:
این فایل دقیقاً چه میکند؟ چطور رفتار میکند؟ چه بلایی سر سیستم میآورد؟ و اینجا جایی است که تحلیل رفتاری وارد صحنه میشود.
در این مطلب میخواهیم وارد دنیای تحلیل پویا شویم و با یکی از حرفهایترین ابزارهای Open source در این حوزه آشنا شویم:
Cuckoo Sandbox
Cuckoo همان آزمایشگاه زنده ماست. جایی که فایل مشکوک را داخل یک محیط ایزوله میگذاریم و اجازه میدهیم نفس بکشد، اجرا شود، ارتباط بگیرد، فایل بسازد، رجیستری را تغییر دهد و هر حرکتش را ثبت کنیم، بدون اینکه کوچکترین آسیبی به سیستم واقعی بخورد.
اگر YARA مثل پلیس به دنبال ردپا باشد، Cuckoo یک اتاق شیشهای امنیتی است که مجرم را داخلش میگذاریم و لحظهبهلحظه رفتار او را تماشا و ثبت میکنیم.
در این مقاله، قدمبهقدم یاد میگیریم که:
Cuckoo Sandbox ✔️ چیست و چگونه کار میکند
✔️ چطور آن را نصب و درست کانفیگ کنیم
✔️ نمونه مشکوک را اجرا و رفتار آن را تحلیل کنیم
✔️ خروجیها، PCAP، اسکرینشاتها و گزارشها را بخوانیم
Cuckoo ✔️ را با YARA ترکیب کنیم تا شکارمان دقیقتر شود
✔️ و در نهایت، چگونه از تکنیکهای فرار بدافزارها از سندباکس جلو بیفتیم

Cuckooچیست و چرا باید از آن استفاده کنیم
Cuckoo Sandbox یک پلتفرم open source برای تحلیل خودکار بدافزار است که اجرای نمونهها را در ماشینهای مجازی ایزوله انجام میدهد و گزارش رفتاری تولید میکند (فرامین اجراشده، فایلها/رجیستری تغییرشده، ترافیک شبکه، اسکرینشات و غیره). این ابزار برای تیمهای IR، CERT/CSIRT، محققان تهدید و تحلیلگران بدافزار کاربردی است.
تفاوت Cuckoo و YARA
یارا و Cuckoo دو ابزار مکمل اما از جنس متفاوتاند: YARA قوانینی مبتنی بر امضا و الگو (استاتیک) ارائه میدهد که با جستجوی بایتسترینگها، رشتهها و الگوهای شناختهشده میتواند فایلهای مشکوک را سریع فیلتر کند. در مقابل Cuckoo Sandbox تحلیلگرِ پویا است که فایل را اجرا میکند و رفتار زمان اجرا (فرآیندها، تغییرات رجیستری، ترافیک شبکه، PCAP، اسکرینشات و...) را ثبت و گزارش میدهد.
بنابراین YARA برای اسکن گسترده و کشف اولیه مناسب و سریع است، اما قادر به دیدن رفتارهای runtime یا ارتباطات شبکهای نیست. Cuckoo این خلأ را پر میکند اما منابعبرتر و کندتر است و برای پردازش تودهای فایلها مناسب نیست. بهترین رویکرد عملیاتی ترکیب آنهاست: از YARA برای فیلتر اولیه و از Cuckoo برای تحلیل رفتاری عمیقِ نمونههای مشکوک و تأیید/استخراج IOC .
|
معیار |
YARA |
Cuckoo Sandbox |
پیشنهاد عملی |
|
نوع تحلیل |
استاتیک (امضایی/قواعد) |
پویا (رفتاری/ time-based) |
ابتدا YARA برای فیلتر اولیه، سپس Cuckoo برای تحلیلهای عمیق |
|
خروجی اصلی |
نتایج تطبیق قوانین (matches)، نام قاعده |
گزارش رفتاری: process tree، registry, filesystem, PCAP، اسکرینشات |
YARA برای شاخصسازی سریع، Cuckoo برای استخراج IOCهای رفتاری |
|
سرعت اجرا |
بسیار سریع مناسب اسکن انبوه |
کندتر نیاز به زمان اجرای نمونه و snapshot |
pipeline: YARA . صف تحلیلهای Cuckoo برای موارد مشکوک |
|
منابع مورد نیاز |
کم (CPU/RAM ناچیز) |
بالاتر (VMها، فضای دیسک، مدیریت snapshots) |
برای حجم بالا از راهکار توزیعشده یا سرویسهای متمرکز استفاده کنید |
|
قابلیت دورزدن توسط بدافزار |
محدود . بسته به قوت قواعد |
زیاد . بدافزارهای پیشرفته میتوانند sandbox evasion انجام دهند |
از هر دو استفاده کنید و تکنیکهای ضد-evade در Cuckoo پیاده کنید |
|
مناسب برای |
کشف اولیه، نهادهای SOC برای اسکن فایلها و بایگانیها |
تحلیلگران بدافزار، IR، استخراج کانفیگ و رفتار شبکه |
ترکیب YARA با Cuckoo یا CAPE برای استخراج خودکار کانفیگها |
|
سطح پیچیدگی پیادهسازی |
کم تا متوسط (نوشتن قواعد YARA) |
متوسط تا زیاد (نصب/کانفیگ VMها، شبکه، agent) |
مستندسازی قواعد و اتوماسیون snapshot/restore را فراموش نکنید |
|
مثالخروجی قابل استفاده در SIEM |
نام قاعده، هش فایل، تگها |
IOCs: domain, IP, mutex, registry changes, process tree |
هر دو خروجی را Normalise کرده و به SIEM/Threat-Feed بفرستید |
معماری و اصول کار (خلاصه فنی)
✔️ Host (سرور مدیریت): نقطهای که تحلیلها را زمانبندی، نمونه را مدیریت و گزارش را ذخیره میکند.
✔️ Guests (VMs) : ماشینهای تحلیل (معمولاً ویندوز، لینوکس یا اندروید) که نمونه داخل آنها اجرا میشود.
✔️ Monitor/Agent : اجزایی که روی Guest نصب میشوند و رفتار را مانیتور میکنند و دادهها را به Host میفرستند.
✔️ Processor / Reporting : تجزیه و تحلیل و تولید گزارش نهایی (JSON، HTML، PCAP، screencaps).
Cuckoo طراحی ماژولار دارد و میتوان آن را با پلاگینها و پکیجهای تحلیل گسترش داد .
نصب و راهاندازی
این بخش یک راهنمای عملی و قدمبهقدم برای راهاندازی سریع Cuckoo Sandbox در محیط آزمایشی است. هدف این است که ظرف حداقل زمان یک محیط قابلکار ایجاد کنید تا نمونهها را اجرا و گزارش بگیرید. برای محیط تولیدی حتماً مستندات رسمی و نکات امنیتی را دنبال کنید. آنجا باید نکات امنیتی، لاگینگ متمرکز، و مدیریت دسترسی را دقیقتر اعمال کنید.
پیشنیازها روی Host | بررسی و نصب پایه
سیستم عامل میزبان: توزیعهای مبتنی بر Debian/Ubuntu پیشنهاد میشوند (دستورها برای Debian/Ubuntu نوشته شده. در سایر توزیعها نام بستهها ممکن است متفاوت باشد).
-
بهروزرسانی بستهها
sudo apt update && sudo apt upgrade -y
-
نصب ابزارها و پیشنیازهای عمومی
sudo apt install -y git python3 python3-venv python3-pip \ libvirt-daemon-system libvirt-clients qemu-kvm virt-manager \ tcpdump wireshark ca-certificates
اگر میخواهید از VirtualBox استفاده کنید، بسته virtualbox را نصب کنید
(نکته: VirtualBox و libvirt/QEMU را همزمان میتوان داشت اما پیچیدگیهایی دارد).
wireshark/tcpdump برای کپچر شبکه و آنالیز PCAP ضروریاند.
- حساب کاربری مناسب
توصیه: یک کاربر غیر-root برای اجرای Cuckoo بسازید و آن کاربر را به گروههای libvirt و wireshark اضافه کنید:
sudo useradd -m cuckoo sudo usermod -aG libvirt,cuckoo $USER sudo usermod -aG wireshark cuckoo
- سایر بستههای اختیاری ولی مفید
capstone، yara , python-pefile, volatility و ابزارهای تحلیل استاتیک ممکن است لازم شوند، آنها را بسته به نیاز نصب کنید.
نصب Cuckoo (نسخه سریع)
- کلون کردن مخزن (یا نصب از پکیج توزیع اگر موجود است)
git clone https://github.com/cuckoosandbox/cuckoo.git /opt/cuckoo cd /opt/cuckoo python3 -m venv venv source venv/bin/activate pip install -U pip pip install -r requirements.txt python setup.py install
توجه: مسیرها و نامها بسته به نسخهCuckoo ممکن است تفاوت داشته باشند. اگر از fork مثل CAPE استفاده میکنید، مخزن و دستورالعملهای آن را دنبال کنید.
- تنظیم اولیهconfig
✔️ فایلهای پیکربندی مثل cuckoo.conf, auxiliary.conf, processing.conf را مطابق محیط خود ویرایش کنید (مسیر معمول /opt/cuckoo/conf/ یا /etc/cuckoo/).
✔️ مهمترین موارد برای ویرایش: مسیر ذخیرهسازی storage, ip/port سرور، provider (libvirt/virtualbox) و مسیر rules برای YARA.
ساخت و کانفیگ Guest VMs (VMهای تحلیل)
- انتخاب سیستمعامل Guest
رایج : Windows 7/10 (نسخههایی با patch کمتر برای دیدن بدافزارهای قدیمی مفیدند) و لینوکس/اندروید در صورت نیاز.
- ایجاد VM با libvirt/VirtualBox
با virt-manager یا virt-install VM بسازید. حداقل تنظیمات پیشنهادی برای ویندوز: 2 CPU، 2– 4 GB RAM (بسته به نسخه) و دیسک 20–40 GB .
- نصب ابزارهای مورد نیاز در Guest
نصب Microsoft Visual C++ redistributables، Python (برای agent)، مرورگرها، Office (در صورت هدفگیری مستندات) و هر ابزاری که رفتار «کاربر واقعی» را شبیهسازی کند.
نکته: هرچه محیط guest طبیعیتر باشد (مثلاً اسناد نمونه، history مرورگر، user accounts) شانس نمایش رفتار واقعی بدافزار بالاتر میرود.
- نصب و کانفیگ Cuckoo Agent روی Guest
روی Guest، Python نصب کنید و فایل agent.py را از مخزن Cuckoo کپی کنید.
اجرای دستی agent برای تست:
# در ویندوز (PowerShell) python agent.py --ip <HOST_IP> --port 9001
✔️ برای حالت دائم: agent را بهصورت سرویس یا task scheduled در ویندوز نصب کنید (ابزارهایی مثل nssm یا sc create کمک میکنند) تا بعد از بوت فعال باشد.
✔️ در cuckoo.conf آدرس و پورت agent را ست کنید تا host بتواند به آن وصل شود.
فعالسازی snapshot
- با libvirt/QEMU : قبل از هر تحلیل از VM snapshot بگیرید:
virsh snapshot-create-as --domain vmname pre-analysis "pre analysis snapshot"
-
با VirtualBox :
VBoxManage snapshot "vmname" take "pre-analysis"
تضمین کنید که Cuckoo میتواند snapshot ایجاد یا استفاده کند (در برخی کانفیگها Cuckoo خودش snapshot میگیرد؛ در برخی باید دستی انجام شود).
پیکربندی شبکه (ایزوله و قابل کنترل)
شبکه ایزوله برای Guest
ایجاد یک شبکه NAT اختصاصی یا bridge جداگانه که فقط برای محیط تحلیل استفاده شود. این شبکه باید جدا از شبکهproduction باشد تا نمونهها به منابع واقعی دسترسی نداشته باشند.
خروجی کنترلشده برای تحلیل HTTPS و DNS
راهاندازی mitmproxy یا Squid به عنوان پروکسی کنترلشده برای دیدن ترافیک HTTPS (با نصب CA روی Guest). این کمک میکند تا ترافیک رمزنگاریشده را مشاهده یا لاگ کنید.
✔️ مثال مسیر ساده: Guest از proxy host استفاده کند؛ host ترافیک را با mitmproxy دریافت و ذخیره کند.
کپچر ترافیک (PCAP)
✔️ روی host ترافیک شبکه VM را با tcpdump کپچر کنید:
sudo tcpdump -i virbr0 -w /opt/cuckoo/storage/pcap/<analysis_id>.pcap
✔️ در config Cuckoo آدرس و دستور کپچر را تعیین کنید تا فایل PCAP به گزارش پیوست شود.
DNS امن
برای جلوگیری از بلعیدن DNS واقعی توسط نمونهها، از DNS sinkhole یا DNS local resolver استفاده کنید که دامنههای مشکوک را به IP داخلی هدایت کند.
آزمون اولیه — اجرای اولین تحلیل
راهاندازی سرویسها
# به عنوان کاربر cuckoo source /opt/cuckoo/venv/bin/activate cuckoo # یا cuckoo web (بیشتر ورژنها UI دارند) cuckoo web
ارسال نمونه برای آنالیز
cuckoo submit /path/to/testfile.exe
یا از UI وب استفاده کنید و یک فایل benign (مثل EICAR) یا نمونه کنترلشده را آپلود کنید.
بررسی وضعیت و لاگها
✔️ لاگهای Cuckoo در ~/.cuckoo/log/ یا /opt/cuckoo/log/ قرار دارند. خطاها، timeoutها یا مشکلات agent را از لاگ بررسی کنید.
✔️ بعد از اتمام، گزارش HTML/JSON در مسیر storage/analyses/<id>/ قابل دسترسی است.
پشتیبانگیری و ریاستور (Snapshot & Restore)
روال استاندارد قبل و بعد از تحلیل
✔️ قبل از اجرای هر نمونه: از snapshot «clean» اطمینان حاصل کنید (یا از snapshot جدید بگیرید).
✔️ بعد از اتمام تحلیل: VM را به snapshot پاک بازگردانید:
# libvirt virsh snapshot-revert --domain vmname --snapshotname pre-analysis # VirtualBox VBoxManage snapshot "vmname" restore "pre-analysis"
- این کار تضمین میکند نمونه در VM باقی نماند و محیط برای تحلیل بعدی آماده باشد.
نکات اتوماسیون
Cuckoo معمولاً عملیات snapshot/restore را خودکار انجام میدهد در صورتیکه provider را درست تنظیم کرده باشید؛ اما برای آزمایش سریع، داشتن اسکریپتهای پشتیبان برای revert توصیه میشود.
نکات امنیتی در محیط آزمایشی
✔️ هرگز نمونههای واقعی را روی شبکهproduction یا اینترنت عمومی اجرا نکنید.
✔️ حذف یا محدود کردن دسترسی اینترنتی VMها تا زمانی که ترافیک را از طریق proxy کنترلشده عبور ندهید.
✔️ لاگها و نمونهها را در مکان امن ذخیره کنید و دسترسیها را محدود کنید.
✔️ از snapshots متعدد استفاده کنید (pre-analysis, post-update) تا امکان برگشت به حالتهای مختلف وجود داشته باشد.
✔️ اگر قرار است نمونهها خارج از سازمان برای سرویسهای تجاری ارسال شوند، مسائل حقوقی و حریم خصوصی را بررسی کنید.
عیبیابی رایج و راهحلهای سریع
Agent وصل نمیشود:
چک کنید agent روی Guest در حال اجراست و پورت و IP در cuckoo.conf مطابق است. همچنین فایروال ویندوز را چک کنید. پورت agent را باز کنید یا rule اضافه کنید.
Snapshot موفق نیست / خطا در provider :
دسترسی libvirt/virtualbox را بررسی کنید، مطمئن شوید کاربر cuckoo مجوز لازم را دارد. هم چنین لاگهای libvirt /var/log/libvirt/ را بررسی کنید.
هیچ ترافیکی capture نمیشود:
رابط شبکه host که برای VM تعریف شده را چک کنید (virbr0 یا نام bridge).
دستور tcpdump -i <iface> را اجرا کنید تا ببینید بستهها واقعا عبور میکنند یا خیر.
خطای permission هنگام ثبت PCAP یا ذخیره گزارش:
مالکیت و دسترسیهای دایرکتوری storage را برای کاربر cuckoo تنظیم کنید:
sudo chown -R cuckoo:cuckoo /opt/cuckoo/storage
ادغامها: YARA، PCAP، API و یکپارچگی با دیگر ابزارها
✔️YARA : Cuckoo امکان اتصال به YARA را دارد، اما معمولاً نیاز به پیکربندی دستی و قراردادن قواعد در مسیر مناسب یا اضافه کردن پلاگین است. جامعه و issues نشان میدهند گاهی برای فعالسازی/نمایش قواعد در گزارش باید فولدرها و تنظیمات را درست کنید.
✔️PCAP : Cuckoo ترافیک شبکه را با tcpdump یا ابزار مشابه ذخیره میکند؛ فایل PCAP در گزارش پیوست میشود تا تحلیل ترافیک با Wireshark یا Zeek ممکن شود.
✔️API / Automation : Cuckoo API اجازه ارسال نمونه، مانیتورینگ وضعیت تحلیل و دریافت گزارشها را میدهد؛ مناسب برای اتوماسیون در pipelines تحلیل (مثلاً ارسال از SIEM یا E-mail gateway).
✔️CAPE و مشتقات: CAPE (که از Cuckoo منشعب شده) برای استخراج payload/config طراحی شده و اگر هدف شما استخراج خودکار کانفیگهاست، CAPE منبع خوبی است.
تکنیکهای فرار از سندباکس و چگونگی مقابله
محبوبترین تکنیکهای فرار
✔️چکهای محیطی: جستجوی نام VM، نام کاربری، وجود ابزارهای تحلیل یا تاریخ/ساعت غیرمعمول.
✔️تاخیر هوشمند: منتظر ماندن (sleep) برای دور زدن تحلیلهای زمانی کوتاه.
✔️تعامل با کاربر: منتظر کلیک یا حرکت ماوس/صفحهکلید ماندن.
✔️کدگذاری/کینگینگ محیطی: payload در صورت نبود شرایط محیطی مناسب رمزگشایی نمیشود.
تحقیقات و خلاصههای آکادمیک و صنعتی چندین روش دستهبندیشده برای این تکنیکها دارند.
مقابلههای عملی
- افزایش تعامل شبیهسازیشده: اسکریپتهای شبیهسازی ماوس/کیبورد، کلیک روی پنجرهها، باز کردن فایلها و اجرای برنامههای روزمره. (مستندات و مقالات روشهای «کاربر مصنوعی» را پیشنهاد میکنند).
- زمانبندی طولانیتر و چندمرحلهای: اجرا با تاخیرهای متغیر، چندبار اجرای نمونه با snapshotهای متفاوت.
- تغییر fingerprint VM : مخفی کردن نشانگرهای VM (مثلاً تنظیم نامها، حذف ابزارهای تحلیل از registry، استفاده از ماشینهای فیزیکی یا bare-metal در موارد خاص).
- استفاده از چندین سناریو/ VM : اجرای نمونه در VMهای مختلف با کانفیگ متفاوت تا شانس نشان دادن رفتار واقعی افزایش یابد.
- ترکیب با آنالیز استاتیک: قبل از اجرا، بررسی استاتیک (آنتیدیباگینگ، unpacking) تا نشانههایی از رفتار مشکوک استخراج شود.
بهترین شیوهها(best practice) برای محیطهای تولیدی
✔️ ایزوله کامل شبکه: خروجی شبکه را از طریق پروکسی قابل کنترل عبور دهید و دسترسی به اینترنت واقعی را محدود کنید.
✔️ لاگینگ/پایش متمرکز: ارسال لاگها به SIEM برای همبستگی با رخدادها.
✔️ مدیریت آپدیتها: Cuckoo و VMs را مرتب بهروزرسانی کنید اما snapshots را قبل از بهروزرسانی نگه دارید.
✔️ حداقل دسترسی: فقط افرادی که نیاز دارند به UI/API دسترسی دهند.
✔️ پشتیبانگیری از نمونهها و گزارشها: برای تحلیلهای آینده و تولید IoC ذخیره کنید.
کیسهای کاربردی (نمونه عملی کوتاه)
مثال: تحلیل یک Word Macro مشکوک
- نمونه را در Cuckoo آپلود کنید.
- مشاهده اجرای PowerShell از داخل Word در گزارش (process tree).
- شبکه: اتصال به دامنه ناشناس که در PCAP قابل مشاهده است.
- YARA rule محلی که روی رشتههای runtime تطابق داد و هشدار داد.
- نتیجه: استخراج IOCs (domain, IP, hash), هشدار به تیم SOC و بلاک در firewall/Proxy.
مقایسه Cuckoo با دیگر گزینهها (خلاصه)
✔️ Cuckoo (open-source) : انعطافپذیر، قابل توسعه، مناسب برای مراکز با تیم فنی، نیاز به نگهداری و کانفیگ دارد.
✔️ CAPE : مشتق از Cuckoo، تمرکز بر استخراج payload/config و اتوماسیون بیشتر، گزینه مناسب وقتی بخواهید استخراج کانفیگ خودکار داشته باشید.
✔️Any.Run / Joe Sandbox / Hybrid Analysis (تجاری/سرویس): رابط کاربری، گزارشهای غنی و نگهداری شده. هزینه و محدودیتهای حریم خصوصی نمونهها ممکن است وجود داشته باشد. مقایسههای سال ۲۰۲۴–۲۰۲۵ نشان میدهد هرکدام مزایا و معایب خاص خود را دارند (هزینه، دقت، سرعت، قابلیت تعامل).
نمونه سریع: قانون YARA ساده و نحوه قرار دادن در Cuckoo
نمونه YARA (مثال):
rule suspicious_powershell_strings {
meta:
author = "این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید"
description = "Detect suspicious PowerShell download/exec patterns"
strings:
$ps1 = /powershell\s+-nop\s+-w/
$url = /(http|https):\/\/[^\s'"]+/
condition:
all of them
}
نحوه اضافه کردن: قانون را در فایل .yar ذخیره کرده، آن را در فولدر rules یا مسیر اعلامشده در cuckoo.conf قرار دهید و سرویس Cuckoo را ریاستارت کنید تا در گزارشها ظاهر شود (بسته به ورژن و توزیع ممکن است مسیر دقیق متفاوت باشد).
(نکته: community issues درباره چگونگی نمایش در گزارشها بحث دارند).
نکات عملی و ترفندهای تکمیلی
✔️ برای بایپس کردن sleep-based evasion، از پارامترهای runtime برای شبیهسازیهای طولانیتر استفاده کنید.
✔️ ترکیب آنالیز استاتیک (strings, pefile, unpackers) با خروجی Cuckoo معمولاً بیشتر از هرکدام به تنهایی مفید است.
✔️ برای تحلیلهای حساس، نمونهها را در شبکه داخلی نگهدارید (نه سرویسهای عمومی آنلاین) تا ریسک لو رفتن دادهها کم شود.
✔️ از CAPE برای استخراج configuration (مثلاً در families مثل Emotet/TrickBot) استفاده کنید چون اتوماسیون استخراج config در آن قویتر است.
نتیجهگیری
Cuckoo Sandbox ابزاری قدرتمند و متنباز برای تحلیل پویا است که با پیکربندی و نگهداری مناسب میتواند ستون فقرات فرایند تحلیل بدافزار در یک تیم امنیتی باشد. برای استخراج حداکثری اطلاعات و مقابله با تکنیکهای فرار، ترکیب Cuckoo با قواعد YARA، تحلیل استاتیک و (در صورت نیاز) استفاده از مشتقات تخصصی مثل CAPE یا سرویسهای تجاری توصیه میشود.


