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