Gostaria de desenvolver a ideia mencionada no artigo
“Siga o dinheiro: como o grupo RTM começou a ocultar os endereços dos servidores C&C em uma carteira criptográfica
” , que os agrupou no número de Satoshi listado para duas transações em um endereço criptográfico específico. O malware, solicitando os dados de transferência para esse endereço do navegador blockchain, alocou o IP do novo servidor C&C por simples manipulações.
Omitiremos e condenaremos as intenções criminais desse grupo e nos debruçaremos precisamente sobre os princípios e o processo de transmissão de comandos aos elementos da botnet (EBS).
IMHO, esse método tem algumas desvantagens - a largura de banda desse método (em termos de quantidade de informações por transferência) é pequena e qualquer pessoa que conheça esse endereço criptográfico pode enviar uma certa quantia e sincronizar o botnet, forçando-o a entrar em contato com um »Para eles para o servidor.
No entanto, comandos ocultos do EBS podem ser enviados não para um separado, mas a partir de um endereço A, a priori confiável para eles. Nesse caso, ninguém (exceto uma pessoa que possui uma chave privada) pode executar essa operação.
O conjunto de comandos pode ser expandido enviando os valores para os endereços gerados pelo administrador da botnet, em cujo nome as informações de controle necessárias são codificadas / criptografadas.
Nesse caso, um comando de até 20 bytes (letras, números, caracteres especiais) é convertido (texto em hexadecimal) em hexadecimal e depois em um endereço criptográfico válido B. Nesse caso, o próprio comando pode ser codificado / criptografado.
Deixe-me dar um exemplo de fantasia. Para maior clareza (PoC), usei vários serviços online disponíveis.
1. A partir de um endereço confiável A, uma certa quantia é transferida para o endereço válido gerado B.
Exemplo de geração de endereço B: é necessário enviar informações sobre o servidor 82.192.95.175 para o EBS, a partir do qual é possível receber o comando update do servidor do módulo nº 68, o tempo de ativação / desativação do módulo, bem como a chave de criptografia (ou o endereço do navegador blockchain adicional, o comando de execução o mais tardar na data de transmissão, um novo endereço criptográfico confiável, chave, etc. etc. (a chave pode ser costurada no agente do usuário e transferida apenas se for necessário alterá-la, economizando 7 bytes do campo de comando).
É possível converter o IP de centenas de maneiras, por exemplo 082.192.095.175> 08.21.92.09.51.75 + 32 para cada número (evite caracteres ASCII ilegíveis).
Total 40.53.124.41.83.107 = (5 |) Sk
representa em ASCII (6 bytes);
Time 68 = D;
O tempo de ativação do módulo é 601234 = no
tempo Unix , onde o dígito inicial 1 é redundante, não o transmitiremos (é por padrão, uma vez que a alteração para 2 será apenas em 2033), os três dígitos inferiores também são por padrão 000, porque . realmente não importa, são + - 15 minutos.
Tempo de ativação - 1601234000 = 27 de setembro de 2019 13.13.20 GMT
A seguir, quatro dígitos, até o momento em que o módulo deve ser executado - 0365 (dias) a partir do momento da ativação.
Ou seja, 6012340365 = 01665D088Dh = AAHpKn em ASCII. Suponha também que a chave anterior fosse Key0001.
O total (5 |) do SkDAAHpKnKey0002
usando RC4 e Key0001 fornece em hexadecimal: DD F6 B8 16 2A B6 71 97 0F 9F A2 68 79 11 8C B6 31 DA FE 43.
Convertemos esse
endereço hash em um endereço
btc herdado (é possível para os endereços de outras moedas criptografadas, ltc, dogecoin, etc., isso não é importante, os algoritmos para gerar endereços criptográficos estão abertos, a transferência será mais barata e mais rápida).
Obtemos o endereço B (herdado) - 1MEdtjmGtqaGPaoYAQn43dkZxiSrSD8gmD.
(Lembro que na frente é adicionado um "1" - um
sinal de byte, no final - controle 4 bytes).
Este
recurso permite ver em primeira mão o processo de conversão passo a passo (insira DDF6 ... na linha 3 (RIPEMD-160 Hash de 2)).

No entanto, para não se destacar do conjunto de endereços do formato segwit já padrão, vamos apresentar nossa linha como (veja
aqui ).

Endereço B (segwit) - bc1qmhmts932kecewrul5f58jyvvkcca4ljrrgmpcd
2. Enviamos uma transferência de várias centenas / mil satoshi para este endereço da A. confiável O valor da transferência também pode transportar informações (por exemplo, verificação adicional em uma base acordada, um caractere de comando para destruição incondicional / desligamento temporário da botnet sem a necessidade de ler o comando transmitido no endereço, etc.).
Darei especial atenção ao fato de que, ao enviar, deve-se levar em consideração que o endereço para entrega deve ser o mesmo que o endereço de entrega ou registrar o endereço de E-mail para entrega como um novo e confiável.
Uma transação é confirmada, em média, por vários minutos (sujeito ao pagamento de uma quantidade suficiente de comissão flutuante, dependendo da carga da rede).
O custo de transferência de uma quantidade de mil satoshi será de 7 rublos. (mais comissão de 2-3 rublos). Repito que com outras criptomoedas, pode ser mais rápido e mais barato dezenas / centenas de vezes.
3. Do lado do EBS, há uma pesquisa periódica dos navegadores blockchain (por API) da lista disponível (os navegadores são apresentados em uma ampla variedade) sobre a transferência de A.
Quando o fato de enviar uma nova transação com A (e confirmá-la) é revelado, as informações contidas no endereço do destinatário para o qual a transferência foi feita são descriptografadas (decodificadas) pela chave recebida e aceitas para execução.
Suponha que o endereço confiável seja bc1qsj0gm0r2c3hzq9yzfewl34yk2r760hy5za4x3q (formato segwit).
Nesse endereço, a última
transação de saída (aproximadamente não é a última, mas
esta ) passou para dois endereços - bc1qmhmts932kecewrul5f58jyvvkcca4ljrrgmpcd e a alteração foi igual ao endereço de envio.
A quantidade transferida - 666 Satoshi - decidimos que este é um comando condicional para executar a decodificação.
Decodifique nosso endereço de volta para DDF6 ....
Converta para o formulário (5 |) SkD34 ,, +! Key0002 e descriptografe com Key0001 (a chave muda para Key0002).
Faça o download do módulo no servidor (o acesso ao servidor pode ser implementado usando a mesma chave) e aguarde a data de lançamento do módulo.
Observo que é necessário usar pelo menos vários navegadores (eles podem desconectar ou restringir solicitações de alguns países, como
bitflyer.jp , restringindo do russo e iniciando no IP japonês).

As informações recebidas podem ser verificadas pelo menos em um / dois. A escolha dos navegadores é ótima, apenas na lista de tipos da Electrum há mais de uma dúzia - blockchair.com, smartbit.com.au, bitupper.com, chain.so e muitos outros. outro

Observe que nem todos os navegadores suportam o formato segwit. Portanto, você precisa escolher um meio termo, usar o endereço confiável dos antigos ou dos novos formatos.
Um exemplo de envio de um endereço confiável no formato antigo 186A8D7vdAHpFWdSAFHzZGfi44pPcwtZNc para o endereço herdado gerado em bruto

e
endereço segwit
O uso de vários navegadores blockchain enfatiza sua diversidade.Lembro-me que uma mensagem oculta em um endereço de uma transação a ser falsificada, de modo que foi confirmada, é impossível por definição.
Vantagens do algoritmo
- Não há servidor C2, as chamadas vão para os navegadores blockchain.
- Os comandos para o EBS são confiáveis incondicionalmente.
- O meio para enviar comandos é o blockchain, que não permite bloquear o envio / envio de comandos.
- Blockchain é um sistema extremamente estável (isso não se aplica à volatilidade das criptomoedas).
- Baixo custo de prestação de trabalho.
- Implementação simples de algoritmo (código e dados de código aberto).
- Não há necessidade de gerar transações ou baixar blockchain.
Recursos de algoritmo
- Comunicação simplex.
- Dependência da estabilidade dos navegadores.
- Certos (ainda que mínimos) custos financeiros.
Acredito que alguns dos pontos apresentados aqui são úteis para considerar para especialistas em segurança da informação.
Seria interessante aumentar a estabilidade do botnet, além dos observadores, para atrair os recursos de nós completos ou de carteiras populares como o electrum, além de organizar a comunicação dúplex, gerando as transações necessárias no lado do sistema bancário eletrônico. Eu ficaria grato por pensamentos sobre esse assunto, bem como críticas e sugestões razoáveis.