Home Mise en place d'un lab d'analyse de malware
Post
Cancel

Mise en place d'un lab d'analyse de malware

Cet article est le premier d’une série sur l’analyse de code malveillant. Cette série sera principalement dédié aux logiciels malveillants sur Windows.

Ce premier billet est présente la mise en place d’un environnent virtuel isolé dédie à l’analyse de malware.

Malware Lab

Le plan pour ce lab est de mettre en place deux machines virtuelles (VMs) : l’une sous Debian 11 servira de routeur et permettra si besoin d’analyser les paquets qui transitent sur la machine où seront présent les malwares.

La seconde machine d’analyse de malware sera une VM Windows 11 Enterprise que Microsoft fournit gratuitement mais qui a une durée limitée.

Comme hyperviseur, j’ai choisi VMware Workstation. Bien sûr, il est tout à fait possible de monter son lab sur un autre hyperviseur de type 2 tel que VirtualBox.

Routeur

Je me suis dis que ça serait intéressant de créer un réseau dédié avec un routeur qui pourrait agir comme pare-feu. J’ai choisi d’installer Debian 11 et de faire du routage et si besoin bloquer des paquets avec iptables pour éviter que les fichiers présent sur la VM détonation de malware soient exportés.

Après la création de la machine virtuelle, j’ai ajouté une nouvelle interface réseau dédiée à un segment LAN nommée “MalwareLAN”.

image

Pour qu’elle consomme un minimum de ressources cette machine virtuelle n’aura pas d’interface graphique.

Comme la machine virtuelle dispose de deux interfaces réseau, il faut choisir une interface principale, pour ma part : ens33.

image

La première interface (ens33) se configure automatiquement grâce au serveur DHCP de VMware. Il faudra en revenche configurer manuellement la seconde interface réseau (ens34).

Voici à quoi ressemble mon fichier de configuration dans /etc/network/interfaces.

1
2
3
4
5
6
7
8
 allow-hotplug ens33
 allow-hotplug ens34
 iface ens33 inet dhcp
 
 iface ens34 inet static
 	address 192.168.123.1
 	netmask 255.255.255.248
 	dns-nameserver 1.1.1.1 1.0.0.1

J’ai choisi comme réseau 192.168.123.1/29 pour un maximum de 6 adresses IP utilisables.

Cette machine agissant comme routeur, l’adresse de l’interface ens34 sera la passerelle pour le réseau MalwareLAN.

Voici ci-dessous le script pour le routage des connexions vers les machines du réseau utilisé.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/bin/bash

WAN=ens33
LAN=ens34

# Delete all existing rules.
iptables -F
iptables -t nat -F 
iptables -t mangle -F 
iptables -X 
 
# Don't stop established connections
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT

# forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -A FORWARD -i $LAN -o $WAN -j ACCEPT
iptables -A FORWARD -i $WAN -o $LAN -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o $WAN -j MASQUERADE

Pour éviter de lancer ce script à chaque démarrage de la machine, on peut installer le paquet iptables-persistent qui sauvegarde la configuration iptables et l’applique à chaque démarrage.

Pour ça il faut installer le paquet iptables-persistent et rediriger la sortie de la commande iptables-save vers /etc/iptables/rules.v4 : iptables-save > /etc/iptables/rules.v4.

Il ne faut pas oublier d’activer le transfert de paquets de façon persistante : echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf.

On a donc la première VM de notre lab qui est prête. Un point à noter, c’est qu’il n’y a pas de serveur DHCP.

Si vous souhaitez mettre en place un serveur DHCP, je vous conseille d’utiliser Dnsmasq qui peut aussi être utilisé comme serveur DNS.

Malware Box

La VM Windows sera utilisée pour analyser et détonner des malwares.

Pour ça, il faudra télécharger une machine Windows 11 Enterprise. Microsoft fournit des machines virtuelles prêtes à l’emploi pour différents hyperviseurs. Ces images sont disponibles sur le site dédié aux développeurs : developer.microsoft.com.

image

Attention : la validité de ces VMs est de 90 jours.

Après avoir importé l’image dans VMware, on constate qu’elle possède deux interfaces réseau. Il faut supprimer la deuxième interface réseau et associer celle qui reste au même segment LAN que la VM routeur.

image

Dans les options je vous conseille de désactiver le partage de dossiers ainsi que les options de copier-coller et glisser-déposer, si elles sont activées.

Lorsque la machine est démarrée, celle-ci n’est pas connectée à Internet. Donc il n’est pas possible d’installer les outils nécessaires.

Il faut que l’on configure les paramètres réseau pour cette VM pour qu’elle communique avec internet par l’intermédiaire de la VM routeur.

Dans les réglages réseaux on édite la configuration de la machine comme ci-dessous.

Si la configuration IP est correcte on peut communiquer avec google.com via la VM routeur.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
C:\Users\User>ping 192.168.123.1
Pinging 192.168.123.1 with 32 bytes of data:
Reply from 192.168.123.1: bytes=32 time=1ms TTL=64
Reply from 192.168.123.1: bytes=32 time<1ms TTL=64
Reply from 192.168.123.1: bytes=32 time=1ms TTL=64
Reply from 192.168.123.1: bytes=32 time=1ms TTL=64

Ping statistics for 192.168.123.1:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 1ms, Average = 0ms
C:\Users\User>ping google.com
Pinging google.com [216.58.214.174] with 32 bytes of data:
Reply from 216.58.214.174: bytes=32 time=12ms TTL=127
Reply from 216.58.214.174: bytes=32 time=11ms TTL=127
Reply from 216.58.214.174: bytes=32 time=11ms TTL=127
Reply from 216.58.214.174: bytes=32 time=12ms TTL=127

Ping statistics for 216.58.214.174:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 11ms, Maximum = 12ms, Average = 11ms 

Pour être sûr que les paquets réseau passent bien par notre routeur, on fait un ping sur la machine Windows vers google.com et on vérifie à l’aide tcpdump depuis la VM routeur.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
root@router:~# tcpdump -i ens34 icmp
tcpdump: verbose output suppressed, use -v[v]. for full protocol decode
listening on ens34, link-type EN10MB (Ethernet), snapshot length 262144 bytes
10:06:47.093926 IP 192.168.123.2 > par10s38-in-f14.1e100.net: ICMP echo request, id 1, seq 1, length 40
10:06:47.101627 IP par10s38-in-f14.1e100.net > 192.168.123.2: ICMP echo reply, id 1, seq 1, length 40
10:06:48.131825 IP 192.168.123.2 > par10s38-in-f14.1e100.net: ICMP echo request, id 1, seq 2, length 40
10:06:48.141725 IP par10s38-in-f14.1e100.net > 192.168.123.2: ICMP echo reply, id 1, seq 2, length 40
10:06:49.145017 IP 192.168.123.2 > par10s38-in-f14.1e100.net: ICMP echo request, id 1, seq 3, length 40
10:06:49.154638 IP par10s38-in-f14.1e100.net > 192.168.123.2: ICMP echo reply, id 1, seq 3, length 40
10:06:50.171114 IP 192.168.123.2 > par10s38-in-f14.1e100.net: ICMP echo request, id 1, seq 4, length 40
10:06:50.180711 IP par10s38-in-f14.1e100.net > 192.168.123.2: ICMP echo reply, id 1, seq 4, length 40
^C
8 packets captured
8 packets received by filter
0 packets dropped by kernel

On voit bien des requêtes ICMP vers l’un des serveurs de Google.

Maintenant nous pouvons installer les outils nécessaires.

Je vais installer uniquement les outils nécessaires pour mon prochain article :

  • Python 3.10 : scripting
  • IDA : désassembleur
  • x64/x32dbg : débogueur
  • ImHex: Éditeur hexadécimal
  • Process Hacker: outil visualisation avancée des processus Windows

Ceci-dit, il existe un outil permettant d’installer tous les logiciels nécessaires pour faire de la réponse à incident, du pentesting et de l’analyse forensique : Flare-VM, développé par la société Mandiant.

A noter qu’il faut désactiver toutes les fonctionnalités de Windows Defender avant de lancer le script d’installation. De plus l’installation des outils peut prendre plusieurs minutes voire une heure ou deux en fonction de votre connexion Internet.

Dès que l’installation des outils est finie, je vous conseille de faire un premier snapshot de la VM. En cas d’exécution d’un malware on peut revenir à un état “propre” de la machine.

Pour visuellement séparer mon lab des autres VMs, j’ai aussi créé un dossier nommé MalwareLab qui regroupe actuellement mes machines routeur et Windows.


Le lab est enfin prêt pour la suite !

Donc pour résumer, avec VMware on a créé un réseau dédié à notre lab.

Ce lab contient deux VMs l’une qui sert de routeur, mais sera aussi utile pour l’analyse réseau, l’autre, une VM Windows 11 fournie par Microsoft qui nous permettra de détonner et d’analyser des logiciels malveillants.

Le prochain article parlera de l’analyse d’un ransomware, possiblement en plusieurs parties vu que c’est l’un des plus sophistiqués.

J’espère que ce post vous a plu, n’hésitez pas à me contacter sur Twitter ou même par mail si vous avez des questions.


Liens et sources :

This post is licensed under CC BY 4.0 by the author.