Análise da possibilidade de bloqueio de aplicativo para controle remoto de computador em rede, utilizando o exemplo do AnyDesk

Quando um dia o chefe levanta a questão: “Por que algumas pessoas têm acesso remoto ao computador do trabalho, sem obter permissões adicionais de uso?”
A tarefa surge para “fechar” a lacuna.

Análise da possibilidade de bloqueio de aplicativo para controle remoto de computador em rede, utilizando o exemplo do AnyDesk
Existem muitos aplicativos para controle remoto pela rede: área de trabalho remota do Chrome, AmmyAdmin, LiteManager, TeamViewer, Anyplace Control, etc. Se a área de trabalho remota do Chrome tiver um manual oficial para combater o acesso ao serviço, o TeamViewer terá restrições de licenciamento por tempo ou solicitações da rede e os usuários “rangem os dentes” de uma forma ou de outra “brilham” com os administradores, então o favorito de muitos para uso pessoal - AnyDesk ainda requer atenção especial, principalmente se o chefe disser “Não!”

Análise da possibilidade de bloqueio de aplicativo para controle remoto de computador em rede, utilizando o exemplo do AnyDesk
Se você sabe o que é bloquear um pacote de rede pelo seu conteúdo e está satisfeito com isso, então o resto do material
não pretendido para você.

Tentando partir do oposto, na verdade On-line diz o que deve ser permitido para o programa funcionar; portanto, o registro DNS foi bloqueado *.net.anydesk.com. Mas AnyDesk não é simples; ele não se preocupa em bloquear um nome de domínio.

Era uma vez resolvi o problema de bloqueio do “Anyplace Control”, que chegou até nós com alguns softwares duvidosos, e foi resolvido bloqueando apenas alguns IPs (fiz backup do antivírus). O problema com AnyDesk, depois de coletar manualmente mais de uma dúzia de endereços IP, me incitou fugir do trabalho manual rotineiro.

Também foi descoberto que em “C:ProgramDataAnyDesk” existem vários arquivos com configurações, etc., e no arquivo ad_svc.trace Eventos sobre conexões e falhas são coletados.

1. Observação

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

Análise da possibilidade de bloqueio de aplicativo para controle remoto de computador em rede, utilizando o exemplo do AnyDesk

1.1. Percebe-se que vários processos que nos interessam estão “pendurados”, e apenas aquele que se comunica com o endereço de fora nos interessa. As portas às quais ele se conecta estão selecionadas, pelo que vi: 80, 443, 6568. 🙂 Definitivamente não podemos bloquear 80 e 443.

1.2. Depois de bloquear o endereço através do roteador, outro endereço é selecionado silenciosamente.

Análise da possibilidade de bloqueio de aplicativo para controle remoto de computador em rede, utilizando o exemplo do AnyDesk

1.3. O console é o nosso TUDO! Determinamos o PID e então tive um pouco de sorte que o AnyDesk foi instalado pelo serviço, então o PID que procurávamos era o único.
1.4. Determinamos o endereço IP do servidor de serviço a partir do PID do processo.

Análise da possibilidade de bloqueio de aplicativo para controle remoto de computador em rede, utilizando o exemplo do AnyDesk

2. Preparação

Como o programa de identificação de endereços IP provavelmente só funcionará no meu PC, não tenho restrições de conveniência e preguiça, então C#.

2.1. Todos os métodos para identificar o endereço IP necessário já são conhecidos, mas ainda precisam ser 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, encontramos 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 disso será:

Análise da possibilidade de bloqueio de aplicativo para controle remoto de computador em rede, utilizando o exemplo do AnyDesk
Da linha, à semelhança do passo anterior, extraia a 3ª coluna e retire tudo depois do “:”. Como resultado, temos o IP desejado.

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

route add наш_найденный_IP_адрес mask 255.255.255.255 10.113.113.113 if 1 -p

Parâmetro chave "se 1" envie a rota para Loopback (você pode exibir as interfaces disponíveis executando route print). E IMPORTANTE! Agora o programa precisa ser iniciado com direitos de administrador, uma vez que a alteração da rota requer elevação.

2.3. Exibir e salvar endereços IP identificados é uma tarefa trivial e não requer explicação. Se você pensar bem, você pode processar o arquivo ad_svc.trace AnyDesk em si, mas não pensei nisso imediatamente + talvez haja uma limitação nele.

2.4. O estranho comportamento desigual do programa é que ao “taskkilling” o processo 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 isso é impreciso.

A remoção de um processo que se conectou ao servidor permite “forçar” a reconexão ao próximo endereço. Ele é implementado da mesma forma que os comandos anteriores, então vou apenas fornecer:

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

Além disso, inicie 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 está conectado, ou seja, conexão ESTABELECIDA - bloqueie este IP, e novamente - espere até conectar, bloqueie e espere.

3. Ataque

O código foi “esboçado” e optou-se por visualizar o processo”+"indica o IP encontrado e bloqueado e"."—repita a verificação sem conexão de vizinho bem-sucedida do AnyDesk.

Análise da possibilidade de bloqueio de aplicativo para controle remoto de computador em rede, utilizando o exemplo do AnyDesk

Código do projeto

Como resultado ...

Análise da possibilidade de bloqueio de aplicativo para controle remoto de computador em rede, utilizando o exemplo do AnyDesk
O programa funcionou em diversos computadores com diferentes sistemas operacionais Windows, com versões do AnyDesk 5 e 6. Em mais de 500 iterações, foram coletados cerca de 80 endereços. Para 2500 - 87 e assim por diante...

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

Link para final arquivo de texto com endereços: tempo и два

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

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

host boot-01.net.anydesk.com

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

Teoricamente: já que o ping às vezes vai para um host desconhecido e desbloqueado boot-01.net.anydesk.com podemos encontrar esses ips e bloqueá-los, tornar esta implementação um script regular no sistema operacional Linux, aqui não há necessidade de instalar AnyDesk. A análise mostrou que esses IPs muitas vezes "cruzar"com aqueles encontrados em nossa lista. Talvez seja apenas esse host ao qual o programa se conecta antes de começar a “classificar” os IPs conhecidos. Provavelmente complementarei o artigo mais tarde com a 2ª parte das pesquisas de host, embora no momento o o programa em si não é instalado na junção externa da rede em geral.

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

Fonte: habr.com

Adicionar um comentário