Le but étant de récupérer des URLS & fichiers infectieuses via un machine virtuelle.
Rappel, s'amuser à infecter sa machine pour voir ce que ça fait peut poser des problèmes de sécurité (récupération de mot de passe etc..), cet article est destiné à un public averti
Introduction et prérequis
Vous devez avoir une machine virtuelle (ou un vrai PC) installé et configuré au niveau du réseau.
La machine hôte est soit un PC sous GNU/Linux, soit un PC sous Windows.
Dans ce tutorial, nous utiliserons comme exemple :
- une machine virtuelle avec l'adresse IP : 192.168.1.50/255.255.255.0
- la machine hôte aura l'IP : 192.168.1.4/255.255.255.0
- Un routeur qui partage la connexion.
Attention à bien faire attention durant les configurations réseaux, car il y a de grande chance que vous aillez une configuration plutôt du type 192.168.0.0/255.255.255.0
Ethereal
Pour récupérer le traffic de votre VM, vous pouvez installer Ethereal.
Ethereal est un analyseur réseau (sniffer) qui une fois installé sur votre VM permet de récupérer le traffic réseau et donc les urls auquelles votre VM se connectent.
Pour fonctionner Ethereal n'a besoin d'aucune modification du réseau. Il suffit d'installer Ethereal puis de lancer la capture du traffic pour cela cliquez sur le Menu Capture puis interfaces, cliquez sur capture sur l'interface sur laquelle vous désirez récupérer le traffic.
Pour arreter la capture du traffic, cliquez sur le bouton close.
Le traffic récupéré apparaît alors sous forme de liste. Il est alors possible de placer des filtres sur des protocoles, exporter le fichier en format TXT etc..
Voici un exemple de traffic récupéré par Ethereal :

Le gros avantage d'Ethereal est donc qu'il ne necessite aucune modification de la configuration et qu'il s'installe facilement, néanmoins il présente deux inconvénients, à savoir :
- Etant donné qu'il est installé sur la machine infectée, il se peut qu'il ne puisse pas voir et donc récupéré le traffic réseau rootkité.
- il ne protège pas la VM de traffic comme l'envoi de mail de SPAM
Squid
Squid est un serveur proxy performent et libre.
Squid permet de pallier au deux inconvénients d'Ethereal.
En installant Squid sur la machine hôte et en passant le traffic HTTP de la VM via squid, il est alors possible de récupérer l'intégralité des connexions HTTP effectuées (rootkitées ou non).
Squid fonctionne sous GNU/Linux mais aussi sous Windows.
Installation de squid sous GNU/Linux
- Installer squid via le package de votre distribution
- Vous devez ensuite éditer le fichier de configuration, en général : /etc/squid/squid.conf - Voici un fichier de configuration (non commenté)
Code : Tout sélectionner
visible_hostname ubuntu
http_port 80 transparent
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
access_log /var/log/squid/access.log squid
dns_nameservers 80.10.246.2 80.10.246.129
hosts_file /etc/hosts
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl MonReseau src 192.168.1.0/255.255.255.0
acl SSL_ports port 443 # https
acl SSL_ports port 563 # snews
acl SSL_ports port 873 # rsync
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 631 # cups
acl Safe_ports port 873 # rsync
acl Safe_ports port 901 # SWAT
acl purge method PURGE
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access allow MonReseau
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access deny all
http_reply_access allow all
icp_access allow all
cache_effective_group proxy
coredump_dir /var/spool/squid
- visible_hostname contient le nom réseau de votre machine hôte, vous pouvez récupérer le nom via la commande hostname.
- dns_nameservers contient les adresses des serveurs DNS de votre fournisseur d'accès
- acl MonReseau contient les adresses réseaux des machines qui pourront se connecter sur squid. Dans notre exemple (192.168.1.0/255.255.255.0) les machines dont les adresses vont de 192.168.1.1 à 192.168.1.254 pourront s'y connecter. Vous devez donc modifier les adresses en fonction de la plage réseau utilisée par votre VM.
- enfin coredump_dir est le chemin du cache squid.
Une fois la configuration modifiée, redémarrez squid via la commande : /etc/init.d/squid restart
Il n'y a plus qu'à tester, voir paragraphe plus bas.
Installation de squid sous Windows
- Vous pouvez récupérer squid à partir des mirrors suivants : http://www.acmeconsulting.it/SquidNT/download.html
- Il n'y a pas de programme d'installation, les dossiers de squid sont fourni dans une archive.
- Décompressez l'archive dans le dossier c:\squid
- Via le Bloc-note, créez le fichier C:\squid\etc\squid.conf puis copiez les éléments suivants :
Code : Tout sélectionner
visible_hostname nomdelamachinereseau
http_port 80 transparent
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
access_log C:/squid/var/logs/access.log squid
dns_nameservers 80.10.246.2 80.10.246.129
hosts_file c:/windows/system32/drivers/etc/hosts
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl MonReseau src 192.168.1.0/255.255.255.0
acl SSL_ports port 443 # https
acl SSL_ports port 563 # snews
acl SSL_ports port 873 # rsync
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 631 # cups
acl Safe_ports port 873 # rsync
acl Safe_ports port 901 # SWAT
acl purge method PURGE
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access allow MonReseau
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access deny all
http_reply_access allow all
icp_access allow all
cache_effective_group proxy
coredump_dir c:/squid/var/spool/
- visible_hostname contient le nom réseau de votre machine hôte, vous pouvez récupérer le nom via la commande hostname dans un shell.
- dns_nameservers contient les adresses des serveurs DNS de votre fournisseur d'accès
- acl MonReseau contient les adresses réseaux des machines qui pourront se connecter sur squid. Dans notre exemple (192.168.1.0/255.255.255.0) les machines dont les adresses vont de 192.168.1.1 à 192.168.1.254 pourront s'y connecter. Vous devez donc modifier les adresses en fonction de la plage réseau utilisée par votre VM.
- hosts_file contient le chemin du fichier HOSTS Windows qui peut différer selon dans quel dossier Windows a été installé.
- Toujours dans le dossier C:\squid\etc, supprimez l'extension .default des fichiers cachemgr.conf mime.conf pour obtenir c:\squid\etc\cachemgr.conf et c:\squid\etc\mime.conf
- Créez le dossier c:\squid\var\spool\
- Ouvre un shell, déplacez vous dans le dossier C:\squid\sbin via la commande "cd \" puis "cd c:\squid\sbin"
- Tapez la commande squid -z qui va créer le cache
- Tapez la commande squid, si vous obtenez le message "abnormal program termination", c'est qu'un élément de la configuration est erronnée ou un répertoire mentionné est manquant. Vous pouvez consulter C:\squid\var\logs\cache.log ou C:\squid\var\logs\error.log pour obtenir plus d'informations.
- Si tout est OK, vous pouvez alors installer squid en service la commande "squid -i" (nom par défaut squid) ou "squid -i -n nomduservice"
Configuration Réseau VM et tests
Il convient ensuite de modifier la configuration réseau de votre VM.
Nous allons donc nous mettre en IP fixe (il y a des chances que vous soyez en DHCP).
Avant toute modification, suivez la procédure suivante.
- Menu Démarrer / executer et tapez cmd
- tapez la commande : ipconfig /all > c:\confreseau.txt
- Fermez les fenêtres
- Ouvrez le poste de travail, puis le fichier c:\confreseau.txt
- Gardez les informations réseaux ouvert.
Voici un exemple de configuration.. que je vais détailler plus bas.

- Dans le champs Adresse IP et masque de sous-réseaux, ressaisissez les même adresses que celles obtenus dans le Bloc-Note.
- Laissez le champs passerelle vide.
- Dans le champs DNS, saisissez l'adresse de votre routeur.
- alidez toutes les fenêtres par le bouton OK.
Nous allons maintenant configurer les informations de connexion du proxy sur Internet Explorer.
- Ouvrez internet Explorer
- Menu Outils / Options Internet
- Cliquez sur l'onglet Connexions
- Cliquez sur le champs "Connexions réseaux"
- Dans le champs adresse, saisissez l'adresse IP de la machine hôte.
- Dans le champs port, saisissez 80
- Validez toutes les fenêtres par le bouton OK.
Vérifiez que vous pouvez surfer.
Si c'est le cas tout est OK !
Vous pouvez aussi vérifier que les connexions vers les serveurs d'envoi de mails (SMTP) ne sont pas possibles, afin lorsque votre VM sera infectée.. d'être certains que les malwares ne pourront pas envoyer de mails de SPAM. Pour cela :
- Menu Démarrer / executer et tapez cmd
- Dans la nouvelle fenêtre, tapez : telnet smtp.orange.fr 25
- Un message doit vous dire que la connexion a échoué.
Si vous obtenez l'encar suivante, c'est que la connexion a réussi dans ce cas, vérifiez votre connexion réseau (notamment la passerelle).
"Connected to smtp.orange.fr.
Escape character is '^]'.
220 mwinf2007.orange.fr ESMTP ABO **************************"
Exemple de récupération de traffic HTTP
Voici un exemple de récupération du traffic sur une VM en cours d'infection.
Du côté de la VM : Nous pouvons voir le site du rogue WinAntivirus Pro à l'origine de l'infection..
Dans la partie de droite, ProcessExplorer nous permet de visualiser les processus suspects en cours d'execution sur la machin.
Enfin en bas à droite, une fausse alerte indiquant que notre ordinateur est infecté afin de nous faire télécharger un rogue
Sur le log Squid : Nous voyons bien les sites défiler avec notamment en premier une url avec un fichier .anr, probablement l'exploitation de la faille ANI.

Squid récupère donc bien le traffic HTTP durant l'infection de la VM.
Il est alors possible de vérifier si les fichiers infectieux sont bien détectés par les antivirus etc..