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

Cuando un día el jefe plantea la pregunta: “¿Por qué algunas personas tienen acceso remoto a una computadora del trabajo sin obtener permisos adicionales para su uso?”,
hay una tarea para "tapar" una escapatoria.

Análisis de la posibilidad de bloquear una aplicación para el control remoto de una computadora a través de una red, usando el ejemplo de AnyDesk
Existen multitud de aplicaciones para el control remoto a través de la red: Chrome Remote Desktop, AmmyAdmin, LiteManager, TeamViewer, Anyplace Control, etc. Si Chrome Remote Desktop tiene un manual oficial para combatir el acceso al servicio, TeamViewer tiene restricciones de licencia por tiempo o solicitudes. de la red y los usuarios "apretando los dientes" de alguna manera "brillan" con los administradores, entonces el favorito de muchos para uso personal: AnyDesk aún requiere atención especial, especialmente si el jefe dice "¡No!".

Análisis de la posibilidad de bloquear una aplicación para el control remoto de una computadora a través de una red, usando el ejemplo de AnyDesk
Si sabe qué es el bloqueo de un paquete de red por su contenido y le conviene, entonces el resto del material
no previsto para usted.

Tratando de ir de lo contrario, de hecho sitio web dice lo que se debe permitir para que el programa funcione, respectivamente, el registro DNS fue bloqueado *.net.anydesk.com. Pero AnyDesk no es simple, no se preocupa por bloquear un nombre de dominio.

Una vez resolví el problema de bloquear "Anyplace Control" que nos llegó con un software dudoso, y se resolvió bloqueando solo algunas IP (aseguré el antivirus). El problema con AnyDesk, después de recopilar manualmente más de una docena de direcciones IP, provocado alejarse del trabajo manual rutinario.

También se encontró que en "C: ProgramDataAnyDesk" hay una serie de archivos con configuraciones, etc., y en el archivo ad_svc.trace Se recopilan eventos sobre conexiones y fallas.

1. Observación

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

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

1.1. Se puede ver que varios procesos que nos interesan están “colgados”, y solo nos interesa el que se comunica con la dirección desde el exterior. Se mueven los puertos a los que se conecta, por lo que vi: 80, 443, 6568. 🙂 80 y 443 definitivamente no podemos bloquear.

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

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

1.3. ¡Nuestra consola lo es TODO! Determinamos el PID y luego tuve un poco de suerte de que el servicio instalara AnyDesk, respectivamente, el PID que estaba buscando es el único.
1.4. Determinamos la dirección IP del servidor de servicio por el PID del proceso.

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

2. Preparación

Dado que el programa para descubrir direcciones IP probablemente solo funcionará en mi PC, no tengo restricciones en cuanto a comodidad y pereza, así que C#.

2.1. Ya se conocen todos los métodos para identificar la dirección IP deseada, queda por implementar.

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й элемент без кавычек
}

Del mismo modo, encontramos el servicio que estableció la conexión, daré solo la línea principal

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

cuyo resultado será:

Análisis de la posibilidad de bloquear una aplicación para el control remoto de una computadora a través de una red, usando el ejemplo de AnyDesk
De la línea, de manera similar al paso anterior, extraemos la tercera columna y eliminamos 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 que herramientas eran...

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

Parámetro clave "Si 1"envíe la ruta a Loopback (puede mostrar las interfaces disponibles ejecutando route print). ¡Y IMPORTANTE! Ahora el programa debe ejecutarse con derechos de administradorporque cambiar la ruta requiere elevación.

2.3. Mostrar y guardar las direcciones IP identificadas es una tarea trivial y no requiere explicación. Si lo piensas, puedes procesar el archivo. ad_svc.trace AnyDesk en sí, pero no lo pensé de inmediato + tal vez haya una restricción al respecto.

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

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

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

Además, inicie 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 de nuevo, espere hasta que se conecte, bloquee y espere.

3. Ataque

Se “redactó” el código, se decidió visualizar el proceso”+" especificar la IP encontrada y bloqueada, y "." - verificación repetida sin conexión exitosa desde AnyDesk.

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

Código de proyecto

Como resultado ...

Análisis de la posibilidad de bloquear una aplicación para el control remoto de una computadora a través de una red, usando el ejemplo de AnyDesk
El programa funcionó en varias computadoras con diferentes sistemas operativos Windows, con las versiones 5 y 6 de AnyDesk. Se recopilaron alrededor de 500 direcciones en 80 iteraciones. Para 2500 - 87 y así sucesivamente ...

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

Enlace a la final archivo de texto con direcciones: tiempo и два

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

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

host boot-01.net.anydesk.com

como DNSLookup, solo dan una dirección IP, pero esta dirección es variable. Al analizar una conexión TCPView, obtenemos registros PTR de direcciones IP como relé-*.net.anydesk.com.

Teóricamente: dado que el ping a veces va a un host desbloqueado desconocido boot-01.net.anydesk.com podemos encontrar estos ip y bloquear, hacer de esta implementación un script regular bajo el sistema operativo Linux, aquí no necesita instalar AnyDesk. El análisis mostró que estas direcciones IP son a menudo "intersecarse" con los encontrados en nuestra lista. Quizás este sea solo este host, al que el programa se conecta antes de que comience a "ordenar" las IP conocidas. Probablemente más adelante complementaré el artículo con la segunda parte de las búsquedas de host, aunque por el momento el programa en sí no instala la unión externa en general.

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

Fuente: habr.com

Añadir un comentario