Analyse de malware automatisée
avec Cuckoo SandBox
ESGI - Workshop Security Day 2015
Thomas ROCCIA | thomas.roccia@gmail.com | @R1tch1e_
Workshop Cuckoo Sandbox 2
Sommaire
0x01 Présentation
0x02 Objectifs
0x03 Analyse de malware
0x04 Analyse automatisée
0x05 Cuckoo Sandbox
0x06 Documentation
0x07 Conclusion
Workshop Cuckoo Sandbox 3
0x01 Présentation
● Thomas ROCCIA | @R1tch1e_
● Analyste en Sécurité des Systèmes d'Information
– Investigation numérique (forensic)
– Analyse de malware
– Test d'intrusion
Workshop Cuckoo Sandbox 4
0x02 Objectifs
0x01 Présentation
0x02 Objectifs
0x03 Analyse de malware
0x04 Analyse automatisée
0x05 Cuckoo Sandbox
0x06 Documentation
0x07 Conclusion
Workshop Cuckoo Sandbox 5
0x02 Objectifs
● Monter un environnement d'analyse de
malware automatisée avec Cuckoo Sandbox
● Analyser les résultats provenant de Cuckoo
● Créer des rapports standards
● Aller plus loin dans l'analyse de malware
Workshop Cuckoo Sandbox 6
0x03 Analyse de malware
0x01 Présentation
0x02 Objectifs
0x03 Analyse de malware
0x04 Analyse automatisée
0x05 Cuckoo Sandbox
0x06 Documentation
0x07 Conclusion
Workshop Cuckoo Sandbox 7
0x03 Analyse de malware
● Objectif de l'analyse de malware ?
– Comprendre son fonctionnement
– Générer une signature de détection
– Bloquer les actions malveillantes
● Limite de l'analyse de malware manuelle
– Nécessite une bonne connaissance de l'assembleur
– Analyse souvent longue et fastidieuse
Workshop Cuckoo Sandbox 8
0x04 Analyse automatisée
0x01 Présentation
0x02 Objectifs
0x03 Analyse de malware
0x04 Analyse automatisée
0x05 Cuckoo Sandbox
0x06 Documentation
0x07 Conclusion
Workshop Cuckoo Sandbox 9
0x04 Analyse automatisée
● Objectif de l'analyse automatisée ?
– Comprendre rapidement le fonctionnement du malware
– Identifier ses connexions vers l'extérieur
– Identifier les fichiers créés
– Générer une signature de détection
– Comparer sa signature sur des bases connues (virustotal)
– Établir une première estimation de ses capacités
– Générer des rapports automatisés
● Limite de l'analyse automatisée
– Nécessite une analyse approfondie complémentaire (Reverse Engineering ...)
– Certains malwares détectent qu'ils sont dans un environnement d'analyse
Workshop Cuckoo Sandbox 10
0x05 Cuckoo Sandbox
0x01 Présentation
0x02 Objectifs
0x03 Analyse de malware
0x04 Analyse automatisée
0x05 Cuckoo Sandbox
0x06 Documentation
0x07 Conclusion
Workshop Cuckoo Sandbox 11
0x05 Cuckoo Sandbox
● Rappel et définition d'une sandbox
● Selon Wikipédia :
« Une  sandbox  (anglicisme  signifiant  «  bac  à  sable  »)  est  un 
mécanisme  qui  permet  l'exécution  de  logiciel(s)  avec  moins  de 
risques pour le système d'exploitation. Ces derniers sont souvent 
utilisés  pour  exécuter  du  code  non  testé  ou  de  provenance 
douteuse. » 
● Pour faire simple :
Une sandbox est un environnement contrôlé qui permet d'étudier 
des  logiciels  malveillants  (malware)  afin  d'en  comprendre  leur 
fonctionnement.
Workshop Cuckoo Sandbox 12
0x05 Cuckoo Sandbox
● Présentation
– Développé par Claudio Guarnieri
– Créé en 2010
– Soutenu par le projet www.honeynet.org
– Open Source et sous licence GNU
– Développé en python
– www.cuckoosandbox.org
– irc.freenode.net #cuckoosandbox
Workshop Cuckoo Sandbox 13
0x05 Cuckoo Sandbox
● Principe de
fonctionnement
– Environnement
« bac-à-sable »
automatisé
– Connecté à des
machines
virtuelles
– Gestion de divers
fichiers (exe,
PDF, OLE, PHP)
Workshop Cuckoo Sandbox 14
0x05 Cuckoo Sandbox
● Pré-requis
– Une VM Ubuntu desktop 14 (25 Go / 3 Go de
RAM) + les VMtools
– Installation de Virtualbox dans la VM
– Un système Windows « clean » de base dans la
VM (9Go / 1Go de RAM)
● Network : Host only vboxnet et NAT
● Ajouter un mot de passe sur le compte Windows
Workshop Cuckoo Sandbox 15
0x05 Cuckoo Sandbox
● Configuration de l'hôte Cuckoo
– Installation par défaut Ubuntu Desktop 14 LTS (25Go et 3Go de RAM)
– Installation des paquets python et dépendances :
$ apt­get install python 2.7 
$ apt­get install python­magic 
$ apt­get install python­dpkt 
$ apt­get install python­mako
$ apt­get install python­sqlalchemy  
$ apt­get install python­jinja2
$ apt­get install python­bottle
$ apt­get install python­pefile
$ apt­get install python­libvirt
$ apt­get install python2.7­dev
$ apt­get update && apt­get dist­upgrade
Workshop Cuckoo Sandbox 16
0x05 Cuckoo Sandbox
● Configuration du serveur Cuckoo
– Installation ssdeep pour le calcul de hash :
– Installation de MongoDB :
$ apt­get install ssdeep  
$ apt­get install python­pyrex 
$ apt­get install subversion  
$ apt­get install libfuzzy­dev   
$ svn checkout http://pyssdeep.googlecode.com/svn/trunk/ pyssdeep  
$ cd pyssdeep  
$ python setup.py build  
$ python setup.py install
$ apt­get install ssdeep build­essential git libpcre3 libpcre3­dev   
$ apt­get install python­pyrex libcre++­dev libssdeep
$ apt­get install subversion  
$ apt­get install libfuzzy­dev 
$ cd /opt  
$ git clone https://github.com/kbandla/pydeep.git  
$ cd /opt/pydeep/ 
$ python setup.py build  
$ python setup.py install
$ apt­get install python­pymongo 
$ apt­get install mongodb 
Workshop Cuckoo Sandbox 17
0x05 Cuckoo Sandbox
● Configuration de l'hôte Cuckoo
– Installation de Yara :
 $ apt­get install g++
 $ apt­get install automake ­y
 $ wget http://yara­project.googlecode.com/files/yara­1.6.tar.gz  
 $ tar ­xvzf yara­1.6.tar.gz  
 $ cd yara­1.6  
 $ ./configure  
 $ make  
 $ make check  
 $ make install
 $ wget http://yara­project.googlecode.com/files/yara­python­1.6.tar.gz  
 $ tar ­xvzf yara­python­1.6.tar.gz  
 $ cd yara­python­1.6  
 $ python setup.py build  
 $ python setup.py install
Workshop Cuckoo Sandbox 18
0x05 Cuckoo Sandbox
● Configuration de l'hôte Cuckoo 
– Installation de TCPdump :
– Téléchargement de Cuckoo Sandbox :
– Création du user cuckoo et installation virtualbox :
$ apt­get install tcpdump libcap2­bin  
$ setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump  
$ getcap /usr/sbin/tcpdump
$ git clone git://github.com/cuckoobox/cuckoo.git   
$ sudo apt­get install virtualbox
$ sudo adduser cuckoo  
$ usermod ­a ­G vboxusers cuckoo 
$ sudo usermod ­G libvirtd cuckoo
$ id cuckoo
Workshop Cuckoo Sandbox 19
0x05 Cuckoo Sandbox
● Configuration de l'hôte Cuckoo 
– Paquets supplémentaires :
$ wget https://bootstrap.pypa.io/get­pip.py
$ sudo python get­pip.py
$ sudo pip install cybox==2.0.1.4
$ sudo pip install maec==4.0.1.0
$ sudo apt­get install wireshark
Workshop Cuckoo Sandbox 20
0x05 Cuckoo Sandbox
● Configuration de la machine de test
– Windows XP (9Go et 1Go RAM)
– Configuration en 2 cartes réseaux (host-only vboxnet0 + NAT)
– Créer un compte avec mot de passe
– Installation des Virtualbox-tool
– Configuration d'un dossier partagé (Shared Folders)
● Choisir un répertoire (par exemple /home/share)
● Cocher les options (RO, Auto-mount, Permanent)
– Monter ensuite le répertoire dans Windows
● Clic droit my computer => map network drive
● Ajouter vboxsrvshare
Workshop Cuckoo Sandbox 21
0x05 Cuckoo Sandbox
● Configuration de la machine de test
– Désactivation des éléments de sécurité (Firewall, Windows Update...)
– Installation Python 2.7
https://www.python.org/downloads/release/python-279/
– Installation Python PIL 1.1.7 : http://www.pythonware.com/products/pil/
– Installation des logiciels susceptibles d'être des vecteurs d'infection
(Adobe Reader 9.5, Flash player 3, Office 2007 + désactiver sécu macro,
Firefox 3.6, Java 6...) et désactivation de leurs MAJ automatiques +
descendre leurs niveaux de sécurité. Http://www.oldapps.com
Workshop Cuckoo Sandbox 22
0x05 Cuckoo Sandbox
● Configuration de la machine de test
– Copier le script /opt/cuckoo/agent/agent.py dans le dossier share
– Dans Windows copier le fichier agent.py dans C:python27 et dans le
startup c:Document_and_settingsall_userStart_MenuProgramsstartup
– Exécuter le fichier agent.py et vérifier qu'une socket est ouverte sur le port
0.0.0.0:8000 avec la commande netstat ­aon
– Remarque : lorsque l'on clique sur le fichier agent.py une console s'ouvre, 
pour ne pas la voir, il suffit de renommer le fichier agent.py en agent.pyw
Workshop Cuckoo Sandbox 23
0x05 Cuckoo Sandbox
● Configuration de Cuckoo Sandbox
– Fichier de configuration /opt/cuckoo/conf/ :
● Cuckoo.conf : c'est le fichier de configuration principal. Il
permet de définir le comportement de la sandbox et les
objectifs.
● Virtualbox.conf : il contient les informations sur
l'environnement virtuel (un fichier pour les différents
environnements)
● Processing.conf : ce fichier permet d'activer et de
configurer les différents modules de traitement (virustotal...)
● Reporting.conf : ce fichier contient les stratégies d'analyse
(réseau, comportementale...)
Workshop Cuckoo Sandbox 24
0x05 Cuckoo Sandbox
● Configuration de Cuckoo Sandbox
– Configuration du fichier cuckoo.conf
● Mettre l'IP de l'interface virtuel (vboxnet0)
● Machine manager : virtualbox
● D'autres fonctionnalités
– Configuration du fichier virtualbox.conf :
● Changer le nom de la machine (cuckoo1) / mettre le nom de la vm dans le
champ machine et dans le label.
● Ajouter l'OS de la VM (Windows)
● Ajouter l'IP de la VM
● Ajouter le nom du snapshot
● Dé-commenter et modifier si besoin l'interface
Workshop Cuckoo Sandbox 25
0x05 Cuckoo Sandbox
● Configuration de Cuckoo Sandbox
– Configuration du fichier processing.conf :
● Modifier l'API Virus Total
● Laisser le reste du fichier par défaut
– Configuration du fichier reporting.conf :
● Modifier le fichier si besoin
– Configuration du fichier physical.conf :
● Ajouter les credentiales de la machine virtuelle
– Snapshot de la machine windows (attention à respecter le nom du 
snapshot (Snapshot1) et pas en root !) :
$ vboxmanage snapshot "CuckooXP" take "Snapshot1" ­­pause
Workshop Cuckoo Sandbox 26
0x05 Cuckoo Sandbox
Cuckoo est à présent opérationnel !
● Lancement de Cuckoo Sandbox. Attention au droit !
● Envoi d'un fichier à cuckoo en ligne de commande
● Lancement de l'interface web
$ ./cuckoo.py
$ cd /opt/cuckoo/util/
$ ./submit.py <sample> 
$ cd /opt/cuckoo/util/
$ ./web.py
Workshop Cuckoo Sandbox 27
0x05 Cuckoo Sandbox
Workshop Cuckoo Sandbox 28
0x05 Cuckoo Sandbox
● Base de données de malware :
– http://malwaredb.malekal.com/
– http://virusshare.com/
– http://oc.gtisc.gatech.edu:8080/
– http://contagiodump.blogspot.fr/
– https://www.google.com/cse/home?cx=001439139068102
559330:uruncpbgqm8
– https://avcaesar.malware.lu/
– http://syrianmalware.com/
– URLs malveillantes : http://www.scumware.org/
Workshop Cuckoo Sandbox 29
0x05 Cuckoo Sandbox
● Analyse d'un fichier malveillant
– Envoi du fichier laroux.xls :
Workshop Cuckoo Sandbox 30
0x05 Cuckoo Sandbox
● Analyse d'URL malveillante :
– Configuration de l'interface réseau (NAT)
– Envoi de l'URL malveillante :
$ ./submit.py ­­url <url>  
Workshop Cuckoo Sandbox 31
0x05 Cuckoo Sandbox
● Fichiers de reporting :
– /opt/cuckoo/storage
● Analyses : contient tout les éléments de l'analyse
● Binaries : contient les binaires analysés
– /opt/cuckoo/storage/analyses/
Workshop Cuckoo Sandbox 32
0x05 Cuckoo Sandbox
● Contenu du fichier report.html
– Info : cette section donne des informations sur le déroulé de l'analyse (type de fichier,
timestamp, nom de la VM de test, durée de l'analyse, version de Cuckoo...)
– File : cette section contient des informations sur le fichier analysé (nom, taille, type de
fichier, empreinte, détection PeiD, détection YARA et VirusTotal)
– Signatures : Il s'agit des signatures de détection (utils/./community.py ­a)
– Screenshot : il s'agit des copies d'écran de la vm lors de l'analyse (fichier du
repertoire shots)
– Static Analysis : il s'agit d'informations sur le fichier (strings, DLL, Sections, imports...)
– Dropped Files : il s'agit des fichiers créés par le malware
– Network : cette section contient les connexions réseaux du fichier
– Behavior : cette section contient des informations sur le comportement du malware
(registre, processus, fichiers, mutexes...)
Workshop Cuckoo Sandbox 33
0x05 Cuckoo Sandbox
● Créer des rapports MAEC (Malware Attribute Enumeration
and Characterization)
– Modifier le fichier reporting.conf : maec40 = on
$ sudo apt­get install treeline
$ Treeline report.maec.xml (choisir generic xml)
http://maec.mitre.org/
Workshop Cuckoo Sandbox 34
0x05 Cuckoo Sandbox
● Créer des rapports PDF
– Installation :
– Supprimer /cuckoo/modules/reporting/reporthtml.pyc
– Créer un fichier pdf.py :
– Dans le fichier reporthtml.py ajouter la ligne :
$ sudo apt­get install wkhtmltopdf
$ git clone https://github.com/JazzCore/python­pdfkit.git
$ sudo python setup.py build
$ sudo python setup.py install
import pdfkit
def create_pdf(xhtml, dest):
    pdfkit.from_file(xhtml, dest)
 from pdf import create_pdf 
Workshop Cuckoo Sandbox 35
0x05 Cuckoo Sandbox
● Créer des rapports PDF
– Ajouter à la fin du fichier reporthtml.py :
try:
   xhtml = open(self.reports_path+"/report.html")
   create_pdf(xhtml, self.reports_path+"/report.pdf")
   xhtml.close()
except (Exception, TypeErro, IOError) as e:
   raise CuckooReportError("Failed to generate PDF report: %s" % e)
Workshop Cuckoo Sandbox 36
0x05 Cuckoo Sandbox
Aller plus loin dans l'analyse de malware...
● Interface Web Cuckoo 1.2
● Cuckoo et Volatility
● Cuckoo et Yara
● Aller encore plus loin
Workshop Cuckoo Sandbox 37
0x05 Cuckoo Sandbox
● Interface web Cuckoo 1.2
– Configuration
● Activer la base de donnée MongoDB dans le
fichier cuckoo/conf/reporting.conf
● Lancer l'interface web :
●
$ cd cuckoo/web/
$ python manage.py runserver
Workshop Cuckoo Sandbox 38
0x05 Cuckoo Sandbox
● Interface web Cuckoo 1.2
Workshop Cuckoo Sandbox 39
0x05 Cuckoo Sandbox
● Cuckoo Sandbox et Volatility
– Configuration
● Installation de volatility (apt-get install volatility)
● Cuckoo.conf : modifier memory_dump = on
● Remarque : les dumps mémoires prennent beaucoup 
de place, il faudra donc prévoir en conséquence la 
taille du disque dans une utilisation courante.
● Le fichier créé se retrouve donc dans le répertoire de
l'analyse.
Workshop Cuckoo Sandbox 40
0x05 Cuckoo Sandbox
● Cuckoo Sandbox et Volatility
– Analyse de base
Identification de la machine :
$ volatility ­f memory.dmp imageinfo
Analyse des processus :
$ volatility ­f memory.dmp ­­profile=WinXPSP3x86 pslist
$ volatility ­f memory.dmp ­­profile=WinXPSP3x86 pstree
Analyse des connexions :
$ volatility ­f memory.dmp ­­profile=WinXPSP3x86 connections
Dump d'un processus :
$ volatility ­f memory.dmp ­­profile=WinXPSP3x86 procexedump ­p 564 ­D opt/
$ volatility ­f memory.dmp ­­profile=WinXPSP3x86 procexedump ­p 564 ­D opt/
Afficher l'aide :
$ volatility ­h
Workshop Cuckoo Sandbox 41
0x05 Cuckoo Sandbox
● Cuckoo Sandbox et Yara
– Configuration
● Créer une nouvelle
règle /opt/cuckoo/data/yara/binaries/hello.yar:
rule HelloWorld
{
meta:
        author = "r1tch1e"
strings:
$a = "hello world"
condition:
$a
}
Workshop Cuckoo Sandbox 42
0x05 Cuckoo Sandbox
● Cuckoo Sandbox et Yara
– Configuration
● Modifier le fichier
/opt/cuckoo/data/yara/index_binaries.yar
● Tester la règle :
include "/home/r1tch1e/opt/cuckoo/data/yara/binaries/embedded.yar"
include "/home/r1tch1e/opt/cuckoo/data/yara/binaries/shellcodes.yar"
include "/home/r1tch1e/opt/cuckoo/data/yara/binaries/vmdetect.yar"
include "/home/r1tch1e/opt/cuckoo/data/yara/binaries/hello.yar"
$ yara hello.yar /home/r1tch1e/share/
HelloWorld /home/r1tch1e/share//hello.exe
Workshop Cuckoo Sandbox 43
0x05 Cuckoo Sandbox
● Volatitlity et Yara :
volatility ­f memory.dmp yarascan ­y cuckoo/data/yara/binaries/hello.yar 
Workshop Cuckoo Sandbox 44
0x05 Cuckoo Sandbox
● Pour aller encore plus loin
– CuckooMX (https://github.com/xme/cuckoomx)
– Pafish Hardening VM (https://github.com/a0rtega/pafish)
– Interface graphique avec maltego
(https://github.com/bostonlink/cuckooforcanari)
Workshop Cuckoo Sandbox 45
0x06 Documentation
0x01 Présentation
0x02 Objectifs
0x03 Analyse de malware
0x04 Analyse automatisée
0x05 Cuckoo Sandbox
0x06 Documentation
0x07 Conclusion
Workshop Cuckoo Sandbox 46
0x06 Documentation
● http://www.cuckoosandbox.org/
● https://malwr.com/
● https://github.com/bostonlink/cuckooforcanari
● http://maec.mitre.org/
● https://cuckoo.readthedocs.org/en/latest/
● https://blog.malwarebytes.org/intelligence/2014/04/automati
ng-malware-analysis-with-cuckoo-sandbox/
● http://www.honeynet.org/
● http://www.google.fr (joke inside)
Workshop Cuckoo Sandbox 47
0x07 Conclusion
0x01 Présentation
0x02 Objectifs
0x03 Analyse de malware
0x04 Analyse automatisée
0x05 Cuckoo Sandbox
0x06 Documentation
0x07 Conclusion
Workshop Cuckoo Sandbox 48
0x07 Conclusion
● Gain de temps
● Identification rapide de la charge malicieuse
● Amélioration du processus de résolution
● Analyse de fichiers et d'URLs
● Multiples fonctionnalités avec les plugins
● Gestion d'une base de connaissance
● Création automatique de rapports
Workshop Cuckoo Sandbox 49
Thomas ROCCIA | @R1tch1e_

Sec day cuckoo_workshop

  • 1.
    Analyse de malwareautomatisée avec Cuckoo SandBox ESGI - Workshop Security Day 2015 Thomas ROCCIA | thomas.roccia@gmail.com | @R1tch1e_
  • 2.
    Workshop Cuckoo Sandbox2 Sommaire 0x01 Présentation 0x02 Objectifs 0x03 Analyse de malware 0x04 Analyse automatisée 0x05 Cuckoo Sandbox 0x06 Documentation 0x07 Conclusion
  • 3.
    Workshop Cuckoo Sandbox3 0x01 Présentation ● Thomas ROCCIA | @R1tch1e_ ● Analyste en Sécurité des Systèmes d'Information – Investigation numérique (forensic) – Analyse de malware – Test d'intrusion
  • 4.
    Workshop Cuckoo Sandbox4 0x02 Objectifs 0x01 Présentation 0x02 Objectifs 0x03 Analyse de malware 0x04 Analyse automatisée 0x05 Cuckoo Sandbox 0x06 Documentation 0x07 Conclusion
  • 5.
    Workshop Cuckoo Sandbox5 0x02 Objectifs ● Monter un environnement d'analyse de malware automatisée avec Cuckoo Sandbox ● Analyser les résultats provenant de Cuckoo ● Créer des rapports standards ● Aller plus loin dans l'analyse de malware
  • 6.
    Workshop Cuckoo Sandbox6 0x03 Analyse de malware 0x01 Présentation 0x02 Objectifs 0x03 Analyse de malware 0x04 Analyse automatisée 0x05 Cuckoo Sandbox 0x06 Documentation 0x07 Conclusion
  • 7.
    Workshop Cuckoo Sandbox7 0x03 Analyse de malware ● Objectif de l'analyse de malware ? – Comprendre son fonctionnement – Générer une signature de détection – Bloquer les actions malveillantes ● Limite de l'analyse de malware manuelle – Nécessite une bonne connaissance de l'assembleur – Analyse souvent longue et fastidieuse
  • 8.
    Workshop Cuckoo Sandbox8 0x04 Analyse automatisée 0x01 Présentation 0x02 Objectifs 0x03 Analyse de malware 0x04 Analyse automatisée 0x05 Cuckoo Sandbox 0x06 Documentation 0x07 Conclusion
  • 9.
    Workshop Cuckoo Sandbox9 0x04 Analyse automatisée ● Objectif de l'analyse automatisée ? – Comprendre rapidement le fonctionnement du malware – Identifier ses connexions vers l'extérieur – Identifier les fichiers créés – Générer une signature de détection – Comparer sa signature sur des bases connues (virustotal) – Établir une première estimation de ses capacités – Générer des rapports automatisés ● Limite de l'analyse automatisée – Nécessite une analyse approfondie complémentaire (Reverse Engineering ...) – Certains malwares détectent qu'ils sont dans un environnement d'analyse
  • 10.
    Workshop Cuckoo Sandbox10 0x05 Cuckoo Sandbox 0x01 Présentation 0x02 Objectifs 0x03 Analyse de malware 0x04 Analyse automatisée 0x05 Cuckoo Sandbox 0x06 Documentation 0x07 Conclusion
  • 11.
    Workshop Cuckoo Sandbox11 0x05 Cuckoo Sandbox ● Rappel et définition d'une sandbox ● Selon Wikipédia : « Une  sandbox  (anglicisme  signifiant  «  bac  à  sable  »)  est  un  mécanisme  qui  permet  l'exécution  de  logiciel(s)  avec  moins  de  risques pour le système d'exploitation. Ces derniers sont souvent  utilisés  pour  exécuter  du  code  non  testé  ou  de  provenance  douteuse. »  ● Pour faire simple : Une sandbox est un environnement contrôlé qui permet d'étudier  des  logiciels  malveillants  (malware)  afin  d'en  comprendre  leur  fonctionnement.
  • 12.
    Workshop Cuckoo Sandbox12 0x05 Cuckoo Sandbox ● Présentation – Développé par Claudio Guarnieri – Créé en 2010 – Soutenu par le projet www.honeynet.org – Open Source et sous licence GNU – Développé en python – www.cuckoosandbox.org – irc.freenode.net #cuckoosandbox
  • 13.
    Workshop Cuckoo Sandbox13 0x05 Cuckoo Sandbox ● Principe de fonctionnement – Environnement « bac-à-sable » automatisé – Connecté à des machines virtuelles – Gestion de divers fichiers (exe, PDF, OLE, PHP)
  • 14.
    Workshop Cuckoo Sandbox14 0x05 Cuckoo Sandbox ● Pré-requis – Une VM Ubuntu desktop 14 (25 Go / 3 Go de RAM) + les VMtools – Installation de Virtualbox dans la VM – Un système Windows « clean » de base dans la VM (9Go / 1Go de RAM) ● Network : Host only vboxnet et NAT ● Ajouter un mot de passe sur le compte Windows
  • 15.
    Workshop Cuckoo Sandbox15 0x05 Cuckoo Sandbox ● Configuration de l'hôte Cuckoo – Installation par défaut Ubuntu Desktop 14 LTS (25Go et 3Go de RAM) – Installation des paquets python et dépendances : $ apt­get install python 2.7  $ apt­get install python­magic  $ apt­get install python­dpkt  $ apt­get install python­mako $ apt­get install python­sqlalchemy   $ apt­get install python­jinja2 $ apt­get install python­bottle $ apt­get install python­pefile $ apt­get install python­libvirt $ apt­get install python2.7­dev $ apt­get update && apt­get dist­upgrade
  • 16.
    Workshop Cuckoo Sandbox16 0x05 Cuckoo Sandbox ● Configuration du serveur Cuckoo – Installation ssdeep pour le calcul de hash : – Installation de MongoDB : $ apt­get install ssdeep   $ apt­get install python­pyrex  $ apt­get install subversion   $ apt­get install libfuzzy­dev    $ svn checkout http://pyssdeep.googlecode.com/svn/trunk/ pyssdeep   $ cd pyssdeep   $ python setup.py build   $ python setup.py install $ apt­get install ssdeep build­essential git libpcre3 libpcre3­dev    $ apt­get install python­pyrex libcre++­dev libssdeep $ apt­get install subversion   $ apt­get install libfuzzy­dev  $ cd /opt   $ git clone https://github.com/kbandla/pydeep.git   $ cd /opt/pydeep/  $ python setup.py build   $ python setup.py install $ apt­get install python­pymongo  $ apt­get install mongodb 
  • 17.
    Workshop Cuckoo Sandbox17 0x05 Cuckoo Sandbox ● Configuration de l'hôte Cuckoo – Installation de Yara :  $ apt­get install g++  $ apt­get install automake ­y  $ wget http://yara­project.googlecode.com/files/yara­1.6.tar.gz    $ tar ­xvzf yara­1.6.tar.gz    $ cd yara­1.6    $ ./configure    $ make    $ make check    $ make install  $ wget http://yara­project.googlecode.com/files/yara­python­1.6.tar.gz    $ tar ­xvzf yara­python­1.6.tar.gz    $ cd yara­python­1.6    $ python setup.py build    $ python setup.py install
  • 18.
    Workshop Cuckoo Sandbox18 0x05 Cuckoo Sandbox ● Configuration de l'hôte Cuckoo  – Installation de TCPdump : – Téléchargement de Cuckoo Sandbox : – Création du user cuckoo et installation virtualbox : $ apt­get install tcpdump libcap2­bin   $ setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump   $ getcap /usr/sbin/tcpdump $ git clone git://github.com/cuckoobox/cuckoo.git    $ sudo apt­get install virtualbox $ sudo adduser cuckoo   $ usermod ­a ­G vboxusers cuckoo  $ sudo usermod ­G libvirtd cuckoo $ id cuckoo
  • 19.
    Workshop Cuckoo Sandbox19 0x05 Cuckoo Sandbox ● Configuration de l'hôte Cuckoo  – Paquets supplémentaires : $ wget https://bootstrap.pypa.io/get­pip.py $ sudo python get­pip.py $ sudo pip install cybox==2.0.1.4 $ sudo pip install maec==4.0.1.0 $ sudo apt­get install wireshark
  • 20.
    Workshop Cuckoo Sandbox20 0x05 Cuckoo Sandbox ● Configuration de la machine de test – Windows XP (9Go et 1Go RAM) – Configuration en 2 cartes réseaux (host-only vboxnet0 + NAT) – Créer un compte avec mot de passe – Installation des Virtualbox-tool – Configuration d'un dossier partagé (Shared Folders) ● Choisir un répertoire (par exemple /home/share) ● Cocher les options (RO, Auto-mount, Permanent) – Monter ensuite le répertoire dans Windows ● Clic droit my computer => map network drive ● Ajouter vboxsrvshare
  • 21.
    Workshop Cuckoo Sandbox21 0x05 Cuckoo Sandbox ● Configuration de la machine de test – Désactivation des éléments de sécurité (Firewall, Windows Update...) – Installation Python 2.7 https://www.python.org/downloads/release/python-279/ – Installation Python PIL 1.1.7 : http://www.pythonware.com/products/pil/ – Installation des logiciels susceptibles d'être des vecteurs d'infection (Adobe Reader 9.5, Flash player 3, Office 2007 + désactiver sécu macro, Firefox 3.6, Java 6...) et désactivation de leurs MAJ automatiques + descendre leurs niveaux de sécurité. Http://www.oldapps.com
  • 22.
    Workshop Cuckoo Sandbox22 0x05 Cuckoo Sandbox ● Configuration de la machine de test – Copier le script /opt/cuckoo/agent/agent.py dans le dossier share – Dans Windows copier le fichier agent.py dans C:python27 et dans le startup c:Document_and_settingsall_userStart_MenuProgramsstartup – Exécuter le fichier agent.py et vérifier qu'une socket est ouverte sur le port 0.0.0.0:8000 avec la commande netstat ­aon – Remarque : lorsque l'on clique sur le fichier agent.py une console s'ouvre,  pour ne pas la voir, il suffit de renommer le fichier agent.py en agent.pyw
  • 23.
    Workshop Cuckoo Sandbox23 0x05 Cuckoo Sandbox ● Configuration de Cuckoo Sandbox – Fichier de configuration /opt/cuckoo/conf/ : ● Cuckoo.conf : c'est le fichier de configuration principal. Il permet de définir le comportement de la sandbox et les objectifs. ● Virtualbox.conf : il contient les informations sur l'environnement virtuel (un fichier pour les différents environnements) ● Processing.conf : ce fichier permet d'activer et de configurer les différents modules de traitement (virustotal...) ● Reporting.conf : ce fichier contient les stratégies d'analyse (réseau, comportementale...)
  • 24.
    Workshop Cuckoo Sandbox24 0x05 Cuckoo Sandbox ● Configuration de Cuckoo Sandbox – Configuration du fichier cuckoo.conf ● Mettre l'IP de l'interface virtuel (vboxnet0) ● Machine manager : virtualbox ● D'autres fonctionnalités – Configuration du fichier virtualbox.conf : ● Changer le nom de la machine (cuckoo1) / mettre le nom de la vm dans le champ machine et dans le label. ● Ajouter l'OS de la VM (Windows) ● Ajouter l'IP de la VM ● Ajouter le nom du snapshot ● Dé-commenter et modifier si besoin l'interface
  • 25.
    Workshop Cuckoo Sandbox25 0x05 Cuckoo Sandbox ● Configuration de Cuckoo Sandbox – Configuration du fichier processing.conf : ● Modifier l'API Virus Total ● Laisser le reste du fichier par défaut – Configuration du fichier reporting.conf : ● Modifier le fichier si besoin – Configuration du fichier physical.conf : ● Ajouter les credentiales de la machine virtuelle – Snapshot de la machine windows (attention à respecter le nom du  snapshot (Snapshot1) et pas en root !) : $ vboxmanage snapshot "CuckooXP" take "Snapshot1" ­­pause
  • 26.
    Workshop Cuckoo Sandbox26 0x05 Cuckoo Sandbox Cuckoo est à présent opérationnel ! ● Lancement de Cuckoo Sandbox. Attention au droit ! ● Envoi d'un fichier à cuckoo en ligne de commande ● Lancement de l'interface web $ ./cuckoo.py $ cd /opt/cuckoo/util/ $ ./submit.py <sample>  $ cd /opt/cuckoo/util/ $ ./web.py
  • 27.
    Workshop Cuckoo Sandbox27 0x05 Cuckoo Sandbox
  • 28.
    Workshop Cuckoo Sandbox28 0x05 Cuckoo Sandbox ● Base de données de malware : – http://malwaredb.malekal.com/ – http://virusshare.com/ – http://oc.gtisc.gatech.edu:8080/ – http://contagiodump.blogspot.fr/ – https://www.google.com/cse/home?cx=001439139068102 559330:uruncpbgqm8 – https://avcaesar.malware.lu/ – http://syrianmalware.com/ – URLs malveillantes : http://www.scumware.org/
  • 29.
    Workshop Cuckoo Sandbox29 0x05 Cuckoo Sandbox ● Analyse d'un fichier malveillant – Envoi du fichier laroux.xls :
  • 30.
    Workshop Cuckoo Sandbox30 0x05 Cuckoo Sandbox ● Analyse d'URL malveillante : – Configuration de l'interface réseau (NAT) – Envoi de l'URL malveillante : $ ./submit.py ­­url <url>  
  • 31.
    Workshop Cuckoo Sandbox31 0x05 Cuckoo Sandbox ● Fichiers de reporting : – /opt/cuckoo/storage ● Analyses : contient tout les éléments de l'analyse ● Binaries : contient les binaires analysés – /opt/cuckoo/storage/analyses/
  • 32.
    Workshop Cuckoo Sandbox32 0x05 Cuckoo Sandbox ● Contenu du fichier report.html – Info : cette section donne des informations sur le déroulé de l'analyse (type de fichier, timestamp, nom de la VM de test, durée de l'analyse, version de Cuckoo...) – File : cette section contient des informations sur le fichier analysé (nom, taille, type de fichier, empreinte, détection PeiD, détection YARA et VirusTotal) – Signatures : Il s'agit des signatures de détection (utils/./community.py ­a) – Screenshot : il s'agit des copies d'écran de la vm lors de l'analyse (fichier du repertoire shots) – Static Analysis : il s'agit d'informations sur le fichier (strings, DLL, Sections, imports...) – Dropped Files : il s'agit des fichiers créés par le malware – Network : cette section contient les connexions réseaux du fichier – Behavior : cette section contient des informations sur le comportement du malware (registre, processus, fichiers, mutexes...)
  • 33.
    Workshop Cuckoo Sandbox33 0x05 Cuckoo Sandbox ● Créer des rapports MAEC (Malware Attribute Enumeration and Characterization) – Modifier le fichier reporting.conf : maec40 = on $ sudo apt­get install treeline $ Treeline report.maec.xml (choisir generic xml) http://maec.mitre.org/
  • 34.
    Workshop Cuckoo Sandbox34 0x05 Cuckoo Sandbox ● Créer des rapports PDF – Installation : – Supprimer /cuckoo/modules/reporting/reporthtml.pyc – Créer un fichier pdf.py : – Dans le fichier reporthtml.py ajouter la ligne : $ sudo apt­get install wkhtmltopdf $ git clone https://github.com/JazzCore/python­pdfkit.git $ sudo python setup.py build $ sudo python setup.py install import pdfkit def create_pdf(xhtml, dest):     pdfkit.from_file(xhtml, dest)  from pdf import create_pdf 
  • 35.
    Workshop Cuckoo Sandbox35 0x05 Cuckoo Sandbox ● Créer des rapports PDF – Ajouter à la fin du fichier reporthtml.py : try:    xhtml = open(self.reports_path+"/report.html")    create_pdf(xhtml, self.reports_path+"/report.pdf")    xhtml.close() except (Exception, TypeErro, IOError) as e:    raise CuckooReportError("Failed to generate PDF report: %s" % e)
  • 36.
    Workshop Cuckoo Sandbox36 0x05 Cuckoo Sandbox Aller plus loin dans l'analyse de malware... ● Interface Web Cuckoo 1.2 ● Cuckoo et Volatility ● Cuckoo et Yara ● Aller encore plus loin
  • 37.
    Workshop Cuckoo Sandbox37 0x05 Cuckoo Sandbox ● Interface web Cuckoo 1.2 – Configuration ● Activer la base de donnée MongoDB dans le fichier cuckoo/conf/reporting.conf ● Lancer l'interface web : ● $ cd cuckoo/web/ $ python manage.py runserver
  • 38.
    Workshop Cuckoo Sandbox38 0x05 Cuckoo Sandbox ● Interface web Cuckoo 1.2
  • 39.
    Workshop Cuckoo Sandbox39 0x05 Cuckoo Sandbox ● Cuckoo Sandbox et Volatility – Configuration ● Installation de volatility (apt-get install volatility) ● Cuckoo.conf : modifier memory_dump = on ● Remarque : les dumps mémoires prennent beaucoup  de place, il faudra donc prévoir en conséquence la  taille du disque dans une utilisation courante. ● Le fichier créé se retrouve donc dans le répertoire de l'analyse.
  • 40.
    Workshop Cuckoo Sandbox40 0x05 Cuckoo Sandbox ● Cuckoo Sandbox et Volatility – Analyse de base Identification de la machine : $ volatility ­f memory.dmp imageinfo Analyse des processus : $ volatility ­f memory.dmp ­­profile=WinXPSP3x86 pslist $ volatility ­f memory.dmp ­­profile=WinXPSP3x86 pstree Analyse des connexions : $ volatility ­f memory.dmp ­­profile=WinXPSP3x86 connections Dump d'un processus : $ volatility ­f memory.dmp ­­profile=WinXPSP3x86 procexedump ­p 564 ­D opt/ $ volatility ­f memory.dmp ­­profile=WinXPSP3x86 procexedump ­p 564 ­D opt/ Afficher l'aide : $ volatility ­h
  • 41.
    Workshop Cuckoo Sandbox41 0x05 Cuckoo Sandbox ● Cuckoo Sandbox et Yara – Configuration ● Créer une nouvelle règle /opt/cuckoo/data/yara/binaries/hello.yar: rule HelloWorld { meta:         author = "r1tch1e" strings: $a = "hello world" condition: $a }
  • 42.
    Workshop Cuckoo Sandbox42 0x05 Cuckoo Sandbox ● Cuckoo Sandbox et Yara – Configuration ● Modifier le fichier /opt/cuckoo/data/yara/index_binaries.yar ● Tester la règle : include "/home/r1tch1e/opt/cuckoo/data/yara/binaries/embedded.yar" include "/home/r1tch1e/opt/cuckoo/data/yara/binaries/shellcodes.yar" include "/home/r1tch1e/opt/cuckoo/data/yara/binaries/vmdetect.yar" include "/home/r1tch1e/opt/cuckoo/data/yara/binaries/hello.yar" $ yara hello.yar /home/r1tch1e/share/ HelloWorld /home/r1tch1e/share//hello.exe
  • 43.
    Workshop Cuckoo Sandbox43 0x05 Cuckoo Sandbox ● Volatitlity et Yara : volatility ­f memory.dmp yarascan ­y cuckoo/data/yara/binaries/hello.yar 
  • 44.
    Workshop Cuckoo Sandbox44 0x05 Cuckoo Sandbox ● Pour aller encore plus loin – CuckooMX (https://github.com/xme/cuckoomx) – Pafish Hardening VM (https://github.com/a0rtega/pafish) – Interface graphique avec maltego (https://github.com/bostonlink/cuckooforcanari)
  • 45.
    Workshop Cuckoo Sandbox45 0x06 Documentation 0x01 Présentation 0x02 Objectifs 0x03 Analyse de malware 0x04 Analyse automatisée 0x05 Cuckoo Sandbox 0x06 Documentation 0x07 Conclusion
  • 46.
    Workshop Cuckoo Sandbox46 0x06 Documentation ● http://www.cuckoosandbox.org/ ● https://malwr.com/ ● https://github.com/bostonlink/cuckooforcanari ● http://maec.mitre.org/ ● https://cuckoo.readthedocs.org/en/latest/ ● https://blog.malwarebytes.org/intelligence/2014/04/automati ng-malware-analysis-with-cuckoo-sandbox/ ● http://www.honeynet.org/ ● http://www.google.fr (joke inside)
  • 47.
    Workshop Cuckoo Sandbox47 0x07 Conclusion 0x01 Présentation 0x02 Objectifs 0x03 Analyse de malware 0x04 Analyse automatisée 0x05 Cuckoo Sandbox 0x06 Documentation 0x07 Conclusion
  • 48.
    Workshop Cuckoo Sandbox48 0x07 Conclusion ● Gain de temps ● Identification rapide de la charge malicieuse ● Amélioration du processus de résolution ● Analyse de fichiers et d'URLs ● Multiples fonctionnalités avec les plugins ● Gestion d'une base de connaissance ● Création automatique de rapports
  • 49.
    Workshop Cuckoo Sandbox49 Thomas ROCCIA | @R1tch1e_