Análise da possibilidade de bloqueio de um aplicativo de controle remoto de um computador pela rede, usando o exemplo do AnyDesk

Quando um dia o patrão levanta a questão: “Por que algumas pessoas têm acesso remoto ao computador de trabalho, sem obter permissões adicionais de uso?”,

Surge a tarefa de “fechar” a brecha.





Existem muitos aplicativos para controle remoto na rede: desktop remoto do Chrome, AmmyAdmin, LiteManager, TeamViewer, Anyplace Control, etc. Se a área de trabalho remota do Chrome tem um manual oficial sobre o combate à disponibilidade de acesso ao serviço, o TeamViewer tem restrições de licença de tempo ou solicitações da rede e usuários "rangendo os dentes" de uma forma ou de outra "brilhar" nos admins, então o favorito de muitos para uso pessoal - AnyDesk ainda requer atenção especial, especialmente se o chefe disser "Não!".

Se você sabe o que é bloquear um pacote de rede por seu conteúdo e está satisfeito com isso, o resto do material

não se destina a você.


Tentando ir pelo contrário, o próprio site informa o que deve ser permitido para que o programa funcione, respectivamente, o registro DNS * .net.anydesk.com foi bloqueado . Mas AnyDesk não é fácil, não se preocupa em bloquear um nome de domínio.



Atualização 15.08.
A solução correta para bloquear AnyDesk sugerida prymalbeets123:
relays.net.anydesk.com



[bash#]host relays.net.anydesk.com



391 . , .





Uma vez resolvi o problema de bloqueio do "Anyplace Control" que chegou até nós com algum software duvidoso e foi resolvido bloqueando apenas alguns IPs (fiz seguro do antivírus). A tarefa com AnyDesk, depois de coletar manualmente mais de uma dúzia de endereços IP, me encorajou a me afastar do trabalho manual de rotina.



Também foi descoberto que em "C: \ ProgramData \ AnyDesk" há vários arquivos com configurações, etc., e eventos sobre conexões e falhas são coletados no arquivo ad_svc.trace .



1. Observação



Como já mencionado, o bloqueio de * .anydesk.com não deu resultado no trabalho do programa, optou-se por analisar o comportamento do programa em situações de estresse . TCPView da Sysinternals em mãos e pronto!







1.1. Percebe-se que vários processos do nosso interesse estão "pendurados", e apenas aquele que está ligado ao endereço de fora nos interessa. As portas às quais está conectado estão sendo classificadas, pelo que vi: 80, 443, 6568. :) 80 e 443 definitivamente não podemos ser bloqueados.



1.2. Depois de bloquear o endereço por meio do roteador, outro endereço é selecionado silenciosamente.





1.3. O console é o nosso TUDO! Nós determinamos o PID e aqui eu tive um pouco de sorte que o AnyDesk foi instalado pelo serviço, respectivamente, o PID necessário é o único. 1.4. Determinamos o endereço IP do servidor de serviço pelo PID do processo.


2. Preparação



Uma vez que o programa de detecção de endereços IP provavelmente só funcionará no meu PC, não tenho limitações de conveniência e preguiça, portanto, C #.



2.1. Todos os métodos de identificação do endereço IP desejado já estão implementados.



string pid1_;// PID  AnyDesk
using (var p = new Process()) 
{p.StartInfo.FileName = "cmd.exe";
 p.StartInfo.Arguments = " /c \"tasklist.exe /fi \"imagename eq AnyDesk.exe\" /NH /FO CsV | findstr \"Services\"\"";
 p.StartInfo.UseShellExecute = false;
 p.StartInfo.RedirectStandardOutput = true;
 p.StartInfo.CreateNoWindow = true;
 p.StartInfo.StandardOutputEncoding = Encoding.GetEncoding("CP866");
 p.Start();
 string output = p.StandardOutput.ReadToEnd();
 string[] pid1 = output.Split(',');//   
 pid1_ = pid1[1].Replace("\"", "");// 2   
}


Da mesma forma, encontrarmos o serviço que estabeleceu a conexão, darei apenas a linha principal



p.StartInfo.Arguments = "/c \" netstat  -n -o | findstr /I " + pid1_ + " | findstr \"ESTABLISHED\"\"";


O resultado será:





Da linha, semelhante à etapa anterior, extraia a 3ª coluna e remova tudo após o ":". Como resultado, temos nosso IP desejado.



2.2. Bloqueio de IP no Windows. Se o Linux tem Blackhole e iptables, então o método de bloquear um endereço IP em uma linha, sem usar um firewall, acabou sendo incomum no Windows,

mas quais ferramentas eram ...



route add __IP_ mask 255.255.255.255 10.113.113.113 if 1 -p


O parâmetro chave " if 1 " é enviar a rota para Loopback (você pode exibir as interfaces disponíveis executando impressão de rota). E IMPORTANTE! Agora o programa precisa ser executado com direitos de administrador , pois a alteração da rota requer elevação.



2.3. Exibir e salvar os endereços IP detectados é uma tarefa trivial e não requer explicação. Se você pensar bem, você também pode processar o arquivo ad_svc.trace do próprio AnyDesk , mas não pensei nisso imediatamente + talvez haja uma limitação nele.



2.4. O estranho comportamento irregular do programa é que quando o processo de eliminação de tarefas do serviço no Windows 10, ele reinicia automaticamente, no Windows 8 ele termina, deixando apenas o processo do console e sem reconectar, em geral é ilógico e impreciso.



Remover o processo conectado ao servidor permite "forçar" a reconexão para o próximo endereço. Ele é implementado de forma semelhante aos comandos anteriores, então eu dou apenas:



p.StartInfo.Arguments = "/c taskkill /PID " + pid1_ + " /F";


Além disso, lançamos o programa AnyDesk.



 //      path_pro
if (File.Exists(path_pro)){ 
Process p1 = Process.Start(path_pro);}


2,5. Verificaremos o status do AnyDesk uma vez por minuto (ou com mais frequência?) E se ele estiver conectado, ou seja, Conexão ESTABELECIDA - bloqueie este IP, e novamente tudo de novo - espere até que ele conecte, bloqueie e espere.



3. Ataque O



código foi "esboçado", para visualizar o processo optou-se por " + " indicar o IP encontrado e bloqueado, e " . " - repetir a verificação sem sucesso na conexão do AnyDesk.







Código do projeto



Como resultado ...





O programa funcionou em vários computadores com diferentes sistemas operacionais Windows, AnyDesk versões 5 e 6. Em 500 iterações, cerca de 80 endereços foram coletados. Mais de 2500 - 87 e assim por diante ...



Com o tempo, o número de IPs bloqueados atingiu 100+.



Link para o arquivo de texto final (lista negra) com os endereços: >> um << e >> dois <<



Está feito! O pool de endereços IP por meio do script é adicionado às regras do roteador principal e AnyDesk simplesmente não pode criar uma conexão externa.



Há um momento estranho, de acordo com os logs iniciais é claro que o endereço boot-01.net.anydesk.com está envolvido na transferência de informações... Obviamente, bloqueamos todos os hosts * .net.anydesk.com como regra geral, mas isso não é estranho. Cada vez com um ping normal de computadores diferentes, este nome de domínio fornece um IP diferente. Verifique no Linux:



host boot-01.net.anydesk.com



como DNSLookup, dá apenas um endereço IP, mas esse endereço é variável. Ao analisar uma conexão TCPView, retornamos registros PTR de endereços IP do tipo relé - *. Net.anydesk.com .



Teoricamente: já que o ping às vezes vai para um host desbloqueado desconhecido boot-01.net.anydesk.com, podemos encontrar esses ip e bloqueá-lo, faça desta implementação um script regular no sistema operacional Linux, você não precisa instalar AnyDesk aqui. A análise mostrou que esses IPs muitas vezes "se sobrepõem"com os encontrados em nossa lista. Talvez este seja apenas este host, ao qual o programa se conecta antes de começar a procurar IPs conhecidos. Provavelmente mais tarde complementarei o artigo com a 2ª parte da busca de hosts, embora no momento o próprio programa não seja instalado na rede conexão externa em geral.



Atualização 15/08/2020 : usuário Habr @ prymalbeets123 chamou minha atenção para o fato de que existe um host relays.net.anydesk.comque corresponde a 391 endereços IP, o arquivo com sua lista pode ser encontrado nos links acima como corretos. Percebo que tenho menos endereços coletados monitorando o programa AnyDesk, mas existem aqueles que não estão incluídos no 391 geral e são resolvidos por nomes de domínio "esquerdos", acontece que eu também "coletei" os endereços de quem iniciou a conexão ao meu computador :).



Espero que você não tenha visto nada ilegal no acima, e os criadores do AnyDesk tratarão minhas ações de uma forma esportiva.



All Articles