Analyse de la possibilité de bloquer une application de contrôle à distance d'un ordinateur sur le réseau, à l'aide de l'exemple d'AnyDesk

Lorsqu'un jour le patron pose la question: «Pourquoi certaines personnes ont-elles un accès à distance à l'ordinateur de travail, sans obtenir des autorisations supplémentaires d'utilisation?», La

tâche se pose de «fermer» la faille.





Il existe de nombreuses applications de contrôle à distance sur le réseau: bureau à distance Chrome, AmmyAdmin, LiteManager, TeamViewer, Anyplace Control, etc. Si le bureau à distance Chrome dispose d'un manuel officiel sur la lutte contre la disponibilité de l'accès au service, TeamViewer a des restrictions de licence sur le temps ou les demandes du réseau et des utilisateurs "serrant les dents" d'une manière ou d'une autre "brille" chez les administrateurs, alors le favori de beaucoup pour un usage personnel - AnyDesk nécessite jusqu'à présent une attention particulière, surtout si le patron a dit "Non!"

Si vous savez ce qu'est le blocage d'un paquet réseau par son contenu et que vous en êtes satisfait, alors le reste du matériel

ne vous est pas destiné .


En essayant d'aller de l'inverse, le site lui-même dit ce qui devrait être autorisé pour que le programme fonctionne, respectivement, l'enregistrement DNS * .net.anydesk.com a été bloqué . Mais AnyDesk n'est pas facile, il ne se soucie pas de bloquer un nom de domaine.



Mise Ă  jour 15.08.
La solution correcte pour bloquer AnyDesk suggérée prymalbeets123:
relays.net.anydesk.com



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



391 . , .





Une fois j'ai résolu le problème du blocage de "Anyplace Control" qui nous est venu avec un logiciel douteux et il a été résolu en bloquant seulement quelques IP (j'ai assuré l'antivirus). La tâche avec AnyDesk, après avoir collecté manuellement plus d'une douzaine d'adresses IP, m'a encouragé à m'éloigner du travail manuel de routine.



On a également découvert que dans "C: \ ProgramData \ AnyDesk" il y avait un certain nombre de fichiers avec des paramètres, etc., et les événements concernant les connexions et les échecs sont collectés dans le fichier ad_svc.trace .



1. Observation



Comme déjà mentionné, le blocage de * .anydesk.com n'a donné aucun résultat dans le fonctionnement du programme, il a été décidé d'analyser le comportement du programme dans des situations de stress . TCPView de Sysinternals en main et c'est parti!







1.1. On peut voir que plusieurs processus qui nous intéressent sont "suspendus", et seul celui qui est connecté à l'adresse de l'extérieur nous intéresse. Les ports auxquels il se connecte sont en cours de tri, d'après ce que je l'ai vu: 80, 443, 6568. :) 80 et 443 nous ne pouvons certainement pas être bloqués.



1.2. Après avoir bloqué l'adresse via le routeur, une autre adresse est silencieusement sélectionnée.





1.3. La console est notre TOUT! Nous déterminons le PID et ici j'ai eu un peu de chance qu'AnyDesk ait été installé par le service, respectivement, le PID requis est le seul. 1.4. Nous déterminons l'adresse IP du serveur de service par le processus PID.


2. Préparation



Étant donné que le programme de détection des adresses IP ne fonctionnera probablement que sur mon PC, je n'ai aucune limitation de commodité et de paresse donc C #.



2.1. Toutes les méthodes d'identification de l'adresse IP souhaitée sont déjà connues pour être mises en œuvre.



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 mĂŞme, on retrouve le service qui a Ă©tabli la connexion, je ne donnerai que la ligne principale



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


Le résultat sera:





À partir de la ligne, similaire à l'étape précédente, extrayez la 3ème colonne et supprimez tout ce qui se trouve après le ":". En conséquence, nous avons l'adresse IP souhaitée.



2.2. Blocage IP sous Windows. Si Linux a Blackhole et iptables, alors la méthode de blocage d'une adresse IP sur une ligne, sans utiliser de pare-feu, s'est avérée inhabituelle sous Windows,

mais quels outils Ă©taient ...



route add __IP_ mask 255.255.255.255 10.113.113.113 if 1 -p


Le paramètre clé " if 1 " est d'envoyer la route à Loopback (vous pouvez afficher les interfaces disponibles en exécutant l'impression de route). ET IMPORTANT! Maintenant, le programme doit être exécuté avec des droits d'administrateur , car la modification de l'itinéraire nécessite une élévation.



2.3. L'affichage et l'enregistrement des adresses IP détectées est une tâche triviale et ne nécessite aucune explication. Si vous y réfléchissez, vous pouvez également traiter le fichier ad_svc.trace d' AnyDesk lui-même, mais je n'y ai pas pensé tout de suite + peut-être qu'il y a une limitation.



2.4. L'étrange comportement irrégulier du programme est que lorsque le processus de tâche du service dans Windows 10, il redémarre automatiquement, dans Windows 8, il se termine, ne laissant que le processus de la console et sans se reconnecter, en général, il est illogique et inexact.



La suppression du processus connecté au serveur permet de "forcer" la reconnexion à l'adresse suivante. Il est implémenté de la même manière que les commandes précédentes, donc je ne cite que:



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


De plus, nous lançons le programme AnyDesk.



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


2.5. Nous vérifierons l'état d'AnyDesk une fois par minute (ou plus souvent?), Et s'il est connecté, c'est-à-dire Connexion ÉTABLIE - bloquez cette adresse IP, et encore une fois - attendez qu'elle se connecte, bloquez et attendez.



3. Attaque Le



code a été "esquissé", pour visualiser le processus, il a été décidé de " + " indiquer l'adresse IP trouvée et bloquée, et " . " - de répéter la vérification sans connexion réussie depuis AnyDesk.







→ Code du projet



En conséquence ...





Le programme a fonctionné sur plusieurs ordinateurs avec différents OS Windows, avec les versions 5 et 6 d'AnyDesk. Environ 80 adresses ont été collectées en 500 itérations. Plus de 2500 - 87 et ainsi de suite ...



Au fil du temps, le nombre d'adresses IP bloquées a atteint plus de 100.



Lien vers le fichier texte final (liste noire) avec les adresses: >> un << et >> deux <<



C'est fait! Le pool d'adresses IP via le script est ajouté aux règles du routeur principal et AnyDesk ne peut tout simplement pas créer de connexion externe.



Il y a un moment étrange, selon les journaux initiaux, il est clair que l'adresse boot-01.net.anydesk.com est impliquée dans le transfert d'informations... Bien sûr, nous avons bloqué tous les hébergeurs * .net.anydesk.com en règle générale, mais ce n'est pas bizarre. Chaque fois avec un ping normal de différents ordinateurs, ce nom de domaine donne une adresse IP différente. Check in Linux:



host boot-01.net.anydesk.com



comme DNSLookup ne donne qu'une seule adresse IP, mais cette adresse est variable. Lors de l'analyse d'une connexion TCPView, nous renvoyons les enregistrements PTR des adresses IP du type relay - *. Net.anydesk.com .



Théoriquement: comme un ping va parfois à un hôte non bloqué boot-01.net.anydesk.com inconnu, nous pouvons trouver ces ip et les bloquer, faire de cette implémentation un script régulier sous Linux OS, vous n'avez pas besoin d'installer AnyDesk ici. L'analyse a montré que ces IP se chevauchent souvent"avec ceux trouvés dans notre liste. Il s'agit peut-être juste de cet hôte, auquel le programme se connecte avant de commencer à rechercher des adresses IP connues. Je compléterai probablement plus tard l'article avec la 2ème partie de la recherche d'hôtes, bien que pour le moment, le programme lui-même ne s'installe pas à l'intérieur du réseau connexion externe en général



Mise à jour 15/08/2020 : l'utilisateur Habr @ prymalbeets123 a attiré mon attention sur le fait qu'il existe un hôte relays.net.anydesk.comce qui correspond à 391 adresses IP, le fichier avec leur liste peut être trouvé aux liens ci-dessus comme correct. On remarque que j'ai moins d'adresses collectées en surveillant le programme AnyDesk, mais il y a celles qui ne sont pas incluses dans le général 391 et elles sont résolues par des noms de domaine "à gauche", il s'avère que j'ai aussi "collecté" les adresses de ceux qui ont initié la connexion à mon ordinateur :).



J'espère que vous n'avez rien vu d'illégal dans ce qui précède, et les créateurs d'AnyDesk traiteront mes actions de manière sportive.



All Articles