cuckoo

CuckooAnalysis book

 

Popis

Systém sa skladá z 2 častí:

  1. Cuckoo (hostiteľský systém)
  2. virtuálne/fyzické stroje pre analýzu

architecture main

 Existujú 3 spôsoby nasadenia stroja pre analýzu:

  • virtuálny stroj - virtualbox
  • virtuálny stroj - KVM
  • fyzický stroj

cuckoo scheme  cuckoo virtualbox

 

Adresárová štruktúra:

  • /opt/cuckoo - hlavný adresár 
  • /opt/cuckoo/utils/ - nástroje
  • /opt/cuckoo/conf/ - konfiguračné súbory
  • /opt/cucko/web/ - súbory pre webové rozhranie
  • /opt/cuckoo/modules/ -  moduly sandboxu
  • /opt/cuckoo/malware/ - adresár s malwarom (tento adresár bol vytvorený a doplnený pre účely workshopu)

 

Sieťové nastavenia

Nastavenie hostiteľského systému:

cuckoo network 0 cuckoo network 1

 

Nastavenie stroja, na ktorom sa bude vykonávať analýza:

cuckoo network 2

 

Aby sme sa z fyzikého stroja dostali na cuckoo pomocou ssh a web: 

cuckoo network 3

 

Inštalácia

Inštalácia hostiteľa (host)

Inštalácia pythonu (odporúča sa verzia 2.7) (https://www.python.org/download/releases/2.7/)

$ sudo apt-get install python

 Inštalácia mongo db (http://www.mongodb.org/)

$ sudo apt-get install mongodb

Pre správnu funkčnosť Cuckoo sandboxu, nanštalujeme  SQLAlchemy (http://www.sqlalchemy.org/) and Python BSON (http://api.mongodb.org/python/current/api/bson/)

$ sudo apt-get install python-sqlalchemy python-bson

 Inštalácia TCPdump (http://www.tcpdump.org/)

$ sudo apt-get install tcpdump libcap2-bin

Eistuje ešte niekoľko doplnkov, ktorých inštalácia je zväčša voliteľná. Niektoré sú ale vysoko odporúčané: 

  • Dpkt (Highly Recommended):pre extrakciu relevantných informácii z PCAP súborov
  • Jinja2 (Highly Recommended): pre zobrazenie HTML správ a webového rozhrania
  • Magic (Optional): pre identifikáciu formátov súboroc 
  • Pydeep (Optional): pre kalkuláciu ssdeep fuzzy hashu zo súborov.
  • Pymongo (Optional): pre uloženie súborov v mongo databáze
  • Yara and Yara Python (Optional): pre zistenie zhody s YARA signatúrami (release >=3.0).
  • Libvirt (Optional): pre použite manažéra KVM
  • Bottlepy (Optional): pre použitie utilít api.py or web.py  (release >=0.10).
  • Django (Optional): pre použite webového rozhrania (release >=1.5).
  • Pefile (Optional): pre statickú analýzu  PE32 bináriek
  • Volatility (Optional): pre forénznu analýzu pamäte (release >=2.4)
  • MAEC Python bindings (Optional): pre MAEC reporting (use a release >=4.0, but <4.1).
  • Chardet (Optional): detekcia reťazcov.

Inštalácia klienta (guest)

(1) Inštalácia Python 2.7 (https://www.python.org/getit/)

 

(2) Ak budeme chcieť robiť aj screenshoty z analýzy, je potrebné doinštalovať Python Imaging Library (http://www.pythonware.com/products/pil/)

 

(3) Samozrejme je nutné nainštalovať ďalší softvér na doc, xls, pdf, zip súbory.

 

(4) Finálne nastavenia stroja:

  • povoliť vzdialenú plochu
  • vypnúť firewall

 

(5) Prekopírovať súbor agent.py na stroj

  • súbor sa nachádza v adresári /opt/cuckoo/agent/
  • prípadne premenovať príponu z .py na .pyw

 

Poznámka

Vývojári Cuckoo sandboxu odporúčajú pre analýzu použiť Windows XP Service Pack 3. Ak použijete Windows 7, vypnite kontrolu User Access Control (UAC).

Konfigurácia

Cuckoo je postavené na šiestich hlavných konfiguračných súboroch:

  • cuckoo.conf: pre konfiguráciu celkové správania sa systému a možnosti analýzy.
  • auxiliary.conf: pre aktiváciu a konfiguráciu pomocných modulov.
  • <machinery> .conf: nastavenie strjov, na ktorých bude prebiehať analýza (súbor má rovnaký názov  ako názov modulu, ktorú si vyberiete v cuckoo.conf).
  • memory.conf: konfigurácia modulu pre analýzu pamäte.
  • processing.conf: pre aktiváciu a konfiguráciu modulov spracovania.
  • reporting.conf: pre povolenie alebo zakázanie formátovania správ.

auxiliary.conf

 # Enable or disable the available reporting modules [on/off].

[sniffer]


# Enable or disable the use of an external sniffer (tcpdump) [yes/no].
enabled = yes

# Specify the path to your local installation of tcpdump. Make sure this
# path is correct.
tcpdump = /usr/sbin/tcpdump

# Specify the network interface name on which tcpdump should monitor the
# traffic. Make sure the interface is active.
interface = eth1

# Specify a Berkeley packet filter to pass to tcpdump
# bpf = not arp

<machinery>.conf (physical.conf)

# Enable or disable the available reporting modules [on/off].
[physical]
machines = physical1
user = user

password = password

[physical1]
label = physical1
platform = windows
ip = 192.168.0.101

memory.conf

# Volatility configuration
# Basic settings

[basic]
# Profile to avoid wasting time identifying it
guest_profile = WinXPSP3x86

# Delete memory dump after volatility processing.
delete_memdump = no

# List of available module
# enabled: enable this module
# filter: use filters to remove benign system data from the logs
# Filters are defined in the mask section at below

# Scans for hidden/injected code and dlls
# http://code.google.com/p/volatility/wiki/CommandReferenceMal23#malfind

[malfind]
enabled = yes
filter = on

...

processing.conf

# Enable or disable the available reporting modules [on/off].

[analysisinfo]
enabled = yes

[behavior]
enabled = yes

[debug]
enabled = yes

[dropped]
enabled = yes

[memory]
enabled = yes

[network]
enabled = yes

[procmemory]
enabled = yes

[static]
enabled = yes

[strings]
enabled = yes

[targetinfo]
enabled = yes

[virustotal]
enabled = yes

timeout = 60

# Add your VirusTotal API key here. The default API key, kindly provided
# by the VirusTotal team, should enable you with a sufficient throughput
# and while being shared with all our users, it shouldn't affect your use.
key = a0283a2c3d55728300d064874239b5346fb991317e8449fe43c902879d758088

reporting.conf

# Enable or disable the available reporting modules [on/off].

[jsondump]
enabled = yes

[reporthtml]
enabled = yes

[mmdef]
enabled = no

[maec40]
enabled = no
mode = overview
processtree = true
output_handles = false
static = true
strings = true
virustotal = true

[mongodb]
enabled = yes
host = 127.0.0.1
port = 27017

Práca so sandboxom

Príprava vzoriek

Vzorky k analýze pripravíme pomocou nástroja submit

$ sudo python /opt/cuckoo/utils/submit.py
 Success: File "/opt/cuckoo/malware/aleppo_plan_cercs.pdf" added as task with ID 2

ID označuje číslo úlohy pre analýzu. Pre vyčistenie fronty použijeme prepínač --clean pri spúšťaní cuckoo sandboxu (cuckoo.py --clean)

Nástroj submit používa tzv. balíčky (pakages) - pomocou nich určujeme, ako sa bude vykonávať analýza. Poznáme tieto balíčky:

  • applet - pre analýzu Java apletov
  • bin - pre analýzu shellkódov
  • cpl - pre analýzu kontrolných panelov apletov
  • dll - pre analýzu knižníc
  • doc - pre analýzu  MS Word dokumentov
  • exe - pre analýzu  spustiteľných súborov
  • generic - pre analýzu všeobecných príkladov
  • html - pre analýzu IE pri otváraní htmls súboru
  • ie - pre analýzu IE pri otváraní určitej adresy
  • jar - pre analýzu JAR balíkov
  • pdf - pre analýzu PD dokumentov
  • ps1 - pre analýzu PowerShell skriptov
  • python - pre analýzu python skriptov
  • vbs - pre analýzu VB skriptov
  • xls - pre analýzu MS Excel dokumentov
  • zip - pre analýzu zip archívov

Spustenie

  Samostné cuckoo spustíme pomocou:

$ sudo python /opt/cuckoo/cuckoo.py
                                 _|                            
     _|_|_|  _|    _|    _|_|_|  _|  _|      _|_|      _|_|    
   _|        _|    _|  _|        _|_|      _|    _|  _|    _|  
   _|        _|    _|  _|        _|  _|    _|    _|  _|    _|  
     _|_|_|    _|_|_|    _|_|_|  _|    _|    _|_|      _|_|

  Cuckoo Sandbox 1.2  
  www.cuckoosandbox.org  
  Copyright (c) 2010-2015  
  Checking for updates...  
  Good! You have the latest version available.  
 2015-02-18 23:25:33,216 [lib.cuckoo.core.scheduler] INFO: Using "physical" machine manager  
 2015-02-18 23:25:33,290 [lib.cuckoo.core.scheduler] INFO: Loaded 1 machine/s  
 2015-02-18 23:25:33,290 [lib.cuckoo.core.scheduler] INFO: Waiting for analysis tasks...  

Na stroji, na ktorom má prebiehať analýza, je potrebné spustiť súbor agent.py, resp. agent.pyw.

 

Ak chceme urobiť novú sadu analýz a vymazať tie predošlé, tak použijeme prepínač clean:

$ sudo python /opt/cuckoo/cuckoo.py --clean

Poznámka

V prípade menšieho diskového priestoru, databáza Mongo nenaštartuje. Vtedy je potrebné naštartovať túto databázu pomocou: mongod --smallfiles &

 

Výstup

 Na zobrazenie výstupu použijeme nástroj web.py

$ sudo python /opt/cuckoo/utils/web.py
 Bottle server starting up (using WSGIRefServer())...  
 Listening on http://0.0.0.0:8080/  
 Hit Ctrl-C to quit.  

 

Následne si pozriete výsledok analýzy na adrese http://127.0.0.1:8080:

 cuckoo web 1

ä cuckoo web 2

 

Webové rozhranie môžete použiť aj na nahratie vlastných vzoriek:

cuckoo web 3

 

 

Analýza malwaru

(1) PDF malware

Prípravu pdf súboru spustíme pomocou:

$ sudo python /opt/cuckoo/utils/submit.py --platform windows --package pdf shares/aleppo_plan_cercs.pdf 

 

(2) Iran's Oil and Nuclear Situation.doc (CVE-2012-0754) 

Prípravu doc súboru spustíme pomocou:

$ sudo python /opt/cuckoo/utils/submit.py --platform windows --package doc malware/Iran's Oil and Nuclear Situation.doc

 

(3) CVE-2011-0609

Prípravu xls súboru spustíme pomocou:

$ sudo python /opt/cuckoo/utils/submit.py  --platform windows --package xls malware/CVE-2011-0609_XLS-SWF-2011-03-08rsenvironscan.xls

 

(4) Malware Sality

Prípravu binárky spustíme pomocou:

$ sudo python /opt/cuckoo/utils/submit.py --platform windows --package exe malware/Sality.G.exe

(5) IE exploity

Target OS wicar.org Filename Description CVE BID OSVDB
win32 (Java 7 JRE/JDK) Chrome Firefox IE java_jre17_exec.html Java 7 Applet Remote Code Execution (Browser Independent) 2012-4681 55213 84867
win32 NT/XP/2003 IE6 ms03_020_ie_objecttype.html MS03-020 Internet Explorer's handling of the OBJECT type attribute 2003-0344 7806 2967
win32 XP IE6 ms05_054_onload.html MS05-054 Microsoft Internet Explorer JavaScript OnLoad Handler 2005-1790 13799 17094
win32 XP/Vista IE7 ms09_002_memory_corruption.html Internet Explorer 7 CFunctionPointer Uninitialized Memory Corruption 2009-0075 33627 51839
win32 IE6 ms09_072_style_object.html Internet Explorer Style getElementsByTagName Memory Corruption 2009-3672 37085 50622
win32 IE6 ms10_090_ie_css_clip_ie6.html Internet Explorer CSS SetUserClip Memory Corruption 2010-3962 44536 68987

zdroj: http://malware.wicar.org/

Prípravu html súboru spustíme pomocou:

$ sudo python /opt/cuckoo/utils/submit.py --platform windows --package html malware/ms09_072_style_object.html

 

Analýza výsledkov

 

Po ukončení analýzy sú výsledky uložené v adresári /opt/cuckoo/storage/analyses/ID, kde ID je identifikátor konkrétnej analýzy.

Takto vyzerá adresárová štruktúra výsledkov:

.
|-- analysis.conf
|-- analysis.log
|-- binary
|-- dump.pcap
|-- memory.dmp
|-- files
|   |-- 1234567890
|       `-- dropped.exe
|-- logs
|   |-- 1232.raw
|   |-- 1540.raw
|   `-- 1118.raw
|-- reports
|   |-- report.html
|   |-- report.json
|   |-- report.maec-4.0.1.xml
|   `-- report.metadata.xml
`-- shots
    |-- 0001.jpg
    |-- 0002.jpg
    |-- 0003.jpg
    `-- 0004.jpg

Vyššie uvedené súbory a adresáre obsahujú:

  • analysis.conf - konfiguračné súbor analýzy. Pre analytika nepodstatné.
  • analysis.log - obsahuje záznamy analýzy (čo a v akom poradí sa vykonávalo)
  • dump.pcap - zachytená sieťová aktivita (pomocou tcpdump)
  • memory.dmp - dump pamäte
  • files/ - obsahuje vsetky súbory, s ktorými malware pracoval a Cuckoo ich bolo schopné skopírovať
  • logs/ - tento adresár obsahuje raw logy z monitoringu
  • reports/ - obsahuje všetky záznamy z analýzy
  • shots/ - adresár obsahuje vśetky screenshoty z analýzy