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.

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!».

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 *.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.

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.

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.

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á:
![]()
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 -pO 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.

→
Como resultado…

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: e
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
