Análisis de la posibilidad de bloquear una aplicación para el control remoto de una computadora a través de la red, usando el ejemplo de AnyDesk

Cuando un día el jefe se plantea la pregunta: "¿Por qué algunas personas tienen acceso remoto al equipo de trabajo, sin obtener permisos adicionales de uso?",

Surge la tarea de "cerrar" la laguna.





Hay muchas aplicaciones para el control remoto a través de la red: escritorio remoto de Chrome, AmmyAdmin, LiteManager, TeamViewer, Anyplace Control, etc. Si el escritorio remoto de Chrome tiene un manual oficial para combatir la disponibilidad de acceso al servicio, TeamViewer tiene restricciones de tiempo o solicitudes de licencia. de la red y los usuarios "apretando los dientes" de una forma u otra "brillan" ante los administradores, entonces el favorito de muchos para uso personal - AnyDesk todavía requiere atención especial, especialmente si el jefe dijo "¡No!".

Si sabe qué es bloquear un paquete de red por su contenido y está satisfecho con él, entonces el resto del material

no es para usted.


Tratando de ir desde lo contrario, el propio sitio dice lo que se debe permitir para que el programa funcione, respectivamente, el registro DNS * .net.anydesk.com fue bloqueado . Pero AnyDesk no es fácil, no le importa bloquear un nombre de dominio.



Actualización 15.08.
La solución correcta para bloquear AnyDesk sugerida prymalbeets123:
relays.net.anydesk.com



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



391 . , .





Una vez resolví el problema de bloquear "Anyplace Control" que nos llegaba con un software dudoso y se solucionó bloqueando solo unas pocas IPs (aseguré el antivirus). La tarea con AnyDesk, después de recopilar manualmente más de una docena de direcciones IP, me animó a alejarme del trabajo manual de rutina.



También se descubrió que en "C: \ ProgramData \ AnyDesk" hay varios archivos con configuraciones, etc., y los eventos sobre conexiones y fallas se recopilan en el archivo ad_svc.trace .



1. Observación



Como ya se mencionó, el bloqueo de * .anydesk.com no arrojó ningún resultado en el funcionamiento del programa, se decidió analizar el comportamiento del programa en situaciones de estrés . TCPView de Sysinternals en la mano y listo!







1.1. Se puede ver que varios procesos que nos interesan están "colgados", y solo nos interesa el que está conectado a la dirección desde el exterior. Los puertos a los que está conectado se están ordenando, por lo que vi: 80, 443, 6568. :) 80 y 443 definitivamente no podemos ser bloqueados.



1.2. Después de bloquear la dirección a través del enrutador, se selecciona otra dirección silenciosamente.





1.3. ¡La consola es nuestro TODO! Determinamos el PID y aquí tuve un poco de suerte de que AnyDesk fue instalado por el servicio, respectivamente, el PID requerido es el único. 1.4. Determinamos la dirección IP del servidor de servicio mediante el proceso PID.


2. Preparación



Dado que el programa para detectar direcciones IP probablemente solo funcionará en mi PC, no tengo limitaciones en cuanto a conveniencia y pereza, por lo tanto, C #.



2.1. Ya se sabe que todos los métodos para identificar la dirección IP deseada están 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   
}


De igual manera, encontramos el servicio que estableció la conexión, solo daré la línea principal.



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


El resultado de lo cual será:





De la fila, de forma similar al paso anterior, extraiga la tercera columna y elimine todo lo que esté después del ":". Como resultado, tenemos nuestra IP deseada.



2.2. Bloqueo de IP en Windows. Si Linux tiene Blackhole e iptables, entonces el método de bloquear una dirección IP en una línea, sin usar un firewall, resultó ser inusual en Windows,

pero qué herramientas eran ...



route add __IP_ mask 255.255.255.255 10.113.113.113 if 1 -p


El parámetro clave " si 1 " es enviar la ruta a Loopback (puede mostrar las interfaces disponibles ejecutando la impresión de ruta). ¡E IMPORTANTE! Ahora el programa debe ejecutarse con derechos de administrador , ya que cambiar la ruta requiere elevación.



2.3. Mostrar y guardar las direcciones IP detectadas es una tarea trivial y no requiere explicación. Si lo piensa, también puede procesar el archivo ad_svc.trace de AnyDesk , pero no pensé en eso de inmediato + tal vez haya una limitación.



2.4. El extraño comportamiento desigual del programa es que cuando el proceso taskkill del servicio en Windows 10, se reinicia automáticamente, en Windows 8 finaliza, quedando solo el proceso de consola y sin reconectarse, en general es ilógico e inexacto.



Eliminar el proceso que se ha conectado al servidor le permite "forzar" la reconexión a la siguiente dirección. Se implementa de manera similar a los comandos anteriores, por lo que solo doy:



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


Además, lanzamos el programa AnyDesk.



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


2.5. Comprobaremos el estado de AnyDesk una vez por minuto (¿o más a menudo?), Y si está conectado, es decir. Conexión ESTABLECIDA - bloquee esta IP, y nuevamente, espere hasta que se conecte, bloquee y espere.



3. Ataque El



código fue "bosquejado", para visualizar el proceso se decidió " + " indicar la IP encontrada y bloqueada, y " . " - para repetir la verificación sin una conexión exitosa desde AnyDesk.







Código del proyecto



Como resultado ...





El programa funcionó en varias computadoras con diferentes sistemas operativos Windows, AnyDesk versiones 5 y 6. Se recopilaron alrededor de 80 direcciones en 500 iteraciones. Más de 2500 - 87 y así sucesivamente ...



Con el tiempo, la cantidad de IP bloqueadas alcanzó más de 100.



Enlace al archivo de texto final (lista negra) con direcciones: >> uno << y >> dos <<



¡Listo! El conjunto de direcciones IP a través del script se agrega a las reglas del enrutador principal y AnyDesk simplemente no puede crear una conexión externa.



Hay un momento extraño, según los registros iniciales está claro que la dirección boot-01.net.anydesk.com está involucrada en la transferencia de información... Por supuesto, bloqueamos todos los hosts * .net.anydesk.com como regla general, pero esto no es extraño. Cada vez con un ping normal desde diferentes computadoras, este nombre de dominio proporciona una IP diferente. Verificar en Linux:



host boot-01.net.anydesk.com



como DNSLookup solo da una dirección IP, pero esta dirección es variable. Al analizar una conexión TCPView, devolvemos registros PTR de direcciones IP del tipo retransmisión - *. Net.anydesk.com .



Teóricamente: dado que un ping a veces va a un host desconocido desbloqueado boot-01.net.anydesk.com, podemos encontrar estas ip y bloquearlas, hacer que esta implementación sea una secuencia de comandos normal en el sistema operativo Linux, no necesita instalar AnyDesk aquí. El análisis ha demostrado que estas IP a menudo "se superponen"con los que se encuentran en nuestra lista. Quizás este sea solo este host, al que el programa se conecta antes de comenzar a buscar IP conocidas. Probablemente luego complemente el artículo con la segunda parte de búsqueda de hosts, aunque por el momento el programa en sí no se instala dentro de la red conexión externa en general



Actualización 15/08/2020 : El usuario de Habr @ prymalbeets123 me llamó la atención sobre el hecho de que hay un host relays.net.anydesk.comque corresponde a 391 direcciones IP, el archivo con su lista se puede encontrar en los enlaces anteriores como correcto. Se nota que tengo menos direcciones recolectadas por monitorear el programa AnyDesk, pero hay aquellas que no están incluidas en el general 391 y se resuelven por dominios "izquierdos", resulta que también "recolecto" las direcciones de quienes iniciaron la conexión a mi computadora :).



Espero que no haya visto nada ilegal en lo anterior, y los creadores de AnyDesk tratarán mis acciones de manera deportiva.



All Articles