1 - Evolution des protocoles de communication des codes malveillants

Les logiciels de prise de contrôle à distance utilisés dans des attaques ciblées ou de grande ampleur ont pendant un certain temps ignoré l'état de l'art en matière de chiffrement des communications. C'est notamment le cas du code Lingbo qui utilise le protocole HTTP pour dialoguer [1].

Les mécanismes d'encapsulation protocolaires commencent à être rencontrés, en particulier pour contourner les politiques de filtrage et pour assurer un certain niveau de furtivité. Certains codes, tels que HydraQ ou Poison Ivy [2], chiffrent leurs communications. Ils sont toutefois vulnérables à des mécanismes de détection relativement simples.

HydraQ, par exemple, communique en utilisant TCP en dérivant une clé de chiffrement de ses 4 premiers octets. Dans les premières versions, ces 4 octets avaient pour valeur "9002" [3] (cette valeur a été changée dans d'autres versions, puis une encapsulation dans le protocole HTTP a été enfin ajoutée).

Poison Ivy utilise quant-à-lui le chiffrement "Camelia ECB" [4] sur des blocs de 16 octets et emploie des en-têtes de données prédictibles. En connaissant la clé de chiffrement, il peut donc être possible d'effectuer des signatures simples sur les données chiffrées, comme le montre la règle Snort suivante [5] basée sur la clé de chiffrement par défaut de ce maliciel :

alert tcp $HOME\_NET any -> $EXTERNAL\_NET any (msg:"ET TROJAN PoisonIvy?.Emp Keepalive to CnC?";
flow:established,to\_server; content:"|7a 05 61 17 27 f5 09 f9 05 a2 ff 71 e0 49 96 47|";
offset:16; depth:16; dsize:48;
reference:url,www.mcafee.com/threat-intelligence/malware/default.aspx?id=541210; classtype:trojan-activity;
sid:2013922; rev:1;)

Cependant, suite au déploiement de systèmes de détection réseau par les responsables de sécurité, les auteurs de maliciels ont adapté leurs codes.

De plus en plus de codes implémentant un chiffrement grand public sont rencontrés, comme SSL/TLS, comme par exemple Naikon [6].

De plus, certains maliciels comme CozyDuke [7], s'appuient sur des sites légitimes tels que "twitter.com".

Enfin, certains codes utilisent de plus en plus de paramètres variables dans leurs algorithmes, empêchant la mise en place d'une règle de détection générique. C'est notamment le cas du code malveillant PlugX [8], qui utilise un chiffrement propriétaire relativement faible, mais dont les valeurs d'initialisation varient à chaque échantillon. De même, Pirpi [9] ou Chopstick [10] emploient une encapsulation HTTP dont les paramètres GET utilisés sont choisis aléatoirement dans des listes prédéfinies.

Il apparaît donc de plus en plus que la détection réseau doit être complétée. L'utilisation de mécanismes de détection de niveau système devrait être favorisée. Notamment, la supervision des machines cibles devrait permettre de détecter des changements inhabituels.

Documentation

  1. The Mirage Campaign :
    http://www.secureworks.com/cyber-threat-intelligence/threats/the-mirage-campaign/
    
  2. Operation SMN :
    http://www.novetta.com/2015/06/operation-smn-full-report/
    
  3. Operation Ephemeral Hydra :
    https://www.fireeye.com/blog/threat-research/2013/11/operation-ephemeral-hydra-ie-zero-day-linked-to-deputydog-uses-diskless-method.html
    
  4. Poison Ivy RAT, configuration & communications :
    http://blog.conixsecurity.fr/wp-content/uploads/2013/10/Poison-Ivy-RAT-conf-comms.pdf
    
  5. http://doc.emergingthreats.net/bin/view/Main/2013922
    
  6. The Naikon APT :
    http://www.viruss.eu/news/the-naikon-apt/
    
  7. THE DUKES, 7 years of Russian cyberespionage :
    https://www.f-secure.com/documents/996508/1030745/dukes_whitepaper.pdf
    
  8. Analysis of a Recent PlugX Variant :
    http://blog.jpcert.or.jp/.s/2015/01/analysis-of-a-r-ff05.html
    
  9. More on the IE 0-day - Hupigon Joins The Party :
    https://www.fireeye.com/blog/threat-research/2010/11/ie-0-day-hupigon-joins-the-party.html
    
  10. APT28, a Window into Russia's Cyber Espionage Operations ? :
    https://www.fireeye.com/blog/threat-research/2014/10/apt28-a-window-into-russias-cyber-espionage-operations.html
    

2 - Copie de disque

Le CERT-FR est régulièrement sollicité pour des conseils sur la procédure de copie d'un disque dur.

Avant d'arrêter la machine pour réaliser la copie, il faut s'assurer que toute les opérations de collecte de traces du système en fonctionnement ont été effectuées (par exemple capture de mémoire volatile).

Copie logique et copie physique

Il existe deux types de copies : la copie logique et la copie physique. La copie logique s'appuie sur le système d'exploitation. Elle ne permet pas de copier la totalité du disque dur. Entre autres, les secteurs dédiés à la séquence de démarrage, les métadonnées du système de fichier et l'espace non alloué ne sont pas récupérés.

La copie physique est une copie bas-niveau qui permet de copier chaque bit du disque. Ainsi, l'ensemble des données et des metadonnées sont récupérées.

La copie physique doit donc toujours être privilégiée, sauf dans les rares cas où elle est impossible (par exemple si la machine de peut pas être arrêtée).

Dans tous les cas il faut veiller à préserver l'intégrité du disque et des données qu'il contient. En particulier, il faut veiller à ne pas confondre la source et la destination pour ne pas écraser le disque à copier avec le contenu du support de stockage.

Matériel necessaire pour la copie

Si le disque à copier peut être extrait de la machine, on peut utiliser :
  • soit un copieur, matériel spécialisé sur laquelle on connecte le disque à copier et un support de stockage pour la copie ;
  • soit un ordinateur sur lequel le disque à copier est connecté via un bloqueur, appareil conçu pour empêcher toute écriture sur le disque.

Si le disque à copier ne peut pas être retiré de la machine, on peut démarrer celle-ci sur un disque optique ou une clé USB contenant un système d'exploitation spécialisé telle que la distribution Linux DEFT. Quelque soit le matériel utilisé, l'utilisation d'une distribution spécialisée est à privilégier ; elles proposent les outils nécessaires à la copie (avec parfois une interface graphique) et sont configurées pour éviter l'altération des disques connectés. Le montage automatique des disques doit être systématiquement désactivé.

Copie physique d'un disque sous Linux

Dans cette partie, on considère que la copie est effectuée sur un système Linux et que l'on dispose d'un espace, monté en /mnt, assez grand pour accueillir la copie. La première étape consiste à identifier le fichier périphérique (device) correspondant au disque à copier. Pour cela, on peut utiliser une des deux méthodes suivantes :
  • exécuter la commande 'tail -f /var/log/syslog' puis brancher le disque (via le bloqueur en écriture si possible). Le fichier périphérique correspondant au disque devrait être indiqué (par exemple sous la forme '[sdX]');
  • exécuter la commande 'lshw -class disk', brancher le disque (via le bloqueur en écriture si possible), exécuter de nouveau 'lshw -class disk' et repérer le nouveau disque.

Une fois identifié le fichier périphérique correspondant au disque (/dev/sdX), on peut réaliser la copie avec la commande 'dd' (ou d'autres outils tels que 'dcfldd' et 'ddrescue') :

dd if=/dev/sdX of=/mnt/image_disque.dd bs=4k conv=noerror,sync

Le fichier /mnt/image_disque.dd contient alors une copie physique du disque dur. Puis, on vérifie que la copie est correcte en comparant les condensats du disque et de la copie :

sha1sum /dev/sdX /mnt/image_disque.dd > disque.sha1

Lors de la transmission de l'image du disque, le fichier contenant les condensats (disque.sha1) devra également être fourni. Il permettra de vérifier la conformité de la copie de l'image.

Copie physique d'un disque sous Windows

Si on dispose d'une machine sous Windows, on peut réaliser la copie à l'aide d'un logiciel doté d'une interface graphique tel que FTK Imager. Dans ce cas, il est fortement conseillé de connecter le disque dur à copier via un bloqueur en écriture. Après avoir vérifié que l'on dispose d'un espace suffisant pour enregistrer l'image du disque, on procède à la copie en suivant les étapes suivantes :
  • lancer FTK Imager ;
  • dans le menu "File", choisir "Create Disk Image" ;
  • sélectionner "Physical Drive" comme type de source puis le disque à copier et cliquer sur le bouton "Finish" ;
  • dans la fenêtre suivante, laisser l'option "Verify images..." cochée et cliquer sur le bouton "Add" ;
  • choisir le format de l'image (généralement "Raw (dd)"), renseigner les champs d'informations et la destination puis cliquer sur le bouton "Finish" ;
  • lancer la copie en cliquant sur le bouton "Start" de la fenêtre "Create Image".

Rappel des publications émises

Dans la période du 14 septembre 2015 au 20 septembre 2015, le CERT-FR a émis les publications suivantes :