Nous avons décrit à plusieurs reprises sur ce blog les difficultés rencontrées par les solutions antivirales pour faire face aux infections à grande échelle, comme Conficker ou Virut. Voici un autre cas, celui des doubles infections.
Un client nous a récemment contacté pour nous faire part de ses difficultés à éradiquer un virus de son parc, bien qu'il soit détecté par la solution antivirale déployée sur ses postes de travail et serveurs. Pour déterminer la famille du malware, commençons par effectuer un scan à la demande d'un échantillon avec différents moteurs antivirus :

Presque tous les antivirus s'accordent pour dire qu'il s'agit d'une variante de Sality, le dernier infecteur de PE à la mode (cf article dans MISC 48). Cela peut rapidement être confirmé en regardant les sections du binaire ; on trouve bien une section .nrdata, avec des caractéristiques de lecture/écriture/exécution :

Cependant, il est bien connu qu'il ne faut pas se fier aux signatures fournies lors des scan à la demande ; nous allons donc exécuter le binaire en sandbox. On constate alors entre autres le blocage de l'accès au gestionnaire des tâches et à l'éditeur de base de registre. Jusqu'ici, tout concorde avec Sality et on peut commencer à donner au client les premières préconisations d'éradication des infecteurs de PE en environnement d'entreprise.
Mais d'autres comportements du malware en VM ne correspondent pas à ce qui est attendu. En particulier, les éléments suivants sautent aux yeux :
- le binaire crée un processus netmon.exe. Il droppe également un pilote sysdrv32.sys et cache ce processus par DKOM sur la liste chainée des _EPROCESS. Ce driver est enregistré sous le service Play Port I/O Driver. Tous ces noms ne nous sont pas méconnus puisqu'il s'agit des caractéristiques que l'on peut retrouver dans le ver Neeris ou quelques IRCbot.
- il crée 2 clés afin d'assurer son lancement même en mode sans échec (alors que Sality est censé supprimer les clés Network et Minimal de HKLM\SYSTEM\CurrentControlSet\Control\SafeBoot pour justement empêcher ce démarrage en mode sans échec, ce qui est contradictoire)
- il tente de se connecter au port 445/tcp (microsft-ds) sur des IP aléatoires :

De fait, le binaire se propage en exploitant la vulnérabilité MS08-067 à la manière de Conficker, ce qui est démontré par le fameux motif "\..\..\" dans les paquets SMB :

- il ajoute une exception au pare-feu Windows et met un pseudo-serveur web en écoute sur un port aléatoire pour distribuer un exécutable qui sera téléchargé par les systèmes nouvellement compromis lors de l'exploitation de cette vulnérabilité

Au passage, on remarque que le serveur répond avec un en-tête Server: private. Cette chaîne est codée en dur dans le binaire déchiffré :

Ainsi, bien que le port en écoute soit aléatoire, ceci peut donc être utilisé comme signature afin de détecter à distance les systèmes infectés. Nous avons implémenté cette méthode dans un simple script Nmap. Une machine infectée retournera le résultat suivant :
PORT STATE SERVICE
135/tcp open msrpc
139/tcp open netbios-ssn
445/tcp open microsoft-ds
10387/tcp open unknown
|_ http-Neeris/IRCbot-lexsi: System infected with Neeris/IRCbot
Finalement, nous sommes donc face à un système infecté par au moins 2 malwares : Sality et Neeris/IRCbot, le premier ayant infecté le binaire du second (cela explique d'ailleurs que certains antivirus aient détecté le binaire comme IRCbot et non Sality). Cela modifie les préconisations de désinfection : en particulier, il va désormais falloir s'assurer que le correctif MS08-067 est bien déployé. Il ne faut donc pas uniquement se fier aux signatures fournies par la plupart des antivirus sous peine de ne pouvoir définir une stratégie de désinfection fiable, en raison de la virulence de la propagation du ver par exploitation de la vulnérabilité.
Par ailleurs, certaines variantes de Neeris/IRCbot exploitent également les mots de passe faibles sur le compte sa des serveurs MS SQL afin d'exécuter des commandes arbitraires par la procédure stockée xp_cmdshell, ou prennent la main sur les messageries instantanées MSN et AIM pour envoyer le malware aux contacts de la victime, ce qui n'est a priori pas le cas de Sality. En revanche, difficile de dire si ce Neeris/IRCbot a été téléchargé suite à l'infection par Sality, ou si les deux malwares ont infecté le parc indépendamment.
Ce Neeris/IRCbot est par chance correctement détecté et éradiqué par le MSRT, ce qui permet de s'en débarrasser rapidement avant de laisser la main à l'antivirus pour la désinfection des PE.
Il ne s'agit pas d'un cas isolé. Nous avons par exemple déjà été contacté par le passé pour des doubles infections Neeris/Virut. Une fois de plus, il est bon de rappeler que les antivirus, même à jour, ne sont pas la barrière que beaucoup de personnes, end-users ou administrateurs, considèrent comme infranchissable. Il s'agit d'une des briques de la sécurité d'un parc, complétée entre autres par l'application rigoureuse des correctifs de sécurité et le blocage et la surveillance des flux sortants malveillants.