Análise da possibilidade de bloquear o aplicativo para controle remoto do computador pela rede, usando o exemplo do AnyDesk.

Quando um belo dia o chefe levanta a questão: «Por que alguns têm acesso remoto ao computador do trabalho, sem obter permissões adicionais para uso?»,
surge a tarefa de «tapar» a brecha.

Análise da possibilidade de bloquear o aplicativo para controle remoto do computador pela rede, usando o exemplo do AnyDesk.
Existem muitos aplicativos de controle remoto: Chrome Remote Desktop, AmmyAdmin, LiteManager, TeamViewer, Anyplace Control, entre outros. Se o Chrome Remote Desktop tem um manual oficial para combater o acesso ao serviço, o TeamViewer possui restrições de licenciamento quanto ao tempo ou consultas na rede, e os usuários «murmuram» de alguma forma aparecem para os administradores, o favorito de muitos para uso pessoal — AnyDesk, por enquanto, exige uma atenção especial, principalmente se o chefe disser «Proibido!».

Análise da possibilidade de bloquear o aplicativo para controle remoto do computador pela rede, usando o exemplo do AnyDesk.
Se você sabe o que é bloqueio de pacotes de rede pelo seu conteúdo e isso te convém, então o restante do material
não é destinado para você.

Tentando ir pelo lado oposto, fala-se sobre o que deve ser permitido para o funcionamento do programa, logo foi bloqueado o registro DNS site *.net.anydesk.com . Mas o AnyDesk não é fácil, a bloqueio do nome de domínio não é um problema para ele.Uma vez tive uma tarefa de bloquear o «Anyplace Control» que chegava até nós com algum software duvidoso, e isso foi resolvido bloqueando apenas alguns IPs (eu cobri com o antivírus). O desafio com o AnyDesk, depois que coletei manualmente mais de uma dezena de endereços IP,

me incentivou a escapar do trabalho manual rotineiro. Também foi descoberto que em «C:ProgramDataAnyDesk» existem vários arquivos de configurações e semelhantes, e no arquivo

ad_svc.trace são coletados os eventos de conexões e falhas. 1. Observação

Como já mencionado, o bloqueio de *.anydesk.com não trouxe resultados em relação à operação do programa, foi decidido analisar

o comportamento do programa em situações estressantes. TCPView da Sysinternals em mãos e foi!1.1. É visível que vários processos interessantes estão «suspensos», e apenas aquele que se conecta ao endereço externo é do nosso interesse. As portas às quais se conecta são variadas, do que vi, são: 80, 443, 6568. 🙂 80 e 443 definitivamente não podemos bloquear.

Análise da possibilidade de bloquear o aplicativo para controle remoto do computador pela rede, usando o exemplo do AnyDesk.

1.2. Após bloquear o endereço pelo roteador, outro endereço é facilmente escolhido.

1.3. O console é tudo para nós! Identificamos o PID e tive um pouco de sorte, pois o AnyDesk foi instalado como um serviço, logo o PID buscado é o único.

Análise da possibilidade de bloquear o aplicativo para controle remoto do computador pela rede, usando o exemplo do AnyDesk.

1.4. Identificamos pelo PID do processo o endereço IP do servidor dos serviços.
1.4. Identificamos o endereço IP do servidor de serviços pelo PID do processo.

Análise da possibilidade de bloquear o aplicativo para controle remoto do computador pela rede, usando o exemplo do AnyDesk.

2. Preparação

Como o programa para identificar endereços IP provavelmente funcionará apenas no meu PC, não tenho restrições quanto à conveniência e preguiça, portanto C#.

2.1. Todos os métodos para descobrir o IP desejado já são conhecidos, apenas falta implementá-los.

string pid1_; // vamos descobrir o PID do serviço 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(','); // vamos transformar a resposta em um array
 pid1_ = pid1[1].Replace(""", ""); // pegamos o 2º elemento sem aspas
}

De maneira similar, encontramos o serviço que estabeleceu a conexão, fornecerei apenas a linha principal.

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

O resultado será:

Análise da possibilidade de bloquear o aplicativo para controle remoto do computador pela rede, usando o exemplo do AnyDesk.
Da linha, da mesma forma que no passo anterior, extraímos a 3ª coluna e removemos tudo após ":". Como resultado, teremos o nosso IP desejado.

2.2. Bloqueio de IP no Windows. Se no Linux há Blackhole e iptables, o método para bloquear um endereço IP em uma linha, sem usar o firewall, no Windows acabou se revelando incomum.
mas que ferramentas tínhamos...

route add nosso_IP_encontrado mask 255.255.255.255 10.113.113.113 if 1 -p

O parâmetro chave "if 1" direciona a rota para o Loopback (As interfaces disponíveis podem ser visualizadas executando route print). E É IMPORTANTE! Agora o programa precisa ser executado com direitos de administrador, uma vez que a alteração da rota requer elevação de privilégios.

2.3. Exibir e salvar os endereços IP identificados é uma tarefa trivial e não requer explicações. Se pensarmos bem, poderíamos processar até o arquivo são coletados os eventos de conexões e falhas. do próprio AnyDesk, mas a princípio não pensei nisso + pode haver restrições sobre ele.

2.4. O comportamento estranho e inconsistente do programa é que ao usar "taskkill" no processo do serviço no Windows 10, ele reinicia automaticamente, enquanto no Windows 8 ele termina, deixando apenas o processo do console e sem reconexão, de forma geral, é ilógico e impreciso.

Remover o processo que se conectou ao servidor permite "forçar" a reconexão ao próximo endereço. Isso é implementado de forma semelhante aos comandos anteriores, portanto forneço apenas:

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

Adicionalmente, iniciamos o programa AnyDesk.

 //запускаем программу которая расположена по пути path_pro
if (File.Exists(path_pro)){ 
Process p1 = Process.Start(path_pro);}

2.5. Vamos verificar o estado do AnyDesk uma vez por minuto (ou com mais frequência?), e se ele se conectar, ou seja, conexão ESTABELECIDA — bloquearemos esse IP e começaremos tudo de novo — aguardando até que se conecte, bloqueie e espere.

3. Ataque

Foi "gerado" um código para visualizar o processo, decidimos "+" indicar o IP encontrado e bloqueado, e "." — repetir a verificação sem conexão bem-sucedida do AnyDesk.

Análise da possibilidade de bloquear o aplicativo para controle remoto do computador pela rede, usando o exemplo do AnyDesk.

→ O código do projeto

Como resultado…

Análise da possibilidade de bloquear o aplicativo para controle remoto do computador pela rede, usando o exemplo do AnyDesk.
O programa funcionou em vários computadores com diferentes versões do Windows, com versões do AnyDesk 5 e 6. Em 500 iterações, foram coletados cerca de 80 endereços. Em 2500 — 87 e assim por diante…

Com o tempo, o número de IPs bloqueados chegou a mais de 100.

Link para o arquivo final texto com endereços: um e dois

A tarefa foi concluída! O pool de endereços IP através do script foi adicionado às regras do roteador principal e o AnyDesk simplesmente não consegue estabelecer uma conexão externa.

Há um ponto estranho, pelos logs iniciais, é visível que no envio de informações participa o endereço boot-01.net.anydesk.com. Nós, claro, bloqueamos todos os hosts *.net.anydesk.com com uma regra geral, mas a estranheza não está nisso. Cada vez que um ping normal é feito de diferentes computadores, esse nome de domínio retorna um IP diferente. Verificação no Linux:

host boot-01.net.anydesk.com

assim como DNSLookup, só fornecem um endereço IP, mas esse endereço é variável. Ao analisar as conexões no TCPView, recebemos registros PTR de endereços IP do tipo relay-*.net.anydesk.com.

Teoricamente: como o ping às vezes passa para um host desconhecido e desbloqueado boot-01.net.anydesk.com podemos encontrar esses IPs e bloqueá-los, tornando essa implementação um script comum para o sistema operacional Linux, aqui não é necessário instalar o AnyDesk. A análise mostrou que esses IPs frequentemente "se sobrepõem" aos encontrados em nossa lista. Possivelmente, é exatamente esse o host ao qual o programa se conecta antes de começar a "percorrer" os IPs conhecidos. Provavelmente, mais tarde complementarei o artigo com a segunda parte da busca por hosts, embora neste momento o próprio programa dentro da rede não estabeleça uma conexão externa de jeito nenhum.

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

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster