Je voudrais développer l'idée mentionnée dans l'article
«Suivez l'argent: comment le groupe RTM a commencé à cacher les adresses des serveurs C&C dans un portefeuille crypté
» , qui les a regroupées dans le nombre de Satoshi répertoriés pour deux transactions sur une adresse cryptographique spécifique. Le malware, demandant les données de transfert à une telle adresse depuis le navigateur de la blockchain, a attribué l'IP du nouveau serveur C&C par de simples manipulations.
Nous allons omettre et condamner les intentions criminelles de ce groupe et nous attarderons précisément sur les principes et le processus de transmission des commandes aux éléments du botnet (EBS).
À mon humble avis, cette méthode présente certains inconvénients - la bande passante de cette méthode (en termes de quantité d'informations par transfert) est petite, et toute personne connaissant une telle adresse de chiffrement peut lui envoyer une certaine quantité et synchroniser le botnet, l'obligeant à contacter un »Pour eux au serveur.
Cependant, les commandes EBS masquées peuvent être envoyées non pas à une adresse distincte, mais à partir d'une adresse A distincte, a priori approuvée pour elles. Dans ce cas, personne (sauf une personne détenant une clé privée) ne peut effectuer une telle opération.
L'ensemble des commandes peut être étendu en envoyant des montants aux adresses générées par l'administrateur du botnet, au nom desquelles les informations de contrôle nécessaires sont encodées / cryptées.
Dans ce cas, une commande de 20 octets maximum (lettres, chiffres, caractères spéciaux) est convertie (texte en hexadécimal) en hexadécimal puis en une adresse de chiffrement B valide. Dans ce cas, la commande elle-même peut être codée / chiffrée.
Permettez-moi de vous donner un exemple fantastique. Pour plus de clarté (PoC), j'ai utilisé un certain nombre de services en ligne disponibles.
1. À partir d'une adresse de confiance A, un certain montant est transféré à l'adresse valide générée B.
Exemple de génération d'adresse B: il est nécessaire d'envoyer des informations sur le serveur 82.192.95.175 à l'EBS, à partir desquelles il est possible de recevoir la commande de mise à jour du module serveur # 68, l'heure d'activation / désactivation du module, ainsi que la clé de chiffrement (ou l'adresse du navigateur de blockchain supplémentaire, la commande d'exécution) au plus tard à la date transmise, une nouvelle adresse cryptée, clé, etc., etc. de confiance (la clé peut être cousue dans l'agent utilisateur et transférée uniquement s'il est nécessaire de la modifier, économisant ainsi 7 octets du champ de commande)).
Il est possible de convertir IP d'une centaine de façons, par exemple 082.192.095.175> 08.21.92.09.51.75 + 32 en chaque nombre (éviter les caractères ASCII illisibles).
Total 40.53.124.41.83.107 = (5 |) Sk
représente en ASCII (6 octets);
Équipe 68 = D;
Le temps d'activation du module est 601234 = en
temps Unix , où le premier chiffre 1 est redondant, nous ne le transmettrons pas (c'est par défaut, car le passage à 2 ne sera qu'en 2033), les trois chiffres inférieurs sont également par défaut 000, car . peu importe, c'est + - 15 minutes.
Heure d'activation - 1601234000 = 27 septembre 2019 13.13.20 GMT
Ensuite, quatre chiffres, jusqu'à ce que le module doit fonctionner - 0365 (jours) à partir de l'heure d'activation.
C'est-à-dire 6012340365 = 01665D088Dh = AAHpKn en ASCII. Supposons également que la clé précédente était Key0001.
Total (5 |) SkDAAHpKnKey0002
utilisant RC4 et Key0001 donne en hex: DD F6 B8 16 2A B6 71 97 0F 9F A2 68 79 11 8C B6 31 DA FE 43.
Nous convertissons cette
hashtoaddress en une
ancienne adresse
btc (il est possible aux adresses d'autres crypto-monnaies dash, ltc, dogecoin, etc., cela n'a pas d'importance, les algorithmes pour générer des adresses crypto sont ouverts, le transfert sera moins cher et plus rapide).
Nous obtenons l'adresse B (héritée) - 1MEdtjmGtqaGPaoYAQn43dkZxiSrSD8gmD.
(Je vous rappelle qu'en face est ajouté un «1» - un
signe d' octet, à la fin - contrôle 4 octets).
Cette
ressource permet de voir de visu le processus de conversion pas à pas (insérer DDF6 ... sur la ligne 3 (RIPEMD-160 Hash of 2)).

Cependant, afin de ne pas se démarquer de l'ensemble des adresses du format segwit déjà standard, présentons notre ligne comme (voir
ici ).

Adresse B (segwit) - bc1qmhmts932kecewrul5f58jyvvkcca4ljrrgmpcd
2. Nous envoyons un transfert de plusieurs centaines / milliers de satoshi à cette adresse de confiance A. Le montant du transfert peut également contenir des informations (par exemple, une vérification supplémentaire sur une base convenue, un caractère de commande pour la destruction inconditionnelle / l'arrêt temporaire du botnet sans avoir à lire la commande transmise dans l'adresse, etc.).
Je porterai une attention particulière au fait que lors de l'envoi, il faut garder à l'esprit que l'adresse de livraison doit être la même que l'adresse de livraison, ou enregistrer l'adresse e-mail de livraison comme une nouvelle adresse de confiance.
Une transaction est confirmée en moyenne plusieurs minutes (sous réserve du paiement d'une commission suffisante flottante en fonction de la charge du réseau).
Le coût du transfert d'un montant de 1 000 satoshi sera de 7 roubles. (plus commission de 2-3 roubles). Je répète qu'avec d'autres crypto-monnaies, cela peut être plus rapide et moins cher des dizaines / centaines de fois.
3. De la part de l'EBS, il y a une enquête périodique des navigateurs blockchain (par API) de la liste disponible (les navigateurs sont présentés dans un large assortiment) sur le transfert de A.
Lorsque le fait d'envoyer une nouvelle transaction avec A (et de la confirmer) est révélé, les informations contenues dans l'adresse du destinataire vers lequel le transfert a été effectué sont décryptées (décodées) par la clé reçue et acceptées pour exécution.
Supposons que l'adresse de confiance soit bc1qsj0gm0r2c3hzq9yzfewl34yk2r760hy5za4x3q (format segwit).
À cette adresse, la dernière
transaction sortante (environ n'est pas la dernière, mais
celle-ci ) est passée à deux adresses - bc1qmhmts932kecewrul5f58jyvvkcca4ljrrgmpcd et le changement était le même que l'adresse d'envoi.
Le montant transféré - 666 Satoshi - nous décidons qu'il s'agit d'une commande conditionnelle pour effectuer le décodage.
Décodez notre adresse en DDF6 ....
Convertissez au format (5 |) SkD34 ,, +! Key0002 et déchiffrez avec Key0001 (la clé se transforme en Key0002).
Téléchargez le module depuis le serveur (l'accès au serveur peut être implémenté avec la même clé) et attendez la date de lancement du module.
Je note qu'il est nécessaire d'utiliser au moins plusieurs navigateurs (ils peuvent déconnecter ou restreindre les demandes de certains pays, comme
bitflyer.jp , restreindre le russe et partir du japonais IP).

Les informations reçues peuvent être vérifiées au moins sur un / deux. Le choix des navigateurs est excellent, seulement dans la liste des types Electrum, il y en a plus d'une douzaine - blockchair.com, smartbit.com.au, bitupper.com, chain.so et bien d'autres. autre

Veuillez noter que tous les navigateurs ne prennent pas en charge le format segwit. Par conséquent, vous devez choisir un terrain d'entente, utiliser l'adresse de confiance de l'ancien ou du nouveau format.
Exemple d' envoi à partir d'une adresse de confiance dans l'ancien format 186A8D7vdAHpFWdSAFHzZGfi44pPcwtZNc vers l'adresse héritée générée en brut

et l'
adresse segwit
L'utilisation de divers navigateurs blockchain souligne leur diversité.Je rappelle qu'un message caché dans une adresse d'une transaction à truquer pour qu'il soit confirmé est impossible par définition.
Avantages de l'algorithme
- Il n'y a pas de serveur C2, les appels vont aux navigateurs de la blockchain.
- Les commandes pour EBS sont approuvées sans condition.
- Le support d'envoi de commandes est la blockchain, qui ne permet pas de bloquer l'envoi / l'envoi de commandes.
- La blockchain est un système extrêmement stable (cela ne s'applique pas à la volatilité des crypto-monnaies).
- Faible coût de fourniture du travail.
- Implémentation d'algorithme simple (données et code open source).
- Pas besoin de générer des transactions ou de télécharger la blockchain.
Caractéristiques de l'algorithme
- Communication simplex.
- Dépendance à la stabilité des navigateurs.
- Certains coûts financiers (quoique minimes).
Je crois que certains des points donnés ici sont utiles à considérer pour les experts en sécurité de l'information.
Il serait intéressant d'augmenter la stabilité du botnet, en plus des observateurs, pour attirer les capacités de nœuds complets ou de nœuds de portefeuilles populaires tels que l'électrum, ainsi que d'organiser la communication duplex en générant les transactions nécessaires du côté du système bancaire électronique. Je serais reconnaissant pour les réflexions à ce sujet, ainsi que pour les critiques et suggestions raisonnables.