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:unfichier.jpg | 123 | UPLOADEXEC
Le client initie une nouvelle connection avec "QUICKUP"

I: QUICKUP 123 | C:unfichier.jpg | UPLOADEXEC
S: "x41x00x43"
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:unfichier.jpg
Le client ouvre alors une nouvelle connexion:

I: FILETRANSFER | 596
S: "x41x00x43"
I: FILEBOF C:unfichier.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