La semaine dernière, vous avez téléchargé un jeu cracké sur votre site de partage préféré et vous y jouez depuis trois jours…
Sauf que voilà, de récents commentaires indiquent que l’archive contient un virus et qu’il vaut mieux ne pas la télécharger.
Pas de panique ! Voici un bon moyen pour vous instruire un peu en trouvant comment nettoyer votre ordinateur !
Note : Au cours de cet article, j’analyserai les fichiers d’un jeu piraté, téléchargé sur un site de torrents bien connu. Je l’ai bien évidemment téléchargé uniquement à des fins d’analyse pour rédiger cet article.
Virus detecté par Avira : SPR/Tool.Keygen.3507
Je m’en passerais donc malgré l’avoir telechargé.
…
kaspersky l’a choppé : « trojan ». 2 Go pour rien ! dommage
c pas pour moi on dirai
<= Les fautes de français ne sont pas de moi !
Ce genre de commentaire peut vite vous faire déchanter s’ils sont postés pour un logiciel que vous avez téléchargé illégalement et utilisez depuis quelques jours.
Mais Avast ne détecte rien… Qui doit-on croire ? Que doit-on faire ?
Analyser la menace et l’éradiquer de manière ciblée !
Initialisons notre environnement d’analyse
Nous utiliserons le logiciel d’analyse « Cuckoo ».
Installation de cuckoo sous kali Linux
Python et ses plugins
Python devrait déjà être installé par défaut. Il faut quand même que nous installions quelques modules additionnels :
apt-get install python python2.7-dev python-sqlalchemy python-dpkt python-jinja2 python-magic python-pymongo python-libvirt python-bottle python-pefile
Il faut aussi installer ssdeep et pyssdeep :
wget http://downloads.sourceforge.net/project/ssdeep/ssdeep-2.9/ssdeep-2.9.tar.gz tar xzfvp ssdeep-2.9.tar.gz cd ssdeep-2.9 svn checkout http://pyssdeep.googlecode.com/svn/trunk/ pyssdeep ./configure make make install cd pyssdeep make make install ldconfig
tcpdump
Normalement, cet outil est déjà installé sous backtrack.
Dans le doute, vous pouvez exécuter la commande suivante :
apt-get install tcpdump
On ne veut pas que Cuckoo s’exécute avec les droits « root », il faut permettre à tous les utilisateurs d’utiliser tcpdump :
setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump
Installer cuckoo
Nous commençons par installer git s’il n’est pas déjà présent sur notre Linux :
apt-get install git
Puis nous installons cuckoo :
cd /opt git clone git://github.com/cuckoobox/cuckoo.git sudo adduser cuckoo
Nous pouvons maintenant configurer Cuckoo comme bon nous semble en éditant les fichiers suivants :
- conf/cuckoo.conf
- conf/virtualbox.conf
- conf/reporting.conf
A priori les options sont bien documentées et on peut facilement comprendre à quoi elles servent.
Installer VirtualBox
wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | sudo apt-key add - echo "deb http://download.virtualbox.org/virtualbox/debian oneiric contrib" >> /etc/apt/sources.list apt-get update apt-get install virtualbox-4.2 linux-headers-3.7-trunk-686-pae dkms libsdl-ttf2.0-0 sudo usermod -a -G vboxusers cuckoo
Pas trop dur ?
Création d’une machine virtuelle Windows
Vous devez maintenant créer une machine virtuelle sous Windows XP ou Windows 7 (sans contrôle d’accès utilisateur).
Pensez bien à faire correspondre la configuration de votre machine virtuelle avec les données saisies dans le fichier virtualbox.conf.
Installez les « Additions invitées » sur votre machine virtuelle.
Installer python sur la machine virtuelle
Cuckoo requiert que python soit installé sur votre machine virtuelle. La librairie de traitement d’image est également nécessaire si vous souhaitez avoir des captures d’écran dans les rapports :
Configurer le réseau de votre machine virtuelle
Backtrack doit voir passer le trafic entre la machine virtuelle et Internet.
La manière la plus simple est de configurer le réseau de la machine virtuelle en « Host only » et faire suivre le trafic en direction de l’extérieur à l’aide des tables de routage :
iptables -A FORWARD -o eth0 -i vboxnet0 -s 192.168.56.0/24 -m conntrack --ctstate NEW -j ACCEPT iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT iptables -A POSTROUTING -t nat -j MASQUERADE
Dans la première commande, vous devez adapter quelques options :
- eth0 correspond à l’interface réseau de backtrack connectée à Internet (-o veut dire « out »)
- vboxnet0 correspond à l’interface réseau de backtrack connectée à la machine virtuelle (-i veut dire « in »)
- 192.168.56.0/24 est le masque de sous réseau de l’interface vboxnet0.
Ajoutez ensuite une entrée dans la table de routage de votre Windows pour rediriger le trafic sur la bonne interface réseau :
route -p add 0.0.0.0 mask 0.0.0.0 192.168.56.1
Pour terminer la configuration du réseau, il ne reste qu’à activer le reroutage :
sysctl -w net.ipv4.ip_forward=1
Placer l’agent cuckoo
On n’a pas installé python sur la machine virtuelle par plaisir…
Pour que cuckoo fonctionne, il a besoin que le script agent.py que l’on trouve dans le dossier agent soit lancé sur la machine virtuelle.
Nous devons le copier sur la machine virtuelle et changer son extension en « .pyw » (pour ne pas afficher la console)
Finalisation de la machine
Pour bien terminer cette installation, il faut redémarrer la machine virtuelle.
Il est très fortement conseillé ensuite de sauvegarder l’état de la machine pour l’utiliser et analyser plusieurs fichiers :
VBoxManage snapshot "cuckoo1" take "sauvegarde-2013-02-21" --pause
cuckoo1 est le nom de la machine virtuelle.
sauvegarde-2013-02-21 est le nom de la sauvegarde.
Vous pourrez à tout moment restaurer cette sauvegarde en exécutant les commandes suivantes :
VBoxManage controlvm "cuckoo1" poweroff VBoxManage snapshot "cuckoo1" restorecurrent
Analysons le « jeu » comme des nul(l)s
Dans un premier temps, lançons cuckoo :
cd /opt/cuckoo python cuckoo.py
Cas d’un simple exécutable
Il faut soumettre notre jeu à cuckoo :
./utils/submit.py --package exe MarkoftheNinja.exe
Cas d’une arborescence
Il faut utiliser notre gestionnaire d’archives favoris pour placer toute l’arborescence d’installation du jeu dans une archive zip sans mot de passe.
Il ne nous reste qu’à donner cette archive à cuckoo :
./utils/submit.py --package zip --options file=setup.exe mon-archive.zip
–package zip indique que l’on souhaite analyser une archive. Plus d’options sont disponibles ici : http://docs.cuckoosandbox.org/en/latest/usage/packages/
–options file=setup.exe donne le chemin du fichier à exécuter une fois l’archive décompressée.
mon-archive.zip est le chemin vers l’archive à envoyer à la machine virtuelle.
Résultats
J’analyserai ces résultats en détail dans mon prochain article.
Note : J’ai dû copier mon exécutable à la main sur ma machine virtuelle Windows 7, puis j’ai modifié le code source de la fonction « add_malware » dans agent.py comme ceci :
def add_malware(self, data, name):
« » »Get analysis data.
@param data: analysis data.
@param name: file name.
@return: operation status.
« » »
global ERROR_MESSAGE
data = data.dataif self.system == « windows »:
root = os.environ[« TEMP »]
elif self.system == « linux » or self.system == « darwin »:
root = « /tmp »
else:
ERROR_MESSAGE = « Unable to write malware to disk because of failed identification of the operating system »
return Falsefile_path = os.path.join(root, name)
try:
os.rename(os.path.join(root, « MarkoftheNinja.exe »), file_path)except IOError as e:
ERROR_MESSAGE = « Unable to write malware to disk: %s » % e
return Falsereturn True
C’est de la grosse bidouille, mais ça a fonctionné !
Conclusion
Exécuter un virus, un cheval de Troie ou tout autre logiciel malveillant sur un ordinateur n’est pas une fatalité en soi : si vous savez ce qu’il modifie sur votre ordinateur, pour pourrez aisément le mettre hors d’état de nuire.
Lorsque l’on étudie un logiciel malveillant, il faut toujours supposer qu’il pourra sortir de l’environnement virtuel où il est exécuté. Il ne faudra jamais que vous exécutiez Cuckoo avec des droits d’administration.
Mon prochain article sera consacré à l’analyse détaillée des résultats fournis par Cuckoo pour cet exemple, et aux moyens que l’on peut mettre en place pour se débarrasser de la menace, tout en conservant les fonctionnalités désirées du logiciel téléchargé.
Encore une fois, j’ai uniquement téléchargé cette version corrompue d’un jeu sous licence pour but d’analyse. Je vous invite à acheter le jeu si vous souhaitez y jouer en toute sécurité : http://store.steampowered.com/app/214560/?l=french . 15€, ce n’est pas excessivement cher…
Parce que je n’ai (toujours) pas la science infuse : sources
- http://advancedmalwareprotection.blogspot.fr/2012/03/ntr-and-sandbox-integration.html
- http://www.edwiget.name/2012/07/installing-cuckoo-sandbox-in-backtrack-for-malware-analysis/
- http://docs.cuckoosandbox.org/en/latest/
- https://www.virtualbox.org/wiki/Linux_Downloads
- http://santi-bassett.blogspot.fr/2013/01/installing-cuckoo-sandbox-on-virtualbox.html
- https://forums.virtualbox.org/viewtopic.php?f=2&t=50564
- http://www.cyberciti.biz/tips/linux-iptables-9-allow-icmp-ping.html
- http://doc.ubuntu-fr.org/iptables
- http://dardofrecuencias.blogspot.fr/2011/08/how-to-configure-host-only-networking.html
Magnificent items from you, man. I have remember your stuff prior to and you
are simply too great. I actually like what you’ve received here, certainly like what you’re stating and
the way by which you say it. You are making it entertaining and you continue to take care
of to stay it wise. I cant wait to read much more from you.
That is really a tremendous site.
Arrête, je vais rougir 🙂
Merci pour ton commentaire, ça m’a fait plaisir et me motive un peu plus pour continuer !
Super tuto mais je suppose qu’un malware pourrait vérifier les processus présents a son démarrage pour savoir si on l’exécute sur une virtual machine et si c’est le cas, « être gentil ». Est ce possible ?
Techniquement j’imagine qu’il doit y avoir des moyens pour détecter si une application est exécuté sur une machine virtuelle (en cherchant les modules invités de ces dernières par exemple).
Mais concrètement, l’utilité de cette détection lors d’une « vraie » attaque est limitée car les serveurs que l’on veut cibler tournent souvent sur des machines virtuelles.
Il peut par contre être intéressant de détecter la présence d’outils d’analyse forensic, comme les « bacs à sables » des antivirus, pour avoir un meilleur comportement (par exemple juste s’éteindre).
La vidéo d’une conférence complètement dans le sujet
tout d’abord merci pour ce blog très utile pour l’implémentation de cuckoo. sinon après l’installation de cuckoo & virtualbox, je n’ai pas de rapport dans le dossier storage/analyses. les machines se ping, et j’ai installé l’agent sur le wxp. il est évident que j’ai du faire un loupé néanmoins cherchant de manière infructueuse depuis quelque temps. un petit coup de main ou une piste serait la
bienvenue
La documentation de Cuckoo est assez complète.
Le dossier storage/analyses devrait se trouver dans le dossier personnel de l’utilisateur « Cuckoo ». Un petit « locate » de « report.metadata.xml » peut également te donner le dossier où est situé le résultat de l’analyse.
http://cuckoo.readthedocs.org/en/latest/usage/results/
Bonjour,
j’ai lu votre tutoriel mais quandje lance cuckoo il m’affiche:
CuckooCriticalError: Unable to bind result server on 192.168.56.1:2042: [Errno 99] Cannot assign requested address
que faire
merci et bonne journée.
https://github.com/cuckoobox/cuckoo/blob/master/docs/book/src/faq/index.rst
Tout à la fin, la réponse à ta question.
merci de ta réponse je vais voir