Les groupes d’attaquant utilisent aujourd’hui des techniques de plus en plus avancées afin de passer inaperçus aux yeux des mécanismes de détection utilisés par leurs cibles. Certaines de ces attaques utilisent la stéganographie pour tenter de dissimuler des charges malveillantes.
Par exemple, nous avons observé l’utilisation de fichiers WAV, initialement destinés à contenir des données audio, être utilisés afin d’exécuter des malwares. L’article de Symantec[1] faisant référence à Waterbug, évoque cette technique.
Lors d’une réponse à incident, nous avons constaté l’utilisation de ce type de fichier. Les attaquants utilisaient un binaire nommé « Tasklistw.exe » prenant comme paramètre un fichier WAV, dans lequel y était stocké un code permettant d’exécuter Meterpreter. La méthode utilisée par ce binaire était très similaire à celle décrite dans l’article de Cylance[2].
Analyse
Nous allons revoir ensemble comment le binaire malveillant récupérait le contenu malveillant depuis le fichier WAV.
Tout d’abord les 44 premiers octets d’un fichier WAV contiennent son en-tête [3]. L’offset 40 correspond à la taille de la section DATA, dans laquelle va être stockée la charge malveillante. La section DATA quant à elle, est située juste après l’en-tête, à l’offset 44.
L’analyse montre que le malware (Tasklistw.exe) va tout d’abord récupérer la taille de la section du fichier WAV passer en paramètre et ensuite l’extraire avec la fonction ReadFile :
La principale différence avec les éléments identifiés par Cylance se fait sur l’extraction :
La fonction srand va ensuite être appelée avec comme seed 0x309. Puis, pour chaque octet, le binaire va calculer la différence entre la valeur originale et le retour de la fonction rand modulo 256 :
Grâce à ces éléments il a été possible de développer un extracteur en python[4].
Comme dit précédemment, la principale différence avec ce qui a déjà été constaté par Cylance, est le décalage entre les différents octets composant le binaire dans la section DATA du fichier WAV. Il est alors possible de reprendre la règle Yara et de la modifier de la sorte [5]
Néanmoins, cette règle ne permet pas de respecter les bonnes pratiques de performance car trop d’aléatoire.
Références
[1] https://www.symantec.com/blogs/threat-intelligence/waterbug-espionage-governments
[2] https://threatvector.cylance.com/en_us/home/malicious-payloads-hiding-beneath-the-wav.html
[3] https://github.com/corkami/pics/blob/master/binary/wav101/wav101.pdf
[4] https://github.com/Intrinsec/CERT/tree/master/Scripts/turla_wav_extractor
[5] https://github.com/Intrinsec/CERT/blob/master/Signatures/yara/turla_wav.yara
Want to learn more about our Computer Emergency Response Team (CERT) ?