Opção para usar o blockchain de criptomoeda como um meio para transferir comandos para elementos de botnet

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


  1. Não há servidor C2, as chamadas vão para os navegadores blockchain.
  2. Os comandos para o EBS são confiáveis ​​incondicionalmente.
  3. O meio para enviar comandos é o blockchain, que não permite bloquear o envio / envio de comandos.
  4. Blockchain é um sistema extremamente estável (isso não se aplica à volatilidade das criptomoedas).
  5. Baixo custo de prestação de trabalho.
  6. Implementação simples de algoritmo (código e dados de código aberto).
  7. Não há necessidade de gerar transações ou baixar blockchain.

Recursos de algoritmo


  1. Comunicação simplex.
  2. Dependência da estabilidade dos navegadores.
  3. 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.

Source: https://habr.com/ru/post/pt466609/


All Articles