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.
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!”
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
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!
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.
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.
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á:
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.
Como resultado ...
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:
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