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

Lorsque, un beau jour, le directeur soulève la question : « Pourquoi certaines personnes ont-elles un accès à distance à leur poste de travail sans avoir à obtenir d'autorisations supplémentaires ? »
une tâche se pose : « couvrir » la faille.

Analyse de la possibilité de bloquer une application pour le contrôle à distance d'un ordinateur via le réseau, à l'exemple d'AnyDesk
Il existe de nombreuses applications pour le contrôle à distance : Chrome Remote Desktop, AmmyAdmin, LiteManager, TeamViewer, Anyplace Control, etc. Si Chrome Remote Desktop a un manuel officiel pour lutter contre l'accès au service, TeamViewer a des limitations de licence en termes de temps ou de requêtes provenant du réseau, rendant les utilisateurs « grincement des dents » visibles d'une manière ou d'une autre aux administrateurs, alors que le favori de nombreux utilisateurs pour un usage personnel, AnyDesk, nécessite une attention particulière, surtout si le directeur a dit « Non ! »

Analyse de la possibilité de bloquer une application pour le contrôle à distance d'un ordinateur via le réseau, à l'exemple d'AnyDesk
Si vous savez ce qu'est le blocage de paquets réseau par leur contenu et cela vous convient, alors le reste du matériel
n'est pas destiné à vous.

En essayant d'adopter une approche inverse, il est site indiqué ce qui doit être autorisé pour le bon fonctionnement du programme, ce qui a conduit au blocage de l'enregistrement DNS *.net.anydesk.com. Mais AnyDesk n'est pas si simple, le blocage de ce nom de domaine n'a aucun effet pour lui.

Une fois, j'avais une mission de blocage d'« Anyplace Control » qui nous parvenait avec un logiciel douteux, et elle avait été résolue en bloquant seulement quelques adresses IP (j'avais renforcé la protection avec un antivirus). Toutefois, la tâche avec AnyDesk, après avoir compilé manuellement plus d'une dizaine d'adresses IP, m'a encouragé à échapper au travail manuel routinier.

Il a également été découvert que dans « C:ProgramDataAnyDesk », il y a plusieurs fichiers de configuration, etc., et dans le fichier ad_svc.trace sont collectés les événements de connexions et d'échecs.

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 stressantes. TCPView de Sysinternals en main et en avant !

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

1.1. On peut voir que plusieurs processus intéressants « restent bloqués », et seul celui qui se connecte à l'adresse externe nous intéresse. Les ports auxquels il se connecte sont variés, d'après ce que j'ai vu, il s'agit de : 80, 443, 6568. 🙂 Les ports 80 et 443 ne doivent certainement pas être bloqués.

1.2. Après avoir bloqué l'adresse via le routeur, un autre choix d'adresse s'établit facilement.

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

1.3. La console est notre TOUT ! Nous identifions le PID et ici, j'ai eu un peu de chance, car AnyDesk était installé comme service, donc le PID recherché est unique.
1.4. Nous identifions, par le PID du processus, l'adresse IP du serveur de service.

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

2. Préparation

Comme le programme de détection des adresses IP fonctionnera probablement uniquement sur mon PC, je n'ai aucune restriction en termes de confort et de paresse, donc en C#.

2.1. Toutes les méthodes pour identifier l'adresse IP recherchée sont déjà connues, il ne reste plus qu'à les implémenter.

string pid1_;//nous découvrons le PID du service 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(',');//nous traduisons la réponse en tableau
 pid1_ = pid1[1].Replace(""", "");//nous prenons le 2ème élément sans guillemets
}

Nous trouvons de la même manière 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 :

Analyse de la possibilité de bloquer une application pour le contrôle à distance d'un ordinateur via le réseau, à l'exemple d'AnyDesk
De la même manière que dans l'étape précédente, nous extrayons la 3ème colonne de la ligne et supprimons tout ce qui suit ":". En résultat, nous obtenons l'IP recherchée.

2.2. Blocage d'IP sous Windows. Alors que sous Linux nous avons le Blackhole et iptables, la méthode de blocage d'une adresse IP en une seule ligne, sans utiliser de pare-feu, s'est avérée inhabituelle sous Windows.
Mais il y avait des outils...

route add notre_IP_trouvé mask 255.255.255.255 10.113.113.113 if 1 -p

Le paramètre clé "if 1" envoie la route sur Loopback (vous pouvez afficher les interfaces disponibles en exécutant route print). Et il est IMPORTANT! Maintenant, le programme doit être exécuté avec des droits d'administrateur, car la modification de la route nécessite une élévation des privilèges.

2.3. L'affichage et la sauvegarde des adresses IP détectées est une tâche triviale et ne nécessite pas d'explications. Si on réfléchit, on peut aussi traiter le fichier ad_svc.trace du propre AnyDesk, mais je n'y ai pas pensé tout de suite + il y a peut-être des restrictions à son sujet.

2.4. Le comportement étrange et inégal du programme réside dans le fait que lors du «taskkill» du processus de service sous Windows 10, il redémarre automatiquement, sous Windows 8 il se termine, ne laissant que le processus de console et sans reconnexion, en somme, c'est illogique et ce n'est pas précis.

La suppression du processus connecté au serveur permet de «forcer» la reconnexion à l'adresse suivante. Cela se réalise de manière similaire aux commandes précédentes, donc je ne donne que :

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

Nous lançons également le programme AnyDesk.

 //запускаем программу которая расположена по пути path_pro
if (File.Exists(path_pro)){ 
Process p1 = Process.Start(path_pro);}

2.5. Nous allons vérifier l'état d'AnyDesk une fois par minute (ou plus souvent ?), et si elle est connectée, c'est-à-dire connexion ÉTABLIE — bloquer cette IP, puis recommencer — attendre qu'elle se connecte, bloquer et attendre.

3. Attaque

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

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

→ Le code du projet

En résultat...

Analyse de la possibilité de bloquer une application pour le contrôle à distance d'un ordinateur via le réseau, à l'exemple d'AnyDesk
Le programme a fonctionné sur plusieurs ordinateurs avec différentes versions de Windows, avec les versions AnyDesk 5 et 6. Au cours de 500 itérations, environ 80 adresses ont été collectées. Après 2500 — 87, et ainsi de suite...

Avec le temps, le nombre d'IP bloquées a atteint plus de 100.

Lien vers le fichier final texte avec les adresses : un et deux

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

Il y a un point étrange, selon les journaux d'origine, il est clair qu'une adresse participe à la transmission d'informations. boot-01.net.anydesk.com. Nous avons bien sûr bloqué tous les hôtes *.net.anydesk.com par une règle générale, mais l'étrangeté n'est pas là. Chaque fois qu'un ping normal est effectué depuis différents ordinateurs, ce nom de domaine donne une IP différente. Vérification sur Linux :

host boot-01.net.anydesk.com

tout comme DNSLookup ne donne qu'une seule adresse IP, mais cette adresse est variable. Lors de l'analyse des connexions TCPView, nous obtenons des enregistrements PTR d'adresses IP de type relay-*.net.anydesk.com.

Théoriquement : puisque le ping passe parfois vers un hôte inconnu non bloqué, boot-01.net.anydesk.com nous pouvons trouver ces IP et les bloquer, cette implémentation étant faite par un script normal sous Linux, il n'est pas nécessaire d'installer AnyDesk ici. L'analyse a montré que ces IP "se croisent" avec celles trouvées dans notre liste. Il est possible que ce soit cet hôte auquel le programme se connecte avant de commencer à "tester" les IP connues. Probablement, je compléterai l'article plus tard avec une deuxième partie de la recherche des hôtes, bien qu'à l'heure actuelle, le programme lui-même ne crée pas de connexion externe du tout.

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

Source : habr.com

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster