Malware Analysis — Dynamic Analysis : Cuckoo Sandbox

WIRAPONG PETSHAGUN
10 min readMay 27, 2019

--

Cuckoo sandbox : https://cuckoosandbox.org/

ถ้าหากพูดถึงวิธีการทำ Malware analysis ในการทำงานด้าน Cyber security แล้วนั้น หลายๆท่านคงจะรู้จักกับ Sandbox ที่ใช้ในการตรวจสอบไฟล์โดยการ Execute,Run ไฟล์เพื่อจะตรวจว่าไฟล์นั้นเป็น Malicious files หรือไม่ โดยดูจากพฤติกรรมการทำงาน

จากการที่ผมได้ทำด้าน Malware analysis โดยได้ทดลองเล่นลองใช้ Sandbox สักระยะนึงแล้วจึงอยากจะมาแชร์ประสบการณ์ในการ Deploy sandbox สำหรับการทำ Dynamic malware analysis โดยใช้ Cuckoo sandbox ที่เป็น Open-source ซึ่งง่ายต่อการทำ Dynamic malware analysis และได้ผลลัพธ์ที่รวดเร็ว

Benefits of sandbox

APT life cycle : https://en.wikipedia.org/wiki/Advanced_persistent_threat

ในหลายๆครั้งนั้น Anti-virus เองไม่สามารถตรวจจับ Malware ได้ เนื่องจากเป็น Signature-based หรือ Attacker อาจทำการ Malware ที่ถูกเขียนขึ้นมาเอง และมีการทดสอบ เพื่อพยายามหลบเลี่ยง Anti-virus อย่างเช่น กลุ่มของ Advanced persistent threat หรือที่เราเรียกกันย่อๆว่า APT Groups จะมี Life cycle ในการพัฒนา Malware ซึ่งมีการทดสอบกับ Anti-virus ต่างๆว่าสามารถตรวจจับได้หรือไม่ (Test for detection) ซึ่งทาง Attacker ก็อาจไม่ได้ทดสอบทุกๆยี่ห้อของ Anti-virus อาจทดสอบเฉพาะ Anti-virus ของบริษัทที่ Target

ยกตัวอย่างการหาว่าบริษัทที่เราสนใจใช้ Anti-virus ตัวใดอยู่ผ่านการ พูดคุยเริ่มจากหาเบอร์โทร และโทรเข้าไปเนียนขายของ

ฮัลโหล สวัสดีครับ พอดีเรามาจากบริษัท xxx เรามี Product ตัว Anti-virus ยี่ห้อ xxx ไม่ทราบว่าสนใจไหมครับ หรือทางบริษัทคุณมี Anti-virus ยี่ห้อไหนใช้อยู่ไหม

ดังนั้น Sandbox นั้นจะช่วยในเครื่องของการวิเคราะห์ Malware ที่ไม่สามารถตรวจจับได้ด้วย Tools อื่นๆ ซึ่งโดยส่วนมากแล้วจะมีการ Integrate ร่วมกับ Anti-virus โดยหากไฟล์ไหนที่ Anti-virus ไม่สามารถตรวจจับได้หรือไม่แน่ใจว่าเป็น Malware หรือไม่ Anti-virus ก็จะทำการส่ง ไฟล์นั้นไปที่ Sandbox ให้ทำการ Execute,Run บนเครื่อง Guest ของ Sandbox เพื่อทำการวิเคราะห์ และหากพบว่าเป็น Malware ก็จะส่ง Update signatures กลับมาที่ Anti-virus เพื่อ Quarantine หรือ Block ไม่ให้สามารถทำการ Execute,Run ได้บนเครื่อง Client นั่นเอง

Sandbox environment

Sandbox environment : https://www.guidingtech.com/56168/protect-windows-10-pc-shade-sandbox/

Sandbox หรือหากแปลตรงตัวมันก็คือ กระบะทราย

ที่เรียกแบบนั้นเป็นเพราะว่า การทำ Malware Analysis ผ่าน Sandbox นั้นจะเกิดการ Execute,Run ขึ้นจริงดังนั้น Environment จะต้องมีรูปแบบเป็น Isolated Network ที่แยกออกมาจาก Network อื่นๆ เพื่อป้องกันไม่ให้เกิดผลกระทบ และไม่ให้เกิดการแพร่กระจายของ Malware ไปยังเครื่องอื่นๆที่อยู่ใน Network เดียวกัน ( ดังนั้น ห้ามไป Build sandbox บน Network อื่นๆที่ใช้งาน หรือ Production เป็นอันขาด ! ! )

นอกจากนั้นจะต้องมีการทำ Snapshot ไว้ที่เครื่อง Guest ที่ใช้ในการ Execute,Run ไฟล์ด้วย เพื่อป้องกันไม่ให้ Malware ค้างอยู่ในเครื่อง โดยจะต้องมีการ Restore snapshot ทุกครั้งหลังจากที่ Execute,Run ไฟล์เสร็จ

โครงสร้างโดยทั่วไปของการทำ Dynamic Malware Analysis โดยใช้ Sandbox จะประกอบไปด้วย

  • Sandbox host
    ( ทำหน้าที่ในการวิเคราะห์ และเก็บผลการวิเคราะห์ )
  • Guest
    ( ทำหน้าที่ในการ Execute,Run ไฟล์ ซึ่งอาจมีได้หลาย OS เนื่องจากชนิดของไฟล์นั้นมีหลากหลายทั้งบางไฟล์อาจจะใช้ได้เพียงบาง OS )

How it works ?

การทำงานของ Cuckoo Sandbox มีดังนี้

  1. เริ่มจากการ Submit files ไปที่ Sandbox host จากนั้นจะมีการส่งไฟล์ไป Execute หรือ Run ที่เครื่อง Guest
  2. Sandbox server จะทำการ Restore snapshot ที่เครื่อง Guest ก่อนเพื่อทุกครั้งเพื่อทำให้เป็นสภาวะที่ปกติ (ยังไม่ติด Malware)
  3. ทำการ Monitor/Capture ค่าต่างๆที่อยู่บนเครื่องเช่น Registry, Process, Files, Network และนำไฟล์ที่ต้องสงสัย (Suspicious files) มา Execute หรือ Run เพื่อดูพฤติกรรมการทำงานของไฟล์นั้นๆ (Behavior) ว่ามี Process การทำงานอย่างไรบ้าง
  4. ทำการ Matching signaures ว่าการลักษณะทำงานของไฟล์ที่ได้ Capture มานั้น มีลักษณะเข้าข่ายว่าเป็น Malicious files หรือไม่ และได้ผลลัพธ์เป็น Report ออกมา

Cuckoo sandbox features

สำหรับตัว Cuckoo sandbox นั้นเป็น Open-source software ที่สามารถนำมาใช้งานได้ฟรี ซึ่งมี Features หลัก ดังนี้

  • รองรับการ Analyze files ได้หลายประเภท ประกอบไปด้วย executables, office documents, pdf files, emails, และอื่นๆ
  • สามารถ Dump เพื่อดู Network traffic และ Analyze ได้
  • สามารถ Dump memory ของแต่ละ Process และทำ Memory analysis ได้ โดยใช้ Volatility ( Open-Soure software ) ซึ่งเราสามารถ Download ไฟล์ Memory dump ของแต่ละ Process เพื่อนำตรวจสอบเพิ่มเติมได้ด้วย
  • สามารถทำ Static Analysis สำหรับดูข้อมูลของ Strings, Version Infos, Imports library ต่างๆได้
  • สามารถดู Process tree ได้ว่ามีลักษณะการทำงานอย่างไรได้บ้าง รวมถึงการใช้ Command line ที่ใช้ใน Process ต่างๆ
  • สามารถดูข้อมูลการ์ Read/Write ของไฟล์ รวมถึงการเปลี่ยนแปลงของ Registry ที่เกิดขึ้น
  • สามารถทำ Capture Screenshots เพื่อดูว่าในระหว่างที่รันไฟล์นั้นมี UI อย่างไรบ้าง
  • หลังจากที่ Analyze ทุกอย่างเสร็จ สามารถให้คะแนนออกมาเป็น Score ว่ามีลักษณะที่เป็น Malware มากน้อยเพียงใด

Installation — Preparing the host

เรามาเริ่มลงมือกันเลยดีกว่า โดยผมจะแยก Part ของการ Installation ตาม Document ของ Cuckoo เลยนะครับ (Cukcoo installation document)

เริ่มจากฝั่ง Host หรือ Serverโดยเราจะใช้ Ubuntu กันนะครับ ซึ่งตัว Cuckoo นั้นถูกเขียนด้วย Python ซึ่ง Fully support ด้วยการรันโดยใช้ Python version : 2.7 เท่านั้น

1. Requirements

เริ่มจากติดตั้งสิ่งต่างๆที่จะต้องใช้ตามด้านล่างครับครับ

ติดตั้ง Python libraries ที่จำเป็นต้องใช้

$ sudo apt-get install python python-pip python-dev libffi-dev libssl-dev
$ sudo apt-get install python-virtualenv python-setuptools
$ sudo apt-get install libjpeg-dev zlib1g-dev swig

ติดตั้ง MongoDB เพื่อใช้งาน Web interface (Django-based)

$ sudo apt-get install mongodb

ติดตั้ง PostgreSQL สำหรับใช้งานเป็น database

$ sudo apt-get install postgresql libpq-dev

และติดตั้ง Pydeep โดยจะต้องมี libfuzzy-dev ด้วยในการใช้ Pydeep (หากไม่มี git บนเครื่องให้ install เพิ่มเติมตามด้านล่างครับ)

$ sudo apt-get install git
$ sudo apt-get install ssdeep libfuzzy-dev
$ sudo -H pip install git+https://github.com/kbandla/pydeep.git

ติดตั้ง Virtualization Software

จากนั้นจะต้องติดตั้ง Virtualization Software สำหรับการใช้งานจัดการเครื่อง Guest ที่จะใช้สำหรับ Execute,Run ไฟล์ต่างๆ เพื่อให้ง่ายเราเลือกติดตั้ง Virtualbox ครับ

$ sudo apt-get install virtualbox

ติดตั้ง tcpdump

หลังจากนั้นติดตั้ง tcpdump สำหรับใช้ dump ดู network activity และหากเราใช้ default CWD directory จะต้อง Disable ตัว AppArmor เนื่องจากตัว CWD ที่เป็น dafault เนี่ยมันอยู่ที่ ~/.cuckoo ซึ่งเวลา ทำการ dump traffic เสร็จ จะไปเก็บไว้ภายใน ~/.cuckoo/storage/analyses/task_id/dump.pcap หาก Enable ตัว AppArmor ไว้ tcpdump จะไม่มีสิทธิ์เขียนไฟล์ลงไปที่ dot-directories ที่อยู่ใน Home ได้ ดังนั้นจะต้องทำการ Disable ตัว AppArmor เพิ่มเติม ตามคำสั่งด้านล่างครับ

$ sudo apt-get install tcpdump apparmor-utils
$ sudo aa-disable /usr/sbin/tcpdump

และ tcpdump นั้นต้องใช้สิทธิ์ root แต่เราไม่ต้องการให้ cuckoo นั้น Run ด้วย สิทธิ์ root ดังนั้นจะต้อง add group ให้มันครับ

$ sudo groupadd pcap
$ sudo usermod -a -G pcap cuckoo
$ sudo chgrp pcap /usr/sbin/tcpdump
$ sudo setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump

ติดตั้ง Volatility

หลังจากนั้นติดตั้ง Volatility ที่ใช้สำหรับการ Analyze ตัว Memory ที่ Dump มาครับ

$ sudo -H pip install git+https://github.com/volatilityfoundation/volatility.git

ติดตั้ง M2Crypto

ติดตั้ง M2crpto library ซึ่งต้องใช้ swig หากไม่มีก็ติดตั้งเพิ่มเติมตามคำสั่งด้านล่างครับ

$ sudo apt-get install swig
$ sudo pip install m2crypto

2. Installing Cuckoo

จากนั้นเราเริ่มทำการติดตั้ง Cuckoo กันครับ ซึ่งเราจะต้องใช้ User บนเครื่องสำหรับ รัน Cuckoo และ Virtualbox เป็น User เดียวกันเท่านั้นนะครับ เพื่อให้ Cuckoo สามารถไป Identify และ Launch ตัว Virsualbox ได้

เพิ่มให้ user นั้นเข้าไปที่ group vboxusers (เนื่องจากเราใช้ Virtualbox จึงเป็น group นี้) จากนั้นติดตั้ง cuckoo ตามคำสั่งด้านล่างครับ

$ sudo usermod -a -G vboxusers cuckoo
$ sudo pip install -U pip setuptools
$ sudo pip install -U cuckoo

3. Cuckoo Working Directory ( CWD )

เอาละ หลังจากที่เราติดตั้ง Cuckoo ไปเรียบร้อยแล้ว เรามาทำการพักกันสักนิด และมาทำความรู้จักกับ Cuckoo Working Directory ( CWD ) กันก่อน จริงๆแล้วมันคือ Directory ตัวที่เก็บไฟล์ต่างๆดังนี้

  • Configuration
  • Cuckoo Signatures
  • Cuckoo Analyzer
  • Cuckoo Agent
  • Yara rules
  • Cuckoo Storage (where analysis results go)
  • และอื่นอีกมากมายๆ

โดย CWD จะถูกสร้างขึ้นมาอัตโนมัติ หลังจากที่เราใช้คำสั่ง cuckoo ครั้งแรก โดย default นั้นจะอยู่ที่ ~/.cuckoo

เรามาสร้างกันเลย

$ cuckoo -d

เราสามารถสร้างรวมถึงรัน cukcoo ได้หลายๆ CWD สำหรับใช้งาน configurations หลายๆแบบด้วยครับ วิธีทำก็ไม่ยาก แต่ผมขอข้ามไป ใช้ CWD ที่เป็น default อยู่ที่ ~/.cuckoo นะครับ หากใครสนใจสร้างและรันหลายๆ CWD สามารถอ่านเพิ่มเติมได้ที่ Cuckoo Working Directory ( CWD ) เลยครับ

จากนั้นอัพเดท Signatures จาก community ครับ

$ cuckoo community

4. Configuration

Configuration files ต่างๆของ Cuckoo จะอยู่ที่ $CWD/conf นะครับ ซึ่งของเราใช้ CWD เป็น default ก็จะอยู่ที่ /home/cuckoo/.cuckoo/conf ครับ

หลักๆจะประกอบไปด้วย Configuration files ที่เราจะต้อง SET ดังนี้

  • cuckoo.conf
    สำหรับ config ทั่วไป
# เลือกว่าเราจะใช้ virtual ตัวไหน
machinery = virtualbox
[resultserver]
# ไอพีของเครื่อง host ที่จะใช้ run
ip = 192.168.56.1
# พอร์ทของเครื่อง host ที่จะใช้ run
port = 2042
  • auxiliary.conf
    สำหรับ config ตัว auxiliary modules
# เปิด tcpdump 
enabled = yes
# path ของตัว tcpdump
tcpdump = /usr/sbin/tcpdump
  • virtualbox.conf
    สำหรับ config เกี่ยวกับ virtualization ที่เราจะใช้ในที่นี้คือ virtual box
# network interface ที่เราจะใช้กับ virtual box
interface = vboxnet0
# ชื่อเครื่องที่เราจะใช้รันเป็น guest เราสามารถใช้ guest หลายเครื่องได้โดยใส่ comma
# เช่น cuckoo1,cuckoo2
machines = cuckoo1
[cuckoo1]
# label ของเครื่อง Guest ใช้ใน virtualbox
label = cuckoo1
# OS ของเครื่อง Guest ใช้ใน virtualbox
platform = windows
# IP ของเครื่อง Guest ใช้ใน virtualbox
ip = 192.168.56.101
# ระบุชื่อของ Snapshot สำหรับการ Restore ของเครื่อง Guest ใช้ใน virtualbox
snapshot = fresh
  • reporting.conf
    สำหรับการ config เกี่ยวกับ report หลังจาก analyze
[mongodb]
# enable mongodb สำหรับการใช้งาน web interface ของ cuckoo
enabled = yes
  • memory.conf
    สำหรับการทำ memory analysis นั้นจะใช้ volatility ซึ่งมี plugins เยอะมาก และบาง plugins นั้นใช้เวลาค่อนข้างนาน หากต้องการใช้จะต้องทำการ enable ดังนี้

processing.conf

[memory]
enabled = yes

cuckoo.conf

memory_dump = yes

memory.conf

สำหรับ guest_profile อื่นๆสามารถดูเพิ่มเติมได้ที่ Volatility ครับ โดยเราจะใช้ Guest ที่เป็น Windows 7 SP1 x86 จึงใช้เป็น Win7SP1x86 ครับ และควรกำหนดให้ลบ memdump ออกหลังจากทำงานเสร็จ เพื่อประหยัดพื้นที่บนเครื่องครับ และในไฟล์ config นี้เราสามารถเลือก enable/disable plugin ต่างๆของ volatility ได้ตามหัวข้อต่างๆเลยครับ เช่น malfind, pslist, dllist, modscan, netscan

# Basic settings
[basic]
# กำหนด profile ของเครื่อง guest สำหรับการใช้ volatility
guest_profile = Win7SP1x86
# กำหนดให้ลบ mem ที่ได้ทำการ dump ออกหลังจากการใช้ volatility เสร็จ
delete_memdump = yes

5. Network Routing

เราจะใช้ host-only adapter สำหรับ guest ที่อยู่ใน virtualbox เพื่อแยก network ออกและใช้ iptables ในการสร้าง rules , nat สำหรับการ connection ตามคำสั่งด้านล่าง

สำหรับ interfaces ที่ใช้สำหรับออก internet นั้นจะต้องดูให้ดี ของผมเป็น ens33 ซึ่งถ้าของเพื่อนๆไม่เหมือนกันจะต้องเปลี่ยนด้วยครับ

เช็ค interfaces ที่ใช้สำหรับออก internet ของผมใช้ ens33
$ vboxmanage hostonlyif create
$ vboxmanage hostonlyif ipconfig vboxnet0 --ip 192.168.56.1
$ sudo iptables -t nat -A POSTROUTING -o ens33 -s 192.168.56.0/24 -j MASQUERADE

# Default drop.
$ sudo iptables -P FORWARD DROP

# Existing connections.
$ sudo iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

# Accept connections from vboxnet to the whole internet.
$ sudo iptables -A FORWARD -s 192.168.56.0/24 -j ACCEPT

# Internal traffic.
$ sudo iptables -A FORWARD -s 192.168.56.0/24 -d 192.168.56.0/24 -j ACCEPT

# Log stuff that reaches this point (could be noisy).
$ sudo iptables -A FORWARD -j LOG
$ echo 1 | sudo tee -a /proc/sys/net/ipv4/ip_forward
$ sudo sysctl -w net.ipv4.ip_forward=1

ต้องการให้ iptables เป็น Permanent (แบบ Reboot แล้วใช้งานได้เหมือนเดิมไม่หาย)จะต้องลง iptables-persistent ตามนี้

# apt-get install iptables-persistent

ซึ่งหลังจากที่เรากำหนด rules สำหรับ iptables เสร็จ จะต้องใช้คำสั่งเพื่อบันทึก rules สำหรับ iptables ดังนี้

# sudo su root
# iptables-save > /etc/iptables/rules.v4

และหากเราต้องการให้ IP Forwarding เป็น Permanent (แบบ Reboot แล้วใช้งานได้เหมือนเดิมไม่หาย) จะต้องไปแก้ค่าที่ไฟล์ /etc/sysctl.conf ดังนี้

net.ipv4.ip_forward = 1

Installation — Preparing the guest

ต่อกันด้วยการสร้างเครื่อง guest ครับ โดยเราจะใช้ Windows7 32 bit ครับ เริ่มจาก

1. เปิด Virtual box ขึ้นมาด้วยคำสั่ง

$ virtualbox
Virtualbox Manager

2. สร้าง Virtual Machine สำหรับ Guest

โดยคลิกที่ new จากนั้น ใส่ Name เป็น cuckoo1
(ให้ตรงกับที่เราไป config cuckoo ไว้) และเลือก Version เป็น Windows 7 (32-bit)

3. ใส่ ISO สำหรับ Install windows

จากนั้น Next และแบ่งพื้นที่สร้าง Disk ให้เสร็จ จากนั้นให้ไปที่
Settings > Storage > Empty > Virtual Optical Disk File..​
จากนั้นเลือกไฟล์ ISO สำหรับติดตั้ง Windows ตามภาพด้านล่าง

4. ตั้ง Network Adapter

ตั้ง Network Adapter โดยไปที่ แถบ Network และตั้งค่าดังนี้
Attached to : Host-only Adapter
Name : vboxnet0

จากนั้นกด OK และ Start เครื่อง Guest ขึ้นมา และติดตั้ง Windows ให้เรียบร้อย

5. ตั้ง IP, Subnet Mask, Gateway, DNS

เข้าไปที่

Control Panel\Network and Internet\Network Connections 

และเลือก Local Area Connection > Properties > Internet Protocol Version 4 จากนั้น ตั้งค่าตามภาพด้านล่างครับ (ตามที่เราได้ config ไว้ใน cuckoo conf ครับ)

IP Adress : 192.168.56.101
Subnet mask : 255.255.255.0
Default gateway : 192.168.56.1
DNS : 8.8.8.8
Network config

จากนั้นเราลองทดสอบ Connection ดูครับ

ทดสอบ Connection

6. ทำการติดตั้ง VirtualBox Guest Additions

ติดตั้ง VirtualBox Guest Additions บนเครื่อง Guest เพื่อที่จะสามารถถ่ายโอนไฟล์จากเครื่อง host ไปที่ guest ได้ ไปที่
Devices > Insert Guest Additions CD image…

Insert Guest Additions CD image

จากนั้นจะมี Drive CD มา Mount ที่เครื่อง จากนั้นให้ทำการติดตั้งให้เรียบร้อยโดย ใช้ไฟล์ VBoxWindowsAdditions.exe

Install VirtualBox Guest Additions

หลังจาก Install เรียบร้อยแล้วจะต้องทำการ Restart 1 รอบเพื่อให้สามารถใช้งานได้

7. ทำการติดตั้ง Python และ Pillow

ต้องเลือกใช้ Versions ของ Python และ Pillowให้ตรงกับ OS versions ที่ใช้ด้วย

โดยผมนั้นใช้ Windows 7 SP1 (32-bits) ดังนั้นผมจะใช้
Python : Windows x86 MSI Installer (2.7.0)
Pypill : Pillow-6.0.0.win32-py2.7.exe

8. ติดตั้ง Additional Software

ทำการติดตั้ง Additional Software ที่จะใช้สำหรับการ Execute, Run ไฟล์ต่างๆ เช่น
Browsers, PDF readers, Office suites หรือโปรแกรมอื่นๆที่จะใช้ในการเปิดไฟล์ และปิด Auto-Update ของโปรแกรมต่างๆด้วย

9. Turn off Firewall และ UAC

เข้าไปปิด Firewall ที่ :

Control Panel\System and Security\Windows Firewall\Customize Settings
Turn off windows firewall

และเข้าไปปิด UAC ที่ User Account Control Settings > Never notify

Disable UAC

10. ติดตั้ง Agent บนเครื่อง Guest

โดย Path ของ Agent นั้นอยู่บนเครื่อง Host ใน $CWD/agent/​ ซึ่งของเรานั้นจะเป็น

~/.cuckoo/agent

ให้ทำการ Copy agent ไปที่เครื่อง Guest โดยเราจะใช้ Shared Folder, Shared Clipboard หรือ Drag and drop ก็ได้ (ใช้ได้หลังจากลง VirtualBox Guest Additions) โดยตั้งเป็น Bidirectional

Enable Drag and Drop

จากนั้น rename ไฟล์ agent.py เป็น agent.pyw เพื่อ Run แบบไม่ให้มี Console window ขึ้นมา จากนั้นทำการ Double-click เพื่อ Run ขึ้นมา

Cuckoo agent

11. ทำ Snapshot เครื่อง Guest

ทำ Snapshot เครื่อง Guest โดยเลือกที่ Machine > Take Snapshot

Take snapshot

ตั้งชื่อ Snapshot ให้เป็น fresh (ตาม config cuckoo)

Snapshot

จากนั้นปิด guest และเลือก Power off the machine และ Restore current snapshot ‘fresh’

Power off

Starting Cuckoo

หลังจากที่เราติดตั้งทั้ง Host และ Guest เสร็จหมดแล้ว มาเริ่มใช้งานกันเลยครับ

1. Start cuckoo

$ cuckoo -d
$ cuckoo web runserver

2. ใช้งาน Web interface

เข้าไปที่ http://localhost:8000 หรือ http://127.0.0.1:8000 เพื่อใช้งาน Web Interface จะได้หน้าตาประมาณนี้

3. Submit files

สามารถ Sumbit files ได้ที่หน้านี้ หรือจะกด Submit ที่ tab ด้านบนก็ได้ โดยหากเลือก Submit files โดยใช้ tab ด้านบนจะสามารถใช้เป็นค่า URL หรือ Hash ของไฟล์ได้ด้วย

โดยเราจะไปหา Malware มาลอง Submit กัน ผมจะใช้ wannacry (theZoo/malwares/Binaries/Ransomware.WannaCry)โดยใช้ Repository ของ theZoo ซึ่งเป็นแหล่งที่เก็บ Malware ไว้เยอะมากเราสามารถเอามา Analyze ได้เลย

ควรระวัง ห้ามพลาดไปทำให้มัน Execute หรือ Run นะครับบนเครื่องอื่นที่ไม่ใช่ Guest นะครับ (เขาอัด zip และใส่ password มาให้เบื้องต้นแล้ว)

หลังจากเราทำการ Submit file จะเข้าสู่หน้า กำหนด Options โดยจะแบ่งออกเป็น 3 panel หลักประกอบไปด้วย

  • Global Advanced Options (ด้านซ้าย)
  • File List (ตรงกลาง)
  • Options ของไฟล์ ซึ่งเราสามารถ Set Options แยกกันได้ในแต่ละไฟล์(ด้านขวา)

หากเราใช้ FullMemory Dump จะใช้เวลาค่อนข้างสูง ซึ่งมันจะใช้ Plugins ตามที่เรา Config ไว้ใน memory.conf ในการ Analyze และ Generate ออกมาเป็น Report ให้เรา

4. Report

หลังจากเรา SET Options ต่างๆเสร็จเรียบร้อย ให้ไปที่ Analyze มันจะเริ่มทำงาน จะเข้าสู่ Running state

Running state

เราสามารถดูการทำงานของมันได้ที่หน้า Terminal ที่เรา Run : cuckoo -d ที่เป็น Verbose mode ไว้

Verbose mode of cuckoo

หลังจากการ Analyze ทุกอย่างเสร็จสิ้น State จะเปลี่ยนเป็น reported และได้เป็น Report ออกมา

Finished

สามารถเข้าไปดูรายละเอียดได้ โดยจะมีออกมาเป็น Score ให้ด้วย โดย Score นั้นจะขึ้นอยู่กับว่า Match ตาม Signatures ได้มากน้อยเพียงใด

Summary report

Signatures ที่พบ

Example of mached signatures

Capture Screenshot หลังจากที่ได้ Execute,Run ไฟล์ และ Network Connection

Screenshot and network connection

Process Tree ทั้งหมดหลังจาก Execute,Run ไฟล์

Process Tree

และอื่นๆอีกมากมาย ลองเล่นดูครับบ

สุดท้าย

สำหรับบทความนี้ ก็จบเพียงเท่านี้ครับ สำหรับ Cuckoo นั้นมันช่วยในการ Analyze Malware แบบ Dynamic ซึ่งช่วยทำให้เราเห็นพฤติกรรมการทำงานต่างๆ และใช้เวลาในการ Analyze ค่อนข้างน้อยได้ผลเร็ว ทำให้สามารถ Action ได้เร็ว แต่ก็ไม่ได้หมายความว่าการที่ Sandbox Analyze ไม่พบความผิดปกติ อาจไม่เป็น Malware แต่ว่า Malware บางตัวนั้นมีความสามารถในการ หลบเลี่ยง Sandbox ได้ ซึ่งหากมันตรวจพบว่าเป็น Sandbox พฤติกรรมมันอาจจะเปลี่ยน (ไม่ทำพฤติกรรมที่เสี่ยงต่อการตรวจจับ) ดังนั้นเราไม่ควรที่จะใช้ Sandbox เป็นทุกๆอย่างของการ Analyze Malware นะครับ เราควรจะใช้หลายๆวิธีการ Analyze Malware เพื่อตรวจสอบให้แน่ใจ และสิ่งที่สำคัญที่สุดคือไม่หยุดที่จะเรียนรู้ครับ

หวังว่าเพื่อนๆคงจะสนุกกับการทำ Malware Analysis นะครับ หากผิดพลาดประการใดขออภัยด้วยครับ

Reference

https://cuckoo.sh/docs/index.html

--

--