Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Malware Analysis with Cuckoo Sandbox

Malware Analysis with Cuckoo Sandbox

This presentation is about how to use Cuckoo sandbox to quickly analyse a malware.

Thomas Roccia

March 10, 2015
Tweet

More Decks by Thomas Roccia

Other Decks in Technology

Transcript

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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
  9. 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
  10. 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.
  11. 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
  12. 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)
  13. 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
  14. 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
  15. 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
  16. 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
  17. 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
  18. 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
  19. 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 \\vboxsrv\share
  20. 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
  21. 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_settings\all_user\Start_Menu\Programs\startup – 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
  22. 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...)
  23. 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
  24. 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
  25. 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
  26. 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/
  27. Workshop Cuckoo Sandbox 29 0x05 Cuckoo Sandbox • Analyse d'un

    fichier malveillant – Envoi du fichier laroux.xls :
  28. 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>
  29. 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/
  30. 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...)
  31. 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/
  32. 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
  33. 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)
  34. 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
  35. 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
  36. 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.
  37. 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
  38. 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 }
  39. 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
  40. Workshop Cuckoo Sandbox 43 0x05 Cuckoo Sandbox • Volatitlity et

    Yara : volatility ­f memory.dmp yarascan ­y cuckoo/data/yara/binaries/hello.yar
  41. 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)
  42. 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
  43. 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)
  44. 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
  45. 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