Analyse d’un script malveillant en JS trouvé après un XSS Persistent

Je vais vous expliquer rapidement ce que peut faire un cas concret d'attaque sur un site Internet. J'ai trouvé l'attaque en question lors d'un audit pour un client. L'attaquant avait ajouté un code javascript à plusieurs fichiers source du site Internet c'est ce que l'on appelle un XSS Persistent. Le but une fois encore de l'attaquant est d'infecter les visiteurs du site légitime avec divers malwares, cependant je n'ai pas la nature réel du malware qui se cache en bout de chaîne. Mais il a fait clignoter plusieurs antivirus au rouge.

Détection de l'attaque & structure du site

Une fois n'est pas coutume le client nous a contacté car en allant visiter son site Internet son anti-virus lui a affiché un message d'alerte en lui disant que son site était vérolé. On peut dire que le client a eu de la chance d'avoir un anti-virus à jour et performant comme quoi ils sont toujours utiles.

Le site en question n'est pas un CMS c'est du code maison qui à première vue semble correct, seule ombre au tableau beaucoup de sites sur le même serveur moins bien codé qui sont surement à l'origine du hack. Pour ajouter à cela des codes FTP honteusement faible. Pour déterminer à 90% l'origine de l'attaque je suis toujours à la recherche des causes des hacks, à noter pour finir sur ce point que la gestion du voisinage du site est douteuse.

Autre point moins commun pour moi le serveur du site tourne sur un IIS 7 avec PHP 5.6 et MySQL.

L'attaque en détail

Voici comment ont été modifiés les fichiers sources du site Internet, l'attaquant a modifié tous les fichiers javascript en rajoutant un élément en début de fichier comme on peut le voir sur la capture suivante : 

On remarque en début de fichier la ligne d'insertion pour ajouter un fichier javascript, aussi étonnant que cela puisse paraître le code javascript est bien appelé et exécuté sur le navigateur de la cible. Voici ce qui se trouve dans le fichier javascript en question une fois récupéré : 

Le code va venir ajouter des éléments dans la page actuelle du site Internet, il va ajouter d'autres scripts qui ne sont pas tous malveillant et va ajouter un lien pour inciter l'internaute à cliquer dessus. A noter qu'une subtilité se trouve dans le code. Il ajoute une popup sur la page avec un message et une croix pour fermer la popup. Si vous regardez bien le code, cf capture en dessous, si on clique sur la croix cela ne ferme pas la popup, mais nous renvoie vers le site contenant le malware.

Pour savoir ce qui se cache derrière le domaine 51dy1.com j'ai demandé à virustotal de faire une analyse et voici ce qu'il a répondu : 

Fort de cette première réponse j'ai lancé deux analyses en plus l'une sur Sucuri et l'autre une simple requête sur le domaine via Google pour voir ce qu'il en pense et c'est sans appel d'un côté comme de l'autre. Le premier nous met violemment en garde contre les menaces présentes sur le site en indiquant qu'une iframe est présente sur le site (XSS aussi donc) qui contient un virus. Google lui nous dit clairement que le site risque d’endommager notre ordinateur.

La seconde iframe pointe vers un sous-domaine d'un autre domaine, vous l'aurez remarqué au passage le site est hébergé en Chine ainsi que tous les domaines impliqués d'ailleurs, qui lui contient visiblement la charge. Comme quoi il n'y a pas que les hackers russes de Macron ou de Trump, joke inside. L'url de l'iframe nous conduit donc  à une autre page en chinois d'un site visiblement légitime, mais qui contient aussi un code malveillant via une iframe. Le code d'appel de l'iframe : 

Le domaine code668.com lui semble nous envoyer un code javascript de gestion de publicité comme si l'attaquant faisait de stats sur l'affichage et la performance du malware... Ou simplement un subterfuge pour duper l'internaute.

Pour conclure

Le script final incriminé se trouve en bas du code source de l'iframe via l'appel à un autre fichier javascript, le nom du fichier est d'ailleurs affiché dans l'analyse de Sucuri. Pas de chance pour moi le fichier semble avoir été nettoyé et du coup je n'ai pas le fin mot du malware qui se cache derrière...

Je ne ferai pas de spéculation sur la nature du malware, car il peut s'agir de tellement de choses que je vais m'abstenir.