Malware Analysis Sandbox onPrem with Cuckoo

In questo articolo andremo a creare un ambiente di Malware Analysis “automatizzato” con Cuckoo progetto di Sandbox open source.

Nel caso specifico per realizzare questo laboratorio ho utilizzato:

  • × 1 VM Ubuntu 18.4
    • 2 CPU
    • 8 GB RAM
    • 200 GB HDD
  • Esxi

Come primo step ho abilitato “l’Hardware Virtualization” sui settings della VM

questo perché sulla VM Ubuntu andremo ad installare ed utilizzare VirtualBox, per automatizzare la creazione delle Sandbox.

Una volta che la nostra VM Ubuntu è stata creata procediamo come sempre a dare i seguenti comandi :

  • sudo apt-get update
  • sudo apt-get upgrade

Verifichiamo la versione di Python che abbiamo sul nostro sistema (attualmente Cuckoo supporta solo Python 2.7) :

  • python2 -V

Una volta verificala la versione di Python installata andiamo quindi ad installare tutte le librerie necessarie al funzionamento di Cuckoo :

  • 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

Installiamo MongoDB:

  • sudo apt-get install mongodb

Installiamo PostgreSQL:

  • sudo apt-get install postgresql libpq-dev

Installiamo VirtualBox:

  • sudo apt-get install virtualbox

Installiamo TCP DUMP:

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

Creiamo l’utente Cuckoo:

  • sudo adduser cuckoo

Aggiungiamo l’utenza appena creata al gruppo vbxusers :

  • sudo usermod -a -G vboxusers cuckoo

Andiamo a dare i seguenti comandi :

  • 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

Installiamo M2crypto:

  • sudo pip install m2crypto

Installiamo Guacd :

  • sudo apt install libguac-client-rdp0 libguac-client-vnc0 libguac-client-ssh0 guacd

Ora è il momento di installare Cuckoo, per farlo ci sono vari modi, ma come riportato dalla documentazione ufficiale il metodo consigliato è tramite il virtualenvoriment di python.

In rete ho trovato il seguente script che automatizza questo tipo d’installazione:

Una volta scaricato, quindi , non ci resta che avviarlo con l’utenza Cuckoo precedentemente creata:

  • ./script.sh
  • source ~/.bashrc
  • mkvirtualenv -p python2.7 cuckoo-test
  • pip install -U pip setuptools
  • pip install -U cuckoo

Scarichiamo la ISO che andremo ad utilizzare come Sandbox VM nel nostro ambiente, in questo esempio utilizzeremo un Win7:

Controlliamo la presenza dei seguenti pacchetti :

  • sudo apt-get -y install build-essential libssl-dev libffi-dev python-dev genisoimage
  • sudo apt-get -y install zlib1g-dev libjpeg-dev
  • sudo apt-get -y install python-pip python-virtualenv python-setuptools swig

Installiamo Vmcloack :

  • pip install  vmcloak

Creiamo la scheda di rete :

  • vmcloak-vboxnet0

Creiamo la nostra macchina virtuale (partendo dalla ISO scaricata in precedenza):

  • vmcloak init –verbose –win7x64 win7x64base –cpus 2 –ramsize 2048

Creiamo il clone della nostra VM Win7:

  • vmcloak clone win7x64base win7x64cuckoo

Installiamo Internet Explorer sulla macchina appena clonata:

  • vmcloak install win7x64cuckoo ie11

Installiamo altri tool sulla macchina clonata :

  • vmcloak install win7x64cuckoo adobepdf pillow dotnet java flash vcredist vcredist.version=2015u3 wallpaper

Creiamo degli Snapshoot della macchina appena fatta:

  • vmcloak snapshot –count 4 win7x64cuckoo 192.168.56.101

Verifichiamo se gli Snapshot sono stati fatti:

  • vmcloak list vms

Avviamo Cuckoo:

  • cuckoo init

Spostiamoci nella directory che è stata appena creata, nel nostro caso :

  • cd /root/.cuckoo

Scarichiamo ed installiamo le nuove signature:

  • cuckoo community

Aggiungiamo le VM a Cuckoo :

  • while read -r vm ip; do cuckoo machine –add $vm $ip; done < <(vmcloak list vms)

Abilitiamo il foward sulla Vboxnet e la ens160:

  • sudo sysctl -w net.ipv4.conf.vboxnet0.forwarding=1
  • sudo sysctl -w net.ipv4.conf.ens160.forwarding=1

Creiamo le seguenti regole Iptables:

  • sudo iptables -t nat -A POSTROUTING -o ens160 -s 192.168.56.0/24 -j MASQUERADE
  • sudo iptables -P FORWARD DROP
  • sudo iptables -A FORWARD -m state –state RELATED,ESTABLISHED -j ACCEPT
  • sudo iptables -A FORWARD -s 192.168.56.0/24 -j ACCEPT

Modificare il file routing.conf (nel nostro caso si trova sotto /root/.cuckoo/conf), ed aggiungere l’interfaccia di rete che è collegata verso internet

Modifichiamo anche il file reporting.conf, andando ad abilitare mongodb

Avviamo il rooter :

  • cuckoo rooter –sudo –group cuckoo

Avviamo Cockoo, da un altro terminale :

  • cuckoo

Avviamo, da un altro terminale, il nostro web server che ci permettera di interagire con Cuckoo:

  • cuckoo web –host 127.0.0.1 –port 8080 

Ora colleghiamoci tramite browser al nostro Cuckoo:

Avviamo quindi unanalisi di test per vedere che tutto funzioni correttamente:

Settiamo l’uscita verso Internet, essendo una URL da analizzare, e selezioniamo quale VM utilizzeremo per navigare quella URL :

Clicchiamo “Analyze” e attendiamo che termini :

Se apriamo la GUI di VirtualBox , che è stato installato precedentemente sulla nostra Ubuntu, vedremo che in maniera del tutto automatica la VM selezionata per l’analisi sarà in “Running”

Se tutto andrà bene, l’analisi che abbiamo avviato terminerà con lo stato di “reported

Cliccandoci sopra si aprirà il nostro report che potremo navigare ed analizzare

Ovviamente questa è una guida basilare con il solo scopo di far scoprire a chi non lo conoscesse questo progetto Open Source 🙂

One thought on “Malware Analysis Sandbox onPrem with Cuckoo

Rispondi

Effettua il login con uno di questi metodi per inviare il tuo commento:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.