Malware Hunting 2/? : La fin de DarkComet

Salut tout le monde!

Je ne sais pas vous mais lorsque j’étais plus jeune, il y avait eu une énorme tendance à faire des vidéos et des tutos de hacking sur Windows. C’était d’ailleurs à cette époque que des outils comme LOIC sont devenus populaires étant donné que le hacking s’était vulgarisé à en devenir littéralement du « point to click » comme dans les jeux vidéos.

Aujourd’hui, dans ce nouvel opus de cette mini-série nous allons traiter d’un logiciel devenu populaire à ce moment-là: DarkComet

Pour la petite histoire

DarkComet était un cheval de Troie (Un type de logiciel connu sous son abréviation anglaise « RAT ») développé par un programmeur indépendant Français.

Bien que ce logiciel ait été développé en 2008, il a néanmoins commencé à proliférer au début de l’année 2012. Le developpement du logiciel fut annulé, partiellement à cause de son utilisation pendant la guerre civile syrienne pour surveiller des activistes, mais aussi car son créateur avait peur qu’il soit arrêté.

Utilisation

Il est à noter que même si son developpement a été arrêté en juillet 2012, le logiciel est toujours largement utilisé en France comme le montre ces statistiques toutes fraîches que j’ai concocté avec l’aide de Shodan:

Des stats toutes fraîches 🙂

Comme on peut le voir, sur le nombre de serveurs de Contrôle et de Commandes que la plateforme a pu recenser en France, plus de 50% des 5 chevaux de Troie les plus répandus dans l’hexagone sont des serveurs DarkComet.

Si le cadre de l’article précédent existait (mise en place de véritables fondements au hacking éthique) et que l’on souhaitait frapper un grand coup, il faudrait probablement s’attaquer aux serveurs DarkComet car ceux-ci représentent à eux seuls 50% du parc cybermalveillant français.

Ce que l’on sait déjà

Darkcomet a déjà par le passé été victime d’une vulnérabilité. En effet, depuis 2015, on sait qu’il est possible de provoquer une « Arbitrary File Download » ou téléchargement de fichier arbitraire en français sur n’importe quel serveur DarkComet. Cependant, bien que cette vulnérabilité soit intéressante elle n’est pas critique pour le serveur.Un point de départ logique serait donc d’examiner la fonctionnalité d’envois de fichiers de DarkComet (de serveur à ordinateur infecté).

Le serveur utilise un modèle de transaction bien précis qui ressemble à celui-ci (« S » désigne le serveur et « I » l’ordinateur infecté):

S: QUICKUP C:\un\fichier.jpg | 123 | UPLOADEXEC
Le client initie une nouvelle connection avec "QUICKUP"

I: QUICKUP 123 | C:\un\fichier.jpg | UPLOADEXEC
S: "\x41\x00\x43"
I: Ack
S: "longueur du fichier"
I: Ack
S: "flux binaire brut"

Le serveur C&C ne vérifie pas s’il a déjà émis une commande de téléchargement. Ce qui signifie que toute personne se connectant au serveur peut télécharger n’importe quel fichier du serveur.
Malheureusement, comme il n’existe aucun moyen de faire en sorte que le serveur répertorie tous les fichiers d’un répertoire, cette vulnérabilité est limitée au téléchargement de fichiers connus de l’attaquant.

Parmis les divers fichiers que l’on peut atteindre, on peut s’amuser à viser deux fichiers sensibles pour le serveur:

1°) comet.db qui comme son nom l’indique est une base de donnée (SQLite) qui contient une liste de tous les ordinateurs infectés (dont adresses IP/MAC, Pays, nom d’utilisateur courant, version du système d’exploitation…). Cette base de donnée peut aussi contenir des données d’enregistrement de frappes au claviers.

2°) config.ini qui contient en clair tous les mots de passes relatifs à la configuration du serveur DarkComet.

Vous l’avez compris, cette vulnérabilité est pour le moins intéressante mais malheureusement, elle ne nous permet pas directement de mettre la main sur le serveur.

Un peu de recherche

Examinons maintenant la fonction de téléchargement des fichiers (d’ordinateur infecté à serveur).
Lorsque le serveur DarkComet tente de télécharger un fichier, voici ce qui se passe:

S: DOWNLOADFILE 596 | C:\un\fichier.jpg
Le client ouvre alors une nouvelle connexion:

I: FILETRANSFER | 596
S: "\x41\x00\x43"
I: FILEBOF C:\un\fichier.jpg | 0
S: Ack
I: "flux binaire brut"

Le serveur va écrire le fichier dans un répertoire spécifié par l’utilisateur avec le nom « fichier.jpg ». Bien qu’en apparence, cela puisse sembler tout autant exploitable que la précédente fonction, ça ne l’est malheureusement pas. En effet, Le 596 dans « DOWNLOADFILE 596 » est l’identifiant de socket du client et le serveur n’accepterait pas FILETRANSFER | 596 s’il n’a pas précédement émis sur un socket identique.

Même si elle n’est pas évidente aux premiers abords, la vulnérabilité est bien là. Je laisse d’ailleurs le détail pour ceux à qui ça interesse à l’ami PseudoLaboratories qui est l’auteur de la trouvaille.

Tout ça pour dire que l’exploitation de la vulnérabilité nous mène à un envoie de fichier arbitraire. Envoie que l’on peut utiliser pour provoquer une: *roulement de tambours*…

Exécution de code à distance

En effet, le serveur DarkComet essaiera par défaut d’utiliser UPnP pour ouvrir automatiquement les ports. Pour ce faire, il écrit un fichier appelé « upnp.exe » dans le répertoire Temp et l’appelle si nécessaire.

Il suffit donc que l’on se serve dans un premier temps de la vulnérabilité de téléchargement de fichiers arbitraire afin de lire le nom d’utilisateur courant puis dans un second temps, que l’on se serve de la vulnérabilité d’envoi de fichiers arbitraire afin d’envoyer notre code dans le bon répertoire.

Au prochain démarrage du serveur, « upnp.exe » et ainsi notre code sera exécuté.

Élévation des privilèges

La suite naturelle des choses serait de trouver un moyen de devenir administrateur sauf qu’ici le travail est déjà mâché par DarkComet.

En effet, comme le logiciel demande les privilèges administrateur à chaque démarrage, par principe d’héritage, tout code exécuté par celui-ci est donc exécuté avec les privilèges administrateur, incluant donc notre code.

Conclusion

DarkComet est un logiciel très bien développé, à tel point qu’il s’agisse du trojan le plus populaire en France, et d’ailleurs un des plus populaire dans le monde. Il est à peu près certains que si le développement du logiciel était toujours d’actualité, les failles citées dans cet article ne seraient plus exploitables depuis un long moment.

Seulement voilà, comme dit plus haut en guise d’avertissement déguisé, on pourrait, seulement à l’aide de ces deux vulnérabilités, nettoyer 50% du parc cybermalveillant français, d’un coup, sans forcer, si bien sûr le cadre de l’article précédent existait (mise en place de véritables fondements au hacking éthique, etc..)

J’espère que cette article vous a plu, n’hésitez pas à laisser un commentaire, une remarque, ou même un message (je les lis tous et je répond généralement rapidement).

En ce qui me concerne, j’ai été ravis d’écrire cet article, je n’ai cependant pas encore choisi ma prochaine victime alors n’hésitez pas à m’envoyer des idées 🙂

Sources

https://pseudolaboratories.github.io/DarkComet-upload-vulnerability/
https://www.shodan.io/
https://techanarchy.net/blog/darkcomet-hacking-the-hacker
https://fr.wikipedia.org/wiki/DarkComet

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*
*